$ od -c -N 50000 [eris]<LispCore>SOURCES>D-ASSEM!5
0000000 ( D E F I N E - F I L E - I N F
0000020 O 247 R E A D T A B L E " X C
0000040 L " 247 P A C K A G E ( D E F
0000060 P A C K A G E " D - A S S E M
0000100 " ( 247 U S E " L I S P " ) )
0000120 ) \r 006 001 ( i l : f i l e c r e a
0000140 t e d " 2 0 - O c t - 8 6 2
0000160 2 : 5 1 : 1 0 " 006 004 i l : { e
0000200 r i s } < l i s p c o r e > s o
0000220 u r c e s > d - a s s e m . \ ;
0000240 5 006 001 8 8 3 1 8 \r \r
0000260 i l : | c h a n g e s |
0000300 i l : | t o : | ( i l : v a
0000320 r s i l : d - a s s e m c o m
0000340 s ) \r
0000360
0000400 ( i l : s t r u c t u r e s d
0000420 c o d e d j u m p d l a m b
0000440 d a d t a g d v a r ) \r
0000460
0000500 ( i l : p
0000520 r o p s ( i l : d - a s s e m
0000540 i l : m a k e f i l e - e n v
0000560 i r o n m e n t ) ) \r
0000600
0000620 ( i l : v a r i
0000640 a b l e s + i v a r - c o d e
0000660 + + p v a r - c o d e + + f
0000700 v a r - c o d e + + l a m b d
0000720 a - s p r e a d + \r
0000740
0000760 +
0001000 n l a m b d a - s p r e a d +
0001020 + l a m b d a - n o - s p r e a
0001040 d + + n l a m b d a - n o - s
0001060 p r e a d + \r
0001100
0001120 + c o n
0001140 s t a n t - o p c o d e s + *
0001160 b y t e s * * b y t e - c o u
0001200 n t * * d t a g - e n v * *
0001220 d v a r - e n v * \r
0001240
0001260 *
0001300 h u n k - m a p * * d c o d e
0001320 * * l e v e l * * h u n k -
0001340 s i z e * * p v a r - c o u n
0001360 t * * f r e e - v a r s * \r
0001400
*
0001440 * b o u n d - s p e c i
0001460 a l s * * e n d i n g - d e p
0001500 t h * * s t a c k - n o t e s
0001520 * * j u m p - l i s t * \r
0001540
*
0001600 + j u m p - c h o i c e s
0001620 + + j u m p - r a n g e - s i
0001640 z e - m a p + + j u m p - s i
0001660 z e s + ) \r
0001700
0001720 ( i l : f u n c t i o n s
0001740 c r e a t e - h u n k t y p
0001760 e - n a m e - f r o m - s i z e
0002000 r e l e a s e - c i r c u l a
0002020 r i t i e s \r
0002040
0002060 s t a r
0002100 t - b y t e s e m i t - b y t
0002120 e e m i t - b y t e - l i s t
0002140 e n d - b y t e s c h o o s
0002160 e - o p r e f - v a r \r
0002200
*
0002240 s t o r e - v a r m a x -
0002260 a r g p u s h - i n t e g e r
0002300 a s s e m b l e - f u n c t i
0002320 o n \r
0002340
0002360 d l a m b d a -
0002400 f r o m - l a m b d a d c o d
0002420 e - f r o m - d l a m b d a d
0002440 i g e s t - f u n c t i o n \r
0002460
*
0002520 d i g e s t - c o d e
0002540 s t o r e - d i g e s t - i n f
0002560 o d v a r - f r o m - l a p -
0002600 v a r l a p - v a r - i d \r
0002620
*
0002660 i n s t a l l - l o c a
0002700 l i n s t a l l - v a r i n
0002720 t e r n - v a r i n t e r n -
0002740 t a g e a s y - e n t r y - p
0002760 \r
0003000
0003020 g e n e r a t e - e
0003040 a s y - e n t r y g e n e r a
0003060 t e - h a r d - e n t r y g e
0003100 n e r a t e - a r g - c h e c k
0003120 \r
0003140
0003160 g e n e r a t e - k
0003200 e y g e n e r a t e - o p t -
0003220 a n d - r e s t s t a c k - a
0003240 n a l y z e \r
0003260
0003300 s t a c
0003320 k - a n a l y z e - c o d e a
0003340 s s e m b l e a s s e m b l e
0003360 - c o d e r e s o l v e - j u
0003400 m p s \r
0003420
0003440 r e d u c e -
0003460 u n c e r t a i n t y s p l i
0003500 c e - i n - j u m p s c o m p
0003520 u t e - j u m p - s i z e \r
0003540
*
0003600 c o n v e r t - t o - b i
0003620 n a r y c o m p u t e - d e b
0003640 u g g i n g - i n f o a l l o
0003660 c a t e - c o d e - b l o c k
0003700 \r
0003720
0003740 f i x u p - p t r f
0003760 i x u p - w o r d i n t e r n
0004000 - d c o d e p r e t t y - j u
0004020 m p s ) \r \r i l : |
0004040 p r e v i o u s | i l : | d a
0004060 t e : | " 1 0 - O c t - 8 6
0004100 0 1 : 3 0 : 0 7 " i l : { e r
0004120 i s } < l i s p c o r e > s o u
0004140 r c e s > d - a s s e m . \ ; 4
0004160 ) \r \r \r ; C o p y r i g h t
0004200 ( c ) 1 9 8 6 b y X e r o
0004220 x C o r p o r a t i o n .
0004240 A l l r i g h t s r e s e r
0004260 v e d . \r \r ( i l : p r e t t y
0004300 c o m p r i n t i l : d - a s
0004320 s e m c o m s ) \r \r ( i l : r p
0004340 a q q 006 002 i l : d - a s s e m
0004360 c o m s 006 001 ( ( i l : * i l
0004400 : | ; ; ; | " D - m a c h i n
0004420 e A s s e m b l e r . " ) \r
0004440
0004460 ( i l : f i l
0004500 e s i l : d - a s s e m - p a
0004520 c k a g e ) \r
0004540
0004560 ( i l : c o m s ( i l : *
0004600 i l : | ; ; | " D a t a s t
0004620 r u c t u r e s a n d u t i
0004640 l i t i e s " ) \r
0004660
0004700 ( i l : s t
0004720 r u c t u r e s d c o d e d
0004740 j u m p d l a m b d a d t a
0004760 g d v a r ) \r
0005000
0005020 ( i l : p (
0005040 i l : d e f p r i n t ' d t a
0005060 g n i l ) ) \r
0005100
0005120 ( i l : f u n
0005140 c t i o n s c r e a t e - h u
0005160 n k t y p e - n a m e - f r o
0005200 m - s i z e ) \r
0005220
0005240 ( i l : f u n
0005260 c t i o n s r e l e a s e - c
0005300 i r c u l a r i t i e s ) ) \r
0005320
0005340 ( i l : c o m
0005360 s ( i l : * i l : | ; ; |
0005400 " H a n d y c o n s t a n t s
0005420 " ) \r
0005440
0005460 ( i l : v a r i a b l e
0005500 s + i v a r - c o d e + + p
0005520 v a r - c o d e + + f v a r -
0005540 c o d e + ) \r
0005560
0005600 ( i l : v a r i
0005620 a b l e s + l a m b d a - s p
0005640 r e a d + + n l a m b d a - s
0005660 p r e a d + + l a m b d a - n
0005700 o - s p r e a d + \r
0005720
*
0005760 + n l a m b d a - n o - s
0006000 p r e a d + ) \r
0006020
0006040 ( i l : v a r
0006060 i a b l e s + c o n s t a n t
0006100 - o p c o d e s + ) ) \r
0006120
0006140 ( i l : c o m s (
0006160 i l : * i l : | ; ; | " O p
0006200 c o d e g e n e r a t i o n "
0006220 ) \r
0006240
0006260 ( i l : v a r i a b l e s
0006300 * b y t e s * * b y t e - c
0006320 o u n t * ) \r
0006340
0006360 ( i l : f u n c
0006400 t i o n s s t a r t - b y t e
0006420 s e m i t - b y t e e m i t
0006440 - b y t e - l i s t e n d - b
0006460 y t e s ) \r
0006500
0006520 ( i l : f u n c t
0006540 i o n s c h o o s e - o p r
0006560 e f - v a r s t o r e - v a r
0006600 m a x - a r g p u s h - i n
0006620 t e g e r ) ) \r
0006640
0006660 ( i l : c o m s ( i l : *
0006700 i l : | ; ; | " M a i n d
0006720 r i v i n g " ) \r
0006740
0006760 ( i l : v a
0007000 r i a b l e s * d t a g - e n
0007020 v * * d v a r - e n v * * h
0007040 u n k - m a p * * d c o d e *
0007060 * l e v e l * ) \r
0007100
0007120 ( i l : f
0007140 u n c t i o n s a s s e m b l
0007160 e - f u n c t i o n d l a m b
0007200 d a - f r o m - l a m b d a \r
0007220
*
0007260 d c o d e - f r
0007300 o m - d l a m b d a ) ) \r
0007320
0007340 ( i l : c o m s
0007360 ( i l : * i l : | ; ; | " D
0007400 i g e s t i n g t h e f u n
0007420 c t i o n " ) \r
0007440
0007460 ( i l : v a r
0007500 i a b l e s * h u n k - s i z
0007520 e * * p v a r - c o u n t *
0007540 * f r e e - v a r s * * b o u
0007560 n d - s p e c i a l s * ) \r
0007600
0007620 (
0007640 i l : f u n c t i o n s d i g
0007660 e s t - f u n c t i o n d i g
0007700 e s t - c o d e s t o r e - d
0007720 i g e s t - i n f o ) \r
0007740
0007760 ( i l
0010000 : f u n c t i o n s d v a r -
0010020 f r o m - l a p - v a r l a p
0010040 - v a r - i d i n s t a l l -
0010060 l o c a l i n s t a l l - v a
0010100 r \r
0010120
0010140 i n t e r
0010160 n - v a r i n t e r n - t a g
0010200 ) ) \r
0010220 ( i l
0010240 : c o m s ( i l : * i l : |
0010260 ; ; | " F u n c t i o n e n
0010300 t r y c o d e " ) \r
0010320
0010340 ( i l :
0010360 f u n c t i o n s e a s y - e
0010400 n t r y - p g e n e r a t e -
0010420 e a s y - e n t r y ) \r
0010440
0010460 ( i l
0010500 : f u n c t i o n s g e n e r
0010520 a t e - h a r d - e n t r y g
0010540 e n e r a t e - a r g - c h e c
0010560 k g e n e r a t e - k e y \r
0010600
*
0010640 g e n e r a t e
0010660 - o p t - a n d - r e s t ) ) \r
0010700
0010720 ( i l : c o
0010740 m s ( i l : * i l : | ; ; |
0010760 " S t a c k a n a l y s i s
0011000 " ) \r
0011020
0011040 ( i l : v a r i a b l e
0011060 s * e n d i n g - d e p t h *
0011100 * s t a c k - n o t e s * ) \r
0011120
*
0011160 ( i l : f u n c t i o n s s
0011200 t a c k - a n a l y z e s t a
0011220 c k - a n a l y z e - c o d e )
0011240 ) \r
0011260 ( i l :
0011300 c o m s ( i l : * i l : | ;
0011320 ; | " T h e g u t s o f
0011340 a s s e m b l y " ) \r
0011360
0011400 ( i l :
0011420 f u n c t i o n s a s s e m b
0011440 l e a s s e m b l e - c o d e
0011460 ) ) \r
0011500 ( i l
0011520 : c o m s ( i l : * i l : |
0011540 ; ; | " J u m p r e s o l u
0011560 t i o n " ) \r
0011600
0011620 ( i l : v a r i
0011640 a b l e s * j u m p - l i s t
0011660 * ) \r
0011700
0011720 ( i l : v a r i a b l e
0011740 s + j u m p - c h o i c e s +
0011760 + j u m p - r a n g e - s i z
0012000 e - m a p + + j u m p - s i z
0012020 e s + ) \r
0012040
0012060 ( i l : f u n c t i
0012100 o n s r e s o l v e - j u m p
0012120 s r e d u c e - u n c e r t a
0012140 i n t y s p l i c e - i n - j
0012160 u m p s \r
0012200
0012220 c o
0012240 m p u t e - j u m p - s i z e )
0012260 \r
0012300
0012320 ( i l : c o m s ( i l : *
0012340 i l : \ ; " D e b u g g i n
0012360 g j u m p r e s o l u t i o
0012400 n " ) \r
0012420
0012440 ( i l :
0012460 f u n c t i o n s p r e t t y
0012500 - j u m p s ) ) ) \r
0012520
0012540 ( i l : c o m s ( i l
0012560 : * i l : | ; ; | " C o n v
0012600 e r s i o n t o b i n a r y
0012620 " ) \r
0012640
0012660 ( i l : f u n c t i o n
0012700 s c o n v e r t - t o - b i n
0012720 a r y ) ) \r
0012740
0012760 ( i l : c o m s ( i l : * i
0013000 l : | ; ; | " S e t t i n g
0013020 u p t h e d e b u g g i n g
0013040 i n f o r m a t i o n " ) \r
0013060
*
0013120 ( i l : f u n c t i o n s c o
0013140 m p u t e - d e b u g g i n g -
0013160 i n f o ) ) \r
0013200
0013220 ( i l : c o m s ( i l : *
0013240 i l : | ; ; | " F i x u p r
0013260 e s o l u t i o n a n d D C
0013300 O D E i n t e r n i n g " ) \r
0013320
*
0013360 ( i l : f u n c t i o n s a
0013400 l l o c a t e - c o d e - b l o
0013420 c k f i x u p - p t r f i x
0013440 u p - w o r d i n t e r n - d
0013460 c o d e ) \r
0013500
0013520 ) \r
0013540
0013560 ( i l : * i l : | ; ; |
0013600 " A r r a n g e f o r t h
0013620 e c o r r e c t c o m p i l
0013640 e r t o b e u s e d " ) \r
0013660
0013700 ( i l : p r
0013720 o p i l : f i l e t y p e i
0013740 l : d - a s s e m ) \r
0013760
0014000 ( i l : * i l : | ;
0014020 ; | " A r r a n g e f o r
0014040 t h e p r o p e r m a k e f
0014060 i l e e n v i r o n m e n t "
0014100 ) \r
0014120 ( i l :
0014140 p r o p i l : m a k e f i l e
0014160 - e n v i r o n m e n t i l :
0014200 d - a s s e m ) \r
0014220
0014240 ( i l : d e c l a r e \ :
0014260 i l : e v a l @ c o m p i l e
0014300 i l : d o n t c o p y ( i l
0014320 : f i l e s ( i l : l o a d c
0014340 o m p ) \r
0014360
*
0014460 i l : l l b a s i c i l : l l
0014500 c o d e \r
0014520
*
0014620 i l : l l g c i l : m o d a
0014640 r i t h ) ) ) ) \r \r \r \r 006 004 ( i
0014660 l : * i l : | ; ; ; | " D -
0014700 m a c h i n e A s s e m b l e
0014720 r . " ) 006 001 \r \r ( i l : f i l e
0014740 s l o a d i l : d - a s s e m
0014760 - p a c k a g e ) \r \r \r \r 006 004 (
0015000 i l : * i l : | ; ; | " D a
0015020 t a s t r u c t u r e s a n
0015040 d u t i l i t i e s " ) 006 001 \r
0015060 \r ( d e f s t r u c t 006 002 d c
0015100 o d e 006 001 ( f r a m e - n a m
0015120 e " N o n a m e " ) ( n l
0015140 o c a l s 0 ) \r
0015160
*
0015220 ( n f r e e v a r s 0 ) \r
0015240
*
0015300 a r g - t y p e \r
0015320
*
0015360 ( n u m - a r g
0015400 s 0 ) \r
0015420
0015440 ( n a
0015460 m e - t a b l e n i l ) \r
0015500
*
0015540 d e b u g g i n g -
0015560 i n f o c o d e - a r r a y
0015600 ( f n - f i x u p s n i l ) \r
0015620
*
0015660 ( s y m - f i x
0015700 u p s n i l ) \r
0015720
*
0015760 ( l i t - f i x u p s n i l
0016000 ) \r
0016020
0016040 ( t y p e -
0016060 f i x u p s n i l ) \r
0016100
*
0016140 ( c l o s u r e - p n
0016160 i l ) ) \r \r ( d e f s t r u c t
0016200 006 002 d j u m p 006 001 k i n d
0016220 t a g p t r m i n - p c m
0016240 i n - s i z e f o r w a r d -
0016260 p s i z e - u n c e r t a i n
0016300 t y ) \r \r ( d e f s t r u c t
0016320 ( 006 002 d l a m b d a 006 001 ( : c
0016340 o n s t r u c t o r m a k e -
0016360 d l a m b d a \r
0016400
0016420 ( r e q u i r e d o p t
0016440 i o n a l r e s t k e y a
0016460 l l o w - o t h e r - k e y s
0016500 o t h e r s n a m e b l i p
0016520 c l o s e d - o v e r \r
0016540
*
0016600 n o n - l o c a l b o d y ) )
0016620 ) r e q u i r e d o p t i o
0016640 n a l r e s t k e y a l l
0016660 o w - o t h e r - k e y s \r
0016700
*
0016760 o t h e r s
0017000 n a m e b l i p c l o s e d
0017020 - o v e r n o n - l o c a l
0017040 b o d y ) \r \r ( d e f s t r u c
0017060 t 006 002 d t a g 006 001 " L E V E
0017100 L i s t h e l e x i c a l
0017120 l e v e l o f t h i s t
0017140 a g , f o r u s e b y t
0017160 h e s t a c k a n a l y z e
0017200 r . \r S T A C K - D E P T H i
0017220 s a p a i r < b i n d i n
0017240 g - d e p t h . d e p t h >
0017260 r e p r e s e n t i n g t h
0017300 e s t a t e o f t h e s
0017320 t a c k a n a l y z e r l a
0017340 s t t i m e i t w a s h
0017360 e r e . \r P T R i s t h e
0017400 t a i l o f t h e c o d e
0017420 l i s t s t a r t i n g w
0017440 i t h t h i s t a g , u s
0017460 e d b y t h e s t a c k
0017500 a n a l y z e r . \r P C i s
0017520 t h e f i n a l l o c a t i
0017540 o n o f t h i s t a g ,
0017560 a f t e r j u m p r e s o l
0017600 u t i o n . \r M I N - P C i s
0017620 t h e l e a s t l o c a t
0017640 i o n a t w h i c h t h i
0017660 s t a g c o u l d e n d
0017700 u p , u s e d d u r i n g
0017720 j u m p r e s o l u t i o n .
0017740 \r P C - U N C E R T A I N T Y
0017760 i s t h e a m o u n t o f
0020000 s l a c k t h e r e i s
0020020 i n t h e f i n a l l o c
0020040 a t i o n o f t h i s t a
0020060 g , u s e d d u r i n g j
0020100 u m p r e s o l u t i o n . "
0020120 \r l e v e l s t a c k -
0020140 d e p t h p t r p c m i n
0020160 - p c p c - u n c e r t a i n
0020200 t y ) \r \r ( d e f s t r u c t
0020220 006 002 d v a r 006 001 k i n d l e
0020240 v e l s l o t n a m e ) \r \r
0020260 ( i l : d e f p r i n t ' d t
0020300 a g n i l ) \r ( d e f u n c
0020320 r e a t e - h u n k ( h u n k
0020340 - s i z e m y - s l o t p r
0020360 e v - s l o t p o p - p ) \r
0020400 ( i l : * i l : |
0020420 ; ; ; | " E m i t c o d e
0020440 t o c r e a t e a h u n k
0020460 o f t h e g i v e n s i
0020500 z e a n d s t o r e i t
0020520 i n t o P V A R m y - s l o
0020540 t . I f p r e v - s l o t
0020560 i s n o n - N I L , a l s
0020600 o e m i t c o d e t o l
0020620 i n k t h e n e w h u n k
0020640 t o t h e o n e i n t
0020660 h a t s l o t . I f p o
0020700 p - p i s n o n - N I L t
0020720 h e n d o n ' t l e a v e
0020740 t h e h u n k o n t h e
0020760 s t a c k . " \r
0021000 ) \r ( e
0021020 m i t - b y t e - l i s t ` (
0021040 i l : s i c x ( t y p e , (
0021060 t y p e - n a m e - f r o m - s
0021100 i z e h u n k - s i z e ) ) \r
0021120
0021140 i
0021160 l : c r e a t e c e l l \r
0021200
0021220 , @ ( a
0021240 n d p r e v - s l o t ` ( ,
0021260 @ ( c h o o s e - o p ' ( i l
0021300 : p v a r . i l : p v a r x
0021320 ) p r e v - s l o t ) \r
0021340
*
0021400 i
0021420 l : r p l p t r . n 0 ) ) \r
0021440
0021460 , @
0021500 ( s t o r e - v a r m y - s l
0021520 o t p o p - p ) ) ) ) \r ( d e
0021540 f u n t y p e - n a m e - f r
0021560 o m - s i z e ( l e n ) \r
0021600 ( i l : p a c k * '
0021620 \ \ p t r h u n k ( i l : f o
0021640 r h u n k - s i z e i l : i
0021660 n i l : \ \ h u n k . p t r s
0021700 i z e s i l : w h e n ( < =
0021720 l e n h u n k - s i z e ) \r
0021740
*
0022000 i l : d o \r
0022020
0022040 ( r e t
0022060 u r n h u n k - s i z e ) \r
0022100
*
0022140 i l : f i n a l l y \r
0022160
*
0022220 ( e r r o r " C a n ' t m a
0022240 k e a h u n k t h a t b
0022260 i g : ~ S " l e n ) ) ) ) \r
0022300 ( d e f u n r e l e a s e - c
0022320 i r c u l a r i t i e s ( c o
0022340 d e ) \r " N I L
0022360 o u t a n y c i r c u l a r
0022400 i t i e s i n t h e L A P
0022420 c o d e g i v e n . " \r
0022440 ( i l : f o r i n s
0022460 t i l : i n c o d e i l :
0022500 d o ( c a s e ( c a r i n
0022520 s t ) \r
0022540
0022560 (
0022600 ( t a g ) \r
0022620
*
0022660 ( s e t f ( d t a g - p t
0022700 r ( s e c o n d i n s t ) )
0022720 \r
0022740
*
0023000 n i l ) ) ) ) ) \r \r \r \r 006
0023020 004 ( i l : * i l : | ; ; | "
0023040 H a n d y c o n s t a n t s "
0023060 ) 006 001 \r \r ( d e f c o n s t a n
0023100 t 006 002 + i v a r - c o d e + 006
0023120 001 0 " C o d e i n n a m
0023140 e - t a b l e f o r I V A R
0023160 s " ) \r \r ( d e f c o n s t a n
0023200 t 006 002 + p v a r - c o d e + 006
0023220 001 2 " C o d e i n n a m
0023240 e - t a b l e f o r P V A R
0023260 s " ) \r \r ( d e f c o n s t a n
0023300 t 006 002 + f v a r - c o d e + 006
0023320 001 3 " C o d e i n n a m
0023340 e - t a b l e f o r F V A R
0023360 s " ) \r \r ( d e f c o n s t a n
0023400 t 006 002 + l a m b d a - s p r e
0023420 a d + 006 001 0 " A R G T Y P E
0023440 v a l u e f o r l a m b d
0023460 a s p r e a d f u n c t i o
0023500 n s " ) \r \r ( d e f c o n s t a
0023520 n t 006 002 + n l a m b d a - s p
0023540 r e a d + 006 001 1 " A R G T Y
0023560 P E v a l u e f o r n l a
0023600 m b d a s p r e a d f u n c
0023620 t i o n s " ) \r \r ( d e f c o n
0023640 s t a n t 006 002 + l a m b d a -
0023660 n o - s p r e a d + 006 001 2 "
0023700 A R G T Y P E v a l u e f o
0023720 r l a m b d a n o - s p r e
0023740 a d f u n c t i o n s " ) \r \r
0023760 ( d e f c o n s t a n t 006 002 +
0024000 n l a m b d a - n o - s p r e a
0024020 d + 006 001 3 " A R G T Y P E
0024040 v a l u e f o r n l a m b d
0024060 a n o - s p r e a d f u n c
0024100 t i o n s " ) \r \r ( d e f c o n
0024120 s t a n t 006 002 + c o n s t a n
0024140 t - o p c o d e s + 006 001 ' ( (
0024160 0 . i l : \ ' 0 ) \r
0024200
0024220 ( 1
0024240 . i l : \ ' 1 ) \r
0024260
0024300 ( n i
0024320 l . i l : \ ' n i l ) \r
0024340
*
0024400 ( t . i l : \ ' t ) ) " A
0024420 n A L i s t o f a l l c
0024440 o n s t a n t s w i t h d e
0024460 d i c a t e d o p c o d e s .
0024500 " \r ) \r \r \r \r \r 006 004 ( i l
0024520 : * i l : | ; ; | " O p c o
0024540 d e g e n e r a t i o n " ) 006
0024560 001 \r \r ( d e f v a r 006 002 * b y
0024600 t e s * 006 001 n i l " T h e
0024620 d a t a - s t r u c t u r e h
0024640 o l d i n g t h e b y t e s
0024660 o f t h e c u r r e n t
0024700 f u n c t i o n . U s e (
0024720 s t a r t - b y t e s ) t o
0024740 c r e a t e a n e m p t y
0024760 o n e , ( e m i t - b y t e )
0025000 o r ( e m i t - o p ) t o
0025020 a d d m o r e b y t e s
0025040 o n t h e e n d , a n d
0025060 ( e n d - b y t e s ) t o c
0025100 l o s e i t o f f a n d
0025120 g e t a n a r r a y o f
0025140 t h e b y t e s . " \r ) \r \r (
0025160 d e f v a r 006 002 * b y t e - c
0025200 o u n t * 006 001 0 " T h e n
0025220 u m b e r o f b y t e s p
0025240 u t o n * b y t e s * s o
0025260 f a r . " ) \r \r ( d e f u n
0025300 s t a r t - b y t e s n i l
0025320 n i l ) \r ( d e f u n e m i t
0025340 - b y t e ( b y t e ) \r
0025360 ( c o n d ( ( c o n s
0025400 p b y t e ) \r
0025420 ( c a s e ( f i r
0025440 s t b y t e ) \r
0025460 ( ( :
0025500 t a g ) \r
0025520 ( s e t f
0025540 ( d t a g - m i n - p c ( s e
0025560 c o n d b y t e ) ) \r
0025600
0025620 * b y t e - c o u
0025640 n t * ) \r
0025660 ( p u s h
0025700 ( s e c o n d b y t e ) \r
0025720
0025740 * j u m p - l
0025760 i s t * ) ) \r
0026000 ( ( : j u
0026020 m p : f j u m p : t j u m p
0026040 : n f j u m p : n t j u m p
0026060 ) \r
0026100 ( p u s h b y t
0026120 e * b y t e s * ) \r
0026140
0026160 ( p u s h ( m a k e - d j u m
0026200 p : k i n d ( f i r s t b
0026220 y t e ) \r
0026240
0026260 : t a g \r
0026300
0026320 ( s
0026340 e c o n d b y t e ) \r
0026360
0026400 : p
0026420 t r * b y t e s * : m i n -
0026440 p c * b y t e - c o u n t * )
0026460 \r
0026500 * j u m
0026520 p - l i s t * ) \r
0026540 ( i
0026560 l : * i l : \ ; " I n c r e
0026600 a s e t h e b y t e - c o u
0026620 n t b y t h e m i n i m u
0026640 m s i z e o f t h i s k
0026660 i n d o f j u m p . " ) \r
0026700
0026720 ( i n c f * b y t e -
0026740 c o u n t * ( s e c o n d (
0026760 a s s o c ( f i r s t b y t
0027000 e ) \r
0027020
*
0027060 + j u m p -
0027100 s i z e s + ) ) ) ) \r
0027120 (
0027140 ( s y m f n t y p e ) \r
0027160
0027200 ( p u s h b y t e * b
0027220 y t e s * ) \r
0027240 ( p u s
0027260 h 0 * b y t e s * ) \r
0027300
0027320 ( i n c f * b y t e - c o
0027340 u n t * 2 ) ) \r
0027360 ( ( l
0027400 a m b d a l i t ) \r
0027420
0027440 ( p u s h b y t e * b y t e
0027460 s * ) \r
0027500 ( p u s h 0
0027520 * b y t e s * ) \r
0027540 (
0027560 p u s h 0 * b y t e s * ) \r
0027600
0027620 ( i n c f * b y t e
0027640 - c o u n t * 3 ) ) \r
0027660
0027700 ( ( i l : a t o m ) \r
0027720
0027740 ( i l : * i l : | ; ; | " B
0027760 y t e C o m p i l e r - s t y l
0030000 e f i x u p , h e r e b e
0030020 c a u s e o f a D O P V A
0030040 L . T h e B y t e C o m p
0030060 i l e r p u t i t s f i x
0030100 u p b y t e s A F T E R t
0030120 h e p a d d i n g b y t e s
0030140 , s o w e h a v e t o
0030160 r e a r r a n g e t h i n g s
0030200 i n t h e b y t e l i s
0030220 t . " \r
0030240 )
0030260 \r
0030300 ( p o p * b y t e
0030320 s * ) \r
0030340 ( p u s h (
0030360 l i s t ' s y m ( c d r b
0030400 y t e ) ) \r
0030420
0030440 * b y t e s * ) \r
0030460 (
0030500 p u s h 0 * b y t e s * ) \r
0030520
0030540 ( i n c f * b y t e
0030560 - c o u n t * ) ) \r
0030600 ( (
0030620 i l : p t r ) \r
0030640 ( i l
0030660 : * i l : | ; ; | " B y t e
0030700 C o m p i l e r - s t y l e f
0030720 i x u p , h e r e b e c a u
0030740 s e o f a D O P V A L .
0030760 T h e B y t e C o m p i l e
0031000 r p u t i t s f i x u p
0031020 b y t e s A F T E R t h e
0031040 p a d d i n g b y t e s , s
0031060 o w e h a v e t o r e a
0031100 r r a n g e t h i n g s i n
0031120 t h e b y t e l i s t . "
0031140 \r
0031160 ) \r
0031200
0031220 ( p o p * b y t e s * )
0031240 \r
0031260 ( p o p * b y t e
0031300 s * ) \r
0031320 ( p u s h (
0031340 l i s t ' l i t ( c d r b
0031360 y t e ) ) \r
0031400
0031420 * b y t e s * ) \r
0031440 (
0031460 p u s h 0 * b y t e s * ) \r
0031500
0031520 ( p u s h 0 * b y
0031540 t e s * ) \r
0031560 ( i n c f
0031600 * b y t e - c o u n t * ) ) \r
0031620
0031640 ( o t h e r w i s e (
0031660 p u s h b y t e * b y t e s
0031700 * ) \r
0031720 ( i
0031740 n c f * b y t e - c o u n t *
0031760 ) ) ) ) \r
0032000 ( t ( p u s h b y t e
0032020 * b y t e s * ) \r
0032040 ( i n c f *
0032060 b y t e - c o u n t * ) ) ) ) \r
0032100 ( d e f u n e m i t - b y t e
0032120 - l i s t ( l ) \r
0032140 ( i l : f o r b y t e i l
0032160 : i n l i l : d o ( e m i
0032200 t - b y t e b y t e ) ) ) \r (
0032220 d e f u n e n d - b y t e s
0032240 n i l ( n r e v e r s e * b
0032260 y t e s * ) ) \r ( d e f u n c
0032300 h o o s e - o p ( c h o i c e
0032320 s a r g ) \r ( i
0032340 f ( < = a r g ( m a x - a
0032360 r g ( c a r c h o i c e s )
0032400 ) ) \r ` (
0032420 ( , ( c a r c h o i c e s )
0032440 , a r g ) ) \r
0032460 ` ( , ( c d r c h o i c e
0032500 s ) , ( i l : l l s h a r g
0032520 1 ) ) ) ) \r ( d e f u n r e
0032540 f - v a r ( v a r ) \r
0032560 " R e t u r n a l i s
0032600 t o f i n s t r u c t i o n
0032620 s t o p u s h t h e g i
0032640 v e n v a r i a b l e ' s v
0032660 a l u e o n t o t h e s t
0032700 a c k . " \r ( i f
0032720 ( d v a r - p v a r ) \r
0032740 ( e c a s e
0032760 ( d v a r - k i n d v a r ) \r
0033000
0033020 ( ( : l o c a l ) \r
0033040 (
0033060 c h o o s e - o p ' ( i l : p
0033100 v a r . i l : p v a r x )
0033120 ( d v a r - s l o t v a r ) )
0033140 ) \r
0033160 ( ( : a r g u m e n t )
0033200 \r
0033220 ( c h o o s e - o p '
0033240 ( i l : i v a r . i l : i v
0033260 a r x ) ( d v a r - s l o t
0033300 v a r ) ) ) \r
0033320 ( ( : f r e e
0033340 ) \r
0033360 ( c h o o s e - o p
0033400 ' ( i l : f v a r . i l : f
0033420 v a r x ) ( d v a r - s l o t
0033440 v a r ) ) ) \r
0033460 ( ( : c l o
0033500 s e d ) \r
0033520 ( l e t * ( (
0033540 l e v e l ( d v a r - l e v e
0033560 l v a r ) ) \r
0033600
0033620 ( m a p - e n t r y ( i l
0033640 : f i n d e n t r y i l : i
0033660 n ( r e v e r s e * h u n k
0033700 - m a p * ) \r
0033720
*
0033760 i l : s u c h t h a t \r
0034000
*
0034040 ( < = l
0034060 e v e l ( c a r e n t r y )
0034100 ) ) ) \r
0034120 ( h
0034140 u n k - l e v e l ( c a r m
0034160 a p - e n t r y ) ) \r
0034200
0034220 ( h u n k - s l o t
0034240 ( c d r m a p - e n t r y ) )
0034260 ) \r
0034300 ` ( , @ (
0034320 c h o o s e - o p ' ( i l : p
0034340 v a r . i l : p v a r x )
0034360 h u n k - s l o t ) \r
0034400
0034420 , @ ( i l : f o r
0034440 i i l : f r o m 1 i l : t
0034460 o ( - h u n k - l e v e l
0034500 l e v e l ) \r
0034520
0034540 i l : j o
0034560 i n \r
0034600
0034620 ( l i s t ' i l
0034640 : g e t b a s e p t r . n 0 )
0034660 ) i l : g e t b a s e p t r .
0034700 n \r
0034720 , ( i
0034740 l : l l s h ( d v a r - s l o
0034760 t v a r ) \r
0035000
0035020 1 ) ) ) ) )
0035040 \r ( i f
0035060 ( a n d ( c o n s p v a r )
0035100 \r
0035120 ( e q ( f i r s t
0035140 v a r ) \r
0035160 ' : g
0035200 ) ) \r
0035220 ` ( i l : g v a r ( s y m
0035240 , ( s e c o n d v a r ) ) )
0035260 \r
0035300 ( e r r o r " B U G : T h i
0035320 s v a r i a b l e i s n e
0035340 i t h e r g l o b a l n o r
0035360 a D V A R : ~ S " v a r
0035400 ) ) ) ) \r ( d e f u n s t o r
0035420 e - v a r ( v a r - o r - s l
0035440 o t p o p - p ) \r
0035460 " R e t u r n a l i s t
0035500 o f i n s t r u c t i o n s
0035520 t o s t o r e t h e v a l
0035540 u e o n t h e t o p o f
0035560 s t a c k i n t o t h e
0035600 g i v e n v a r i a b l e .
0035620 I f a s l o t n u m b e
0035640 r i s g i v e n i n s t e
0035660 a d , i t i s a s s u m e
0035700 d t o r e f e r t o a
0035720 P V A R . I f P O P - P
0035740 i s n o n - N I L , d o n '
0035760 t l e a v e t h e v a l u
0036000 e o n t h e s t a c k . "
0036020 \r ( l e t ( k i
0036040 n d s l o t ) \r
0036060 ( e t y p e c a s e
0036100 v a r - o r - s l o t ( f i x
0036120 n u m ( s e t q s l o t v
0036140 a r - o r - s l o t ) \r
0036160
*
0036220 ( s e t q k i n d
0036240 : l o c a l ) ) \r
0036260 ( c o
0036300 n s ( u n l e s s ( e q (
0036320 f i r s t v a r - o r - s l o
0036340 t ) \r
0036360
0036400 ' : g ) \r
0036420
0036440 ( e r
0036460 r o r " B U G : T h i s v
0036500 a r i a b l e i s n e i t h
0036520 e r a g l o b a l n o r
0036540 a D V A R : ~ S " \r
0036560
*
0036620 v a r - o r - s l o t )
0036640 ) \r
0036660 ( s e t q
0036700 k i n d : g l o b a l ) \r
0036720
0036740 ( s e t q s l
0036760 o t ( s e c o n d v a r - o
0037000 r - s l o t ) ) ) \r
0037020 ( d v
0037040 a r ( s e t q s l o t ( d
0037060 v a r - s l o t v a r - o r -
0037100 s l o t ) ) \r
0037120
0037140 ( s e t q k i n d ( d v a r
0037160 - k i n d v a r - o r - s l o
0037200 t ) ) ) ) \r
0037220 ( e c a s e k i n d ( (
0037240 : l o c a l ) \r
0037260
0037300 ( i f p o p - p ( i f (
0037320 < = s l o t ( m a x - a r g
0037340 ' i l : p v a r _ ^ ) ) \r
0037360
*
0037420 ` ( ( i l : p v a r _
0037440 ^ , s l o t ) ) \r
0037460
*
0037520 ` ( , @ ( c h o o s e - o p
0037540 ' ( i l : p v a r _ . i l :
0037560 p v a r x _ ) s l o t ) i l
0037600 : p o p ) ) \r
0037620
0037640 ( c h o o s e - o p '
0037660 ( i l : p v a r _ . i l : p
0037700 v a r x _ ) s l o t ) ) ) \r
0037720
0037740 ( ( : a r g u m e n t ) \r
0037760
0040000 ` ( i l : i v a r x _ ,
0040020 ( i l : l l s h s l o t 1 )
0040040 , @ ( a n d p o p - p ' (
0040060 i l : p o p ) ) ) ) \r
0040100 ( (
0040120 : f r e e ) \r
0040140 ` ( i l :
0040160 f v a r x _ , ( i l : l l s h
0040200 s l o t 1 ) , @ ( a n d
0040220 p o p - p ' ( i l : p o p ) )
0040240 ) ) \r
0040260 ( ( : c l o s e d )
0040300 \r
0040320 ( l e t * ( ( l e v
0040340 e l ( d v a r - l e v e l v
0040360 a r - o r - s l o t ) ) \r
0040400
0040420 ( m a p - e n t
0040440 r y ( i l : f i n d e n t r
0040460 y i l : i n ( r e v e r s e
0040500 * h u n k - m a p * ) \r
0040520
*
0040560 i l : s u c
0040600 h t h a t \r
0040620
*
0040660 ( < = l e v e l ( c a
0040700 r e n t r y ) ) ) ) \r
0040720
0040740 ( h u n k - l e v
0040760 e l ( c a r m a p - e n t r
0041000 y ) ) \r
0041020 (
0041040 h u n k - s l o t ( c d r m
0041060 a p - e n t r y ) ) ) \r
0041100
0041120 ` ( , @ ( a n d (
0041140 n o t p o p - p ) \r
0041160
0041200 ' i
0041220 l : c o p y ) , @ ( c h o o s
0041240 e - o p ' ( i l : p v a r .
0041260 i l : p v a r x ) h u n k -
0041300 s l o t ) \r
0041320
0041340 , @ ( i l : f o
0041360 r i i l : f r o m 1 i l
0041400 : t o ( - h u n k - l e v e
0041420 l l e v e l ) \r
0041440
*
0041500 i l : j o i n \r
0041520
*
0041560 ( l i s t ' i l
0041600 : g e t b a s e p t r . n 0 )
0041620 ) i l : s w a p i l : r p l
0041640 p t r . n \r
0041660
0041700 , ( i l : l l s
0041720 h s l o t 1 ) i l : p o p
0041740 ) ) ) \r
0041760 ( ( : g l o b a l
0042000 ) \r
0042020 ` ( i l : g v a r _
0042040 ( s y m , s l o t ) ) ) ) )
0042060 ) \r ( d e f u n m a x - a r g
0042100 ( o p c o d e ) \r
0042120 ( l e t ( ( r a n g e ( i
0042140 l : f e t c h i l : o p # i
0042160 l : o f ( i l : \ \ f i n d o
0042200 p o p c o d e ) ) ) ) \r
0042220 ( - ( s e c
0042240 o n d r a n g e ) \r
0042260 ( f i r s t
0042300 r a n g e ) ) ) ) \r ( d e f u
0042320 n p u s h - i n t e g e r (
0042340 n ) \r ( c o n d
0042360 ( ( z e r o p n ) \r
0042400 ' ( i l : \ '
0042420 0 ) ) \r
0042440 ( ( = n 1 ) \r
0042460 ' ( i l : \ ' 1
0042500 ) ) \r
0042520 ( ( < = - 2 5 6 n - 1 ) \r
0042540 ` (
0042560 i l : s n i c , ( + n 2 5
0042600 6 ) ) ) \r
0042620 ( ( < = 0 n 2 5 5 ) \r
0042640 ` (
0042660 i l : s i c , n ) ) \r
0042700 ( ( < = 2 5
0042720 5 n 6 5 5 3 5 ) \r
0042740 ` ( i l : s i
0042760 c x , ( i l : l r s h n 8
0043000 ) , ( l o g a n d n 2 5 5
0043020 ) ) ) \r
0043040 ( t ` ( i l : g c o n s t
0043060 ( l i t , n ) ) ) ) ) \r \r \r \r
0043100 006 004 ( i l : * i l : | ; ; |
0043120 " M a i n d r i v i n g " ) 006
0043140 001 \r \r ( d e f v a r 006 002 * d t
0043160 a g - e n v * 006 001 n i l \r
0043200 " A h a s h - t a
0043220 b l e m a p p i n g t h e
0043240 E Q L - u n i q u e I D o f
0043260 a L A P t a g i n t o
0043300 t h e D T A G s t r u c t u
0043320 r e u s e d b y D - A S S
0043340 E M . " ) \r \r ( d e f v a r 006
0043360 002 * d v a r - e n v * 006 001 n i
0043400 l \r " A h a s h - t a b
0043420 l e m a p p i n g t h e E
0043440 Q L - u n i q u e I D o f
0043460 a L A P v a r i a b l e i
0043500 n t o t h e D V A R s t r
0043520 u c t u r e u s e d b y D
0043540 - A S S E M . " ) \r \r ( d e f v
0043560 a r 006 002 * h u n k - m a p * 006
0043600 001 n i l " A n A L i s t
0043620 m a p p i n g l e x i c a l
0043640 l e v e l n u m b e r s i n
0043660 t o t h e P V A R n u m b
0043700 e r o f a s l o t i n
0043720 t h e c u r r e n t f r a m
0043740 e h o l d i n g t h e h u
0043760 n k f o r t h a t l e v e
0044000 l . " \r ) \r \r ( d e f v a r 006
0044020 002 * d c o d e * 006 001 0 " T h
0044040 e c u r r e n t l y - u n d e
0044060 r - c o n s t r u c t i o n D
0044100 C O D E s t r u c t u r e . "
0044120 ) \r \r ( d e f v a r 006 002 * l e
0044140 v e l * 006 001 0 " T h e c u
0044160 r r e n t l e x i c a l n e
0044200 s t i n g l e v e l . " ) \r \r
0044220 ( d e f u n a s s e m b l e -
0044240 f u n c t i o n ( l a p - f n
0044260 ) \r " L A P - F N
0044300 i s a L A P - f o r m a t
0044320 f u n c t i o n d e s c r i
0044340 p t i o n ( a L A M B D A )
0044360 . R e t u r n t h e D C
0044400 O D E s t r u c t u r e t h
0044420 a t r e s u l t s f r o m
0044440 a s s e m b l i n g i t i n
0044460 t o D - m a c h i n e b y t
0044500 e c o d e s . " \r
0044520 ( l e t ( ( * d v a r - e n v
0044540 * ( m a k e - h a s h - t a b
0044560 l e : t e s t ' e q l ) ) \r
0044600 ( * d
0044620 t a g - e n v * ( m a k e - h
0044640 a s h - t a b l e : t e s t
0044660 ' e q l ) ) ) \r
0044700 ( d c o d e - f r o m -
0044720 d l a m b d a ( d l a m b d a
0044740 - f r o m - l a m b d a ( c o
0044760 p y - t r e e l a p - f n ) )
0045000 \r
0045020 0 ) ) ) \r ( d e f u n
0045040 d l a m b d a - f r o m - l a m
0045060 b d a ( l a p - f n ) \r
0045100 " B r e a k o u t t
0045120 h e f i e l d s o f a L
0045140 A P l a m b d a a n d r e
0045160 t u r n t h e m i n t h e
0045200 f o r m o f a D L A M B
0045220 D A s t r u c t u r e . " \r
0045240 ( i l : d e s t r u
0045260 c t u r i n g - b i n d ( ( r
0045300 e q u i r e d & k e y o p t
0045320 i o n a l r e s t k e y a
0045340 l l o w - o t h e r - k e y s
0045360 o t h e r s n a m e b l i p
0045400 \r
0045420
0045440 c l o s e d - o
0045460 v e r n o n - l o c a l ) \r
0045500
0045520 & r
0045540 e s t b o d y ) \r
0045560 ( c d r l a p
0045600 - f n ) \r
0045620 ( m a k e - d l a m b d a
0045640 r e q u i r e d o p t i o n
0045660 a l r e s t k e y a l l o
0045700 w - o t h e r - k e y s o t h
0045720 e r s n a m e b l i p c l
0045740 o s e d - o v e r \r
0045760 (
0046000 m a p c a r # ' l a p - v a r
0046020 - i d n o n - l o c a l ) \r
0046040
0046060 b o d y ) ) ) \r ( d e f
0046100 u n d c o d e - f r o m - d l
0046120 a m b d a ( d l a m b d a l
0046140 e v e l ) \r " L E
0046160 V E L i s t h e l e n g t
0046200 h o f t h e c h a i n o
0046220 f h u n k s t h a t w i l
0046240 l b e p a s s e d t o t
0046260 h e r e s u l t o f a s s
0046300 e m b l i n g D L A M B D A
0046320 a t r u n t i m e . " \r
0046340 ( l e t ( ( * d c o d
0046360 e * ( m a k e - d c o d e :
0046400 f r a m e - n a m e ( d l a m
0046420 b d a - n a m e d l a m b d a
0046440 ) ) ) \r
0046460 ( * h u n k - m a p * ( a n
0046500 d ( > l e v e l 0 ) \r
0046520
0046540 ` ( ( ,
0046560 l e v e l . 0 ) ) ) ) \r
0046600 ( * h u n
0046620 k - s i z e * ( i f ( > l
0046640 e v e l 0 ) \r
0046660
0046700 1 0 ) ) \r
0046720 ( * b y t e s
0046740 * ( s t a r t - b y t e s ) )
0046760 \r ( *
0047000 b y t e - c o u n t * 0 ) \r
0047020 ( * j u
0047040 m p - l i s t * n i l ) \r
0047060 ( * p v a
0047100 r - c o u n t * ( i f ( >
0047120 l e v e l 0 ) \r
0047140
0047160 1 0 ) ) \r
0047200 ( * l e v
0047220 e l * l e v e l ) \r
0047240 ( e a s y - e n
0047260 t r y ( e a s y - e n t r y -
0047300 p d l a m b d a ) ) ) \r
0047320 ( i l : * i
0047340 l : | ; ; | " P a s s 0 :
0047360 I n t e r n a l l o f t h
0047400 e v a r i a b l e s a n d
0047420 t a g s " ) \r
0047440 ( d i g e s t - f u n c t
0047460 i o n d l a m b d a e a s y
0047500 - e n t r y ) \r
0047520 ( i l : * i l : | ; ;
0047540 | " P a s s 1 : T r a n s
0047560 l a t e L A P c o d e i n
0047600 t o o p c o d e s a n d b
0047620 y t e s . " ) \r
0047640 ( i f e a s y - e n t
0047660 r y ( g e n e r a t e - e a s
0047700 y - e n t r y d l a m b d a )
0047720 \r
0047740 ( g e n e r a t e - h a r d -
0047760 e n t r y d l a m b d a ) ) \r
0050000 ( s t a
0050020 c k - a n a l y z e ( d l a m
0050040 b d a - b o d y d l a m b d a
0050060 ) ) \r (
0050100 a s s e m b l e ( d l a m b d
0050120 a - b o d y d l a m b d a ) )
0050140 \r ( r e
0050160 l e a s e - c i r c u l a r i t
0050200 i e s ( d l a m b d a - b o d
0050220 y d l a m b d a ) ) \r
0050240 ( e m i t - b y
0050260 t e ' i l : - x - ) \r
0050300 ( s e t q * b
0050320 y t e s * ( e n d - b y t e s
0050340 ) ) \r (
0050360 i l : * i l : | ; ; | " P a
0050400 s s 1 - 1 / 2 : R e s o l v
0050420 e t h e u n c e r t a i n t
0050440 y i n j u m p s i z e s
0050460 a n d d i s t a n c e s . " )
0050500 \r ( u n
0050520 l e s s ( n u l l * j u m p
0050540 - l i s t * ) \r
0050560 ( r e s o
0050600 l v e - j u m p s ( r e v e r
0050620 s e * j u m p - l i s t * ) )
0050640 ) \r ( i
0050660 l : * i l : | ; ; | " P a s
0050700 s 2 : C o n v e r t t h e
0050720 b y t e - l i s t i n t o
0050740 i t s f i n a l b i n a r y
0050760 f o r m a n d c r e a t e
0051000 t h e f i x u p l i s t s
0051020 . T h i s p a s s a l s
0051040 o p e r f o r m s t h e r
0051060 e c u r s i o n n e c e s s a
0051100 r y t o c o m p i l e n e
0051120 s t e d l a m b d a s . " \r
0051140
0051160 ) \r (
0051200 c o n v e r t - t o - b i n a r
0051220 y * b y t e s * ) \r
0051240 ( i l : * i l :
0051260 | ; ; | " F i l l i n t h
0051300 e l a s t f e w b i t s
0051320 o f t h e D C O D E a n d
0051340 q u i t . " ) \r
0051360 ( c o m p u t e - d e
0051400 b u g g i n g - i n f o d l a
0051420 m b d a ) \r
0051440 ( s e t f ( d c o d e - c
0051460 l o s u r e - p * d c o d e *
0051500 ) \r
0051520 ( i f ( n u l l ( d
0051540 l a m b d a - n o n - l o c a l
0051560 d l a m b d a ) ) \r
0051600
0051620 : f u n c t i o n : c l o s
0051640 u r e ) ) \r
0051660 * d c o d e * ) ) \r \r \r \r 006
0051700 004 ( i l : * i l : | ; ; | "
0051720 D i g e s t i n g t h e f u
0051740 n c t i o n " ) 006 001 \r \r ( d e f
0051760 v a r 006 002 * h u n k - s i z e
0052000 * 006 001 0 " T h e n u m b e
0052020 r o f h u n k s l o t s
0052040 a l l o c a t e d s o f a r
0052060 . " ) \r \r ( d e f v a r 006 002 *
0052100 p v a r - c o u n t * 006 001 0
0052120 " T h e n u m b e r o f P
0052140 V A R a l l o c a t e d s o
0052160 f a r . " ) \r \r ( d e f v a r
0052200 006 002 * f r e e - v a r s * 006 001
0052220 n i l " A n A L i s t m
0052240 a p p i n g D V A R s f o r
0052260 t h e f r e e v a r i a b
0052300 l e s i n a f u n c t i o
0052320 n i n t o t h e n u m b e
0052340 r o f t i m e s t h e y '
0052360 r e r e f e r e n c e d i n
0052400 t h e f u n c t i o n . " \r
0052420 ) \r \r ( d e f v a r 006 002 * b o
0052440 u n d - s p e c i a l s * 006 001
0052460 n i l " A l i s t o f t
0052500 h e s p e c i a l v a r i a
0052520 b l e s b o u n d i n t h
0052540 i s f r a m e . " ) \r \r ( d e
0052560 f u n d i g e s t - f u n c t
0052600 i o n ( d l a m b d a e a s
0052620 y - e n t r y ) \r
0052640 ( l e t * ( ( c l o s e d - o
0052660 v e r ( d l a m b d a - c l o
0052700 s e d - o v e r d l a m b d a
0052720 ) ) \r
0052740 ( i v a r - c o u n t 0 ) \r
0052760 ( *
0053000 f r e e - v a r s * n i l ) \r
0053020 ( *
0053040 b o u n d - s p e c i a l s *
0053060 n i l ) ) \r
0053100 ( i l : * i l : | ; ; |
0053120 \r
0053140 " A l l o c a t e s l o t s
0053160 f o r t h e t o p - l e v
0053200 e l h u n k a n d t h e
0053220 b l i p s l o t v a r i a b
0053240 l e , i f t h e y ' r e n
0053260 e e d e d . " \r
0053300 ) \r
0053320 ( w h e n
0053340 ( n o t ( n u l l ( d l a m
0053360 b d a - b l i p d l a m b d a
0053400 ) ) ) \r
0053420 ( i l : * i l :
0053440 \ ; " T h i s c a n l e a
0053460 d t o a w a s t e d P V
0053500 A R 0 , b u t I ' m n o t
0053520 l o s i n g s l e e p o v
0053540 e r i t . " ) \r
0053560 ( i n s
0053600 t a l l - v a r ( d l a m b d
0053620 a - b l i p d l a m b d a ) \r
0053640
0053660 n i l : l
0053700 o c a l 1 ) \r
0053720 ( s e t q
0053740 * p v a r - c o u n t * 2 )
0053760 ) \r (
0054000 w h e n ( n o t ( n u l l
0054020 c l o s e d - o v e r ) ) \r
0054040
0054060 ( i n c f * l e v e l * ) \r
0054100
0054120 ( i l : * i l : \ ; "
0054140 T h e l e x i c a l l e v e
0054160 l j u s t c h a n g e d . "
0054200 ) \r
0054220 ( p u s h ( c o n s
0054240 * l e v e l * * p v a r - c
0054260 o u n t * ) \r
0054300
0054320 * h u n k - m a p * ) \r
0054340 (
0054360 i n c f * p v a r - c o u n t
0054400 * ) ) \r
0054420 ( i l : * i l : | ; ; | "
0054440 I n t e r n t h e r e q u i
0054460 r e d p a r a m e t e r s . "
0054500 ) \r (
0054520 i l : f o r t a i l i l : o
0054540 n ( d l a m b d a - r e q u i
0054560 r e d d l a m b d a ) \r
0054600
0054620 i l : d o \r
0054640 ( s e t f
0054660 ( c a r t a i l ) \r
0054700
0054720 ( i n s t a l l - v
0054740 a r ( c a r t a i l ) \r
0054760
0055000 c
0055020 l o s e d - o v e r : a r g u
0055040 m e n t i v a r - c o u n t )
0055060 ) \r
0055100 ( i n c f i v a r
0055120 - c o u n t ) ) \r
0055140 ( i l : * i l : |
0055160 ; ; | " A n d t h e n t h
0055200 e o p t i o n a l p a r a m
0055220 e t e r s a n d t h e i r
0055240 s u p p l i e d - p c o l l e
0055260 a g u e s . " ) \r
0055300 ( i l : f o r o p
0055320 t - v a r i l : i n ( d l a
0055340 m b d a - o p t i o n a l d l
0055360 a m b d a ) \r
0055400 i l : d o
0055420 \r
0055440 ( c o n d ( e a s y
0055460 - e n t r y ( s e t f ( f i
0055500 r s t o p t - v a r ) \r
0055520
*
0055560 ( i n s t a l
0055600 l - v a r ( f i r s t o p t
0055620 - v a r ) \r
0055640
*
0055700 c l o s e d -
0055720 o v e r : a r g u m e n t i
0055740 v a r - c o u n t ) ) \r
0055760
0056000 ( i n
0056020 c f i v a r - c o u n t ) ) \r
0056040
0056060 ( t ( s e
0056100 t f ( f i r s t o p t - v a
0056120 r ) \r
0056140
0056160 ( i n s t a l l - l
0056200 o c a l ( f i r s t o p t -
0056220 v a r ) \r
0056240
0056260 c
0056300 l o s e d - o v e r ) ) \r
0056320
0056340 ( d i g e s
0056360 t - c o d e ( s e c o n d o
0056400 p t - v a r ) ) \r
0056420
0056440 ( s e t f ( t h i
0056460 r d o p t - v a r ) \r
0056500
0056520 (
0056540 i n s t a l l - l o c a l ( t
0056560 h i r d o p t - v a r ) \r
0056600
*
0056640 c l o s e d - o
0056660 v e r ) ) ) ) ) \r
0056700 ( w h e n e a s y
0056720 - e n t r y ( s e t f ( d c
0056740 o d e - n u m - a r g s * d c
0056760 o d e * ) \r
0057000
0057020 i v a r - c
0057040 o u n t ) ) \r
0057060 ( i l : * i l : | ; ;
0057100 | " N e x t c o m e s t h
0057120 e r e s t a n d k e y w o
0057140 r d p a r a m e t e r s . " )
0057160 \r ( w
0057200 h e n ( n o t e a s y - e n
0057220 t r y ) \r
0057240 ( w h e n ( a
0057260 n d ( n o t ( n u l l ( d
0057300 l a m b d a - r e s t d l a m
0057320 b d a ) ) ) \r
0057340
0057360 ( n o t ( e q : i
0057400 g n o r e d ( d l a m b d a -
0057420 r e s t d l a m b d a ) ) ) )
0057440 \r
0057460 ( s e t f
0057500 ( d l a m b d a - r e s t d l
0057520 a m b d a ) \r
0057540
0057560 ( i n s t a l l - l
0057600 o c a l ( d l a m b d a - r e
0057620 s t d l a m b d a ) \r
0057640
*
0057700 c l o s e d - o v e r ) ) )
0057720 \r
0057740 ( i l : f o r k e y -
0057760 v a r i l : i n ( d l a m b
0060000 d a - k e y d l a m b d a ) \r
0060020
0060040 i l : d o \r
0060060
0060100 ( s e t f
0060120 ( s e c o n d k e y - v a r )
0060140 \r
0060160
0060200 ( i n s t a l l - l o c a l
0060220 ( s e c o n d k e y - v a r )
0060240 \r
0060260
0060300 c l o s e d - o
0060320 v e r ) ) \r
0060340
0060360 ( d i g e s t - c o d e ( t h
0060400 i r d k e y - v a r ) ) \r
0060420
0060440 ( s e t f ( f
0060460 o u r t h k e y - v a r ) \r
0060500
0060520 (
0060540 i n s t a l l - l o c a l ( f
0060560 o u r t h k e y - v a r ) \r
0060600
*
0060640 c l o s e d - o v e
0060660 r ) ) ) ) \r
0060700 ( i l : * i l : | ; ; |
0060720 " T h e n i n t e r n a n
0060740 y s t r a g g l e r s o n
0060760 t h e c l o s e d - o v e r
0061000 l i s t . " ) \r
0061020 ( i l : f o r v a r
0061040 i l : i n c l o s e d - o v
0061060 e r i l : d o \r
0061100 ( w h
0061120 e n ( a n d ( c o n s p v
0061140 a r ) \r
0061160
0061200 ( n u l l ( g e t h a s
0061220 h ( t h i r d v a r ) \r
0061240
*
0061300 * d v a r -
0061320 e n v * ) ) ) \r
0061340
0061360 ( s e t f ( g e t h a s h
0061400 ( t h i r d v a r ) \r
0061420
*
0061460 * d v a r - e n v * ) \r
0061500
*
0061540 ( m a k e - d v a r : k i n d
0061560 : c l o s e d : s l o t *
0061600 h u n k - s i z e * : l e v e
0061620 l * l e v e l * : n a m e \r
0061640
*
0061700 ( s e c o n d v
0061720 a r ) ) ) \r
0061740
0061760 ( i n c f * h u n k - s i z e
0062000 * ) ) ) \r
0062020 ( i l : * i l : | ; ; |
0062040 " A n d , a t l o n g l a
0062060 s t , d i g e s t t h e b
0062100 o d y o f t h e f u n c t
0062120 i o n . " ) \r
0062140 ( d i g e s t - c o d e
0062160 ( d l a m b d a - b o d y d
0062200 l a m b d a ) ) \r
0062220 ( i l : * i l : |
0062240 ; ; | " R e c o r d t h e
0062260 r e s u l t s o f t h i s
0062300 d i g e s t i o n ( y e c c h
0062320 . . . ) . " ) \r
0062340 ( s t o r e - d i g e
0062360 s t - i n f o ) ) ) \r ( d e f u
0062400 n d i g e s t - c o d e ( l
0062420 a p - c o d e ) \r
0062440 ( i l : f o r t a i l i l :
0062460 o n l a p - c o d e i l : d
0062500 o \r
0062520 ( l e t ( ( i n s t ( c a r
0062540 t a i l ) ) ) \r
0062560 ( c a s
0062600 e ( f i r s t i n s t ) \r
0062620
0062640 ( ( : v a r :
0062660 v a r _ ) \r
0062700
0062720 ( s e t f ( s e c o n d i n
0062740 s t ) \r
0062760
0063000 ( i n t e r n - v a r
0063020 ( s e c o n d i n s t ) ) ) )
0063040 \r
0063060 ( ( : l a m
0063100 b d a ) \r
0063120 (
0063140 s e t f ( c d r i n s t ) \r
0063160
*
0063220 ( c o n s ( d l a m b d a - f
0063240 r o m - l a m b d a i n s t )
0063260 \r
0063300
0063320 n i l ) ) ) \r
0063340
0063360 ( ( : b i n d ) \r
0063400
0063420 ( i l : *
0063440 ( i f ( a n d ( c o n s p
0063460 v a r ) \r
0063500
0063520 ( n
0063540 u l l ( g e t h a s h ( t h
0063560 i r d v a r ) \r
0063600
*
0063640 *
0063660 d v a r - e n v * ) ) ) \r
0063700
*
0063740 ( i n s t a l l - l o c a l
0063760 v a r n i l ) \r
0064000
0064020 ( e r
0064040 r o r " V a r i a b l e i n
0064060 : B I N D a p p e a r e d
0064100 e a r l i e r : ~ S " v a r
0064120 ) ) ) \r
0064140 ( f
0064160 l e t ( ( i n s t a l l - n e
0064200 w ( v a r ) \r
0064220
*
0064260 ( i f ( a n d ( c o n s p
0064300 v a r ) \r
0064320
*
0064360 ( n u l l ( g e t
0064400 h a s h ( t h i r d v a r )
0064420 \r
0064440
*
0064500 *
0064520 d v a r - e n v * ) ) ) \r
0064540
*
0064600 ( i n s t a l
0064620 l - l o c a l v a r n i l )
0064640 \r
0064660
0064700 ( g e
0064720 t h a s h ( t h i r d v a r
0064740 ) \r
0064760
*
0065020 * d v a r - e n v * )
0065040 ) ) ) \r
0065060
0065100 ( s e t f ( s e c o n
0065120 d i n s t ) \r
0065140
0065160 ( m
0065200 a p c a r # ' i n s t a l l -
0065220 n e w ( s e c o n d i n s t
0065240 ) ) ) \r
0065260
0065300 ( s e t f ( t h i r d
0065320 i n s t ) \r
0065340
0065360 ( m a
0065400 p c a r # ' i n s t a l l - n
0065420 e w ( t h i r d i n s t ) )
0065440 ) ) ) \r
0065460 ( ( :
0065500 u n b i n d : d u n b i n d )
0065520 \r
0065540 ( s e t f
0065560 ( s e c o n d i n s t ) \r
0065600
0065620 (
0065640 l e n g t h ( s e c o n d i
0065660 n s t ) ) \r
0065700
0065720 ( t h i r d i n s
0065740 t ) \r
0065760
0066000 ( l e n g t h ( t h i r
0066020 d i n s t ) ) ) ) \r
0066040
0066060 ( ( : t a g ) \r
0066100
0066120 ( s e t f ( s e c
0066140 o n d i n s t ) \r
0066160
0066200 ( i n t e r
0066220 n - t a g ( s e c o n d i n
0066240 s t ) ) ) \r
0066260
0066300 ( s e t f ( d t a g - p t r
0066320 ( s e c o n d i n s t ) ) \r
0066340
0066360 t
0066400 a i l ) \r
0066420 (
0066440 s e t f ( d t a g - l e v e l
0066460 ( s e c o n d i n s t ) ) \r
0066500
*
0066540 * l e v e l * ) ) \r
0066560
0066600 ( ( : j u m p : f j u m
0066620 p : t j u m p : n f j u m p
0066640 : n t j u m p ) \r
0066660
0066700 ( s e t f ( s e c o n
0066720 d i n s t ) \r
0066740
0066760 ( i n t e r n -
0067000 t a g ( s e c o n d i n s t
0067020 ) ) ) ) \r
0067040 ( (
0067060 : c l o s e ) \r
0067100
0067120 ( l e t ( ( * l e v e l *
0067140 ( 1 + * l e v e l * ) ) \r
0067160
0067200 (
0067220 * h u n k - s i z e * ( i f
0067240 ( > * l e v e l * 0 ) \r
0067260
*
0067320 1
0067340 0 ) ) ) \r
0067360
0067400 ( i l : * i l : | ;
0067420 ; | " I n s e t t i n g u
0067440 p t h e n e w l e x i c a
0067460 l e n v i r o n m e n t , d
0067500 o n ' t f o r g e t t o l
0067520 e a v e a s l o t f o r
0067540 l i n k i n g t h e h u n k
0067560 s t o g e t h e r , i f n
0067600 e c e s s a r y . " \r
0067620
*
0067660 ) \r
0067700
0067720 ( l e t ( ( d v a r s ( i
0067740 l : f o r v a r i l : i n
0067760 ( s e c o n d i n s t ) \r
0070000
*
0070060 i l : c o l l e c t \r
0070100
*
0070140 (
0070160 s e t f ( g e t h a s h ( t
0070200 h i r d v a r ) \r
0070220
*
0070300 * d v a r -
0070320 e n v * ) \r
0070340
*
0070400 (
0070420 m a k e - d v a r : k i n d
0070440 : c l o s e d : s l o t * h
0070460 u n k - s i z e * \r
0070500
*
0070560 : l e v e
0070600 l * l e v e l * : n a m e
0070620 ( s e c o n d v a r ) ) ) \r
0070640
*
0070720 ( i n c f * h u n k - s i
0070740 z e * ) ) ) ) \r
0070760
0071000 ( s e t
0071020 f ( r e s t i n s t ) \r
0071040
*
0071100 ( l i s t * d
0071120 v a r s * p v a r - c o u n t
0071140 * ( c d d r i n s t ) ) ) )
0071160 \r
0071200
0071220 ( i n c f * p v a r - c o u n
0071240 t * ) \r
0071260
0071300 ( i l : * i l : \ ; "
0071320 A l l o c a t e a s l o t
0071340 f o r t h e n e w h u n k
0071360 . " ) \r
0071400
0071420 ( d i g e s t - c o d e
0071440 ( c d d r i n s t ) ) ) ) ) )
0071460 ) ) \r ( d e f u n s t o r e -
0071500 d i g e s t - i n f o n i l
0071520 ( l e t ( ( f r e e - v a r -
0071540 a l i s t ( s o r t * f r e
0071560 e - v a r s * # ' < : k e y
0071600 # ' c d r ) ) ) \r
0071620
0071640 ( i l :
0071660 * i l : | ; ; | " T h i s
0071700 f i r s t b i t g e t s t
0071720 h e e n t r i e s o n t h
0071740 e n a m e - t a b l e i n
0071760 t h e r i g h t o r d e r
0072000 b y b u i l d i n g t h e
0072020 t a b l e b a c k w a r d s .
0072040 T h e f i n a l o r d e
0072060 r i s P V A R s , I V A R
0072100 s , F V A R s w i t h t h
0072120 e P V A R s a n d I V A R
0072140 s i n r e v e r s e o r d
0072160 e r . T h i s l e t s t
0072200 h e f r e e v a r i a b l e
0072220 l o o k u p f i n d t h e
0072240 c o r r e c t v a r i a b l
0072260 e f i r s t . " \r
0072300
*
0072340 ) \r
0072360
0072400 ( i l : f o r p a
0072420 i r i l : i n f r e e - v a
0072440 r - a l i s t i l : a s s l
0072460 o t i l : f r o m \r
0072500
*
0072540 ( 1 - ( + ( l e n g
0072560 t h f r e e - v a r - a l i s
0072600 t ) \r
0072620
*
0072660 * p v a r - c o u n t * )
0072700 ) \r
0072720
0072740 i l : b y
0072760 - 1 i l : d o ( p u s h
0073000 ( l i s t + f v a r - c o d e
0073020 + s l o t \r
0073040
*
0073120 ( d v a r
0073140 - n a m e ( c a r p a i r )
0073160 ) ) \r
0073200
*
0073260 ( d c o d e - n a m e - t a b
0073300 l e * d c o d e * ) ) \r
0073320
*
0073360 ( s e t f ( d v a
0073400 r - s l o t ( c a r p a i r
0073420 ) ) \r
0073440
*
0073500 s l o t ) \r
0073520
*
0073560 ( i l : * i l : \ ; \r
0073600
*
0073640 " W h i l e
0073660 w e ' r e a t t h i s , a
0073700 s s i g n s l o t s t o t
0073720 h e f r e e v a r i a b l e
0073740 s . " \r
0073760
*
0074020 ) ) \r
0074040
0074060 ( i l : f o r
0074100 d v a r i l : i n ( n r e v
0074120 e r s e * b o u n d - s p e c
0074140 i a l s * ) \r
0074160
*
0074220 i l : d o \r
0074240
0074260 (
0074300 p u s h ( l i s t ( e c a s
0074320 e ( d v a r - k i n d d v a
0074340 r ) \r
0074360
*
0074420 (
0074440 ( : l o c a l ) \r
0074460
*
0074540 + p v a r - c o d e
0074560 + ) \r
0074600
*
0074640 (
0074660 ( : a r g u m e n t ) \r
0074700
*
0074760 + i v a r - c
0075000 o d e + ) ) \r
0075020
*
0075060 ( d v a
0075100 r - s l o t d v a r ) \r
0075120
*
0075200 ( d v a r - n a m e d v a
0075220 r ) ) \r
0075240
*
0075300 ( d c o d e - n a m e - t
0075320 a b l e * d c o d e * ) ) ) \r
0075340
*
0075400 ( i l : * i l : | ; ; |
0075420 \r
0075440
0075460 " N o w t o
0075500 f i l l i n s o m e o f
0075520 t h e m o r e m u n d a n e
0075540 f i e l d s o f t h e D
0075560 C O D E . " \r
0075600
0075620 )
0075640 \r
0075660
0075700 ( s e t f ( d c o d e -
0075720 n l o c a l s * d c o d e * )
0075740 \r
0075760
0076000 * p v a r - c
0076020 o u n t * ) \r
0076040
0076060 ( s e t f (
0076100 d c o d e - n f r e e v a r s
0076120 * d c o d e * ) \r
0076140
*
0076200 ( l e n g t h f r e e - v a
0076220 r - a l i s t ) ) ) ) \r ( d e f
0076240 u n d v a r - f r o m - l a p
0076260 - v a r ( l a p - v a r ) \r
0076300 ( o r ( g e t h a
0076320 s h ( l a p - v a r - i d l
0076340 a p - v a r ) \r
0076360 * d v a r -
0076400 e n v * ) \r
0076420 ( e r r o r " T h e L A P
0076440 v a r ~ S s h o u l d h
0076460 a v e b e e n i n t e r n e
0076500 d b y n o w . " l a p - v
0076520 a r ) ) ) \r ( d e f u n l a p
0076540 - v a r - i d ( v a r ) \r
0076560 ( i f ( c o n s p
0076600 v a r ) \r
0076620 ( t h i r d v a r ) \r
0076640 v a r ) ) \r ( d e
0076660 f u n i n s t a l l - l o c a
0076700 l ( v a r c l o s e d - o v
0076720 e r ) \r ( a n d
0076740 v a r ( l e t ( ( d v a r
0076760 ( i n s t a l l - v a r v a r
0077000 c l o s e d - o v e r : l o
0077020 c a l * p v a r - c o u n t *
0077040 ) ) ) \r
0077060 ( w h e n (
0077100 e q : l o c a l ( d v a r -
0077120 k i n d d v a r ) ) \r
0077140
0077160 ( i n c f * p v
0077200 a r - c o u n t * ) ) \r
0077220
0077240 d v a r ) ) ) \r ( d e f u n
0077260 i n s t a l l - v a r ( v a r
0077300 c l o s e d - o v e r k i n
0077320 d s l o t ) \r (
0077340 a n d v a r ( i l : d e s t
0077360 r u c t u r i n g - b i n d \r
0077400
0077420 ( s c o p e n a m e i d ) \r
0077440
0077460 v a r \r
0077500 ( c o n d ( ( m e
0077520 m b e r i d c l o s e d - o
0077540 v e r : k e y # ' l a p - v
0077560 a r - i d ) \r
0077600 (
0077620 p r o g 1 ( s e t f ( g e t
0077640 h a s h i d * d v a r - e n
0077660 v * ) \r
0077700
0077720 ( m a k e - d
0077740 v a r : k i n d : c l o s e
0077760 d : s l o t * h u n k - s i
0100000 z e * : l e v e l * l e v e
0100020 l * : n a m e \r
0100040
*
0100100 n a m e ) ) \r
0100120
0100140 ( i n c
0100160 f * h u n k - s i z e * ) ) )
0100200 \r
0100220 ( t ( l e t
0100240 ( ( d v a r ( s e t f ( g e
0100260 t h a s h i d * d v a r - e
0100300 n v * ) \r
0100320
*
0100360 ( m a k e - d v a r : k i n
0100400 d ( i f ( e q s c o p e
0100420 ' : f ) \r
0100440
*
0100520 : f r e e k i n d
0100540 ) \r
0100560
*
0100620 : s l o t s l o t
0100640 : n a m e n a m e ) ) ) ) \r
0100660
0100700 ( c
0100720 a s e s c o p e ( ( : s ) \r
0100740
*
0101000 ( p u s
0101020 h d v a r * b o u n d - s p
0101040 e c i a l s * ) ) \r
0101060
0101100 (
0101120 ( : f ) \r
0101140
0101160 ( p u s h
0101200 ( c o n s d v a r 1 ) \r
0101220
*
0101260 * f r e e
0101300 - v a r s * ) ) ) \r
0101320
0101340 d v a r ) ) )
0101360 ) ) ) \r ( d e f u n i n t e r
0101400 n - v a r ( v a r ) \r
0101420 ( i f ( c o n s p v a
0101440 r ) \r ( i
0101460 f ( e q ( f i r s t v a r
0101500 ) \r
0101520 ' : g ) \r
0101540 ( i l : * i
0101560 l : \ ; " G l o b a l v a r
0101600 s d o n ' t g e t i n t e
0101620 r n e d . " ) \r
0101640 v a r \r
0101660 ( l e t (
0101700 ( d v a r ( g e t h a s h (
0101720 t h i r d v a r ) \r
0101740
0101760 * d v
0102000 a r - e n v * ) ) ) \r
0102020 (
0102040 c o n d ( ( n o t ( n u l l
0102060 d v a r ) ) \r
0102100
0102120 ( w h e n ( e q : f r
0102140 e e ( d v a r - k i n d d v
0102160 a r ) ) \r
0102200
0102220 ( i n c f ( c d r
0102240 ( a s s o c d v a r * f r
0102260 e e - v a r s * ) ) ) ) \r
0102300
0102320 d v a r ) \r
0102340
0102360 ( t ( i n s t
0102400 a l l - l o c a l v a r n i
0102420 l ) ) ) ) ) \r
0102440 ( o r ( g e t h a s h v
0102460 a r * d v a r - e n v * ) \r
0102500 ( e
0102520 r r o r " U n k n o w n L A
0102540 P v a r i a b l e I D : ~
0102560 S " v a r ) ) ) ) \r ( d e f u
0102600 n i n t e r n - t a g ( i d
0102620 ) \r ( o r ( g e
0102640 t h a s h i d * d t a g - e
0102660 n v * ) \r
0102700 ( s e t f ( g e t h a s h i
0102720 d * d t a g - e n v * ) \r
0102740 (
0102760 m a k e - d t a g ) ) ) ) \r \r \r
0103000 \r 006 004 ( i l : * i l : | ; ; |
0103020 " F u n c t i o n e n t r y
0103040 c o d e " ) 006 001 \r \r ( d e f u
0103060 n e a s y - e n t r y - p (
0103100 d l a m b d a ) \r
0103120 ( a n d ( o r ( n u l l (
0103140 d l a m b d a - r e s t d l a
0103160 m b d a ) ) \r
0103200 ( e q : i g n o
0103220 r e d ( d l a m b d a - r e s
0103240 t d l a m b d a ) ) ) \r
0103260 ( n u l l (
0103300 d l a m b d a - k e y d l a m
0103320 b d a ) ) \r
0103340 ( i l : f o r o p t - v a
0103360 r i l : i n ( d l a m b d a
0103400 - o p t i o n a l d l a m b d
0103420 a ) \r
0103440 i l : a l w a y s \r
0103460
0103500 ( a n d ( e q u a l '
0103520 ( ( : c o n s t n i l ) ) (
0103540 s e c o n d o p t - v a r ) )
0103560 \r
0103600 ( n u l l (
0103620 t h i r d o p t - v a r ) ) )
0103640 ) ) ) \r ( d e f u n g e n e r
0103660 a t e - e a s y - e n t r y (
0103700 d l a m b d a ) \r
0103720 ( i l : * i l : | ; ; | " E
0103740 m i t c o d e t o c r e a
0103760 t e t h e h u n k f o r
0104000 t h i s l e v e l a n d l
0104020 e a v e i t o n t o p o
0104040 f s t a c k . W e ' l l
0104060 u s e i t i n t h e p r
0104100 o c e s s i n g o f t h e
0104120 a r g u m e n t s . " \r
0104140 ) \r
0104160 ( w h e n ( n o t ( n u
0104200 l l ( d l a m b d a - c l o s
0104220 e d - o v e r d l a m b d a )
0104240 ) ) \r
0104260 ( c r e a t e - h u n k * h u
0104300 n k - s i z e * ( c d a r *
0104320 h u n k - m a p * ) \r
0104340 (
0104360 a n d ( > * l e v e l * 1
0104400 ) \r
0104420 0 ) \r
0104440
0104460 n i l ) ) \r (
0104500 i l : * i l : | ; ; | " T h
0104520 e r e q u i r e d a n d o
0104540 p t i o n a l p a r a m e t e
0104560 r s a r e t r e a t e d a
0104600 l i k e i n t h e e a s y
0104620 e n t r y . I f a n y
0104640 o f t h e m a r e c l o s
0104660 e d o v e r , c o p y t h
0104700 e m i n t o t h e h u n k
0104720 . " \r
0104740 ) \r ( i l : f o r
0104760 d v a r i l : i n ( a p p
0105000 e n d ( d l a m b d a - r e q
0105020 u i r e d d l a m b d a ) \r
0105040
*
0105100 ( m a p c a r # ' f i r s t
0105120 ( d l a m b d a - o p t i o n a
0105140 l d l a m b d a ) ) ) \r
0105160 i l : a s
0105200 i v a r - c o u n t i l : f
0105220 r o m 0 i l : d o \r
0105240 ( w h e n
0105260 ( e q : c l o s e d ( d v a
0105300 r - k i n d d v a r ) ) \r
0105320
0105340 ( e m i t - b y t e - l i s
0105360 t ` ( , @ ( c h o o s e - o p
0105400 ' ( i l : i v a r . i l :
0105420 i v a r x ) i v a r - c o u n
0105440 t ) \r
0105460
0105500 i l : r p l p
0105520 t r . n \r
0105540
0105560 , ( i l :
0105600 l l s h ( d v a r - s l o t
0105620 d v a r ) \r
0105640
*
0105700 1 ) ) ) ) ) \r
0105720 ( s e t f ( d c o d e - a
0105740 r g - t y p e * d c o d e * )
0105760 \r + l
0106000 a m b d a - s p r e a d + ) ) \r
0106020 ( d e f u n g e n e r a t e -
0106040 h a r d - e n t r y ( d l a m
0106060 b d a ) \r ( l e t
0106100 ( ( n u m - r e q u i r e d
0106120 ( l e n g t h ( d l a m b d a
0106140 - r e q u i r e d d l a m b d
0106160 a ) ) ) \r
0106200 ( n u m - o p t i o n a l
0106220 ( l e n g t h ( d l a m b d a
0106240 - o p t i o n a l d l a m b d
0106260 a ) ) ) ) \r
0106300 ( i l : * i l : | ; ; |
0106320 " E m i t c o d e t o c r
0106340 e a t e t h e h u n k f o
0106360 r t h i s l e v e l a n d
0106400 s t o r e i t a w a y . "
0106420 ) \r ( w
0106440 h e n ( n o t ( n u l l (
0106460 d l a m b d a - c l o s e d - o
0106500 v e r d l a m b d a ) ) ) \r
0106520
0106540 ( c r e a t e - h u n k * h
0106560 u n k - s i z e * ( c d a r
0106600 * h u n k - m a p * ) \r
0106620
0106640 ( a n d ( > * l e
0106660 v e l * 1 ) \r
0106700
0106720 0 ) \r
0106740
0106760 t ) ) \r
0107000 ( i l : * i l : | ; ; |
0107020 \r
0107040 " G e n e r a t e a c h e
0107060 c k f o r a b a d n u m
0107100 b e r o f a r g u m e n t s
0107120 , u n l e s s t h e r e a
0107140 r e n o i l l e g a l v a
0107160 l u e s . " \r
0107200 ) \r
0107220 ( u n l e s s (
0107240 a n d ( z e r o p n u m - r
0107260 e q u i r e d ) \r
0107300
0107320 ( o r ( a n d ( d l a m
0107340 b d a - r e s t d l a m b d a
0107360 ) \r
0107400
0107420 ( n o t ( e q : i g
0107440 n o r e d ( d l a m b d a - r
0107460 e s t d l a m b d a ) ) ) ) \r
0107500
0107520 ( d l
0107540 a m b d a - k e y d l a m b d
0107560 a ) ) ) \r
0107600 ( g e n e r a t
0107620 e - a r g - c h e c k d l a m
0107640 b d a ) ) \r
0107660 ( i l : * i l : | ; ; |
0107700 " C o p y t h e c l o s e d
0107720 r e q u i r e d a r g s t
0107740 o t h e h u n k . " ) \r
0107760 ( i l : f o
0110000 r d v a r i l : i n ( d l
0110020 a m b d a - r e q u i r e d d
0110040 l a m b d a ) \r
0110060 i l : a s
0110100 i v a r - c o u n t i l : f
0110120 r o m 0 i l : d o \r
0110140 (
0110160 w h e n ( e q : c l o s e d
0110200 ( d v a r - k i n d d v a r
0110220 ) ) \r
0110240 ( e m i
0110260 t - b y t e - l i s t ` ( , @
0110300 ( c h o o s e - o p ' ( i l :
0110320 p v a r . i l : p v a r x )
0110340 ( c d a r * h u n k - m a p
0110360 * ) ) \r
0110400
0110420 ,
0110440 @ ( c h o o s e - o p ' ( i l
0110460 : i v a r . i l : i v a r x
0110500 ) i v a r - c o u n t ) i l
0110520 : r p l p t r . n \r
0110540
*
0110600 , ( i l : l l s h *
0110620 h u n k - s i z e * 1 ) i l
0110640 : p o p ) ) ) ) \r
0110660 ( i l : * i l : | ;
0110700 ; | " G e n e r a t e c o d
0110720 e f o r t h e o p t i o n
0110740 a l a n d r e s t a r g u
0110760 m e n t s . " ) \r
0111000 ( g e n e r a t e - o
0111020 p t - a n d - r e s t d l a m
0111040 b d a n u m - r e q u i r e d
0111060 n u m - o p t i o n a l ) \r
0111100 ( i l : *
0111120 i l : | ; ; | " G e n e r a
0111140 t e c o d e f o r t h e
0111160 k e y w o r d a r g u m e n t
0111200 s . " ) \r
0111220 ( g e n e r a t e - k e y d
0111240 l a m b d a n u m - r e q u i
0111260 r e d n u m - o p t i o n a l
0111300 ) \r ( i
0111320 l : * i l : | ; ; | " F i l
0111340 l i n s o m e i n f o r m
0111360 a t i o n i n t h e D C O
0111400 D E s t r u c t u r e . " ) \r
0111420 ( s e t
0111440 f ( d c o d e - a r g - t y p
0111460 e * d c o d e * ) \r
0111500 + l a
0111520 m b d a - n o - s p r e a d + )
0111540 \r ( s e
0111560 t f ( d c o d e - n u m - a r
0111600 g s * d c o d e * ) \r
0111620 - 1
0111640 ) ) ) \r ( d e f u n g e n e r
0111660 a t e - a r g - c h e c k ( d
0111700 l a m b d a ) \r (
0111720 i l : * i l : | ; ; ; | \r
0111740 " G e n
0111760 e r a t e c o d e t h a t
0112000 s i g n a l s a n e r r o r
0112020 i f t o o f e w o r t
0112040 o o m a n y a r g u m e n t
0112060 s a r e g i v e n . " ) \r
0112100 ( l e t * ( ( m i
0112120 n - a r g s ( l e n g t h (
0112140 d l a m b d a - r e q u i r e d
0112160 d l a m b d a ) ) ) \r
0112200 ( m a x - a
0112220 r g s ( a n d ( n u l l (
0112240 d l a m b d a - r e s t d l a
0112260 m b d a ) ) \r
0112300
0112320 ( n u l l ( d l a m b
0112340 d a - k e y d l a m b d a ) )
0112360 \r
0112400 ( +
0112420 m i n - a r g s ( l e n g t
0112440 h ( d l a m b d a - o p t i o
0112460 n a l d l a m b d a ) ) ) ) )
0112500 \r (
0112520 o k - t a g ( m a k e - d t a
0112540 g ) ) \r
0112560 ( b a d - t a g ( m a k e
0112600 - d t a g ) ) ) \r
0112620 ( i f ( n u l l
0112640 m a x - a r g s ) \r
0112660 ( e m i t
0112700 - b y t e - l i s t ` ( i l :
0112720 m y a r g c o u n t , @ ( p u
0112740 s h - i n t e g e r ( 1 - m
0112760 i n - a r g s ) ) i l : g r e
0113000 a t e r p \r
0113020
0113040 (
0113060 i l : t j u m p , o k - t a g
0113100 ) \r
0113120
0113140 , @ ( p u
0113160 s h - i n t e g e r m i n - a
0113200 r g s ) i l : \ ' n i l i l
0113220 : f n 2 ( f n \r
0113240
*
0113340 s i :
0113360 : a r g u m e n t - e r r o r \r
0113400
*
0113520 ) \r
0113540
*
0113600 i l : p o p \r
0113620
*
0113660 ( t a g , o k - t a g ) )
0113700 ) \r
0113720 ( e m i t - b y t e - l i
0113740 s t ` ( i l : m y a r g c o u
0113760 n t , @ ( p u s h - i n t e g
0114000 e r ( 1 - m i n - a r g s )
0114020 ) i l : g r e a t e r p \r
0114040
*
0114100 ( i l : f j u m p
0114120 , b a d - t a g ) \r
0114140
*
0114200 i l : m y a r g c o u n
0114220 t \r
0114240
0114260 , @ ( p u
0114300 s h - i n t e g e r m a x - a
0114320 r g s ) i l : g r e a t e r p
0114340 ( i l : f j u m p , o k - t
0114360 a g ) \r
0114400
0114420 ( t a
0114440 g , b a d - t a g ) \r
0114460
*
0114520 , @ ( p u s h - i n t
0114540 e g e r m i n - a r g s ) \r
0114560
*
0114620 , @ ( p u s h -
0114640 i n t e g e r m a x - a r g s
0114660 ) i l : f n 2 ( f n s i :
0114700 : a r g u m e n t - e r r o r )
0114720 \r
0114740
0114760 i l : p o p
0115000 \r
0115020
0115040 ( t a g ,
0115060 o k - t a g ) ) ) ) ) ) \r ( d e
0115100 f u n \r g e n e r a t e - k e
0115120 y \r ( d l a m b d a n u m -
0115140 r e q u i r e d n u m - o p t
0115160 i o n a l ) \r " G e n e r a t
0115200 e c o d e t o c h e c k
0115220 f o r a n d d e f a u l t
0115240 t h e k e y w o r d a r g u
0115260 m e n t s . " \r ( l e t ( (
0115300 s t a r t ( + 1 n u m - r
0115320 e q u i r e d n u m - o p t i
0115340 o n a l ) ) ) \r ( i
0115360 l : f o r t a i l i l : o n
0115400 ( d l a m b d a - k e y d l
0115420 a m b d a ) \r
0115440 i l : d o \r
0115460 ( i l : d e s t r
0115500 u c t u r i n g - b i n d \r
0115520 ( k e y
0115540 w o r d v a r c o d e s v
0115560 a r ) \r
0115600 ( c a r t a i l ) \r
0115620 ( l e t
0115640 ( ( f o u n d - t a g ( m a k
0115660 e - d t a g ) ) \r
0115700 ( n e
0115720 x t - t a g ( m a k e - d t a
0115740 g ) ) ) \r
0115760 ( e m i t - b y
0116000 t e - l i s t ` ( i l : a c o
0116020 n s t ( s y m , k e y w o r
0116040 d ) \r
0116060
0116100 i l
0116120 : f i n d k e y \r
0116140
*
0116200 , s t a r t \r
0116220
*
0116260 ( i l : n t j u m p
0116300 , f o u n d - t a g ) ) ) \r
0116320
0116340 ( i l : * i l : | ; ; |
0116360 " N o t t h e r e ; c o m p
0116400 u t e t h e i n i t - f o r
0116420 m . " ) \r
0116440 ( s t a c k - a
0116460 n a l y z e c o d e 1 ) \r
0116500
0116520 ( a s s e m b l e c o d e
0116540 ) \r
0116560 ( e m i t - b y t e -
0116600 l i s t ` ( , @ ( s t o r e -
0116620 v a r v a r t ) \r
0116640
*
0116700 , @ ( a n d s v a r ` ( i l
0116720 : \ ' n i l , @ ( s t o r e -
0116740 v a r s v a r t ) ) ) \r
0116760
*
0117020 ( i l : j u m p , n e x
0117040 t - t a g ) \r
0117060
0117100 ( t a g
0117120 , f o u n d - t a g ) \r
0117140
*
0117200 i l : a r g 0 \r
0117220
0117240 ,
0117260 @ ( s t o r e - v a r v a r
0117300 t ) \r
0117320
0117340 , @ ( a n d s
0117360 v a r ` ( i l : \ ' t , @ (
0117400 s t o r e - v a r s v a r t
0117420 ) ) ) \r
0117440
0117460 ( t a g , n
0117500 e x t - t a g ) ) ) ) ) ) ) ) \r
0117520 ( d e f u n \r g e n e r a t e
0117540 - o p t - a n d - r e s t \r (
0117560 d l a m b d a n u m - r e q u
0117600 i r e d n u m - o p t i o n a
0117620 l ) \r ( l e t \r ( ( o p t
0117640 - i n i t - v a l u e s n i l
0117660 ) \r ( a f t e r - o p t s
0117700 - t a g ( m a k e - d t a g )
0117720 ) ) \r ( i l : * i l : | ;
0117740 ; | " O P T - I N I T - V A L
0117760 U E S w i l l h o l d a
0120000 l i s t o f l i s t s ( v
0120020 a r s v a r t a g . l a
0120040 p - c o d e ) , o n e f o r
0120060 e a c h o p t - v a r .
0120100 T h e s e w i l l b e g e
0120120 n e r a t e d i n o r d e r
0120140 a f t e r w e t a k e c
0120160 a r e o f t h e r e s t
0120200 a r g u m e n t . " \r
0120220 ) \r ( u n l e s s (
0120240 z e r o p n u m - o p t i o n
0120260 a l ) \r ( i l
0120300 : * i l : | ; ; | " C o n v
0120320 e r t t h e a r g - c o u n
0120340 t i n t o a c o u n t o
0120360 f r e m a i n i n g a r g u
0120400 m e n t s . " ) \r
0120420 ( e m i t - b y t e - l i s
0120440 t ` ( i l : m y a r g c o u n
0120460 t , @ ( a n d ( n o t ( z
0120500 e r o p n u m - r e q u i r e
0120520 d ) ) \r
0120540
*
0120600 ` ( , @ ( p u s h - i n
0120620 t e g e r n u m - r e q u i r
0120640 e d ) i l : i d i f f e r e n
0120660 c e ) ) ) ) \r
0120700 ( i l : * i l : | ; ; | " G
0120720 e n e r a t e t h e c o d e
0120740 f o r t e s t i n g f o r
0120760 e a c h o p t i o n a l v
0121000 a r i a b l e . I f i t '
0121020 s t h e r e , c o p y i t
0121040 t o i t s s l o t a n d
0121060 s e t t h e s v a r , i
0121100 f o n e e x i s t s . O
0121120 t h e r w i s e , j u m p i
0121140 n t o t h e m i d d l e o
0121160 f t h e s t r e a m o f
0121200 i n i t - f o r m c o m p u t
0121220 a t i o n s . " \r
0121240 ) \r
0121260 ( i l : f o r t a i l
0121300 i l : o n ( d l a m b d a - o
0121320 p t i o n a l d l a m b d a )
0121340 \r
0121360 i l : a s i v a r - c o u n
0121400 t i l : f r o m ( 1 + n u
0121420 m - r e q u i r e d ) \r
0121440 i l : d
0121460 o \r
0121500 ( l e t ( ( t a g ( m a
0121520 k e - d t a g ) ) ) \r
0121540
0121560 ( i l : d e s t r u c t u r i n
0121600 g - b i n d \r
0121620 ( v a
0121640 r c o d e s v a r ) \r
0121660
0121700 ( c a r t a i l ) \r
0121720
0121740 ( e m i t - b y t e - l
0121760 i s t ` ( , @ ( a n d ( c d
0122000 r t a i l ) \r
0122020
*
0122060 ' ( i l : c o p y
0122100 ) ) \r
0122120
0122140 i l : \ '
0122160 0 e q ( i l : t j u m p ,
0122200 t a g ) \r
0122220
0122240 , @ (
0122260 p u s h - i n t e g e r i v a
0122300 r - c o u n t ) i l : a r g 0
0122320 , @ ( s t o r e - v a r v a
0122340 r t ) \r
0122360
0122400 , @ (
0122420 a n d s v a r ` ( i l : \ '
0122440 t , @ ( s t o r e - v a r s
0122460 v a r t ) ) ) \r
0122500
*
0122540 , @ ( a n d ( c d r t a i
0122560 l ) \r
0122600
*
0122640 ' ( i l : \ ' 1 i l : i d
0122660 i f f e r e n c e ) ) ) ) \r
0122700
0122720 ( p u s h ( l i s t *
0122740 v a r s v a r t a g c o
0122760 d e ) \r
0123000
0123020 o p t - i n i t - v a l u e s )
0123040 ) ) ) ) \r ( i l : * i l :
0123060 | ; ; | " A l l o f t h e
0123100 & o p t i o n a l s w e r e
0123120 p r o v i d e d . H a n d
0123140 l e t h e & r e s t a r g
0123160 u m e n t . " ) \r ( w h e n
0123200 ( a n d ( d l a m b d a - r
0123220 e s t d l a m b d a ) \r
0123240 ( n o t (
0123260 e q : i g n o r e d ( d l a
0123300 m b d a - r e s t d l a m b d
0123320 a ) ) ) ) \r ( e
0123340 m i t - b y t e - l i s t ` (
0123360 i l : \ ' n i l i l : m y a r
0123400 g c o u n t i l : r e s t l i
0123420 s t , ( + 1 n u m - r e q
0123440 u i r e d n u m - o p t i o n
0123460 a l ) \r
0123500
0123520 , @ ( s t o r e - v a r
0123540 ( d l a m b d a - r e s t d
0123560 l a m b d a ) \r
0123600
*
0123640 t ) ) ) ) \r ( i l : * i
0123660 l : | ; ; | " C o m p u t e
0123700 t h e d e f a u l t v a l u
0123720 e s f o r t h e v a r i o
0123740 u s o p t i o n a l p a r a
0123760 m e t e r s o n e a f t e r
0124000 a n o t h e r . T h e t
0124020 e s t i n g c o d e a b o v
0124040 e j u m p s i n t o t h e
0124060 m i d d l e o f t h i s .
0124100 " \r ) \r ( u
0124120 n l e s s ( z e r o p n u m
0124140 - o p t i o n a l ) \r
0124160 ( e m i t - b y t e `
0124200 ( i l : j u m p , a f t e r -
0124220 o p t s - t a g ) ) \r
0124240 ( i l : * i l : \ ;
0124260 " I f w e f a l l i n t o
0124300 t h i s c o d e , a l l
0124320 o f t h e o p t i o n a l s
0124340 w e r e p r o v i d e d ,
0124360 s o j u m p a r o u n d t
0124400 h e d e f a u l t - v a l u e
0124420 c a l c u l a t i o n s . " \r
0124440 )
0124460 \r ( i l : f o
0124500 r v a r s - t a g - c o d e
0124520 i l : i n ( n r e v e r s e
0124540 o p t - i n i t - v a l u e s )
0124560 \r
0124600 i l : d o \r
0124620 ( e m i t - b y t
0124640 e ` ( t a g , ( c a d d r
0124660 v a r s - t a g - c o d e ) ) )
0124700 \r
0124720 ( s t a c k - a n a l y z e
0124740 ( c d d d r v a r s - t a g -
0124760 c o d e ) \r
0125000 1 ) \r
0125020
0125040 ( a s s e m b l e ( c d d d r
0125060 v a r s - t a g - c o d e ) )
0125100 \r
0125120 ( e m i t - b y t e - l i s t
0125140 ( s t o r e - v a r ( c a r
0125160 v a r s - t a g - c o d e ) \r
0125200
*
0125240 t ) ) \r
0125260 ( w h e n
0125300 ( c a d r v a r s - t a g -
0125320 c o d e ) \r
0125340 ( i l :
0125360 * i l : \ ; " T h e r e ' s
0125400 a n s v a r " ) \r
0125420
0125440 ( e m i t - b y t e - l i s t
0125460 ` ( i l : \ ' n i l , @ ( s
0125500 t o r e - v a r ( c a d r v
0125520 a r s - t a g - c o d e ) \r
0125540
*
0125620 t ) ) ) ) ) \r
0125640 ( w h e n ( a
0125660 n d ( d l a m b d a - r e s t
0125700 d l a m b d a ) \r
0125720 ( n
0125740 o t ( e q : i g n o r e d
0125760 ( d l a m b d a - r e s t d l
0126000 a m b d a ) ) ) ) \r
0126020 ( i l : * i
0126040 l : \ ; \r
0126060 " I f n o t
0126100 a l l o f t h e o p t i
0126120 o n a l s w e r e t h e r e
0126140 , t h e n t h e r e c a n
0126160 ' t b e a n y & r e s t
0126200 a r g u m e n t s . " \r
0126220
0126240 ) \r
0126260 ( e m i t - b y t e - l i s
0126300 t ` ( i l : \ ' n i l , @ (
0126320 s t o r e - v a r ( d l a m b
0126340 d a - r e s t d l a m b d a )
0126360 \r
0126400
*
0126440 t ) ) ) ) \r
0126460 ( e m i t - b y t e ` (
0126500 t a g , a f t e r - o p t s -
0126520 t a g ) ) ) ) ) \r \r \r \r 006 004 ( i
0126540 l : * i l : | ; ; | " S t a
0126560 c k a n a l y s i s " ) 006 001 \r
0126600 \r ( d e f v a r 006 002 * e n d i
0126620 n g - d e p t h * 006 001 n i l
0126640 \r
0126660 " A n A L
0126700 i s t m a p p i n g l e x i
0126720 c a l l e v e l t o t h e
0126740 s t a c k d e p t h a t
0126760 e x i t f r o m t h a t l
0127000 e v e l . " ) \r \r ( d e f v a r
0127020 006 002 * s t a c k - n o t e s *
0127040 006 001 n i l " A n A L i s t
0127060 m a p p i n g t h e I D s
0127100 o f N O T E - S T A C K d
0127120 i r e c t i v e s i n t o t
0127140 h e a b s o l u t e s t a c
0127160 k d e p t h a t t h a t
0127200 p o i n t i n t h e c o d
0127220 e . " \r ) \r \r ( d e f u n s t
0127240 a c k - a n a l y z e ( c o d
0127260 e & o p t i o n a l ( e x p
0127300 e c t e d - e n d i n g - d e p
0127320 t h 0 ) ) \r " W
0127340 a l k t h e g i v e n c o
0127360 d e a n n o t a t i n g t h
0127400 e t a g s i n i t w i t
0127420 h i n f o r m a t i o n a b
0127440 o u t t h e s t a c k a n
0127460 d b i n d i n g d e p t h
0127500 o f c o n t r o l a t t h
0127520 a t p o i n t . " \r
0127540 ( l e t ( ( * l e v e l *
0127560 * l e v e l * ) \r
0127600 ( * s t a c k - n
0127620 o t e s * n i l ) \r
0127640 ( * e n d i n g
0127660 - d e p t h * ( l i s t ( c
0127700 o n s * l e v e l * n i l )
0127720 ) ) ) \r
0127740 ( s t a c k - a n a l y z e - c
0127760 o d e c o d e 0 n i l ) \r
0130000 ( l e t
0130020 ( ( e n d i n g - d e p t h
0130040 ( c d r ( f i r s t * e n d
0130060 i n g - d e p t h * ) ) ) ) \r
0130100
0130120 ( a s s e r t ( o r ( n u l
0130140 l e n d i n g - d e p t h ) \r
0130160
0130200 ( =
0130220 e n d i n g - d e p t h e x p
0130240 e c t e d - e n d i n g - d e p
0130260 t h ) ) \r
0130300 n i l
0130320 " C o d e d o e s n ' t l
0130340 e a v e s t a c k e m p t y
0130360 ! " ) ) ) ) \r ( d e f u n s t
0130400 a c k - a n a l y z e - c o d e
0130420 ( c o d e i n i t - d e p t
0130440 h i n i t - b i n d i n g - d
0130460 e p t h ) \r " A n
0130500 n o t a t e t h e t a g s
0130520 i n C O D E w i t h t h e
0130540 s t a c k a n d b i n d i
0130560 n g d e p t h a t t h o s
0130600 e p o i n t s i n e x e c
0130620 u t i o n , a s s u m i n g
0130640 t h a t t h e s t a c k d
0130660 e p t h i s I N I T - D E P
0130700 T H a n d t h e b i n d i
0130720 n g d e p t h i s a s i
0130740 n I N I T - B I N D I N G - D
0130760 E P T H o n e n t r y t o
0131000 t h e c o d e . " \r
0131020 ( l e t ( ( d e p t h
0131040 i n i t - d e p t h ) \r
0131060 ( b i n d i n
0131100 g - d e p t h i n i t - b i n
0131120 d i n g - d e p t h ) ) \r
0131140 ( i l : f o r
0131160 i n s t i l : i n c o d e
0131200 i l : d o \r
0131220 ( e c a s e
0131240 ( c a r i n s t ) \r
0131260
0131300 ( ( : t a g ) \r
0131320
0131340 ( c o n d (
0131360 ( n u l l ( d t a g - s t a c
0131400 k - d e p t h ( s e c o n d
0131420 i n s t ) ) ) \r
0131440
0131460 ( s e t f
0131500 ( d t a g - s t a c k - d e p t
0131520 h ( s e c o n d i n s t ) )
0131540 \r
0131560
0131600 ( c o n s b
0131620 i n d i n g - d e p t h d e p
0131640 t h ) ) \r
0131660
0131700 ( a s s e r t (
0131720 = * l e v e l * ( d t a g -
0131740 l e v e l ( s e c o n d i n
0131760 s t ) ) ) \r
0132000
0132020 n
0132040 i l " I n c o n s i s t e n t
0132060 l e v e l a t t a g ~ S
0132100 " ( s e c o n d i n s t ) )
0132120 ) \r
0132140
0132160 ( t ( a s s e r t ( e
0132200 q u a l ( c o n s b i n d i
0132220 n g - d e p t h d e p t h ) \r
0132240
*
0132320 ( d t a g - s t a c k - d
0132340 e p t h ( s e c o n d i n s
0132360 t ) ) ) \r
0132400
*
0132440 n i l " I n c o n s i s t e n
0132460 t s t a c k d e p t h s a
0132500 t t a g ~ S " ( s e c o n
0132520 d i n s t ) ) \r
0132540
0132560 ( r e
0132600 t u r n - f r o m s t a c k -
0132620 a n a l y z e - c o d e ) ) ) )
0132640 \r
0132660 ( ( : j u
0132700 m p ) \r
0132720 (
0132740 s t a c k - a n a l y z e - c o
0132760 d e ( d t a g - p t r ( s e
0133000 c o n d i n s t ) ) \r
0133020
0133040 d e
0133060 p t h b i n d i n g - d e p t
0133100 h ) \r
0133120 ( r
0133140 e t u r n - f r o m s t a c k
0133160 - a n a l y z e - c o d e ) ) \r
0133200
0133220 ( ( : f j u
0133240 m p : t j u m p ) \r
0133260
0133300 ( d e c f d e p t
0133320 h ) \r
0133340 ( s
0133360 t a c k - a n a l y z e - c o d
0133400 e ( d t a g - p t r ( s e c
0133420 o n d i n s t ) ) \r
0133440
0133460 d e p
0133500 t h b i n d i n g - d e p t h
0133520 ) ) \r
0133540 ( ( :
0133560 n f j u m p : n t j u m p ) \r
0133600
0133620 ( s t a c
0133640 k - a n a l y z e - c o d e (
0133660 d t a g - p t r ( s e c o n d
0133700 i n s t ) ) \r
0133720
0133740 d e p t h
0133760 b i n d i n g - d e p t h ) \r
0134000
0134020 ( d e c f
0134040 d e p t h ) ) \r
0134060
0134100 ( ( : v a r : c o p y :
0134120 c o n s t : l a m b d a : p
0134140 u s h - t a g ) \r
0134160
0134200 ( i n c f d e p t h )
0134220 ) \r
0134240 ( ( : v
0134260 a r _ : s w a p ) \r
0134300
0134320 ( i l : * i l : \
0134340 ; " N e t s t a c k e f f
0134360 e c t i s z e r o . " ) ) \r
0134400
0134420 ( ( : p o p
0134440 ) \r
0134460 ( d e
0134500 c f d e p t h ) ) \r
0134520
0134540 ( ( : n o t e - s t a
0134560 c k ) \r
0134600 (
0134620 p u s h ( c o n s ( s e c o
0134640 n d i n s t ) \r
0134660
*
0134720 d e p t h ) \r
0134740
0134760 * s t a c k - n
0135000 o t e s * ) ) \r
0135020
0135040 ( ( : s e t - s t a c k :
0135060 d s e t - s t a c k ) \r
0135100
0135120 ( l e t ( ( l o
0135140 o k u p ( a s s o c ( s e c
0135160 o n d i n s t ) \r
0135200
*
0135240 * s t a c k
0135260 - n o t e s * ) ) ) \r
0135300
0135320 ( w h e n
0135340 ( n u l l l o o k u p ) \r
0135360
*
0135420 ( e r r o r " : N O
0135440 T E - S T A C K n o t s e e
0135460 n b e f o r e : S E T - S T
0135500 A C K " ) ) \r
0135520
0135540 ( s e t q d e p
0135560 t h ( s e t f ( s e c o n d
0135600 i n s t ) \r
0135620
*
0135660 ( c d r l o
0135700 o k u p ) ) ) \r
0135720
0135740 ( i l : w h i l
0135760 e ( a n d b i n d i n g - d
0136000 e p t h ( > = ( c d r ( f
0136020 i r s t b i n d i n g - d e p
0136040 t h ) ) \r
0136060
*
0136140 d e p t h ) ) \r
0136160
*
0136220 i l : d o \r
0136240
*
0136300 ( p o p b i n d i n g - d
0136320 e p t h ) ) \r
0136340
0136360 ( i f ( e q '
0136400 : s e t - s t a c k ( f i r s
0136420 t i n s t ) ) \r
0136440
0136460 ( i n
0136500 c f d e p t h ) ) ) ) \r
0136520
0136540 ( ( : b i n d ) \r
0136560
0136600 ( i l : *
0136620 i l : | ; ; | " T h i s t
0136640 a k e s i n t o a c c o u n
0136660 t t h e p o p p i n g o f
0136700 s o m e n u m b e r o f
0136720 v a l u e s i n t o t h e
0136740 v a r i a b l e s a n d t h
0136760 e n t h e p u s h i n g o
0137000 f t h e b i n d i n g m a
0137020 r k ( s ) . " \r
0137040
0137060 ) \r
0137100
0137120 ( d e c f d e p t
0137140 h ( l e n g t h ( s e c o n
0137160 d i n s t ) ) ) \r
0137200
0137220 ( p u s h ( c o n s
0137240 ( f o u r t h i n s t ) \r
0137260
*
0137320 d e p t h ) \r
0137340
0137360 b i
0137400 n d i n g - d e p t h ) \r
0137420
0137440 ( i n c f d e
0137460 p t h ( m a x 1 ( f l o o
0137500 r ( + ( l e n g t h ( t h
0137520 i r d i n s t ) ) \r
0137540
*
0137620 1 4 ) \r
0137640
*
0137700 1 5 ) )
0137720 ) ) \r
0137740 ( ( :
0137760 u n b i n d : d u n b i n d )
0140000 \r
0140020 ( u n l
0140040 e s s ( e q l ( f o u r t h
0140060 i n s t ) \r
0140100
0140120 (
0140140 c a r ( f i r s t b i n d i
0140160 n g - d e p t h ) ) ) \r
0140200
0140220 ( e
0140240 r r o r " M i s m a t c h e d
0140260 : B I N D a n d : U N B I
0140300 N D . " ) ) \r
0140320
0140340 ( s e t q d e p t h ( c
0140360 d r ( p o p b i n d i n g -
0140400 d e p t h ) ) ) \r
0140420
0140440 ( w h e n ( e q ' :
0140460 u n b i n d ( f i r s t i n
0140500 s t ) ) \r
0140520
0140540 ( i n c f d e p t
0140560 h ) ) ) \r
0140600 (
0140620 ( : f n ) \r
0140640
0140660 ( d e c f d e p t h ( 1 -
0140700 ( t h i r d i n s t ) ) ) )
0140720 \r
0140740 ( ( : r e
0140760 t u r n ) \r
0141000
0141020 ( r e t u r n - f r o m s t
0141040 a c k - a n a l y z e - c o d e
0141060 ) ) \r
0141100 ( ( :
0141120 c l o s e ) \r
0141140
0141160 ( l e t * ( ( * l e v e l
0141200 * ( 1 + * l e v e l * ) ) \r
0141220
*
0141260 ( * e n d i n g - d e p t h
0141300 * ( c o n s ( c o n s * l
0141320 e v e l * n i l ) \r
0141340
*
0141420 * e n d i n g - d e p t h
0141440 * ) ) ) \r
0141460
0141500 ( s t a c k - a n a
0141520