Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / mimc / mimgen.mima
1
2 <PACKAGE "MIMGEN">
3
4 <ENTRY MAKE-TAG FIND-FRAME SPEC-GEN-TEMP PREV-FRAME GEN-VAL-==? GEN-==? GET-BINDING BRANCH-TAG RET-TMP-AC MIM-FCN MIM-RETURN REFERENCE GEN-TYPE? GEN-VT GEN-TC GEN-CHTYPE GEN-GVAL GEN-SETG MIM-TEMPS-HOLD MIM-TEMPS-EMIT EMIT IEMIT INSTRUCTION LABEL-TAG PUSH POP PUSH-CONSTANT GEN-FIX-BIND SPECIAL-BINDING FINISH-BINDING SET-TEMP SET-SYM CURRENT-FRAME GET-ARG-TUPLE ARG-TO-TEMP TEST-ARG MSUBR-CALL SEG-SUBR-CALL START-FRAME GEN-LIST GEN-VECTOR GEN-UVECTOR GEN-TUPLE MOVE-ARG GEN-CHTYPE D-B-TAG GEN-TEMP NTH-LIST NTH-UVECTOR NTH-VECTOR NTH-STRING NTH-RECORD NTH-BYTES REST-LIST REST-UVECTOR REST-VECTOR REST-STRING REST-BYTES REST-RECORD EMPTY-LIST EMPTY-UVECTOR EMPTY-VECTOR EMPTY-STRING EMPTY-BYTES EMPTY-RECORD PUT-LIST PUT-UVECTOR PUT-VECTOR PUT-STRING PUT-BYTES PUT-RECORD LENGTH-LIST LENGTH-UVECTOR LENGTH-VECTOR LENGTH-STRING LENGTH-BYTES LENGTH-RECORD PROTECT USE-TEMP FREE-TEMP DEALLOCATE-TEMP GEN-SHIFT GEN-ARG-NUM SET-VALUE GET-VALUE-X ATOMCHK ISPEC-BIND GEN-GASS ASS-GEN M$$VALU TYPIFY-TEMPS SPEC-IEMIT>
5
6 <USE "CHKDCL" "COMPDEC" "ADVMESS">
7
8 <SETG RAT (`RECORD-TYPE ATOM)>
9
10 <SETG RBN (`RECORD-TYPE LBIND)>
11
12 <SETG RGBN (`RECORD-TYPE GBIND)>
13
14 <SETG QQ-BIND <FORM QUOTE BIND>>
15
16 <BLOCK (<ROOT>)>
17
18 M$$BINDID
19
20 <ENDBLOCK>
21
22 <SETG QQ-M$$BINDID <FORM QUOTE M$$BINDID>>
23
24 <SETG NO-DATUM '(1)>
25
26 <GDECL (MIMOPS) VECTOR>
27
28 <SETG M$$FRM-MSUB 1>
29
30 <SETG M$$FRM-PC 2>
31
32 <SETG M$$FRM-ARGN 3>
33
34 <SETG M$$FRM-ID 4>
35
36 <SETG M$$FRM-PREV 5>
37
38 <SETG M$$FRM-TP 6>
39
40 <SETG M$$FRM-ARGS 6>
41
42 <SETG M$$FRM-BIND 7>
43
44 <SETG M$$FRM-ACTN 8>
45
46 <MANIFEST M$$FRM-MSUB M$$FRM-ARGN M$$FRM-ID M$$FRM-PREV M$$FRM-BIND M$$FRM-ARGS M$$FRM-ACTN M$$FRM-PC M$$FRM-TP>
47
48 <SETG M$$GVAL 1>
49
50 <SETG M$$LVAL 2>
51
52 <SETG M$$PNAM 3>
53
54 <SETG M$$OBLS 4>
55
56 <SETG M$$TYPE 5>
57
58 <SETG M$$ATML 5>
59
60 <MANIFEST M$$LVAL M$$GVAL M$$PNAM M$$OBLS M$$TYPE M$$ATML>
61
62 <SETG M$$VALU 1>
63
64 <SETG M$$ATOM 2>
65
66 <SETG M$$DECL 3>
67
68 <SETG M$$PBND 4>
69
70 <SETG M$$PATM 5>
71
72 <SETG M$$UBID 6>
73
74 <SETG M$$BNDL 6>
75
76 <MANIFEST M$$VALU M$$ATOM M$$DECL M$$PBND M$$PATM M$$UBID M$$BNDL>
77
78 <SETG MIMOPS [("PUSH" ANY) ("POP" ANY) ("SET" ANY) ("SETS" ANY) ("GETS" ANY) ("ADJ" ANY) ("FRAME" ANY) ("VFRAME" ANY) ("CFRAME" ANY) ("ARGS" TUPLE) ("TUPLE" TUPLE) ("RFRAME" NO-RETURN) ("CALL" ANY) ("ACTIVATION" ANY) ("AGAIN" NO-RETURN) ("RET" NO-RETURN) ("RTUPLE" NO-RETURN) ("JUMP" NO-RETURN) ("HALT" ANY) ("OBJECT" ANY) ("TYPE" FIX) ("TYPE?" ANY) ("CHTYPE" ANY) ("NEWTYPE" FIX) ("VALUE" FIX) ("LIST" LIST) ("UBLOCK" ANY) ("RECORD" ANY) ("NTHL" ANY) ("NTHR" ANY T) ("NTHU" ANY) ("LENL" FIX) ("LENR" FIX T) ("LENU" FIX) ("EMPL?" ANY) ("EMPR?" ANY T) ("EMPU?" ANY) ("PUTL" LIST) ("PUTU" ANY) ("PUTR" ANY T) ("RESTL" LIST) ("RESTU" ANY) ("BACKU" ANY) ("TOPU" ANY) ("CONS" LIST) ("PUTREST" LIST) ("BIND" ANY) ("SETG" ANY) ("GVAL" ANY) ("OPEN" ANY) ("CLOSE" ANY) ("READ" ANY) ("PRINT" ANY) ("SAVE" ANY) ("RESTORE" ANY) ("ADD" FIX) ("ADDF" FLOAT) ("SUB" FIX) ("SUBF" FLOAT) ("MUL" FIX) ("MULF" FLOAT) ("DIV" FIX) ("DIVF" FLOAT) ("RANDOM" FIX) ("FIX" FIX) ("FLOAT" FLOAT) ("GRTR?" ANY) ("LESS?" ANY) ("AND" FIX) ("OR" FIX) ("XOR" FIX) ("EQV" FIX) ("LSH" FIX) ("ROT" FIX) ("EQUAL?" ANY) ("VEQUAL?" ANY) ("RESET" ANY) ("ATIC" FIX) ("MARKL?" ANY) ("MARKU?" ANY) ("MARKR?" ANY) ("MARKL" ANY) ("MARKU" ANY) ("MARKR" ANY) ("MARKUV?" ANY) ("MARKUV" ANY) ("MARKUU" ANY) ("MARKUU?" ANY) ("MARKUS" ANY) ("MARKUS?" ANY) ("MARKUB" ANY) ("MARKUB?" ANY) ("SWEEP" ANY) ("RETRY" NO-RETURN) ("LOOP" ANY) ("IRECORD" ANY) ("TEMPLATE-TABLE" ANY) ("CONTENTS" ANY) ("NEXTS" FIX) ("SWNEXT" ANY) ("RELL" ANY) ("RELU" ANY) ("RELR" ANY) ("INTGO" ANY) ("PFRAME" ANY) ("NTH1" ANY) ("REST1" ANY) ("EMPTY?" ANY) ("MONAD?" ANY) ("QUIT" ANY) ("SYSCALL" ANY) ("LEGAL?" ANY) ("SETZONE" ANY) ("BLT" ANY T) ("ALLOCR" ANY T) ("ALLOCUU" ANY) ("ALLOCUV" ANY) ("ALLOCL" ANY) ("ALLOCUS" ANY) ("ALLOCUB" ANY) ("PUTS" ANY) ("SYSOP" ANY) ("MPAGES" FIX) ("ACALL" ANY) ("LOCK" ANY) ("RNTIME" FLOAT) ("TYPEW" ANY) ("TYPEWC" ANY) ("SAVTTY" ANY) ("FATAL" ANY) ("GETTTY" ANY) ("FGETBITS" ANY) ("FPUTBITS" ANY) ("PIPE" ANY) ("IFSYS" ANY) ("ENDIF" ANY) ("CGC-UVECTOR" ANY) ("CGC-VECTOR" ANY) ("CGC-STRING" ANY) ("CGC-BYTES" ANY) ("CGC-LIST" ANY) ("CGC-RECORD" ANY T) ("MOVSTK" ANY) ("GETSTK" ANY) ("ON-STACK?" FIX) ("USBLOCK" ANY) ("SBLOCK" ANY) ("UUBLOCK" ANY) ("BBIND" ANY) ("GEN-LVAL" ANY) ("GEN-SET" ANY) ("STRING-EQUAL?" ANY) ("MOVE-STRING" ANY) ("MOVE-WORDS" ANY) ("STRCOMP" ANY) ("SETSIZ" ANY) ("BIGSTACK" ANY)]>
79
80 <MAPF <> <FUNCTION (L "AUX" (S <1 .L>) (TYP <2 .L>) A) #DECL ((L) <LIST STRING ANY>) <COND (<NOT <SET A <LOOKUP .S ,MIM-OBL>>> <SET A <INSERT .S ,MIM-OBL>>)> <COND (<N==? .TYP ANY> <PUTPROP .A TYPE .TYP>)> <COND (<G? <LENGTH .L> 2> <PUTPROP .A `RECORD-TYPE T>)>> ,MIMOPS>
81
82 "Generate function starting pseudo-op"
83
84 #WORD *23626261241*
85 <GFCN \1aMIM-FCN ("VALUE" LIST ANY ANY "OPTIONAL" ANY) NAME6 DCL7 NEED-FR8>
86                     <OPT-DISPATCH 2 %<> OPT4 OPT5>
87 OPT4
88                     <PUSH %<>>
89 OPT5
90                     <TEMP TEMP14>
91                     <INTGO>
92                     <FRAME '\1aEMIT>
93                     <FRAME '\1aFORM>
94                     <TYPE? NEED-FR8 <TYPE-CODE FALSE> + PHRASE13>
95                     <DEAD NEED-FR8>
96                     <SET TEMP14 '`FCN (TYPE ATOM)>
97                     <JUMP + PHRASE15>
98 PHRASE13
99                     <SET TEMP14 '`GFCN (TYPE ATOM)>
100 PHRASE15
101                     <PUSH TEMP14>
102                     <DEAD TEMP14>
103                     <CHTYPE NAME6 <TYPE-CODE FCN-ATOM> = STACK>
104                     <DEAD NAME6>
105                     <CHTYPE DCL7 <TYPE-CODE LIST> = STACK>
106                     <DEAD DCL7>
107                     <CALL '\1aFORM 3 = TEMP14>
108                     <PUSH TEMP14>
109                     <CALL '\1aEMIT 1>
110                     <RESTL TEMP14 1 = TEMP14 (TYPE LIST)>
111                     <RESTL TEMP14 1 = TEMP14 (TYPE LIST)>
112                     <CHTYPE TEMP14 <TYPE-CODE LIST> = TEMP14>
113                     <GEN-SET 'ARGS-NEXT TEMP14>
114                     <RETURN TEMP14>
115                     <DEAD TEMP14>
116                     <END \1aMIM-FCN>
117 "Generate temp pseudo-op and return pointer to list so that others can
118  be dynamically added"
119
120 #WORD *22135272465*
121 <GFCN \1aMIM-TEMPS-HOLD ("VALUE" LIST)>
122                     <TEMP TEMP5>
123                     <INTGO>
124                     <FRAME '\1aFORM>
125                     <PUSH '`TEMP>
126                     <CALL '\1aFORM 1 = TEMP5>
127                     <GEN-SET 'TMPS TEMP5>
128                     <DEAD TEMP5>
129                     <GEN-LVAL 'TMPS = TEMP5>
130                     <CHTYPE TEMP5 <TYPE-CODE LIST> = TEMP5>
131                     <GEN-SET 'TMPS-NEXT TEMP5>
132                     <DEAD TEMP5>
133                     <GEN-LVAL 'TMPS-NEXT = TEMP5>
134                     <RETURN TEMP5>
135                     <DEAD TEMP5>
136                     <END \1aMIM-TEMPS-HOLD>
137 #WORD *13434727340*
138 <GFCN \1aMIM-TEMPS-EMIT ("VALUE" ATOM)>
139                     <TEMP TEMP5>
140                     <INTGO>
141                     <FRAME '\1aEMIT>
142                     <GEN-LVAL 'TMPS = STACK>
143                     <CALL '\1aEMIT 1>
144                     <FRAME '\1aIEMIT>
145                     <PUSH '`INTGO>
146                     <CALL '\1aIEMIT 1 = TEMP5>
147                     <RETURN TEMP5>
148                     <DEAD TEMP5>
149                     <END \1aMIM-TEMPS-EMIT>
150 "Here to change any TEMPS to ADECLs if possible"
151
152 #WORD *30672366113*
153 <GFCN \1aTYPIFY-TEMPS ("VALUE" <OR ATOM FALSE> <LIST [REST TEMP]>) L4>
154                     <TEMP TEMP14 TEMP11:LIST TMP16:TEMP TYP17>
155                     <INTGO>
156                     <SET TEMP14 %<> (TYPE FALSE)>
157                     <SET TEMP11 L4 (TYPE LIST)>
158                     <DEAD L4>
159                     <LOOP>
160 MAP6
161                     <INTGO>
162                     <EMPL? TEMP11 + MAPAP9>
163                     <NTHL TEMP11 1 = TMP16>
164                     <NTHUV TMP16 6 = TYP17>
165                     <SET TEMP14 TYP17>
166                     <TYPE? TEMP14 <TYPE-CODE FALSE> + PHRASE19>
167                     <FRAME '\1aISTYPE?>
168                     <PUSH TYP17>
169                     <DEAD TYP17>
170                     <CALL '\1aISTYPE? 1 = TYP17>
171                     <SET TEMP14 TYP17>
172                     <TYPE? TEMP14 <TYPE-CODE FALSE> + PHRASE19>
173                     <VEQUAL? TYP17 'NO-RETURN - TAG22>
174                     <SET TEMP14 %<> (TYPE FALSE)>
175                     <JUMP + PHRASE19>
176 TAG22
177                     <VEQUAL? TYP17 'ANY - TAG23>
178                     <SET TEMP14 %<> (TYPE FALSE)>
179                     <JUMP + PHRASE19>
180 TAG23
181                     <FRAME '\1aMUNG-TMP>
182                     <PUSH TMP16>
183                     <NTHUV TMP16 3 = TEMP14>
184                     <DEAD TMP16>
185                     <RESTL TEMP14 1 = TEMP14 (TYPE LIST)>
186                     <CHTYPE TEMP14 <TYPE-CODE LIST> = STACK>
187                     <DEAD TEMP14>
188                     <PUSH TYP17>
189                     <DEAD TYP17>
190                     <CALL '\1aMUNG-TMP 3 = TEMP14>
191 PHRASE19
192                     <RESTL TEMP11 1 = TEMP11 (TYPE LIST)>
193                     <JUMP + MAP6>
194 MAPAP9
195                     <RETURN TEMP14>
196                     <DEAD TEMP14>
197                     <END \1aTYPIFY-TEMPS>
198 #WORD *31727323302*
199 <GFCN \1aMUNG-TMP ("VALUE" <OR ATOM FALSE> TEMP LIST ANY) TMP4 TL5 TYP6>
200                     <TEMP NM7:ATOM TEMP17 TEMP14:LIST LL19:LIST>
201                     <INTGO>
202                     <NTHUV TMP4 1 = NM7 (TYPE ATOM)>
203                     <DEAD TMP4>
204                     <SET TEMP17 %<> (TYPE FALSE)>
205                     <SET TEMP14 TL5 (TYPE LIST)>
206                     <DEAD TL5>
207                     <LOOP>
208 MAP9
209                     <INTGO>
210                     <EMPL? TEMP14 + MAPAP12>
211                     <SET LL19 TEMP14>
212                     <NTHL LL19 1 = TEMP17>
213                     <EQUAL? TEMP17 NM7 + TAG23>
214                     <DEAD TEMP17>
215                     <SET TEMP17 %<> (TYPE FALSE)>
216                     <JUMP + PHRASE22>
217 TAG23
218                     <PUSH NM7>
219                     <DEAD NM7>
220                     <PUSH TYP6>
221                     <DEAD TYP6>
222                     <UBLOCK <TYPE-CODE VECTOR> 2 = TEMP17>
223                     <CHTYPE TEMP17 <TYPE-CODE ADECL> = TEMP17>
224                     <PUTL LL19 1 TEMP17>
225                     <DEAD LL19 TEMP17>
226                     <RETURN 'T>
227 PHRASE22
228                     <RESTL TEMP14 1 = TEMP14 (TYPE LIST)>
229                     <JUMP + MAP9>
230 MAPAP12
231                     <RETURN TEMP17>
232                     <DEAD TEMP17>
233                     <END \1aMUNG-TMP>
234 "Here to create a temporary"
235
236 #WORD *33525750552*
237 <GFCN \1aGEN-TEMP ("VALUE" TEMP "OPTIONAL" ANY ANY ANY ANY) ALLOCATE9 NM10 ARG-TEMP11 NO-RECYC12>
238                     <OPT-DISPATCH 0 %<> OPT4 OPT5 OPT6 OPT7 OPT8>
239 OPT4
240                     <PUSH 'ANY>
241 OPT5
242                     <PUSH "TEMP">
243 OPT6
244                     <PUSH %<>>
245 OPT7
246                     <PUSH %<>>
247 OPT8
248                     <TEMP TEMP16 TN14:LIST FT15:LIST TMP13:TEMP OF57:LIST>
249                     <INTGO>
250                     <GEN-LVAL 'TMPS-NEXT = TN14>
251                     <GEN-LVAL 'FREE-TEMPS = FT15>
252                     <EMPL? FT15 + BOOL24 (TYPE LIST)>
253                     <TYPE? ARG-TEMP11 <TYPE-CODE FALSE> + PHRASE23>
254 BOOL24
255                     <FRAME '\1aMAKE-TAG>
256                     <PUSH NM10>
257                     <DEAD NM10>
258                     <CALL '\1aMAKE-TAG 1 = NM10>
259                     <TYPE? ALLOCATE9 <TYPE-CODE FALSE> + PHRASE27>
260                     <CHTYPE NM10 <TYPE-CODE ATOM> = TEMP16>
261                     <CONS TEMP16 () = TEMP16>
262                     <GEN-SET 'TMPS-NEXT TEMP16>
263                     <PUTREST TN14 TEMP16>
264                     <DEAD TN14 TEMP16>
265 PHRASE27
266                     <PUSH NM10>
267                     <DEAD NM10>
268                     <TYPE? ALLOCATE9 <TYPE-CODE FALSE> - BOOL34>
269                     <TYPE? NO-RECYC12 <TYPE-CODE FALSE> + PHRASE33>
270                     <TYPE? ARG-TEMP11 <TYPE-CODE FALSE> + PHRASE33>
271 BOOL34
272                     <SET TEMP16 1 (TYPE FIX)>
273                     <JUMP + PHRASE36>
274 PHRASE33
275                     <SET TEMP16 0 (TYPE FIX)>
276 PHRASE36
277                     <PUSH TEMP16>
278                     <DEAD TEMP16>
279                     <GEN-LVAL 'TMPS = STACK>
280                     <TYPE? ALLOCATE9 <TYPE-CODE FALSE> - BOOL41>
281                     <TYPE? ARG-TEMP11 <TYPE-CODE FALSE> + PHRASE40>
282                     <DEAD ARG-TEMP11>
283 BOOL41
284                     <SET TEMP16 'T (TYPE ATOM)>
285                     <JUMP + PHRASE43>
286 PHRASE40
287                     <SET TEMP16 %<> (TYPE FALSE)>
288 PHRASE43
289                     <PUSH TEMP16>
290                     <DEAD TEMP16>
291                     <PUSH NO-RECYC12>
292                     <DEAD NO-RECYC12>
293                     <TYPE? ALLOCATE9 <TYPE-CODE FALSE> + PHRASE45>
294                     <FRAME '\1aISTYPE?>
295                     <PUSH ALLOCATE9>
296                     <DEAD ALLOCATE9>
297                     <CALL '\1aISTYPE? 1 = TEMP16>
298                     <JUMP + PHRASE47>
299 PHRASE45
300                     <SET TEMP16 'NO-RETURN (TYPE ATOM)>
301 PHRASE47
302                     <PUSH TEMP16>
303                     <DEAD TEMP16>
304                     <UBLOCK <TYPE-CODE VECTOR> 6 = TEMP16>
305                     <CHTYPE TEMP16 <TYPE-CODE TEMP> = TMP13>
306                     <DEAD TEMP16>
307                     <GEN-LVAL 'EVERY-TEMP = TEMP16>
308                     <CONS TMP13 TEMP16 = TEMP16>
309                     <GEN-SET 'EVERY-TEMP TEMP16>
310                     <DEAD TEMP16>
311                     <RETURN TMP13>
312                     <DEAD TMP13>
313 PHRASE23
314                     <TYPE? ALLOCATE9 <TYPE-CODE FALSE> + PHRASE52>
315                     <EQUAL? ALLOCATE9 'ANY + PHRASE52>
316                     <SET TN14 FT15>
317                     <SET OF57 TN14>
318                     <LOOP>
319 AGAIN58
320                     <INTGO>
321                     <EMPL? TN14 + PHRASE52 (TYPE LIST)>
322                     <NTHL TN14 1 = TMP13 (TYPE TEMP)>
323                     <NTHUV TMP13 6 = TEMP16>
324                     <EQUAL? TEMP16 'NO-RETURN + BOOL63>
325                     <DEAD TEMP16>
326                     <NTHUV TMP13 6 = TEMP16>
327                     <TYPE? TEMP16 <TYPE-CODE FALSE> + PHRASE62>
328                     <DEAD TEMP16>
329                     <FRAME '\1aISTYPE?>
330                     <FRAME '\1aTYPE-MERGE>
331                     <NTHUV TMP13 6 = STACK>
332                     <PUSH ALLOCATE9>
333                     <CALL '\1aTYPE-MERGE 2 = STACK>
334                     <CALL '\1aISTYPE? 1 = TEMP16>
335                     <TYPE? TEMP16 <TYPE-CODE FALSE> + PHRASE62>
336                     <DEAD TEMP16>
337 BOOL63
338                     <VEQUAL? OF57 TN14 - PHRASE69>
339                     <RESTL TN14 1 = TEMP16 (TYPE LIST)>
340                     <DEAD TN14>
341                     <GEN-SET 'FREE-TEMPS TEMP16>
342                     <DEAD TEMP16>
343                     <JUMP + EXIT54>
344 PHRASE69
345                     <RESTL TN14 1 = TEMP16 (TYPE LIST)>
346                     <DEAD TN14>
347                     <PUTREST OF57 TEMP16>
348                     <DEAD OF57 TEMP16>
349                     <JUMP + EXIT54>
350 PHRASE62
351                     <SET OF57 TN14>
352                     <DEAD TN14>
353                     <RESTL OF57 1 = TN14 (TYPE LIST)>
354                     <JUMP + AGAIN58>
355 EXIT54
356                     <FRAME '\1aUSE-TEMP>
357                     <PUSH TMP13>
358                     <PUSH ALLOCATE9>
359                     <DEAD ALLOCATE9>
360                     <CALL '\1aUSE-TEMP 2>
361                     <RETURN TMP13>
362                     <DEAD TMP13>
363 PHRASE52
364                     <NTHL FT15 1 = TMP13 (TYPE TEMP)>
365                     <RESTL FT15 1 = TEMP16 (TYPE LIST)>
366                     <DEAD FT15>
367                     <GEN-SET 'FREE-TEMPS TEMP16>
368                     <DEAD TEMP16>
369                     <TYPE? ALLOCATE9 <TYPE-CODE FALSE> + PHRASE78>
370                     <FRAME '\1aUSE-TEMP>
371                     <PUSH TMP13>
372                     <PUSH ALLOCATE9>
373                     <DEAD ALLOCATE9>
374                     <CALL '\1aUSE-TEMP 2>
375 PHRASE78
376                     <RETURN TMP13>
377                     <DEAD TMP13>
378                     <END \1aGEN-TEMP>
379 #WORD *13442227611*
380 <GFCN \1aSPEC-GEN-TEMP ("VALUE" TEMP ANY "OPTIONAL" ANY ANY) TTMPS7 ALLOCATE8 NM9>
381                     <OPT-DISPATCH 1 %<> OPT4 OPT5 OPT6>
382 OPT4
383                     <PUSH 'ANY>
384 OPT5
385                     <PUSH "TEMP">
386 OPT6
387                     <TEMP TEMP3:LBIND TEMP15 L11 TEMP34 TMP10:TEMP>
388                     <INTGO>
389                     <GETS 'BIND = TEMP3 (TYPE LBIND)>
390                     <GEN-LVAL 'TMPS-NEXT = TEMP15>
391                     <BBIND 'TMPS-NEXT 'LIST 'FIX TEMP15>
392                     <DEAD TEMP15>
393                     <GEN-LVAL 'FREE-TEMPS = TEMP15>
394                     <BBIND 'FREE-TEMPS 'LIST 'FIX TEMP15>
395                     <DEAD TEMP15>
396                     <GEN-LVAL 'TMPS = TEMP15>
397                     <BBIND 'TMPS 'FORM 'FIX TEMP15>
398                     <DEAD TEMP15>
399                     <NTHR 'TMPS 2 = TEMP15 (RECORD-TYPE ATOM) (TYPE LBIND)>
400                     <NTHR TEMP15 1 = TEMP15 (RECORD-TYPE LBIND)>
401                     <EQUAL? TEMP15 TTMPS7 + PHRASE23>
402                     <DEAD TEMP15>
403                     <FRAME '\1aFIND-FRAME>
404                     <NTHR 'TMPS 2 = TEMP15 (RECORD-TYPE ATOM) (TYPE LBIND)>
405                     <PUTR TEMP15 1 TTMPS7 (RECORD-TYPE LBIND)>
406                     <DEAD TEMP15>
407                     <PUSH TTMPS7>
408                     <DEAD TTMPS7>
409                     <PUSH 'T>
410                     <CALL '\1aFIND-FRAME 2 = L11>
411                     <EMPTY? L11 - PHRASE30>
412                     <FRAME '\1aCOMPILE-LOSSAGE>
413                     <PUSH "Bad frame model">
414                     <CALL '\1aCOMPILE-LOSSAGE 1>
415 PHRASE30
416                     <RESTL L11 1 = TEMP15 (TYPE LIST)>
417                     <NTHL TEMP15 1 = TEMP15 (TYPE LIST)>
418                     <NTHR 'TMPS-NEXT 2 = TEMP34 (RECORD-TYPE ATOM) (TYPE LBIND)>
419                     <PUTR TEMP34 1 TEMP15 (RECORD-TYPE LBIND)>
420                     <DEAD TEMP34 TEMP15>
421                     <RESTL L11 1 = TEMP15 (TYPE LIST)>
422                     <RESTL TEMP15 1 = TEMP15 (TYPE LIST)>
423                     <NTHL TEMP15 1 = TEMP15 (TYPE LIST)>
424                     <NTHR 'FREE-TEMPS 2 = TEMP34 (RECORD-TYPE ATOM) (TYPE LBIND)>
425                     <PUTR TEMP34 1 TEMP15 (RECORD-TYPE LBIND)>
426                     <DEAD TEMP34 TEMP15>
427                     <FRAME '\1aGEN-TEMP>
428                     <PUSH ALLOCATE8>
429                     <DEAD ALLOCATE8>
430                     <PUSH NM9>
431                     <DEAD NM9>
432                     <CALL '\1aGEN-TEMP 2 = TMP10>
433                     <NTHR 'TMPS-NEXT 2 = TEMP15 (RECORD-TYPE ATOM) (TYPE LBIND)>
434                     <NTHR TEMP15 1 = TEMP15 (RECORD-TYPE LBIND)>
435                     <RESTL L11 1 = TEMP34 (TYPE LIST)>
436                     <PUTL TEMP34 1 TEMP15>
437                     <DEAD TEMP34 TEMP15>
438                     <NTHR 'FREE-TEMPS 2 = TEMP15 (RECORD-TYPE ATOM) (TYPE LBIND)>
439                     <NTHR TEMP15 1 = TEMP15 (RECORD-TYPE LBIND)>
440                     <RESTL L11 1 = TEMP34 (TYPE LIST)>
441                     <DEAD L11>
442                     <RESTL TEMP34 1 = TEMP34 (TYPE LIST)>
443                     <PUTL TEMP34 1 TEMP15>
444                     <DEAD TEMP34 TEMP15>
445                     <JUMP + PHRASE42>
446 PHRASE23
447                     <FRAME '\1aGEN-TEMP>
448                     <PUSH ALLOCATE8>
449                     <DEAD ALLOCATE8>
450                     <PUSH NM9>
451                     <DEAD NM9>
452                     <CALL '\1aGEN-TEMP 2 = TMP10>
453 PHRASE42
454                     <UNBIND TEMP3>
455                     <DEAD TEMP3>
456                     <ADJ -27>
457                     <RETURN TMP10>
458                     <DEAD TMP10>
459                     <END \1aSPEC-GEN-TEMP>
460 #WORD *3063020215*
461 <GFCN \1aFIND-FRAME ("VALUE" <OR LIST TEMP> ANY "OPTIONAL" ANY) TMPS6 LOC7>
462                     <OPT-DISPATCH 1 %<> OPT4 OPT5>
463 OPT4
464                     <PUSH %<>>
465 OPT5
466                     <TEMP TEMP9 L8:LIST>
467                     <INTGO>
468                     <GEN-LVAL 'ALL-TEMPS-LIST = L8>
469                     <LOOP>
470 AGAIN15
471                     <INTGO>
472                     <EMPL? L8 - PHRASE20 (TYPE LIST)>
473                     <TYPE? LOC7 <TYPE-CODE FALSE> + PHRASE19>
474                     <RETURN ()>
475 PHRASE19
476                     <FRAME '\1aCOMPILE-LOSSAGE>
477                     <PUSH "Bad frame model">
478                     <CALL '\1aCOMPILE-LOSSAGE 1>
479 PHRASE20
480                     <NTHL L8 1 = TEMP9 (TYPE LIST)>
481                     <NTHL TEMP9 1 = TEMP9 (TYPE FORM)>
482                     <EQUAL? TEMP9 TMPS6 + PHRASE23>
483                     <DEAD TEMP9>
484                     <RESTL L8 1 = L8 (TYPE LIST)>
485                     <JUMP + AGAIN15>
486 PHRASE23
487                     <TYPE? LOC7 <TYPE-CODE FALSE> + PHRASE27>
488                     <DEAD LOC7>
489                     <NTHL L8 1 = TEMP9 (TYPE LIST)>
490                     <DEAD L8>
491                     <RETURN TEMP9>
492                     <DEAD TEMP9>
493 PHRASE27
494                     <NTHL L8 1 = TEMP9 (TYPE LIST)>
495                     <DEAD L8>
496                     <RESTL TEMP9 1 = TEMP9 (TYPE LIST)>
497                     <RESTL TEMP9 1 = TEMP9 (TYPE LIST)>
498                     <RESTL TEMP9 1 = TEMP9 (TYPE LIST)>
499                     <NTHL TEMP9 1 = TEMP9 (TYPE TEMP)>
500                     <RETURN TEMP9>
501                     <DEAD TEMP9>
502                     <END \1aFIND-FRAME>
503 #WORD *15473032434*
504 <GFCN \1aUSE-TEMP ("VALUE" TEMP TEMP "OPTIONAL" ANY ANY) TMP7 TY8 INIT9>
505                     <OPT-DISPATCH 1 %<> OPT4 OPT5 OPT6>
506 OPT4
507                     <PUSH %<>>
508 OPT5
509                     <PUSH #T$UNBOUND 0>
510 OPT6
511                     <TEMP NM10 TEMP15 TEMP18 L11>
512                     <INTGO>
513                     <NTHUV TMP7 1 = NM10 (TYPE ATOM)>
514                     <NTHUV TMP7 4 = TEMP15>
515                     <TYPE? TEMP15 <TYPE-CODE FALSE> - PHRASE14>
516                     <DEAD TEMP15>
517                     <NTHUV TMP7 3 = TEMP15>
518                     <GEN-LVAL 'TMPS = TEMP18>
519                     <EQUAL? TEMP15 TEMP18 - PHRASE17>
520                     <DEAD TEMP15 TEMP18>
521                     <GEN-LVAL 'TMPS-NEXT = TEMP18>
522                     <CONS NM10 () = TEMP15>
523                     <DEAD NM10>
524                     <GEN-SET 'TMPS-NEXT TEMP15>
525                     <PUTREST TEMP18 TEMP15>
526                     <DEAD TEMP18 TEMP15>
527                     <JUMP + PHRASE25>
528 PHRASE17
529                     <FRAME '\1aFIND-FRAME>
530                     <NTHUV TMP7 3 = STACK>
531                     <PUSH 'T>
532                     <CALL '\1aFIND-FRAME 2 = L11>
533                     <EMPTY? L11 - PHRASE28>
534                     <FRAME '\1aCOMPILE-LOSSAGE>
535                     <PUSH "Bad frame model">
536                     <CALL '\1aCOMPILE-LOSSAGE 1>
537 PHRASE28
538                     <RESTL L11 1 = TEMP18 (TYPE LIST)>
539                     <NTHL TEMP18 1 = TEMP18>
540                     <CONS NM10 () = TEMP15>
541                     <DEAD NM10>
542                     <RESTL L11 1 = NM10 (TYPE LIST)>
543                     <PUTL NM10 1 TEMP15>
544                     <DEAD NM10 TEMP15>
545                     <RESTL L11 1 = NM10 (TYPE LIST)>
546                     <DEAD L11>
547                     <NTHL NM10 1 = NM10 (TYPE LIST)>
548                     <PUTREST TEMP18 NM10>
549                     <DEAD TEMP18 NM10>
550 PHRASE25
551                     <PUTUV TMP7 4 'T>
552 PHRASE14
553                     <TYPE? TY8 <TYPE-CODE FALSE> + PHRASE32>
554                     <NTHUV TMP7 6 = TEMP18>
555                     <TYPE? TEMP18 <TYPE-CODE FALSE> + PHRASE32>
556                     <DEAD TEMP18>
557                     <FRAME '\1aISTYPE?>
558                     <FRAME '\1aTYPE-MERGE>
559                     <NTHUV TMP7 6 = STACK>
560                     <PUSH TY8>
561                     <DEAD TY8>
562                     <CALL '\1aTYPE-MERGE 2 = STACK>
563                     <CALL '\1aISTYPE? 1 = TEMP18>
564                     <PUTUV TMP7 6 TEMP18>
565                     <DEAD TEMP18>
566                     <JUMP + PHRASE36>
567 PHRASE32
568                     <TYPE? TY8 <TYPE-CODE FALSE> - PHRASE36>
569                     <DEAD TY8>
570                     <PUTUV TMP7 6 %<>>
571 PHRASE36
572                     <NTHUV TMP7 2 = TEMP18 (TYPE FIX)>
573                     <ADD TEMP18 1 = TEMP18 (TYPE FIX)>
574                     <PUTUV TMP7 2 TEMP18 (TYPE FIX)>
575                     <DEAD TEMP18>
576                     <RETURN TMP7>
577                     <DEAD TMP7>
578                     <END \1aUSE-TEMP>
579 #WORD *10040600577*
580 <GFCN \1aFREE-TEMP ("VALUE" ANY ANY "OPTIONAL" ANY) TMP6 KILL7>
581                     <OPT-DISPATCH 1 %<> OPT4 OPT5>
582 OPT4
583                     <PUSH 'T>
584 OPT5
585                     <TEMP REFS8 TEMP26 L9 TEMP45>
586                     <INTGO>
587                     <TYPE? TMP6 <TYPE-CODE TEMP> - PHRASE54>
588                     <NTHUV TMP6 2 = REFS8 (TYPE FIX)>
589                     <SUB REFS8 1 = REFS8 (TYPE FIX)>
590                     <LESS? REFS8 0 - TAG13>
591                     <SET REFS8 0 (TYPE FIX)>
592 TAG13
593                     <PUTUV TMP6 2 REFS8 (TYPE FIX)>
594                     <VEQUAL? REFS8 0 - PHRASE54 (TYPE FIX)>
595                     <DEAD REFS8>
596                     <NTHUV TMP6 5 = REFS8>
597                     <TYPE? REFS8 <TYPE-CODE FALSE> - PHRASE39>
598                     <DEAD REFS8>
599                     <GEN-LVAL 'TMPS = REFS8>
600                     <NTHUV TMP6 3 = TEMP26>
601                     <EQUAL? REFS8 TEMP26 - PHRASE22>
602                     <DEAD REFS8 TEMP26>
603                     <GEN-LVAL 'FREE-TEMPS = TEMP26>
604                     <EMPL? TEMP26 + TAG27>
605                     <LOOP (TMP6 VALUE) (TEMP26 VALUE)>
606 TAG28
607                     <NTHL TEMP26 1 = REFS8>
608                     <TYPE? REFS8 <TYPE-CODE TEMP> - TAG29>
609                     <VEQUAL? REFS8 TMP6 + PHRASE22>
610                     <DEAD REFS8>
611 TAG29
612                     <RESTL TEMP26 1 = TEMP26 (TYPE LIST)>
613                     <EMPL? TEMP26 - TAG28>
614 TAG27
615                     <GEN-LVAL 'FREE-TEMPS = TEMP26>
616                     <CONS TMP6 TEMP26 = TEMP26>
617                     <GEN-SET 'FREE-TEMPS TEMP26>
618                     <DEAD TEMP26>
619                     <JUMP + PHRASE39>
620 PHRASE22
621                     <FRAME '\1aFIND-FRAME>
622                     <NTHUV TMP6 3 = STACK>
623                     <PUSH 'T>
624                     <CALL '\1aFIND-FRAME 2 = L9>
625                     <EMPL? L9 + PHRASE39 (TYPE LIST)>
626                     <RESTL L9 1 = TEMP26 (TYPE LIST)>
627                     <RESTL TEMP26 1 = TEMP26 (TYPE LIST)>
628                     <NTHL TEMP26 1 = TEMP26>
629                     <EMPTY? TEMP26 + TAG41>
630                     <LOOP (TMP6 VALUE) (TEMP26 LENGTH VALUE TYPE)>
631 TAG42
632                     <NTH1 TEMP26 = REFS8>
633                     <TYPE? REFS8 <TYPE-CODE TEMP> - TAG43>
634                     <VEQUAL? REFS8 TMP6 + PHRASE39>
635                     <DEAD REFS8>
636 TAG43
637                     <REST1 TEMP26 = TEMP26>
638                     <EMPTY? TEMP26 - TAG42>
639 TAG41
640                     <PUSH TMP6>
641                     <SET REFS8 1 (TYPE FIX)>
642                     <RESTL L9 1 = TEMP45 (TYPE LIST)>
643                     <RESTL TEMP45 1 = TEMP45 (TYPE LIST)>
644                     <NTHL TEMP45 1 = TEMP26>
645                     <DEAD TEMP45>
646                     <TYPE TEMP26 = TEMP45>
647                     <AND TEMP45 7 = TEMP45>
648                     <VEQUAL? TEMP45 1 + TAG46>
649                     <DEAD TEMP45>
650                     <LOOP (TEMP26 TYPE VALUE LENGTH) (REFS8 VALUE)>
651 TAG52
652                     <INTGO>
653                     <EMPTY? TEMP26 + TAG51>
654                     <NTH1 TEMP26 = STACK>
655                     <REST1 TEMP26 = TEMP26>
656                     <ADD REFS8 1 = REFS8 (TYPE FIX)>
657                     <JUMP + TAG52>
658 TAG51
659                     <LIST REFS8 = TEMP45 (TYPE LIST)>
660                     <DEAD REFS8>
661                     <JUMP + TAG47>
662 TAG46
663                     <LOOP>
664 TAG49
665                     <VEQUAL? REFS8 0 + TAG48>
666                     <POP = TEMP45>
667                     <CONS TEMP45 TEMP26 = TEMP26 (TYPE LIST)>
668                     <DEAD TEMP45>
669                     <SUB REFS8 1 = REFS8 (TYPE FIX)>
670                     <JUMP + TAG49>
671 TAG48
672                     <SET TEMP45 TEMP26>
673                     <DEAD TEMP26>
674 TAG47
675                     <RESTL L9 1 = TEMP26 (TYPE LIST)>
676                     <DEAD L9>
677                     <RESTL TEMP26 1 = TEMP26 (TYPE LIST)>
678                     <PUTL TEMP26 1 TEMP45>
679                     <DEAD TEMP26 TEMP45>
680 PHRASE39
681                     <TYPE? KILL7 <TYPE-CODE FALSE> + PHRASE54>
682                     <DEAD KILL7>
683                     <FRAME '\1aIEMIT>
684                     <PUSH '`DEAD>
685                     <NTHUV TMP6 1 = STACK (TYPE ATOM)>
686                     <CALL '\1aIEMIT 2>
687 PHRASE54
688                     <RETURN TMP6>
689                     <DEAD TMP6>
690                     <END \1aFREE-TEMP>
691 #WORD *12645462404*
692 <GFCN \1aDEALLOCATE-TEMP ("VALUE" ANY ANY) TMP4>
693                     <TEMP REFS5:FIX>
694                     <INTGO>
695                     <TYPE? TMP4 <TYPE-CODE TEMP> - PHRASE7>
696                     <NTHUV TMP4 2 = REFS5 (TYPE FIX)>
697                     <SUB REFS5 1 = REFS5 (TYPE FIX)>
698                     <LESS? REFS5 0 - TAG9>
699                     <SET REFS5 0 (TYPE FIX)>
700 TAG9
701                     <PUTUV TMP4 2 REFS5 (TYPE FIX)>
702                     <DEAD REFS5>
703 PHRASE7
704                     <RETURN TMP4>
705                     <DEAD TMP4>
706                     <END \1aDEALLOCATE-TEMP>
707 "Generate a unique atom for label, temp name, var name etc."
708
709 #WORD *2366522673*
710 <GFCN \1aMAKE-TAG ("VALUE" ANY "OPTIONAL" <OR ATOM STRING>) S6>
711                     <OPT-DISPATCH 0 %<> OPT4 OPT5>
712 OPT4
713                     <PUSH "TAG">
714 OPT5
715                     <TEMP TEMP13 TC8:STRING>
716                     <INTGO>
717                     <TYPE? S6 <TYPE-CODE ATOM> - PHRASE10>
718                     <NTHR S6 3 = S6 (RECORD-TYPE ATOM)>
719 PHRASE10
720                     <FRAME '\1aUNPARSE>
721                     <FRAME '\1a+>
722                     <GEN-LVAL 'TAG-COUNT = STACK>
723                     <PUSH 1>
724                     <CALL '\1a+ 2 = TEMP13>
725                     <GEN-SET 'TAG-COUNT TEMP13>
726                     <PUSH TEMP13>
727                     <DEAD TEMP13>
728                     <CALL '\1aUNPARSE 1 = TC8>
729                     <LENUS S6 = TEMP13 (TYPE FIX)>
730                     <NTHUS S6 TEMP13 = TEMP13 (TYPE CHARACTER)>
731                     <SUB TEMP13 48 = TEMP13 (TYPE FIX)>
732                     <LESS? TEMP13 0 + PHRASE20 (TYPE FIX)>
733                     <GRTR? TEMP13 9 + PHRASE20 (TYPE FIX)>
734                     <DEAD TEMP13>
735                     <PUSH S6>
736                     <DEAD S6>
737                     <PUSH "-">
738                     <PUSH TC8>
739                     <DEAD TC8>
740                     <UBLOCK <TYPE-CODE STRING> 3 = S6 (TYPE STRING)>
741                     <JUMP + PHRASE26>
742 PHRASE20
743                     <PUSH S6>
744                     <DEAD S6>
745                     <PUSH TC8>
746                     <DEAD TC8>
747                     <UBLOCK <TYPE-CODE STRING> 2 = S6 (TYPE STRING)>
748 PHRASE26
749                     <FRAME '\1aLOOKUP>
750                     <PUSH S6>
751                     <GVAL 'TMP-OBL = STACK>
752                     <CALL '\1aLOOKUP 2 = TEMP13>
753                     <TYPE? TEMP13 <TYPE-CODE FALSE> - BOOL28>
754                     <FRAME '\1aINSERT>
755                     <PUSH S6>
756                     <DEAD S6>
757                     <GVAL 'TMP-OBL = STACK>
758                     <CALL '\1aINSERT 2 = TEMP13>
759 BOOL28
760                     <RETURN TEMP13>
761                     <DEAD TEMP13>
762                     <END \1aMAKE-TAG>
763 "Add an instruction to the output code"
764
765 #WORD *23303111155*
766 <GFCN \1aEMIT ("VALUE" <LIST ANY> ANY) THING4>
767                     <TEMP TEMP5 TEMP9>
768                     <INTGO>
769                     <GEN-LVAL 'CODE-PTR = TEMP5>
770                     <GEN-LVAL 'CODE-PTR = TEMP9>
771                     <RESTL TEMP9 1 = TEMP9 (TYPE LIST)>
772                     <CONS THING4 TEMP9 = TEMP9>
773                     <DEAD THING4>
774                     <GEN-SET 'CODE-PTR TEMP9>
775                     <PUTREST TEMP5 TEMP9>
776                     <DEAD TEMP9>
777                     <RETURN TEMP5>
778                     <DEAD TEMP5>
779                     <END \1aEMIT>
780 <SETG INSTRUCTION ,FORM>
781
782 #WORD *2764054272*
783 <GFCN \1aIEMIT ("VALUE" ATOM "TUPLE" ANY)>
784                     <MAKTUP X4 = X4>
785                     <INTGO>
786                     <FRAME '\1aREAL-IEMIT>
787                     <PUSH %<>>
788                     <PUSH X4>
789                     <DEAD X4>
790                     <CALL '\1aREAL-IEMIT 2 = X4>
791                     <RETURN X4>
792                     <DEAD X4>
793                     <END \1aIEMIT>
794 #WORD *5532060232*
795 <GFCN \1aSPEC-IEMIT ("VALUE" ATOM "TUPLE" ANY)>
796                     <MAKTUP X4 = X4>
797                     <INTGO>
798                     <FRAME '\1aREAL-IEMIT>
799                     <PUSH 'T>
800                     <PUSH X4>
801                     <DEAD X4>
802                     <CALL '\1aREAL-IEMIT 2 = X4>
803                     <RETURN X4>
804                     <DEAD X4>
805                     <END \1aSPEC-IEMIT>
806 #WORD *33617404344*
807 <GFCN \1aREAL-IEMIT ("VALUE" ATOM ANY <TUPLE ANY>) SKIP-DEAD4 X5>
808                     <TEMP (DEAD-TEMPS6:LIST ()) INS7 (PAST=8 %<>) (DO-LATER-SETRL10 %<>) (FREED-TEMPS11:LIST ()) TEMP17 XP29:VECTOR Y30 TEMP36 TEMP41 FOR-SETRL9>
809                     <INTGO>
810                     <NTHUV X5 1 = INS7>
811                     <RESTUV X5 1 = TEMP17 (TYPE VECTOR)>
812                     <CHTYPE TEMP17 <TYPE-CODE VECTOR> = TEMP17>
813                     <EMPUV? TEMP17 + MAPAP22 (TYPE VECTOR)>
814                     <DEAD TEMP17>
815                     <RESTUV X5 1 = TEMP17 (TYPE VECTOR)>
816                     <CHTYPE TEMP17 <TYPE-CODE VECTOR> = TEMP17>
817                     <EMPUV? TEMP17 + PHRASE80>
818                     <LOOP>
819 MAP19
820                     <INTGO>
821                     <EMPUV? TEMP17 + MAPAP22>
822                     <SET XP29 TEMP17>
823                     <NTHUV XP29 1 = Y30>
824                     <EQUAL? Y30 '= - PHRASE33>
825                     <SET PAST=8 'T (TYPE ATOM)>
826 PHRASE33
827                     <TYPE? Y30 <TYPE-CODE MIM-SPECIAL> - PHRASE35>
828                     <CHTYPE Y30 <TYPE-CODE ATOM> = TEMP36>
829                     <DEAD Y30>
830                     <PUTUV XP29 1 TEMP36>
831                     <DEAD XP29 TEMP36>
832                     <JUMP + PHRASE67>
833 PHRASE35
834                     <TYPE? Y30 <TYPE-CODE TEMP> - PHRASE37>
835                     <NTHUV Y30 3 = TEMP36>
836                     <GEN-LVAL 'TMPS = TEMP41>
837                     <EQUAL? TEMP36 TEMP41 + PHRASE39>
838                     <DEAD TEMP36 TEMP41>
839                     <EQUAL? INS7 '`SETRL - BOOL44>
840                     <RESTUV X5 2 = TEMP41 (TYPE VECTOR)>
841                     <CHTYPE TEMP41 <TYPE-CODE VECTOR> = TEMP41>
842                     <VEQUAL? TEMP41 XP29 + PHRASE39>
843                     <DEAD TEMP41>
844 BOOL44
845                     <EQUAL? INS7 '`SET - PHRASE46>
846                     <RESTUV X5 1 = TEMP41 (TYPE VECTOR)>
847                     <CHTYPE TEMP41 <TYPE-CODE VECTOR> = TEMP41>
848                     <VEQUAL? TEMP41 XP29 - PHRASE48>
849                     <DEAD TEMP41>
850                     <FRAME '\1aIEMIT>
851                     <PUSH '`SETRL>
852                     <FRAME '\1aFIND-FRAME>
853                     <NTHUV Y30 3 = STACK>
854                     <CALL '\1aFIND-FRAME 1 = STACK>
855                     <NTHUV Y30 1 = STACK (TYPE ATOM)>
856                     <DEAD Y30>
857                     <NTHUV XP29 2 = STACK>
858                     <DEAD XP29>
859                     <SET TEMP36 4 (TYPE FIX)>
860                     <RESTUV X5 3 = TEMP41 (TYPE VECTOR)>
861                     <DEAD X5>
862                     <CHTYPE TEMP41 <TYPE-CODE VECTOR> = TEMP41>
863                     <LOOP (TEMP41 VALUE LENGTH) (TEMP36 VALUE)>
864 TAG51
865                     <INTGO>
866                     <EMPUV? TEMP41 + TAG49>
867                     <NTHUV TEMP41 1 = STACK>
868                     <RESTUV TEMP41 1 = TEMP41 (TYPE VECTOR)>
869                     <ADD TEMP36 1 = TEMP36 (TYPE FIX)>
870                     <JUMP + TAG51>
871 TAG49
872                     <CALL '\1aIEMIT TEMP36>
873                     <DEAD TEMP36>
874                     <JUMP + PHRASE80>
875 PHRASE48
876                     <FRAME '\1aIEMIT>
877                     <PUSH '`SETLR>
878                     <NTHUV X5 2 = STACK>
879                     <FRAME '\1aFIND-FRAME>
880                     <NTHUV Y30 3 = STACK>
881                     <CALL '\1aFIND-FRAME 1 = STACK>
882                     <NTHUV Y30 1 = STACK (TYPE ATOM)>
883                     <DEAD Y30>
884                     <SET TEMP41 4 (TYPE FIX)>
885                     <RESTUV X5 3 = TEMP36 (TYPE VECTOR)>
886                     <DEAD X5>
887                     <CHTYPE TEMP36 <TYPE-CODE VECTOR> = TEMP36>
888                     <LOOP (TEMP36 VALUE LENGTH) (TEMP41 VALUE)>
889 TAG56
890                     <INTGO>
891                     <EMPUV? TEMP36 + TAG54>
892                     <NTHUV TEMP36 1 = STACK>
893                     <RESTUV TEMP36 1 = TEMP36 (TYPE VECTOR)>
894                     <ADD TEMP41 1 = TEMP41 (TYPE FIX)>
895                     <JUMP + TAG56>
896 TAG54
897                     <CALL '\1aIEMIT TEMP41>
898                     <DEAD TEMP41>
899                     <JUMP + PHRASE80>
900 PHRASE46
901                     <VEQUAL? PAST=8 0 - PHRASE58>
902                     <FRAME '\1aLOOP-FRAME>
903                     <PUSH Y30>
904                     <CALL '\1aLOOP-FRAME 1 = TEMP36>
905                     <CONS TEMP36 () = TEMP41>
906                     <PUTREST TEMP41 FREED-TEMPS11>
907                     <DEAD FREED-TEMPS11>
908                     <SET FREED-TEMPS11 TEMP41>
909                     <DEAD TEMP41>
910                     <NTHUV TEMP36 1 = TEMP41 (TYPE ATOM)>
911                     <CONS TEMP41 DEAD-TEMPS6 = DEAD-TEMPS6>
912                     <DEAD TEMP41>
913                     <JUMP + PHRASE62>
914 PHRASE58
915                     <FRAME '\1aGEN-TEMP>
916                     <CALL '\1aGEN-TEMP 0 = DO-LATER-SETRL10>
917                     <SET TEMP36 DO-LATER-SETRL10>
918                     <SET FOR-SETRL9 Y30>
919                     <JUMP + PHRASE62>
920 PHRASE39
921                     <SET TEMP36 Y30>
922 PHRASE62
923                     <NTHUV TEMP36 1 = TEMP41 (TYPE ATOM)>
924                     <DEAD TEMP36>
925                     <PUTUV XP29 1 TEMP41>
926                     <DEAD XP29 TEMP41>
927                     <NTHUV Y30 2 = TEMP41 (TYPE FIX)>
928                     <VEQUAL? TEMP41 0 - PHRASE67 (TYPE FIX)>
929                     <DEAD TEMP41>
930                     <NTHUV Y30 1 = TEMP41 (TYPE ATOM)>
931                     <DEAD Y30>
932                     <CONS TEMP41 DEAD-TEMPS6 = DEAD-TEMPS6>
933                     <DEAD TEMP41>
934                     <JUMP + PHRASE67>
935 PHRASE37
936                     <TYPE? Y30 <TYPE-CODE ATOM> - PHRASE67>
937                     <VEQUAL? Y30 '= + PHRASE67>
938                     <VEQUAL? Y30 '+ + PHRASE67>
939                     <VEQUAL? Y30 '- + PHRASE67>
940                     <VEQUAL? Y30 '`COMPERR + PHRASE67>
941                     <VEQUAL? Y30 '`UNWCONT + PHRASE67>
942                     <GVAL 'POP-STACK = TEMP41>
943                     <EQUAL? TEMP41 Y30 + PHRASE67>
944                     <DEAD TEMP41>
945                     <NTHR Y30 4 = TEMP41 (RECORD-TYPE ATOM)>
946                     <GVAL 'TMP-OBL = TEMP36>
947                     <EQUAL? TEMP41 TEMP36 + PHRASE67>
948                     <DEAD TEMP41 TEMP36>
949                     <FRAME '\1aFORM>
950                     <PUSH 'QUOTE>
951                     <PUSH Y30>
952                     <DEAD Y30>
953                     <CALL '\1aFORM 2 = TEMP36>
954                     <PUTUV XP29 1 TEMP36>
955                     <DEAD XP29 TEMP36>
956 PHRASE67
957                     <RESTUV TEMP17 1 = TEMP17 (TYPE VECTOR)>
958                     <JUMP + MAP19>
959 MAPAP22
960                     <FRAME '\1aINSTRUCTION>
961                     <PUSH INS7>
962                     <DEAD INS7>
963                     <SET INS7 1 (TYPE FIX)>
964                     <RESTUV X5 1 = TEMP17 (TYPE VECTOR)>
965                     <DEAD X5>
966                     <CHTYPE TEMP17 <TYPE-CODE VECTOR> = TEMP17>
967                     <LOOP (TEMP17 VALUE LENGTH) (INS7 VALUE)>
968 TAG71
969                     <INTGO>
970                     <EMPUV? TEMP17 + TAG70>
971                     <NTHUV TEMP17 1 = STACK>
972                     <RESTUV TEMP17 1 = TEMP17 (TYPE VECTOR)>
973                     <ADD INS7 1 = INS7 (TYPE FIX)>
974                     <JUMP + TAG71>
975 TAG70
976                     <CALL '\1aINSTRUCTION INS7 = INS7>
977                     <TYPE? SKIP-DEAD4 <TYPE-CODE FALSE> + PHRASE74>
978                     <DEAD SKIP-DEAD4>
979                     <GEN-LVAL 'CODE-PTR = PAST=8>
980                     <NTHL PAST=8 1 = Y30>
981                     <TYPE? Y30 <TYPE-CODE FORM> - PHRASE74>
982                     <EMPL? Y30 + PHRASE74 (TYPE FORM)>
983                     <NTHL Y30 1 = TEMP17>
984                     <EQUAL? TEMP17 '`DEAD - PHRASE74>
985                     <DEAD TEMP17>
986                     <PUTL PAST=8 1 INS7 (TYPE FORM)>
987                     <DEAD PAST=8 INS7>
988                     <SET INS7 Y30>
989                     <DEAD Y30>
990 PHRASE74
991                     <FRAME '\1aEMIT>
992                     <PUSH INS7>
993                     <DEAD INS7>
994                     <CALL '\1aEMIT 1>
995                     <TYPE? DO-LATER-SETRL10 <TYPE-CODE FALSE> + PHRASE80>
996                     <FRAME '\1aIEMIT>
997                     <PUSH '`SETRL>
998                     <FRAME '\1aFIND-FRAME>
999                     <NTHUV FOR-SETRL9 3 = STACK>
1000                     <CALL '\1aFIND-FRAME 1 = STACK>
1001                     <NTHUV FOR-SETRL9 1 = STACK (TYPE ATOM)>
1002                     <DEAD FOR-SETRL9>
1003                     <PUSH DO-LATER-SETRL10>
1004                     <DEAD DO-LATER-SETRL10>
1005                     <CALL '\1aIEMIT 4>
1006 PHRASE80
1007                     <SET TEMP17 FREED-TEMPS11 (TYPE LIST)>
1008                     <DEAD FREED-TEMPS11>
1009                     <LOOP>
1010 MAP84
1011                     <INTGO>
1012                     <EMPL? TEMP17 + MAPAP87>
1013                     <NTHL TEMP17 1 = INS7>
1014                     <FRAME '\1aFREE-TEMP>
1015                     <PUSH INS7>
1016                     <DEAD INS7>
1017                     <PUSH %<>>
1018                     <CALL '\1aFREE-TEMP 2>
1019                     <RESTL TEMP17 1 = TEMP17 (TYPE LIST)>
1020                     <JUMP + MAP84>
1021 MAPAP87
1022                     <EMPL? DEAD-TEMPS6 + PHRASE93 (TYPE LIST)>
1023                     <FRAME '\1aEMIT>
1024                     <CONS '`DEAD DEAD-TEMPS6 = DEAD-TEMPS6>
1025                     <CHTYPE DEAD-TEMPS6 <TYPE-CODE FORM> = STACK>
1026                     <DEAD DEAD-TEMPS6>
1027                     <CALL '\1aEMIT 1>
1028 PHRASE93
1029                     <RETURN 'T>
1030                     <END \1aREAL-IEMIT>
1031 #WORD *30616176143*
1032 <GFCN \1aLOOP-FRAME ("VALUE" STRUCTURED ANY "OPTIONAL" ANY ANY) TMP7 LTMP8 TNAME9>
1033                     <OPT-DISPATCH 1 %<> OPT4 OPT5 OPT6>
1034 OPT4
1035                     <PUSH #T$UNBOUND 0>
1036 OPT5
1037                     <PUSH #T$UNBOUND 0>
1038 OPT6
1039                     <TEMP TEMP16 XTMP10 TEMP3:LBIND TEMP25>
1040                     <INTGO>
1041                     <TYPE? TNAME9 <TYPE-CODE UNBOUND> - TAG13>
1042                     <FRAME '\1aNTH>
1043                     <GEN-LVAL 'ALL-TEMPS-LIST = TEMP16>
1044                     <NTH1 TEMP16 = STACK>
1045                     <DEAD TEMP16>
1046                     <PUSH 4>
1047                     <CALL '\1aNTH 2 = TEMP16>
1048                     <NTHUV TEMP16 1 = TNAME9 (TYPE ATOM)>
1049                     <DEAD TEMP16>
1050 TAG13
1051                     <TYPE? LTMP8 <TYPE-CODE UNBOUND> + PHRASE20>
1052                     <SET XTMP10 LTMP8>
1053                     <DEAD LTMP8>
1054                     <JUMP + PHRASE21>
1055 PHRASE20
1056                     <FRAME '\1aGEN-TEMP>
1057                     <CALL '\1aGEN-TEMP 0 = XTMP10>
1058 PHRASE21
1059                     <GETS 'BIND = TEMP3 (TYPE LBIND)>
1060                     <GEN-LVAL 'ALL-TEMPS-LIST = TEMP16>
1061                     <NTH1 TEMP16 = TEMP16>
1062                     <NTH1 TEMP16 = TEMP16>
1063                     <BBIND 'TMPS 'FORM 'FIX TEMP16>
1064                     <DEAD TEMP16>
1065                     <GEN-LVAL 'ALL-TEMPS-LIST = TEMP25>
1066                     <RESTL TEMP25 1 = TEMP16 (TYPE LIST)>
1067                     <DEAD TEMP25>
1068                     <CHTYPE TEMP16 <TYPE-CODE LIST> = TEMP16>
1069                     <BBIND 'ALL-TEMPS-LIST <LIST [REST <LIST FORM LIST LIST TEMP>]> 'FIX TEMP16>
1070                     <DEAD TEMP16>
1071                     <NTHUV TMP7 3 = TEMP16>
1072                     <NTHR 'TMPS 2 = TEMP25 (RECORD-TYPE ATOM) (TYPE LBIND)>
1073                     <NTHR TEMP25 1 = TEMP25 (RECORD-TYPE LBIND)>
1074                     <EQUAL? TEMP16 TEMP25 + PHRASE29>
1075                     <DEAD TEMP16 TEMP25>
1076                     <FRAME '\1aIEMIT>
1077                     <PUSH '`SETLR>
1078                     <NTHUV XTMP10 1 = STACK (TYPE ATOM)>
1079                     <PUSH TNAME9>
1080                     <DEAD TNAME9>
1081                     <NTHR 'ALL-TEMPS-LIST 2 = TEMP25 (RECORD-TYPE ATOM) (TYPE LBIND)>
1082                     <NTHR TEMP25 1 = TEMP25 (RECORD-TYPE LBIND)>
1083                     <NTHL TEMP25 1 = TEMP25 (TYPE LIST)>
1084                     <RESTL TEMP25 1 = TEMP25 (TYPE LIST)>
1085                     <RESTL TEMP25 1 = TEMP25 (TYPE LIST)>
1086                     <RESTL TEMP25 1 = TEMP25 (TYPE LIST)>
1087                     <NTHL TEMP25 1 = TEMP25 (TYPE TEMP)>
1088                     <NTHUV TEMP25 1 = STACK (TYPE ATOM)>
1089                     <DEAD TEMP25>
1090                     <CALL '\1aIEMIT 4>
1091                     <FRAME '\1aLOOP-FRAME>
1092                     <PUSH TMP7>
1093                     <DEAD TMP7>
1094                     <PUSH XTMP10>
1095                     <NTHUV XTMP10 1 = STACK (TYPE ATOM)>
1096                     <CALL '\1aLOOP-FRAME 3>
1097                     <JUMP + PHRASE36>
1098 PHRASE29
1099                     <FRAME '\1aIEMIT>
1100                     <PUSH '`SETLR>
1101                     <NTHUV XTMP10 1 = STACK (TYPE ATOM)>
1102                     <PUSH TNAME9>
1103                     <DEAD TNAME9>
1104                     <NTHUV TMP7 1 = STACK (TYPE ATOM)>
1105                     <DEAD TMP7>
1106                     <CALL '\1aIEMIT 4>
1107 PHRASE36
1108                     <UNBIND TEMP3>
1109                     <DEAD TEMP3>
1110                     <ADJ -18>
1111                     <RETURN XTMP10>
1112                     <DEAD XTMP10>
1113                     <END \1aLOOP-FRAME>
1114 "Generate a label in the code"
1115
1116 #WORD *24140542543*
1117 <GFCN \1aLABEL-TAG ("VALUE" <LIST ANY> ANY) TG4>
1118                     <TEMP TEMP6:LIST>
1119                     <INTGO>
1120                     <FRAME '\1aEMIT>
1121                     <PUSH TG4>
1122                     <DEAD TG4>
1123                     <CALL '\1aEMIT 1 = TEMP6>
1124                     <RETURN TEMP6>
1125                     <DEAD TEMP6>
1126                     <END \1aLABEL-TAG>
1127 "Generate jump to label"
1128
1129 #WORD *17601046251*
1130 <GFCN \1aBRANCH-TAG ("VALUE" ATOM ANY) TG4>
1131                     <TEMP TEMP6:ATOM>
1132                     <INTGO>
1133                     <FRAME '\1aIEMIT>
1134                     <PUSH '`JUMP>
1135                     <PUSH '+>
1136                     <PUSH TG4>
1137                     <DEAD TG4>
1138                     <CALL '\1aIEMIT 3 = TEMP6>
1139                     <RETURN TEMP6>
1140                     <DEAD TEMP6>
1141                     <END \1aBRANCH-TAG>
1142 "Generate code to PUSH something onto stack.  It can be called with various
1143  arguments:
1144         1) #TEMP - refernce to a named temporary
1145         3) #MIM-SPECIAL atom - MIM special variable
1146         4) other - quoted object "
1147
1148 #WORD *34706603760*
1149 <GFCN \1aPUSH ("VALUE" ANY ANY) ITM4>
1150                     <TEMP TEMP10>
1151                     <INTGO>
1152                     <TYPE? ITM4 <TYPE-CODE MIM-SPECIAL> - PHRASE6>
1153                     <FRAME '\1aIEMIT>
1154                     <PUSH '`PUSH>
1155                     <CHTYPE ITM4 <TYPE-CODE ATOM> = STACK>
1156                     <DEAD ITM4>
1157                     <CALL '\1aIEMIT 2>
1158                     <JUMP + PHRASE11>
1159 PHRASE6
1160                     <TYPE? ITM4 <TYPE-CODE TEMP> - PHRASE8>
1161                     <FRAME '\1aIEMIT>
1162                     <PUSH '`PUSH>
1163                     <PUSH ITM4>
1164                     <DEAD ITM4>
1165                     <CALL '\1aIEMIT 2>
1166                     <JUMP + PHRASE11>
1167 PHRASE8
1168                     <GVAL 'POP-STACK = TEMP10>
1169                     <EQUAL? TEMP10 ITM4 + PHRASE11>
1170                     <DEAD TEMP10>
1171                     <FRAME '\1aIEMIT>
1172                     <PUSH '`PUSH>
1173                     <FRAME '\1aATOMCHK>
1174                     <PUSH ITM4>
1175                     <DEAD ITM4>
1176                     <CALL '\1aATOMCHK 1 = STACK>
1177                     <CALL '\1aIEMIT 2>
1178 PHRASE11
1179                     <GVAL 'TOP-STACK = TEMP10>
1180                     <RETURN TEMP10>
1181                     <DEAD TEMP10>
1182                     <END \1aPUSH>
1183 #WORD *15206262434*
1184 <GFCN \1aPOP ("VALUE" ANY ANY) ITM4>
1185                     <TEMP TEMP12>
1186                     <INTGO>
1187                     <TYPE? ITM4 <TYPE-CODE TEMP> - PHRASE6>
1188                     <FRAME '\1aIEMIT>
1189                     <PUSH '`POP>
1190                     <PUSH '=>
1191                     <NTHUV ITM4 1 = STACK (TYPE ATOM)>
1192                     <CALL '\1aIEMIT 3>
1193                     <RETURN ITM4>
1194                     <DEAD ITM4>
1195 PHRASE6
1196                     <EQUAL? ITM4 'FLUSHED - PHRASE8>
1197                     <FRAME '\1aIEMIT>
1198                     <PUSH '`ADJ>
1199                     <PUSH -2>
1200                     <CALL '\1aIEMIT 2>
1201                     <RETURN ITM4>
1202                     <DEAD ITM4>
1203 PHRASE8
1204                     <GVAL 'TOP-STACK = TEMP12>
1205                     <EQUAL? TEMP12 ITM4 + PHRASE10>
1206                     <DEAD TEMP12>
1207                     <EQUAL? ITM4 'DONT-CARE + PHRASE10>
1208                     <FRAME '\1aCOMPILE-LOSSAGE>
1209                     <PUSH "Bad arg to POP">
1210                     <PUSH ITM4>
1211                     <CALL '\1aCOMPILE-LOSSAGE 2>
1212                     <RETURN ITM4>
1213                     <DEAD ITM4>
1214 PHRASE10
1215                     <GVAL 'POP-STACK = ITM4>
1216                     <RETURN ITM4>
1217                     <DEAD ITM4>
1218                     <END \1aPOP>
1219 #WORD *25060761075*
1220 <GFCN \1aPUSH-CONSTANT ("VALUE" ANY ANY) X4>
1221                     <TEMP TEMP7>
1222                     <INTGO>
1223                     <FRAME '\1aPUSH>
1224                     <FRAME '\1aATOMCHK>
1225                     <PUSH X4>
1226                     <DEAD X4>
1227                     <CALL '\1aATOMCHK 1 = STACK>
1228                     <CALL '\1aPUSH 1 = TEMP7>
1229                     <RETURN TEMP7>
1230                     <DEAD TEMP7>
1231                     <END \1aPUSH-CONSTANT>
1232 " Generate FIXBIND to wrap bindings pending by linking up atoms."
1233
1234 #WORD *1720700340*
1235 <GFCN \1aGEN-FIX-BIND ("VALUE" ATOM)>
1236                     <TEMP TEMP5:ATOM>
1237                     <INTGO>
1238                     <FRAME '\1aIEMIT>
1239                     <PUSH '`FIXBIND>
1240                     <CALL '\1aIEMIT 1 = TEMP5>
1241                     <RETURN TEMP5>
1242                     <DEAD TEMP5>
1243                     <END \1aGEN-FIX-BIND>
1244 " Generate code for optional arguments."
1245
1246 #WORD *24743654350*
1247 <GFCN \1aGEN-ARG-NUM ("VALUE" ATOM FIX) N4>
1248                     <TEMP TEMP6:ATOM>
1249                     <INTGO>
1250                     <FRAME '\1aIEMIT>
1251                     <PUSH '`ARGNUM>
1252                     <PUSH N4>
1253                     <DEAD N4>
1254                     <CALL '\1aIEMIT 2 = TEMP6>
1255                     <RETURN TEMP6>
1256                     <DEAD TEMP6>
1257                     <END \1aGEN-ARG-NUM>
1258 #WORD *36751331051*
1259 <GFCN \1aSPECIAL-BINDING ("VALUE" ATOM ANY ANY "OPTIONAL" ANY) SYM6 FIXB7 INIT8>
1260                     <OPT-DISPATCH 2 %<> OPT4 OPT5>
1261 OPT4
1262                     <PUSH #T$UNBOUND 0>
1263 OPT5
1264                     <TEMP TEMP16>
1265                     <INTGO>
1266                     <TYPE? INIT8 <TYPE-CODE UNBOUND> + PHRASE10>
1267                     <FRAME '\1aIEMIT>
1268                     <PUSH '`BBIND>
1269                     <FRAME '\1aATOMCHK>
1270                     <NTHUV SYM6 2 = STACK (TYPE ATOM)>
1271                     <CALL '\1aATOMCHK 1 = STACK>
1272                     <FRAME '\1aATOMCHK>
1273                     <NTHUV SYM6 7 = STACK>
1274                     <DEAD SYM6>
1275                     <CALL '\1aATOMCHK 1 = STACK>
1276                     <TYPE? FIXB7 <TYPE-CODE FALSE> + PHRASE15>
1277                     <DEAD FIXB7>
1278                     <SET TEMP16 ''FIX (TYPE ATOM)>
1279                     <JUMP + PHRASE17>
1280 PHRASE15
1281                     <SET TEMP16 %<> (TYPE FALSE)>
1282 PHRASE17
1283                     <PUSH TEMP16>
1284                     <DEAD TEMP16>
1285                     <PUSH INIT8>
1286                     <DEAD INIT8>
1287                     <CALL '\1aIEMIT 5 = TEMP16>
1288                     <RETURN TEMP16>
1289                     <DEAD TEMP16>
1290 PHRASE10
1291                     <FRAME '\1aIEMIT>
1292                     <PUSH '`BBIND>
1293                     <FRAME '\1aATOMCHK>
1294                     <NTHUV SYM6 2 = STACK (TYPE ATOM)>
1295                     <CALL '\1aATOMCHK 1 = STACK>
1296                     <FRAME '\1aATOMCHK>
1297                     <NTHUV SYM6 7 = STACK>
1298                     <DEAD SYM6>
1299                     <CALL '\1aATOMCHK 1 = STACK>
1300                     <TYPE? FIXB7 <TYPE-CODE FALSE> + PHRASE23>
1301                     <DEAD FIXB7>
1302                     <SET TEMP16 ''FIX (TYPE ATOM)>
1303                     <JUMP + PHRASE25>
1304 PHRASE23
1305                     <SET TEMP16 %<> (TYPE FALSE)>
1306 PHRASE25
1307                     <PUSH TEMP16>
1308                     <DEAD TEMP16>
1309                     <CALL '\1aIEMIT 4 = TEMP16>
1310                     <RETURN TEMP16>
1311                     <DEAD TEMP16>
1312                     <END \1aSPECIAL-BINDING>
1313 "Get the value of a special variable bound in the current function"
1314
1315 #WORD *32754000014*
1316 <GFCN \1aGET-VALUE-X ("VALUE" ANY ANY ANY "OPTIONAL" ANY) ATM6 TMP7 EXT8>
1317                     <OPT-DISPATCH 2 %<> OPT4 OPT5>
1318 OPT4
1319                     <PUSH %<>>
1320 OPT5
1321                     <TEMP TEMP19 TEMP20>
1322                     <INTGO>
1323                     <TYPE? TMP7 <TYPE-CODE TEMP> - PHRASE16>
1324                     <NTHUV TMP7 5 = TEMP19>
1325                     <TYPE? TEMP19 <TYPE-CODE FALSE> + BOOL18>
1326                     <DEAD TEMP19>
1327                     <NTHUV TMP7 5 = TEMP19>
1328                     <EQUAL? TEMP19 'ANY - PHRASE16>
1329                     <DEAD TEMP19>
1330 BOOL18
1331                     <NTHUV TMP7 6 = TEMP19>
1332                     <TYPE? TEMP19 <TYPE-CODE FALSE> - PHRASE16>
1333                     <DEAD TEMP19>
1334                     <NTHUV TMP7 3 = TEMP19>
1335                     <GEN-LVAL 'TMPS = TEMP20>
1336                     <EQUAL? TEMP19 TEMP20 - PHRASE16>
1337                     <DEAD TEMP19 TEMP20>
1338                     <SET TEMP20 TMP7>
1339                     <JUMP + PHRASE23>
1340 PHRASE16
1341                     <FRAME '\1aGEN-TEMP>
1342                     <CALL '\1aGEN-TEMP 0 = TEMP20>
1343 PHRASE23
1344                     <FRAME '\1aATOMCHK>
1345                     <PUSH ATM6>
1346                     <DEAD ATM6>
1347                     <CALL '\1aATOMCHK 1 = TEMP19>
1348                     <FRAME '\1aMAKE-TAG>
1349                     <CALL '\1aMAKE-TAG 0>
1350                     <FRAME '\1aMAKE-TAG>
1351                     <CALL '\1aMAKE-TAG 0>
1352                     <TYPE? EXT8 <TYPE-CODE FALSE> + PHRASE29>
1353                     <DEAD EXT8>
1354                     <FRAME '\1aIEMIT>
1355                     <PUSH '`GEN-LVAL>
1356                     <PUSH TEMP19>
1357                     <DEAD TEMP19>
1358                     <PUSH '=>
1359                     <PUSH TMP7>
1360                     <CALL '\1aIEMIT 4>
1361                     <RETURN TMP7>
1362                     <DEAD TMP7>
1363 PHRASE29
1364                     <FRAME '\1aUSE-TEMP>
1365                     <PUSH TEMP20>
1366                     <PUSH %<>>
1367                     <CALL '\1aUSE-TEMP 2>
1368                     <FRAME '\1aDEALLOCATE-TEMP>
1369                     <PUSH TEMP20>
1370                     <CALL '\1aDEALLOCATE-TEMP 1>
1371                     <FRAME '\1aIEMIT>
1372                     <PUSH '`NTHR>
1373                     <PUSH TEMP19>
1374                     <DEAD TEMP19>
1375                     <PUSH 2>
1376                     <PUSH '=>
1377                     <PUSH TEMP20>
1378                     <GVAL 'RAT = STACK>
1379                     <PUSH (`TYPE LBIND)>
1380                     <CALL '\1aIEMIT 7>
1381                     <FRAME '\1aIEMIT>
1382                     <PUSH '`NTHR>
1383                     <PUSH TEMP20>
1384                     <PUSH 1>
1385                     <PUSH '=>
1386                     <PUSH TMP7>
1387                     <GVAL 'RBN = STACK>
1388                     <CALL '\1aIEMIT 6>
1389                     <EQUAL? TMP7 TEMP20 + PHRASE37>
1390                     <FRAME '\1aFREE-TEMP>
1391                     <PUSH TEMP20>
1392                     <DEAD TEMP20>
1393                     <CALL '\1aFREE-TEMP 1>
1394 PHRASE37
1395                     <RETURN TMP7>
1396                     <DEAD TMP7>
1397                     <END \1aGET-VALUE-X>
1398 "See if a special variable is assigned"
1399
1400 #WORD *12612333255*
1401 <GFCN \1aASS-GEN ("VALUE" ANY ANY ANY ANY "OPTIONAL" ANY) ATM6 TG7 DIR8 EXT9>
1402                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
1403 OPT4
1404                     <PUSH %<>>
1405 OPT5
1406                     <TEMP BTMP10:TEMP FQA11>
1407                     <INTGO>
1408                     <FRAME '\1aGEN-TEMP>
1409                     <CALL '\1aGEN-TEMP 0 = BTMP10>
1410                     <FRAME '\1aATOMCHK>
1411                     <PUSH ATM6>
1412                     <DEAD ATM6>
1413                     <CALL '\1aATOMCHK 1 = FQA11>
1414                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE18>
1415                     <FRAME '\1aMAKE-TAG>
1416                     <CALL '\1aMAKE-TAG 0>
1417 PHRASE18
1418                     <TYPE? EXT9 <TYPE-CODE FALSE> + PHRASE22>
1419                     <DEAD EXT9>
1420                     <FRAME '\1aIEMIT>
1421                     <PUSH '`GEN-ASSIGNED?>
1422                     <PUSH FQA11>
1423                     <DEAD FQA11>
1424                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE25>
1425                     <DEAD DIR8>
1426                     <SET FQA11 '+ (TYPE ATOM)>
1427                     <JUMP + PHRASE27>
1428 PHRASE25
1429                     <SET FQA11 '- (TYPE ATOM)>
1430 PHRASE27
1431                     <PUSH FQA11>
1432                     <DEAD FQA11>
1433                     <PUSH TG7>
1434                     <DEAD TG7>
1435                     <CALL '\1aIEMIT 4 = FQA11>
1436                     <RETURN FQA11>
1437                     <DEAD FQA11>
1438 PHRASE22
1439                     <FRAME '\1aIEMIT>
1440                     <PUSH '`NTHR>
1441                     <PUSH FQA11>
1442                     <DEAD FQA11>
1443                     <PUSH 2>
1444                     <PUSH '=>
1445                     <PUSH BTMP10>
1446                     <GVAL 'RAT = STACK>
1447                     <PUSH (`TYPE LBIND)>
1448                     <CALL '\1aIEMIT 7>
1449                     <FRAME '\1aIEMIT>
1450                     <PUSH '`NTHR>
1451                     <PUSH BTMP10>
1452                     <PUSH 1>
1453                     <PUSH '=>
1454                     <PUSH BTMP10>
1455                     <GVAL 'RBN = STACK>
1456                     <CALL '\1aIEMIT 6>
1457                     <FRAME '\1aGEN-TYPE?>
1458                     <PUSH BTMP10>
1459                     <PUSH 'UNBOUND>
1460                     <PUSH TG7>
1461                     <DEAD TG7>
1462                     <TYPE? DIR8 <TYPE-CODE FALSE> - TAG32>
1463                     <DEAD DIR8>
1464                     <SET FQA11 'T (TYPE ATOM)>
1465                     <JUMP + TAG33>
1466 TAG32
1467                     <SET FQA11 %<> (TYPE FALSE)>
1468 TAG33
1469                     <PUSH FQA11>
1470                     <DEAD FQA11>
1471                     <CALL '\1aGEN-TYPE? 4>
1472                     <FRAME '\1aFREE-TEMP>
1473                     <PUSH BTMP10>
1474                     <DEAD BTMP10>
1475                     <CALL '\1aFREE-TEMP 1 = FQA11>
1476                     <RETURN FQA11>
1477                     <DEAD FQA11>
1478                     <END \1aASS-GEN>
1479 "Set the value of a special variable bound in the current function"
1480
1481 #WORD *22123224456*
1482 <GFCN \1aSET-VALUE ("VALUE" ANY ANY ANY "OPTIONAL" ANY) ATM6 TMP7 EXT8>
1483                     <OPT-DISPATCH 2 %<> OPT4 OPT5>
1484 OPT4
1485                     <PUSH %<>>
1486 OPT5
1487                     <TEMP FQA10 TG111>
1488                     <INTGO>
1489                     <FRAME '\1aATOMCHK>
1490                     <PUSH ATM6>
1491                     <DEAD ATM6>
1492                     <CALL '\1aATOMCHK 1 = FQA10>
1493                     <FRAME '\1aMAKE-TAG>
1494                     <CALL '\1aMAKE-TAG 0>
1495                     <FRAME '\1aMAKE-TAG>
1496                     <CALL '\1aMAKE-TAG 0>
1497                     <TYPE? EXT8 <TYPE-CODE FALSE> + PHRASE19>
1498                     <DEAD EXT8>
1499                     <FRAME '\1aIEMIT>
1500                     <PUSH '`GEN-SET>
1501                     <PUSH FQA10>
1502                     <DEAD FQA10>
1503                     <PUSH TMP7>
1504                     <CALL '\1aIEMIT 3>
1505                     <RETURN TMP7>
1506                     <DEAD TMP7>
1507 PHRASE19
1508                     <FRAME '\1aGEN-TEMP>
1509                     <PUSH 'LBIND>
1510                     <CALL '\1aGEN-TEMP 1 = TG111>
1511                     <FRAME '\1aIEMIT>
1512                     <PUSH '`NTHR>
1513                     <PUSH FQA10>
1514                     <DEAD FQA10>
1515                     <PUSH 2>
1516                     <PUSH '=>
1517                     <PUSH TG111>
1518                     <GVAL 'RAT = STACK>
1519                     <PUSH (`TYPE LBIND)>
1520                     <CALL '\1aIEMIT 7>
1521                     <FRAME '\1aIEMIT>
1522                     <PUSH '`PUTR>
1523                     <PUSH TG111>
1524                     <PUSH 1>
1525                     <FRAME '\1aATOMCHK>
1526                     <PUSH TMP7>
1527                     <CALL '\1aATOMCHK 1 = STACK>
1528                     <GVAL 'RBN = STACK>
1529                     <CALL '\1aIEMIT 5>
1530                     <FRAME '\1aFREE-TEMP>
1531                     <PUSH TG111>
1532                     <DEAD TG111>
1533                     <CALL '\1aFREE-TEMP 1>
1534                     <RETURN TMP7>
1535                     <DEAD TMP7>
1536                     <END \1aSET-VALUE>
1537 "Generate code to set a MIM local"
1538
1539 #WORD *10407571022*
1540 <GFCN \1aSET-SYM ("VALUE" <OR FALSE TEMP> SYMTAB "OPTIONAL" ANY ANY) SYM7 VAL8 USE-IT9>
1541                     <OPT-DISPATCH 1 %<> OPT4 OPT5 OPT6>
1542 OPT4
1543                     <PUSH #T$UNBOUND 0>
1544 OPT5
1545                     <PUSH %<>>
1546 OPT6
1547                     <TEMP TMP10:TEMP (TY11 'ANY) REFS12:FIX TEMP22>
1548                     <INTGO>
1549                     <NTHUV SYM7 10 = TMP10 (TYPE TEMP)>
1550                     <DEAD SYM7>
1551                     <NTHUV TMP10 2 = REFS12 (TYPE FIX)>
1552                     <TYPE? VAL8 <TYPE-CODE UNBOUND> + PHRASE14>
1553                     <TYPE? VAL8 <TYPE-CODE TEMP> - PHRASE16>
1554                     <NTHUV VAL8 6 = TY11>
1555                     <JUMP + PHRASE17>
1556 PHRASE16
1557                     <FRAME '\1aTYPE>
1558                     <PUSH VAL8>
1559                     <CALL '\1aTYPE 1 = TY11>
1560 PHRASE17
1561                     <FRAME '\1aSET-TEMP>
1562                     <PUSH TMP10>
1563                     <PUSH VAL8>
1564                     <DEAD VAL8>
1565                     <CALL '\1aSET-TEMP 2>
1566 PHRASE14
1567                     <SET TEMP22 USE-IT9>
1568                     <DEAD USE-IT9>
1569                     <TYPE? TEMP22 <TYPE-CODE FALSE> + PHRASE21>
1570                     <FRAME '\1aUSE-TEMP>
1571                     <PUSH TMP10>
1572                     <PUSH TY11>
1573                     <DEAD TY11>
1574                     <CALL '\1aUSE-TEMP 2>
1575                     <ADD REFS12 1 = REFS12 (TYPE FIX)>
1576                     <PUTUV TMP10 2 REFS12 (TYPE FIX)>
1577                     <DEAD REFS12>
1578                     <SET TEMP22 TMP10>
1579                     <DEAD TMP10>
1580 PHRASE21
1581                     <RETURN TEMP22>
1582                     <DEAD TEMP22>
1583                     <END \1aSET-SYM>
1584 #WORD *23202063260*
1585 <GFCN \1aSET-TEMP ("VALUE" <OR ATOM FALSE> TEMP "OPTIONAL" ANY ANY) TMP7 VAL8 XTRA9>
1586                     <OPT-DISPATCH 1 %<> OPT4 OPT5 OPT6>
1587 OPT4
1588                     <PUSH #T$UNBOUND 0>
1589 OPT5
1590                     <PUSH #T$UNBOUND 0>
1591 OPT6
1592                     <TEMP (TY11 'ANY)>
1593                     <INTGO>
1594                     <TYPE? VAL8 <TYPE-CODE UNBOUND> + PHRASE16>
1595                     <TYPE? VAL8 <TYPE-CODE TEMP> - PHRASE15>
1596                     <NTHUV VAL8 6 = TY11>
1597                     <JUMP + PHRASE16>
1598 PHRASE15
1599                     <FRAME '\1aTYPE>
1600                     <PUSH VAL8>
1601                     <CALL '\1aTYPE 1 = TY11>
1602 PHRASE16
1603                     <FRAME '\1aUSE-TEMP>
1604                     <PUSH TMP7>
1605                     <PUSH TY11>
1606                     <DEAD TY11>
1607                     <CALL '\1aUSE-TEMP 2>
1608                     <TYPE? VAL8 <TYPE-CODE UNBOUND> - TAG22>
1609                     <RETURN %<>>
1610 TAG22
1611                     <TYPE? VAL8 <TYPE-CODE MIM-SPECIAL> - PHRASE24>
1612                     <CHTYPE VAL8 <TYPE-CODE ATOM> = VAL8>
1613                     <JUMP + PHRASE25>
1614 PHRASE24
1615                     <FRAME '\1aATOMCHK>
1616                     <PUSH VAL8>
1617                     <DEAD VAL8>
1618                     <CALL '\1aATOMCHK 1 = VAL8>
1619 PHRASE25
1620                     <TYPE? XTRA9 <TYPE-CODE UNBOUND> + PHRASE28>
1621                     <FRAME '\1aIEMIT>
1622                     <PUSH '`SET>
1623                     <PUSH TMP7>
1624                     <DEAD TMP7>
1625                     <PUSH VAL8>
1626                     <DEAD VAL8>
1627                     <PUSH XTRA9>
1628                     <DEAD XTRA9>
1629                     <CALL '\1aIEMIT 4 = TY11>
1630                     <RETURN TY11>
1631                     <DEAD TY11>
1632 PHRASE28
1633                     <FRAME '\1aIEMIT>
1634                     <PUSH '`SET>
1635                     <PUSH TMP7>
1636                     <DEAD TMP7>
1637                     <PUSH VAL8>
1638                     <DEAD VAL8>
1639                     <CALL '\1aIEMIT 3 = TY11>
1640                     <RETURN TY11>
1641                     <DEAD TY11>
1642                     <END \1aSET-TEMP>
1643 "Quote atom to protect the MIM assembler"
1644
1645 #WORD *24551434560*
1646 <GFCN \1aATOMCHK ("VALUE" ANY ANY) X4>
1647                     <TEMP Y9 TEMP16>
1648                     <INTGO>
1649                     <SET Y9 X4>
1650                     <LOOP>
1651 AGAIN10
1652                     <INTGO>
1653                     <TYPE? Y9 <TYPE-CODE ATOM> + EXIT7>
1654                     <TYPE? Y9 <TYPE-CODE FORM> - PHRASE6>
1655                     <EMPL? Y9 + PHRASE6>
1656                     <RESTL Y9 1 = TEMP16 (TYPE LIST)>
1657                     <EMPL? TEMP16 + PHRASE6>
1658                     <RESTL TEMP16 1 = TEMP16 (TYPE LIST)>
1659                     <EMPL? TEMP16 - PHRASE6>
1660                     <DEAD TEMP16>
1661                     <NTHL Y9 1 = TEMP16>
1662                     <EQUAL? TEMP16 'QUOTE - PHRASE6>
1663                     <DEAD TEMP16>
1664                     <RESTL Y9 1 = TEMP16 (TYPE LIST)>
1665                     <DEAD Y9>
1666                     <NTHL TEMP16 1 = Y9>
1667                     <DEAD TEMP16>
1668                     <JUMP + AGAIN10>
1669 EXIT7
1670                     <FRAME '\1aFORM>
1671                     <PUSH 'QUOTE>
1672                     <PUSH X4>
1673                     <DEAD X4>
1674                     <CALL '\1aFORM 2 = TEMP16>
1675                     <RETURN TEMP16>
1676                     <DEAD TEMP16>
1677 PHRASE6
1678                     <RETURN X4>
1679                     <DEAD X4>
1680                     <END \1aATOMCHK>
1681 " Return currently running FRAME "
1682
1683 #WORD *611722301*
1684 <GFCN \1aCURRENT-FRAME ("VALUE" ANY "OPTIONAL" ANY) FR6>
1685                     <OPT-DISPATCH 0 %<> OPT4 OPT5>
1686 OPT4
1687                     <PUSH #T$UNBOUND 0>
1688 OPT5
1689                     <TEMP>
1690                     <INTGO>
1691                     <TYPE? FR6 <TYPE-CODE UNBOUND> - TAG7>
1692                     <FRAME '\1aGEN-TEMP>
1693                     <PUSH 'FRAME>
1694                     <CALL '\1aGEN-TEMP 1 = FR6>
1695 TAG7
1696                     <FRAME '\1aIEMIT>
1697                     <PUSH '`CFRAME>
1698                     <PUSH '=>
1699                     <PUSH FR6>
1700                     <PUSH (`TYPE FRAME)>
1701                     <CALL '\1aIEMIT 4>
1702                     <RETURN FR6>
1703                     <DEAD FR6>
1704                     <END \1aCURRENT-FRAME>
1705 " Return TUPLE of arguments"
1706
1707 #WORD *5672574535*
1708 <GFCN \1aGET-ARG-TUPLE ("VALUE" TEMP ANY) FR4>
1709                     <TEMP TEMP7>
1710                     <INTGO>
1711                     <FRAME '\1aUSE-TEMP>
1712                     <PUSH FR4>
1713                     <PUSH 'TUPLE>
1714                     <CALL '\1aUSE-TEMP 2>
1715                     <FRAME '\1aPUT>
1716                     <GEN-LVAL 'TMPS = STACK>
1717                     <PUSH 1>
1718                     <PUSH '`MAKTUP>
1719                     <CALL '\1aPUT 3>
1720                     <NTHUV FR4 1 = TEMP7 (TYPE ATOM)>
1721                     <GEN-SET 'TMP-DEST TEMP7>
1722                     <DEAD TEMP7>
1723                     <RETURN FR4>
1724                     <DEAD FR4>
1725                     <END \1aGET-ARG-TUPLE>
1726 "Compare # of args supplied with a constant and jump in appropriate case"
1727
1728 #WORD *34747706177*
1729 <GFCN \1aTEST-ARG ("VALUE" ATOM TEMP ATOM) TMP4 TG5>
1730                     <TEMP>
1731                     <INTGO>
1732                     <FRAME '\1aGEN-TYPE?>
1733                     <PUSH TMP4>
1734                     <DEAD TMP4>
1735                     <PUSH 'UNBOUND>
1736                     <PUSH TG5>
1737                     <DEAD TG5>
1738                     <PUSH %<>>
1739                     <CALL '\1aGEN-TYPE? 4>
1740                     <RETURN 'T>
1741                     <END \1aTEST-ARG>
1742 "Get current binding at top of world"
1743
1744 #WORD *653212563*
1745 <GFCN \1aGET-BINDING ("VALUE" ATOM ANY) WHERE4>
1746                     <TEMP TEMP6:ATOM>
1747                     <INTGO>
1748                     <FRAME '\1aIEMIT>
1749                     <PUSH '`GETS>
1750                     <GVAL 'QQ-BIND = STACK>
1751                     <PUSH '=>
1752                     <PUSH WHERE4>
1753                     <DEAD WHERE4>
1754                     <PUSH (`TYPE LBIND)>
1755                     <CALL '\1aIEMIT 5 = TEMP6>
1756                     <RETURN TEMP6>
1757                     <DEAD TEMP6>
1758                     <END \1aGET-BINDING>
1759 "Get an arg by arg number and mung into a local"
1760
1761 #WORD *37701143342*
1762 <GFCN \1aARG-TO-TEMP ("VALUE" ATOM SYMTAB) SYM4>
1763                     <TEMP TMP5 ATMP6>
1764                     <INTGO>
1765                     <NTHUV SYM4 10 = TMP5 (TYPE TEMP)>
1766                     <NTHUV SYM4 19 = ATMP6>
1767                     <DEAD SYM4>
1768                     <FRAME '\1aIEMIT>
1769                     <PUSH '`SET>
1770                     <NTHUV TMP5 1 = STACK (TYPE ATOM)>
1771                     <DEAD TMP5>
1772                     <NTHUV ATMP6 1 = STACK (TYPE ATOM)>
1773                     <DEAD ATMP6>
1774                     <CALL '\1aIEMIT 3 = TMP5>
1775                     <RETURN TMP5>
1776                     <DEAD TMP5>
1777                     <END \1aARG-TO-TEMP>
1778 "Generate call to MSUBR"
1779
1780 #WORD *13350353433*
1781 <GFCN \1aMSUBR-CALL ("VALUE" ATOM ANY ANY ANY) NAM4 NARGS5 W6>
1782                     <TEMP TEMP11:ATOM>
1783                     <INTGO>
1784                     <CHTYPE NAM4 <TYPE-CODE FCN-ATOM> = NAM4>
1785                     <EQUAL? W6 'FLUSHED - PHRASE8>
1786                     <FRAME '\1aIEMIT>
1787                     <PUSH '`CALL>
1788                     <FRAME '\1aFORM>
1789                     <PUSH 'QUOTE>
1790                     <PUSH NAM4>
1791                     <DEAD NAM4>
1792                     <CALL '\1aFORM 2 = STACK>
1793                     <PUSH NARGS5>
1794                     <DEAD NARGS5>
1795                     <CALL '\1aIEMIT 3 = TEMP11>
1796                     <RETURN TEMP11>
1797                     <DEAD TEMP11>
1798 PHRASE8
1799                     <FRAME '\1aIEMIT>
1800                     <PUSH '`CALL>
1801                     <FRAME '\1aFORM>
1802                     <PUSH 'QUOTE>
1803                     <PUSH NAM4>
1804                     <DEAD NAM4>
1805                     <CALL '\1aFORM 2 = STACK>
1806                     <PUSH NARGS5>
1807                     <DEAD NARGS5>
1808                     <PUSH '=>
1809                     <PUSH W6>
1810                     <DEAD W6>
1811                     <CALL '\1aIEMIT 5 = TEMP11>
1812                     <RETURN TEMP11>
1813                     <DEAD TEMP11>
1814                     <END \1aMSUBR-CALL>
1815 #WORD *5532206727*
1816 <GFCN \1aSEG-SUBR-CALL ("VALUE" ATOM ANY ANY ANY ANY ANY) NAM4 NARGS5 W6 COUNT7 LABEL8>
1817                     <TEMP TEMP11:ATOM>
1818                     <INTGO>
1819                     <CHTYPE NAM4 <TYPE-CODE FCN-ATOM> = NAM4>
1820                     <FRAME '\1aIEMIT>
1821                     <PUSH '`SCALL>
1822                     <FRAME '\1aFORM>
1823                     <PUSH 'QUOTE>
1824                     <PUSH NAM4>
1825                     <DEAD NAM4>
1826                     <CALL '\1aFORM 2 = STACK>
1827                     <PUSH NARGS5>
1828                     <DEAD NARGS5>
1829                     <PUSH '=>
1830                     <PUSH W6>
1831                     <DEAD W6>
1832                     <PUSH '+>
1833                     <PUSH LABEL8>
1834                     <DEAD LABEL8>
1835                     <PUSH COUNT7>
1836                     <DEAD COUNT7>
1837                     <CALL '\1aIEMIT 8 = TEMP11>
1838                     <RETURN TEMP11>
1839                     <DEAD TEMP11>
1840                     <END \1aSEG-SUBR-CALL>
1841 "Begin building a FRAME for a future call"
1842
1843 #WORD *6742474456*
1844 <GFCN \1aSTART-FRAME ("VALUE" ATOM "OPTIONAL" ANY) NAME6>
1845                     <OPT-DISPATCH 0 %<> OPT4 OPT5>
1846 OPT4
1847                     <PUSH %<>>
1848 OPT5
1849                     <TEMP TEMP11:ATOM>
1850                     <INTGO>
1851                     <TYPE? NAME6 <TYPE-CODE FALSE> + PHRASE8>
1852                     <FRAME '\1aIEMIT>
1853                     <PUSH '`FRAME>
1854                     <FRAME '\1aFORM>
1855                     <PUSH 'QUOTE>
1856                     <CHTYPE NAME6 <TYPE-CODE FCN-ATOM> = STACK>
1857                     <DEAD NAME6>
1858                     <CALL '\1aFORM 2 = STACK>
1859                     <CALL '\1aIEMIT 2 = TEMP11>
1860                     <RETURN TEMP11>
1861                     <DEAD TEMP11>
1862 PHRASE8
1863                     <FRAME '\1aIEMIT>
1864                     <PUSH '`FRAME>
1865                     <CALL '\1aIEMIT 1 = TEMP11>
1866                     <RETURN TEMP11>
1867                     <DEAD TEMP11>
1868                     <END \1aSTART-FRAME>
1869 "Generate a VECTOR of the top N things on the stack"
1870
1871 #WORD *4631107647*
1872 <GFCN \1aGEN-VECTOR ("VALUE" ANY ANY ANY "OPTIONAL" ANY) N6 V7 S?8>
1873                     <OPT-DISPATCH 2 %<> OPT4 OPT5>
1874 OPT4
1875                     <PUSH %<>>
1876 OPT5
1877                     <TEMP TEMP12:ATOM>
1878                     <INTGO>
1879                     <FRAME '\1aIEMIT>
1880                     <TYPE? S?8 <TYPE-CODE FALSE> + PHRASE11>
1881                     <DEAD S?8>
1882                     <SET TEMP12 '`SBLOCK (TYPE ATOM)>
1883                     <JUMP + PHRASE13>
1884 PHRASE11
1885                     <SET TEMP12 '`UBLOCK (TYPE ATOM)>
1886 PHRASE13
1887                     <PUSH TEMP12>
1888                     <DEAD TEMP12>
1889                     <PUSH <`TYPE-CODE VECTOR>>
1890                     <PUSH N6>
1891                     <DEAD N6>
1892                     <PUSH '=>
1893                     <PUSH V7>
1894                     <CALL '\1aIEMIT 5>
1895                     <RETURN V7>
1896                     <DEAD V7>
1897                     <END \1aGEN-VECTOR>
1898 #WORD *13615155655*
1899 <GFCN \1aGEN-UVECTOR ("VALUE" ANY ANY ANY "OPTIONAL" ANY) N6 V7 S?8>
1900                     <OPT-DISPATCH 2 %<> OPT4 OPT5>
1901 OPT4
1902                     <PUSH %<>>
1903 OPT5
1904                     <TEMP TEMP12:ATOM>
1905                     <INTGO>
1906                     <FRAME '\1aIEMIT>
1907                     <TYPE? S?8 <TYPE-CODE FALSE> + PHRASE11>
1908                     <DEAD S?8>
1909                     <SET TEMP12 '`SBLOCK (TYPE ATOM)>
1910                     <JUMP + PHRASE13>
1911 PHRASE11
1912                     <SET TEMP12 '`UBLOCK (TYPE ATOM)>
1913 PHRASE13
1914                     <PUSH TEMP12>
1915                     <DEAD TEMP12>
1916                     <PUSH <`TYPE-CODE UVECTOR>>
1917                     <PUSH N6>
1918                     <DEAD N6>
1919                     <PUSH '=>
1920                     <PUSH V7>
1921                     <CALL '\1aIEMIT 5>
1922                     <RETURN V7>
1923                     <DEAD V7>
1924                     <END \1aGEN-UVECTOR>
1925 "Same for TUPLE"
1926
1927 #WORD *11426447543*
1928 <GFCN \1aGEN-TUPLE ("VALUE" ANY ANY ANY) N4 V5>
1929                     <TEMP>
1930                     <INTGO>
1931                     <FRAME '\1aIEMIT>
1932                     <PUSH '`TUPLE>
1933                     <PUSH N4>
1934                     <DEAD N4>
1935                     <PUSH '=>
1936                     <PUSH V5>
1937                     <PUSH (`TYPE TUPLE)>
1938                     <CALL '\1aIEMIT 5>
1939                     <RETURN V5>
1940                     <DEAD V5>
1941                     <END \1aGEN-TUPLE>
1942 "Same for LIST"
1943
1944 #WORD *27702304050*
1945 <GFCN \1aGEN-LIST ("VALUE" ATOM ANY ANY) N4 L5>
1946                     <TEMP TEMP7:ATOM>
1947                     <INTGO>
1948                     <FRAME '\1aIEMIT>
1949                     <PUSH '`LIST>
1950                     <PUSH N4>
1951                     <DEAD N4>
1952                     <PUSH '=>
1953                     <PUSH L5>
1954                     <DEAD L5>
1955                     <PUSH (`TYPE LIST)>
1956                     <CALL '\1aIEMIT 5 = TEMP7>
1957                     <RETURN TEMP7>
1958                     <DEAD TEMP7>
1959                     <END \1aGEN-LIST>
1960 "Generate code to move datum from place to place"
1961
1962 #WORD *2103751535*
1963 <GFCN \1aMOVE-ARG ("VALUE" ANY ANY ANY "OPTIONAL" ANY) FROM6 TO7 XTRA8>
1964                     <OPT-DISPATCH 2 %<> OPT4 OPT5>
1965 OPT4
1966                     <PUSH #T$UNBOUND 0>
1967 OPT5
1968                     <TEMP (TY9 'ANY) TEMP19 TEMP40>
1969                     <INTGO>
1970                     <TYPE? XTRA8 <TYPE-CODE UNBOUND> - PHRASE11>
1971                     <TYPE? FROM6 <TYPE-CODE TEMP> + PHRASE11>
1972                     <TYPE? FROM6 <TYPE-CODE FORM> - PHRASE14>
1973                     <EMPL? FROM6 + PHRASE14>
1974                     <RESTL FROM6 1 = TY9 (TYPE LIST)>
1975                     <EMPL? TY9 + PHRASE14>
1976                     <RESTL TY9 1 = TY9 (TYPE LIST)>
1977                     <EMPL? TY9 - PHRASE14>
1978                     <DEAD TY9>
1979                     <NTHL FROM6 1 = TY9>
1980                     <EQUAL? TY9 'QUOTE - PHRASE14>
1981                     <DEAD TY9>
1982                     <RESTL FROM6 1 = TY9 (TYPE LIST)>
1983                     <NTHL TY9 1 = TY9>
1984                     <TYPE? TY9 <TYPE-CODE ATOM> - PHRASE14>
1985                     <DEAD TY9>
1986                     <SET XTRA8 (`TYPE ATOM) (TYPE LIST)>
1987                     <JUMP + PHRASE17>
1988 PHRASE14
1989                     <CONS '`TYPE () = TY9>
1990                     <FRAME '\1aTYPE>
1991                     <PUSH FROM6>
1992                     <CALL '\1aTYPE 1 = TEMP19>
1993                     <CONS TEMP19 () = TEMP19>
1994                     <PUTREST TY9 TEMP19>
1995                     <DEAD TEMP19>
1996                     <SET XTRA8 TY9>
1997                     <DEAD TY9>
1998 PHRASE17
1999                     <RESTL XTRA8 1 = TY9 (TYPE LIST)>
2000                     <NTHL TY9 1 = TY9 (TYPE ATOM)>
2001                     <JUMP + PHRASE23>
2002 PHRASE11
2003                     <TYPE? XTRA8 <TYPE-CODE UNBOUND> + PHRASE20>
2004                     <TYPE? XTRA8 <TYPE-CODE LIST> - PHRASE20>
2005                     <RESTL XTRA8 1 = TY9 (TYPE LIST)>
2006                     <NTHL TY9 1 = TY9>
2007                     <JUMP + PHRASE23>
2008 PHRASE20
2009                     <TYPE? FROM6 <TYPE-CODE TEMP> - PHRASE22>
2010                     <NTHUV FROM6 6 = TY9>
2011                     <JUMP + PHRASE23>
2012 PHRASE22
2013                     <FRAME '\1aTYPE>
2014                     <PUSH FROM6>
2015                     <CALL '\1aTYPE 1 = TY9>
2016 PHRASE23
2017                     <EQUAL? TO7 'FLUSHED - PHRASE26>
2018                     <GVAL 'POP-STACK = TY9>
2019                     <EQUAL? TY9 FROM6 - PHRASE28>
2020                     <DEAD TY9>
2021                     <FRAME '\1aPOP>
2022                     <PUSH 'FLUSHED>
2023                     <CALL '\1aPOP 1>
2024 PHRASE28
2025                     <FRAME '\1aFREE-TEMP>
2026                     <PUSH FROM6>
2027                     <DEAD FROM6>
2028                     <CALL '\1aFREE-TEMP 1>
2029                     <GVAL 'NO-DATUM = TY9>
2030                     <RETURN TY9>
2031                     <DEAD TY9>
2032 PHRASE26
2033                     <TYPE? TO7 <TYPE-CODE LIST> - PHRASE31>
2034                     <SET TEMP40 %<> (TYPE FALSE)>
2035                     <SET TEMP19 TO7 (TYPE LIST)>
2036                     <DEAD TO7>
2037                     <LOOP>
2038 MAP33
2039                     <INTGO>
2040                     <EMPL? TEMP19 + MAPAP36>
2041                     <NTHL TEMP19 1 = TY9>
2042                     <FRAME '\1aMOVE-ARG>
2043                     <PUSH FROM6>
2044                     <PUSH TY9>
2045                     <DEAD TY9>
2046                     <PUSH XTRA8>
2047                     <CALL '\1aMOVE-ARG 3 = TEMP40>
2048                     <RESTL TEMP19 1 = TEMP19 (TYPE LIST)>
2049                     <JUMP + MAP33>
2050 MAPAP36
2051                     <RETURN TEMP40>
2052                     <DEAD TEMP40>
2053 PHRASE31
2054                     <EQUAL? TO7 FROM6 + PHRASE44>
2055                     <GVAL 'POP-STACK = TEMP19>
2056                     <EQUAL? TEMP19 TO7 - PHRASE46>
2057                     <DEAD TEMP19>
2058                     <FRAME '\1aPUSH>
2059                     <PUSH FROM6>
2060                     <CALL '\1aPUSH 1>
2061                     <FRAME '\1aFREE-TEMP>
2062                     <PUSH FROM6>
2063                     <DEAD FROM6>
2064                     <CALL '\1aFREE-TEMP 1>
2065                     <RETURN TO7>
2066                     <DEAD TO7>
2067 PHRASE46
2068                     <GEN-ASSIGNED? 'THE-BOOL - PHRASE49>
2069                     <GEN-LVAL 'THE-BOOL = TEMP40>
2070                     <EQUAL? TEMP40 TO7 - PHRASE49>
2071                     <DEAD TEMP40>
2072                     <TYPE? FROM6 <TYPE-CODE FALSE> - PHRASE54>
2073                     <FRAME '\1aIEMIT>
2074                     <PUSH '`AND>
2075                     <GEN-LVAL 'THE-BOOL = STACK>
2076                     <GEN-LVAL 'THE-BIT = STACK>
2077                     <PUSH '=>
2078                     <GEN-LVAL 'THE-BOOL = STACK>
2079                     <CALL '\1aIEMIT 5>
2080                     <RETURN TO7>
2081                     <DEAD TO7>
2082 PHRASE54
2083                     <EQUAL? FROM6 'T - PHRASE63>
2084                     <DEAD FROM6>
2085                     <FRAME '\1aIEMIT>
2086                     <PUSH '`OR>
2087                     <GEN-LVAL 'THE-BOOL = STACK>
2088                     <GEN-LVAL 'THE-BIT = STACK>
2089                     <PUSH '=>
2090                     <GEN-LVAL 'THE-BOOL = STACK>
2091                     <CALL '\1aIEMIT 5>
2092                     <RETURN TO7>
2093                     <DEAD TO7>
2094 PHRASE63
2095                     <FRAME '\1aERROR>
2096                     <PUSH 'OH-SHIT!-ERRORS>
2097                     <CALL '\1aERROR 1>
2098                     <RETURN TO7>
2099                     <DEAD TO7>
2100 PHRASE49
2101                     <TYPE? TO7 <TYPE-CODE TEMP> - PHRASE76>
2102                     <FRAME '\1aUSE-TEMP>
2103                     <PUSH TO7>
2104                     <PUSH TY9>
2105                     <DEAD TY9>
2106                     <CALL '\1aUSE-TEMP 2>
2107                     <TYPE? FROM6 <TYPE-CODE TEMP> - PHRASE79>
2108                     <TYPE? XTRA8 <TYPE-CODE UNBOUND> + PHRASE81>
2109                     <FRAME '\1aIEMIT>
2110                     <PUSH '`SET>
2111                     <PUSH TO7>
2112                     <PUSH FROM6>
2113                     <PUSH XTRA8>
2114                     <DEAD XTRA8>
2115                     <CALL '\1aIEMIT 4>
2116                     <JUMP + PHRASE83>
2117 PHRASE81
2118                     <FRAME '\1aIEMIT>
2119                     <PUSH '`SET>
2120                     <PUSH TO7>
2121                     <PUSH FROM6>
2122                     <CALL '\1aIEMIT 3>
2123 PHRASE83
2124                     <FRAME '\1aFREE-TEMP>
2125                     <PUSH FROM6>
2126                     <DEAD FROM6>
2127                     <CALL '\1aFREE-TEMP 1>
2128                     <RETURN TO7>
2129                     <DEAD TO7>
2130 PHRASE79
2131                     <TYPE? XTRA8 <TYPE-CODE UNBOUND> + PHRASE88>
2132                     <FRAME '\1aIEMIT>
2133                     <PUSH '`SET>
2134                     <PUSH TO7>
2135                     <FRAME '\1aATOMCHK>
2136                     <PUSH FROM6>
2137                     <DEAD FROM6>
2138                     <CALL '\1aATOMCHK 1 = STACK>
2139                     <PUSH XTRA8>
2140                     <DEAD XTRA8>
2141                     <CALL '\1aIEMIT 4>
2142                     <RETURN TO7>
2143                     <DEAD TO7>
2144 PHRASE88
2145                     <FRAME '\1aIEMIT>
2146                     <PUSH '`SET>
2147                     <PUSH TO7>
2148                     <FRAME '\1aATOMCHK>
2149                     <PUSH FROM6>
2150                     <DEAD FROM6>
2151                     <CALL '\1aATOMCHK 1 = STACK>
2152                     <CALL '\1aIEMIT 3>
2153                     <RETURN TO7>
2154                     <DEAD TO7>
2155 PHRASE76
2156                     <EQUAL? TO7 'DONT-CARE + TAG95>
2157                     <DEAD TO7>
2158                     <RETURN %<>>
2159 TAG95
2160                     <GVAL 'TOP-STACK = TY9>
2161                     <EQUAL? TY9 FROM6 - PHRASE97>
2162                     <DEAD TY9>
2163                     <GVAL 'POP-STACK = TY9>
2164                     <RETURN TY9>
2165                     <DEAD TY9>
2166 PHRASE97
2167                     <RETURN FROM6>
2168                     <DEAD FROM6>
2169 PHRASE44
2170                     <RETURN TO7>
2171                     <DEAD TO7>
2172                     <END \1aMOVE-ARG>
2173 #WORD *31253005015*
2174 <GFCN \1aREFERENCE ("VALUE" ANY ANY) X4>
2175                     <TEMP>
2176                     <INTGO>
2177                     <RETURN X4>
2178                     <DEAD X4>
2179                     <END \1aREFERENCE>
2180 "Generate a TYPE? instruction"
2181
2182 #WORD *36477445165*
2183 <GFCN \1aGEN-TYPE? ("VALUE" ATOM ANY ANY ANY ANY) ITM4 TYP5 TG6 DIR7>
2184                     <TEMP TEMP11>
2185                     <INTGO>
2186                     <FRAME '\1aIEMIT>
2187                     <PUSH '`TYPE?>
2188                     <PUSH ITM4>
2189                     <DEAD ITM4>
2190                     <TYPE? TYP5 <TYPE-CODE TEMP> - PHRASE10>
2191                     <SET TEMP11 TYP5>
2192                     <DEAD TYP5>
2193                     <JUMP + PHRASE12>
2194 PHRASE10
2195                     <FRAME '\1aFORM>
2196                     <PUSH '`TYPE-CODE>
2197                     <PUSH TYP5>
2198                     <DEAD TYP5>
2199                     <CALL '\1aFORM 2 = TEMP11>
2200 PHRASE12
2201                     <PUSH TEMP11>
2202                     <DEAD TEMP11>
2203                     <TYPE? DIR7 <TYPE-CODE FALSE> + PHRASE15>
2204                     <DEAD DIR7>
2205                     <SET TEMP11 '+ (TYPE ATOM)>
2206                     <JUMP + PHRASE16>
2207 PHRASE15
2208                     <SET TEMP11 '- (TYPE ATOM)>
2209 PHRASE16
2210                     <PUSH TEMP11>
2211                     <DEAD TEMP11>
2212                     <PUSH TG6>
2213                     <DEAD TG6>
2214                     <CALL '\1aIEMIT 5 = TEMP11>
2215                     <RETURN TEMP11>
2216                     <DEAD TEMP11>
2217                     <END \1aGEN-TYPE?>
2218 #WORD *31611377042*
2219 <GFCN \1aGEN-VT ("VALUE" ANY ANY ANY ANY "OPTIONAL" ANY) ITM6 TG7 DIR8 RTMP9>
2220                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
2221 OPT4
2222                     <PUSH #T$UNBOUND 0>
2223 OPT5
2224                     <TEMP SIGN11:ATOM TMP10 TEMP20>
2225                     <INTGO>
2226                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE13>
2227                     <SET SIGN11 '- (TYPE ATOM)>
2228                     <JUMP + COND12>
2229 PHRASE13
2230                     <SET SIGN11 '+ (TYPE ATOM)>
2231 COND12
2232                     <TYPE? RTMP9 <TYPE-CODE UNBOUND> + PHRASE15>
2233                     <SET TMP10 RTMP9>
2234                     <JUMP + PHRASE16>
2235 PHRASE15
2236                     <FRAME '\1aGEN-TEMP>
2237                     <PUSH %<>>
2238                     <CALL '\1aGEN-TEMP 1 = TMP10>
2239 PHRASE16
2240                     <FRAME '\1aUSE-TEMP>
2241                     <PUSH TMP10>
2242                     <CALL '\1aUSE-TEMP 1>
2243                     <FRAME '\1aIEMIT>
2244                     <PUSH '`NTHR>
2245                     <PUSH ITM6>
2246                     <DEAD ITM6>
2247                     <PUSH 5>
2248                     <PUSH '=>
2249                     <PUSH TMP10>
2250                     <GVAL 'RAT = STACK>
2251                     <CONS TG7 () = TEMP20>
2252                     <CONS SIGN11 TEMP20 = TEMP20>
2253                     <DEAD SIGN11>
2254                     <CONS '`BRANCH-FALSE TEMP20 = STACK>
2255                     <DEAD TEMP20>
2256                     <CALL '\1aIEMIT 7>
2257                     <FRAME '\1aSPEC-IEMIT>
2258                     <PUSH '`TYPE?>
2259                     <PUSH TMP10>
2260                     <PUSH <`TYPE-CODE FALSE>>
2261                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE23>
2262                     <DEAD DIR8>
2263                     <SET TEMP20 '- (TYPE ATOM)>
2264                     <JUMP + PHRASE24>
2265 PHRASE23
2266                     <SET TEMP20 '+ (TYPE ATOM)>
2267 PHRASE24
2268                     <PUSH TEMP20>
2269                     <DEAD TEMP20>
2270                     <PUSH TG7>
2271                     <DEAD TG7>
2272                     <CALL '\1aSPEC-IEMIT 5>
2273                     <TYPE? RTMP9 <TYPE-CODE UNBOUND> + TAG27>
2274                     <DEAD RTMP9>
2275                     <RETURN %<>>
2276 TAG27
2277                     <FRAME '\1aFREE-TEMP>
2278                     <PUSH TMP10>
2279                     <DEAD TMP10>
2280                     <CALL '\1aFREE-TEMP 1 = TEMP20>
2281                     <RETURN TEMP20>
2282                     <DEAD TEMP20>
2283                     <END \1aGEN-VT>
2284 #WORD *1736634447*
2285 <GFCN \1aGEN-TC ("VALUE" TEMP ANY "OPTIONAL" ANY) TMP6 RTMP7>
2286                     <OPT-DISPATCH 1 %<> OPT4 OPT5>
2287 OPT4
2288                     <PUSH #T$UNBOUND 0>
2289 OPT5
2290                     <TEMP TEMP15>
2291                     <INTGO>
2292                     <TYPE? RTMP7 <TYPE-CODE UNBOUND> + PHRASE9>
2293                     <FRAME '\1aUSE-TEMP>
2294                     <PUSH RTMP7>
2295                     <PUSH 'TYPE-C>
2296                     <CALL '\1aUSE-TEMP 2>
2297                     <JUMP + PHRASE11>
2298 PHRASE9
2299                     <FRAME '\1aGEN-TEMP>
2300                     <PUSH 'TYPE-C>
2301                     <CALL '\1aGEN-TEMP 1 = RTMP7>
2302 PHRASE11
2303                     <GEN-LVAL 'CAREFUL = TEMP15>
2304                     <TYPE? TEMP15 <TYPE-CODE FALSE> + PHRASE14>
2305                     <DEAD TEMP15>
2306                     <FRAME '\1aIEMIT>
2307                     <PUSH '`NTHR>
2308                     <PUSH TMP6>
2309                     <DEAD TMP6>
2310                     <PUSH 5>
2311                     <PUSH '=>
2312                     <PUSH RTMP7>
2313                     <GVAL 'RAT = STACK>
2314                     <PUSH (`BRANCH-FALSE + `COMPERR)>
2315                     <CALL '\1aIEMIT 7>
2316                     <FRAME '\1aSPEC-IEMIT>
2317                     <PUSH '`TYPE?>
2318                     <PUSH RTMP7>
2319                     <PUSH <`TYPE-CODE FALSE>>
2320                     <PUSH '+>
2321                     <PUSH '`COMPERR>
2322                     <CALL '\1aSPEC-IEMIT 5>
2323                     <RETURN RTMP7>
2324                     <DEAD RTMP7>
2325 PHRASE14
2326                     <FRAME '\1aIEMIT>
2327                     <PUSH '`NTHR>
2328                     <PUSH TMP6>
2329                     <DEAD TMP6>
2330                     <PUSH 5>
2331                     <PUSH '=>
2332                     <PUSH RTMP7>
2333                     <GVAL 'RAT = STACK>
2334                     <PUSH (`TYPE TYPE-C)>
2335                     <CALL '\1aIEMIT 7>
2336                     <RETURN RTMP7>
2337                     <DEAD RTMP7>
2338                     <END \1aGEN-TC>
2339 "Generate SETG/GVAL things"
2340
2341 #WORD *27662305212*
2342                     <GFCN \1aGEN-GVAL ("VALUE" ATOM ANY ANY "OPTIONAL" ANY) ATM6 W7 TYP8>
2343                     <OPT-DISPATCH 2 %<> OPT4 OPT5>
2344 OPT4
2345                     <PUSH %<>>
2346 OPT5
2347                     <TEMP TEMP18>
2348                     <INTGO>
2349                     <TYPE? ATM6 <TYPE-CODE ATOM> - PHRASE13>
2350                     <FRAME '\1aFORM>
2351                     <PUSH 'QUOTE>
2352                     <PUSH ATM6>
2353                     <DEAD ATM6>
2354                     <CALL '\1aFORM 2 = ATM6>
2355 PHRASE13
2356                     <TYPE? TYP8 <TYPE-CODE FALSE> + PHRASE16>
2357                     <FRAME '\1aIEMIT>
2358                     <PUSH '`GVAL>
2359                     <PUSH ATM6>
2360                     <DEAD ATM6>
2361                     <PUSH '=>
2362                     <PUSH W7>
2363                     <DEAD W7>
2364                     <CONS TYP8 () = TEMP18>
2365                     <DEAD TYP8>
2366                     <CONS '`TYPE TEMP18 = STACK>
2367                     <DEAD TEMP18>
2368                     <CALL '\1aIEMIT 5 = TEMP18>
2369                     <RETURN TEMP18>
2370                     <DEAD TEMP18>
2371 PHRASE16
2372                     <FRAME '\1aIEMIT>
2373                     <PUSH '`GVAL>
2374                     <PUSH ATM6>
2375                     <DEAD ATM6>
2376                     <PUSH '=>
2377                     <PUSH W7>
2378                     <DEAD W7>
2379                     <CALL '\1aIEMIT 4 = TEMP18>
2380                     <RETURN TEMP18>
2381                     <DEAD TEMP18>
2382                     <END \1aGEN-GVAL>
2383
2384 #WORD *13501635567*
2385 <GFCN \1aGEN-GASS ("VALUE" ANY ANY ANY ANY ANY) ATM4 TG5 DIR6 NM7>
2386                     <TEMP TG18 (SIGN9 '+) TEMP23 TEM10:TEMP>
2387                     <INTGO>
2388                     <EQUAL? NM7 'GASSIGNED? + PHRASE12>
2389                     <SET TG18 TG5>
2390                     <JUMP + PHRASE15>
2391 PHRASE12
2392                     <TYPE? DIR6 <TYPE-CODE FALSE> + PHRASE13>
2393                     <FRAME '\1aMAKE-TAG>
2394                     <CALL '\1aMAKE-TAG 0 = TG18>
2395                     <JUMP + PHRASE15>
2396 PHRASE13
2397                     <SET TG18 TG5>
2398 PHRASE15
2399                     <TYPE? DIR6 <TYPE-CODE FALSE> + PHRASE17>
2400                     <EQUAL? NM7 'GASSIGNED? + PHRASE17>
2401                     <SET SIGN9 '- (TYPE ATOM)>
2402 PHRASE17
2403                     <FRAME '\1aIEMIT>
2404                     <PUSH '`NTHR>
2405                     <TYPE? ATM4 <TYPE-CODE ATOM> - PHRASE21>
2406                     <FRAME '\1aFORM>
2407                     <PUSH 'QUOTE>
2408                     <PUSH ATM4>
2409                     <DEAD ATM4>
2410                     <CALL '\1aFORM 2 = TEMP23>
2411                     <JUMP + PHRASE24>
2412 PHRASE21
2413                     <SET TEMP23 ATM4>
2414                     <DEAD ATM4>
2415 PHRASE24
2416                     <PUSH TEMP23>
2417                     <DEAD TEMP23>
2418                     <PUSH 1>
2419                     <PUSH '=>
2420                     <FRAME '\1aGEN-TEMP>
2421                     <CALL '\1aGEN-TEMP 0 = TEM10>
2422                     <PUSH TEM10>
2423                     <GVAL 'RAT = STACK>
2424                     <CONS TG18 () = TEMP23>
2425                     <CONS SIGN9 TEMP23 = TEMP23>
2426                     <CONS '`BRANCH-FALSE TEMP23 = STACK>
2427                     <DEAD TEMP23>
2428                     <CALL '\1aIEMIT 7>
2429                     <FRAME '\1aSPEC-IEMIT>
2430                     <PUSH '`TYPE?>
2431                     <PUSH TEM10>
2432                     <PUSH <`TYPE-CODE FALSE>>
2433                     <PUSH SIGN9>
2434                     <DEAD SIGN9>
2435                     <PUSH TG18>
2436                     <CALL '\1aSPEC-IEMIT 5>
2437                     <EQUAL? NM7 'GASSIGNED? - PHRASE28>
2438                     <DEAD NM7>
2439                     <FRAME '\1aIEMIT>
2440                     <PUSH '`NTHR>
2441                     <PUSH TEM10>
2442                     <PUSH 1>
2443                     <PUSH '=>
2444                     <PUSH TEM10>
2445                     <GVAL 'RGBN = STACK>
2446                     <CALL '\1aIEMIT 6>
2447                     <FRAME '\1aGEN-TYPE?>
2448                     <PUSH TEM10>
2449                     <PUSH 'UNBOUND>
2450                     <PUSH TG5>
2451                     <TYPE? DIR6 <TYPE-CODE FALSE> - TAG31>
2452                     <DEAD DIR6>
2453                     <SET TEMP23 'T (TYPE ATOM)>
2454                     <JUMP + TAG32>
2455 TAG31
2456                     <SET TEMP23 %<> (TYPE FALSE)>
2457 TAG32
2458                     <PUSH TEMP23>
2459                     <DEAD TEMP23>
2460                     <CALL '\1aGEN-TYPE? 4>
2461 PHRASE28
2462                     <EQUAL? TG5 TG18 + PHRASE34>
2463                     <DEAD TG5>
2464                     <FRAME '\1aLABEL-TAG>
2465                     <PUSH TG18>
2466                     <DEAD TG18>
2467                     <CALL '\1aLABEL-TAG 1>
2468 PHRASE34
2469                     <FRAME '\1aFREE-TEMP>
2470                     <PUSH TEM10>
2471                     <DEAD TEM10>
2472                     <CALL '\1aFREE-TEMP 1 = TEMP23>
2473                     <RETURN TEMP23>
2474                     <DEAD TEMP23>
2475                     <END \1aGEN-GASS>
2476 #WORD *13315522243*
2477 <GFCN \1aGEN-SETG ("VALUE" ANY ANY ANY ANY ANY) ATM4 VAL5 DCL6 WHERE7>
2478                     <TEMP TEMP16 TEM8:TEMP TEMP21 TG19 TEMP23:LIST>
2479                     <INTGO>
2480                     <TYPE? ATM4 <TYPE-CODE ATOM> - PHRASE12>
2481                     <FRAME '\1aIEMIT>
2482                     <PUSH '`SETG>
2483                     <FRAME '\1aFORM>
2484                     <PUSH 'QUOTE>
2485                     <PUSH ATM4>
2486                     <DEAD ATM4>
2487                     <CALL '\1aFORM 2 = STACK>
2488                     <FRAME '\1aATOMCHK>
2489                     <PUSH VAL5>
2490                     <DEAD VAL5>
2491                     <CALL '\1aATOMCHK 1 = STACK>
2492                     <CALL '\1aIEMIT 3 = TEMP16>
2493                     <RETURN TEMP16>
2494                     <DEAD TEMP16>
2495 PHRASE12
2496                     <FRAME '\1aIEMIT>
2497                     <PUSH '`NTHR>
2498                     <PUSH ATM4>
2499                     <PUSH 1>
2500                     <PUSH '=>
2501                     <FRAME '\1aGEN-TEMP>
2502                     <CALL '\1aGEN-TEMP 0 = TEM8>
2503                     <PUSH TEM8>
2504                     <GVAL 'RAT = STACK>
2505                     <CONS '`BRANCH-FALSE () = TEMP16>
2506                     <CONS '+ () = TEMP21>
2507                     <PUTREST TEMP16 TEMP21>
2508                     <FRAME '\1aMAKE-TAG>
2509                     <CALL '\1aMAKE-TAG 0 = TG19>
2510                     <CONS TG19 () = TEMP23>
2511                     <PUTREST TEMP21 TEMP23>
2512                     <DEAD TEMP21 TEMP23>
2513                     <PUSH TEMP16>
2514                     <DEAD TEMP16>
2515                     <CALL '\1aIEMIT 7>
2516                     <FRAME '\1aSPEC-IEMIT>
2517                     <PUSH '`TYPE?>
2518                     <PUSH TEM8>
2519                     <PUSH <`TYPE-CODE FALSE>>
2520                     <PUSH '+>
2521                     <PUSH TG19>
2522                     <CALL '\1aSPEC-IEMIT 5>
2523                     <FRAME '\1aIEMIT>
2524                     <PUSH '`PUTR>
2525                     <PUSH TEM8>
2526                     <PUSH 1>
2527                     <PUSH VAL5>
2528                     <GVAL 'RGBN = STACK>
2529                     <CALL '\1aIEMIT 5>
2530                     <TYPE? DCL6 <TYPE-CODE FALSE> + PHRASE27>
2531                     <FRAME '\1aIEMIT>
2532                     <PUSH TEM8>
2533                     <PUSH '`PUTR>
2534                     <PUSH 3>
2535                     <PUSH DCL6>
2536                     <GVAL 'RGBN = STACK>
2537                     <CALL '\1aIEMIT 5>
2538 PHRASE27
2539                     <FRAME '\1aBRANCH-TAG>
2540                     <FRAME '\1aMAKE-TAG>
2541                     <CALL '\1aMAKE-TAG 0 = TEMP21>
2542                     <PUSH TEMP21>
2543                     <CALL '\1aBRANCH-TAG 1>
2544                     <FRAME '\1aLABEL-TAG>
2545                     <PUSH TG19>
2546                     <DEAD TG19>
2547                     <CALL '\1aLABEL-TAG 1>
2548                     <FRAME '\1aSTART-FRAME>
2549                     <PUSH 'SETG>
2550                     <CALL '\1aSTART-FRAME 1>
2551                     <FRAME '\1aPUSH>
2552                     <PUSH ATM4>
2553                     <DEAD ATM4>
2554                     <CALL '\1aPUSH 1>
2555                     <FRAME '\1aPUSH>
2556                     <PUSH VAL5>
2557                     <CALL '\1aPUSH 1>
2558                     <TYPE? DCL6 <TYPE-CODE FALSE> + PHRASE36>
2559                     <FRAME '\1aPUSH>
2560                     <PUSH DCL6>
2561                     <CALL '\1aPUSH 1>
2562 PHRASE36
2563                     <EQUAL? WHERE7 'FLUSHED + PHRASE39>
2564                     <DEAD WHERE7>
2565                     <FRAME '\1aMSUBR-CALL>
2566                     <PUSH 'SETG>
2567                     <TYPE? DCL6 <TYPE-CODE FALSE> + PHRASE42>
2568                     <DEAD DCL6>
2569                     <SET TEMP16 3 (TYPE FIX)>
2570                     <JUMP + PHRASE43>
2571 PHRASE42
2572                     <SET TEMP16 2 (TYPE FIX)>
2573 PHRASE43
2574                     <PUSH TEMP16>
2575                     <DEAD TEMP16>
2576                     <PUSH VAL5>
2577                     <DEAD VAL5>
2578                     <CALL '\1aMSUBR-CALL 3>
2579                     <JUMP + PHRASE44>
2580 PHRASE39
2581                     <FRAME '\1aMSUBR-CALL>
2582                     <PUSH 'SETG>
2583                     <TYPE? DCL6 <TYPE-CODE FALSE> + PHRASE47>
2584                     <DEAD DCL6>
2585                     <SET TEMP16 3 (TYPE FIX)>
2586                     <JUMP + PHRASE48>
2587 PHRASE47
2588                     <SET TEMP16 2 (TYPE FIX)>
2589 PHRASE48
2590                     <PUSH TEMP16>
2591                     <DEAD TEMP16>
2592                     <PUSH 'FLUSHED>
2593                     <CALL '\1aMSUBR-CALL 3>
2594 PHRASE44
2595                     <FRAME '\1aLABEL-TAG>
2596                     <PUSH TEMP21>
2597                     <DEAD TEMP21>
2598                     <CALL '\1aLABEL-TAG 1>
2599                     <FRAME '\1aFREE-TEMP>
2600                     <PUSH TEM8>
2601                     <DEAD TEM8>
2602                     <CALL '\1aFREE-TEMP 1 = TEMP16>
2603                     <RETURN TEMP16>
2604                     <DEAD TEMP16>
2605                     <END \1aGEN-SETG>
2606 "Generate CHTYPE"
2607
2608 #WORD *33653725540*
2609 <GFCN \1aGEN-CHTYPE ("VALUE" ATOM ANY ANY ANY) ITM4 TYP5 W6>
2610                     <TEMP TEMP11>
2611                     <INTGO>
2612                     <FRAME '\1aIEMIT>
2613                     <PUSH '`CHTYPE>
2614                     <PUSH ITM4>
2615                     <DEAD ITM4>
2616                     <TYPE? TYP5 <TYPE-CODE ATOM> - PHRASE9>
2617                     <NTHR TYP5 5 = TEMP11 (RECORD-TYPE ATOM) (BRANCH-FALSE + PHRASE9)>
2618                     <TYPE? TEMP11 <TYPE-CODE FALSE> + PHRASE9>
2619                     <DEAD TEMP11>
2620                     <FRAME '\1aFORM>
2621                     <PUSH '`TYPE-CODE>
2622                     <PUSH TYP5>
2623                     <DEAD TYP5>
2624                     <CALL '\1aFORM 2 = TEMP11>
2625                     <JUMP + PHRASE13>
2626 PHRASE9
2627                     <SET TEMP11 TYP5>
2628                     <DEAD TYP5>
2629 PHRASE13
2630                     <PUSH TEMP11>
2631                     <DEAD TEMP11>
2632                     <PUSH '=>
2633                     <PUSH W6>
2634                     <DEAD W6>
2635                     <CALL '\1aIEMIT 5 = TEMP11>
2636                     <RETURN TEMP11>
2637                     <DEAD TEMP11>
2638                     <END \1aGEN-CHTYPE>
2639 #WORD *4052555024*
2640 <GFCN \1aD-B-TAG ("VALUE" ATOM ANY ANY ANY ANY) BR4 WH5 DIR6 TYP7>
2641                     <TEMP TEMP12>
2642                     <INTGO>
2643                     <FRAME '\1aTYPE-OK?>
2644                     <PUSH TYP7>
2645                     <PUSH <FALSE ANY>>
2646                     <CALL '\1aTYPE-OK? 2 = TEMP12>
2647                     <TYPE? TEMP12 <TYPE-CODE FALSE> - PHRASE9>
2648                     <DEAD TEMP12>
2649                     <FRAME '\1aTYPE-AND>
2650                     <PUSH TYP7>
2651                     <DEAD TYP7>
2652                     <PUSH <NOT FALSE>>
2653                     <CALL '\1aTYPE-AND 2 = TYP7>
2654                     <TYPE? TYP7 <TYPE-CODE FALSE> + PHRASE9>
2655                     <FRAME '\1aTYPE-OK?>
2656                     <PUSH TYP7>
2657                     <PUSH <PRIMTYPE FIX>>
2658                     <CALL '\1aTYPE-OK? 2 = TEMP12>
2659                     <TYPE? TEMP12 <TYPE-CODE FALSE> - PHRASE9>
2660                     <DEAD TEMP12>
2661                     <FRAME '\1aTYPE-AND>
2662                     <PUSH TYP7>
2663                     <DEAD TYP7>
2664                     <PUSH <PRIMTYPE LIST>>
2665                     <CALL '\1aTYPE-AND 2 = TYP7>
2666                     <TYPE? TYP7 <TYPE-CODE FALSE> + BOOL15>
2667                     <FRAME '\1aMINL>
2668                     <PUSH TYP7>
2669                     <DEAD TYP7>
2670                     <CALL '\1aMINL 1 = TEMP12>
2671                     <GRTR? TEMP12 0 - PHRASE9 (TYPE FIX)>
2672                     <DEAD TEMP12>
2673 BOOL15
2674                     <FRAME '\1aIEMIT>
2675                     <PUSH '`VEQUAL?>
2676                     <PUSH WH5>
2677                     <DEAD WH5>
2678                     <PUSH 0>
2679                     <TYPE? DIR6 <TYPE-CODE FALSE> + PHRASE22>
2680                     <DEAD DIR6>
2681                     <SET TEMP12 '- (TYPE ATOM)>
2682                     <JUMP + PHRASE23>
2683 PHRASE22
2684                     <SET TEMP12 '+ (TYPE ATOM)>
2685 PHRASE23
2686                     <PUSH TEMP12>
2687                     <DEAD TEMP12>
2688                     <PUSH BR4>
2689                     <DEAD BR4>
2690                     <CALL '\1aIEMIT 5 = TEMP12>
2691                     <RETURN TEMP12>
2692                     <DEAD TEMP12>
2693 PHRASE9
2694                     <FRAME '\1aGEN-TYPE?>
2695                     <PUSH WH5>
2696                     <DEAD WH5>
2697                     <PUSH 'FALSE>
2698                     <PUSH BR4>
2699                     <DEAD BR4>
2700                     <TYPE? DIR6 <TYPE-CODE FALSE> - TAG26>
2701                     <DEAD DIR6>
2702                     <SET TEMP12 'T (TYPE ATOM)>
2703                     <JUMP + TAG27>
2704 TAG26
2705                     <SET TEMP12 %<> (TYPE FALSE)>
2706 TAG27
2707                     <PUSH TEMP12>
2708                     <DEAD TEMP12>
2709                     <CALL '\1aGEN-TYPE? 4 = TEMP12>
2710                     <RETURN TEMP12>
2711                     <DEAD TEMP12>
2712                     <END \1aD-B-TAG>
2713 #WORD *27467444044*
2714 <GFCN \1aMIM-RETURN ("VALUE" ATOM "OPTIONAL" ANY) VAL6>
2715                     <OPT-DISPATCH 0 %<> OPT4 OPT5>
2716 OPT4
2717                     <PUSH #T$UNBOUND 0>
2718 OPT5
2719                     <TEMP TEMP11:ATOM>
2720                     <INTGO>
2721                     <TYPE? VAL6 <TYPE-CODE UNBOUND> - TAG7>
2722                     <GVAL 'POP-STACK = VAL6>
2723 TAG7
2724                     <FRAME '\1aIEMIT>
2725                     <PUSH '`RETURN>
2726                     <FRAME '\1aATOMCHK>
2727                     <PUSH VAL6>
2728                     <DEAD VAL6>
2729                     <CALL '\1aATOMCHK 1 = STACK>
2730                     <CALL '\1aIEMIT 2 = TEMP11>
2731                     <RETURN TEMP11>
2732                     <DEAD TEMP11>
2733                     <END \1aMIM-RETURN>
2734 #WORD *31253005015*
2735 <GFCN \1aRET-TMP-AC ("VALUE" ANY ANY) X4>
2736                     <TEMP>
2737                     <INTGO>
2738                     <RETURN X4>
2739                     <DEAD X4>
2740                     <END \1aRET-TMP-AC>
2741 #WORD *5726064271*
2742 <GFCN \1aGEN-SHIFT ("VALUE" ATOM ANY ANY ANY) DAT4 AMT5 W6>
2743                     <TEMP TEMP8:ATOM>
2744                     <INTGO>
2745                     <FRAME '\1aIEMIT>
2746                     <PUSH '`LSH>
2747                     <PUSH DAT4>
2748                     <DEAD DAT4>
2749                     <PUSH AMT5>
2750                     <DEAD AMT5>
2751                     <PUSH '=>
2752                     <PUSH W6>
2753                     <DEAD W6>
2754                     <PUSH (`TYPE FIX)>
2755                     <CALL '\1aIEMIT 6 = TEMP8>
2756                     <RETURN TEMP8>
2757                     <DEAD TEMP8>
2758                     <END \1aGEN-SHIFT>
2759 #WORD *7656341160*
2760 <GFCN \1aNTH-LIST ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 DST7 AMT8 RESTYP9>
2761                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
2762 OPT4
2763                     <PUSH %<>>
2764 OPT5
2765                     <TEMP TEMP13>
2766                     <INTGO>
2767                     <TYPE? RESTYP9 <TYPE-CODE FALSE> + PHRASE11>
2768                     <FRAME '\1aIEMIT>
2769                     <PUSH '`NTHL>
2770                     <PUSH SRC6>
2771                     <DEAD SRC6>
2772                     <PUSH AMT8>
2773                     <DEAD AMT8>
2774                     <PUSH '=>
2775                     <PUSH DST7>
2776                     <DEAD DST7>
2777                     <CONS RESTYP9 () = TEMP13>
2778                     <DEAD RESTYP9>
2779                     <CONS '`TYPE TEMP13 = STACK>
2780                     <DEAD TEMP13>
2781                     <CALL '\1aIEMIT 6 = TEMP13>
2782                     <RETURN TEMP13>
2783                     <DEAD TEMP13>
2784 PHRASE11
2785                     <FRAME '\1aIEMIT>
2786                     <PUSH '`NTHL>
2787                     <PUSH SRC6>
2788                     <DEAD SRC6>
2789                     <PUSH AMT8>
2790                     <DEAD AMT8>
2791                     <PUSH '=>
2792                     <PUSH DST7>
2793                     <DEAD DST7>
2794                     <CALL '\1aIEMIT 5 = TEMP13>
2795                     <RETURN TEMP13>
2796                     <DEAD TEMP13>
2797                     <END \1aNTH-LIST>
2798 #WORD *37642615207*
2799 <GFCN \1aNTH-UVECTOR ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 DST7 AMT8 RESTYP9>
2800                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
2801 OPT4
2802                     <PUSH %<>>
2803 OPT5
2804                     <TEMP TEMP13>
2805                     <INTGO>
2806                     <TYPE? RESTYP9 <TYPE-CODE FALSE> + PHRASE11>
2807                     <FRAME '\1aIEMIT>
2808                     <PUSH '`NTHUU>
2809                     <PUSH SRC6>
2810                     <DEAD SRC6>
2811                     <PUSH AMT8>
2812                     <DEAD AMT8>
2813                     <PUSH '=>
2814                     <PUSH DST7>
2815                     <DEAD DST7>
2816                     <CONS RESTYP9 () = TEMP13>
2817                     <DEAD RESTYP9>
2818                     <CONS '`TYPE TEMP13 = STACK>
2819                     <DEAD TEMP13>
2820                     <CALL '\1aIEMIT 6 = TEMP13>
2821                     <RETURN TEMP13>
2822                     <DEAD TEMP13>
2823 PHRASE11
2824                     <FRAME '\1aIEMIT>
2825                     <PUSH '`NTHUU>
2826                     <PUSH SRC6>
2827                     <DEAD SRC6>
2828                     <PUSH AMT8>
2829                     <DEAD AMT8>
2830                     <PUSH '=>
2831                     <PUSH DST7>
2832                     <DEAD DST7>
2833                     <CALL '\1aIEMIT 5 = TEMP13>
2834                     <RETURN TEMP13>
2835                     <DEAD TEMP13>
2836                     <END \1aNTH-UVECTOR>
2837 #WORD *37642623207*
2838 <GFCN \1aNTH-VECTOR ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 DST7 AMT8 RESTYP9>
2839                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
2840 OPT4
2841                     <PUSH %<>>
2842 OPT5
2843                     <TEMP TEMP13>
2844                     <INTGO>
2845                     <TYPE? RESTYP9 <TYPE-CODE FALSE> + PHRASE11>
2846                     <FRAME '\1aIEMIT>
2847                     <PUSH '`NTHUV>
2848                     <PUSH SRC6>
2849                     <DEAD SRC6>
2850                     <PUSH AMT8>
2851                     <DEAD AMT8>
2852                     <PUSH '=>
2853                     <PUSH DST7>
2854                     <DEAD DST7>
2855                     <CONS RESTYP9 () = TEMP13>
2856                     <DEAD RESTYP9>
2857                     <CONS '`TYPE TEMP13 = STACK>
2858                     <DEAD TEMP13>
2859                     <CALL '\1aIEMIT 6 = TEMP13>
2860                     <RETURN TEMP13>
2861                     <DEAD TEMP13>
2862 PHRASE11
2863                     <FRAME '\1aIEMIT>
2864                     <PUSH '`NTHUV>
2865                     <PUSH SRC6>
2866                     <DEAD SRC6>
2867                     <PUSH AMT8>
2868                     <DEAD AMT8>
2869                     <PUSH '=>
2870                     <PUSH DST7>
2871                     <DEAD DST7>
2872                     <CALL '\1aIEMIT 5 = TEMP13>
2873                     <RETURN TEMP13>
2874                     <DEAD TEMP13>
2875                     <END \1aNTH-VECTOR>
2876 #WORD *37642661207*
2877 <GFCN \1aNTH-STRING ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 DST7 AMT8 RESTYP9>
2878                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
2879 OPT4
2880                     <PUSH %<>>
2881 OPT5
2882                     <TEMP TEMP13>
2883                     <INTGO>
2884                     <TYPE? RESTYP9 <TYPE-CODE FALSE> + PHRASE11>
2885                     <FRAME '\1aIEMIT>
2886                     <PUSH '`NTHUS>
2887                     <PUSH SRC6>
2888                     <DEAD SRC6>
2889                     <PUSH AMT8>
2890                     <DEAD AMT8>
2891                     <PUSH '=>
2892                     <PUSH DST7>
2893                     <DEAD DST7>
2894                     <CONS RESTYP9 () = TEMP13>
2895                     <DEAD RESTYP9>
2896                     <CONS '`TYPE TEMP13 = STACK>
2897                     <DEAD TEMP13>
2898                     <CALL '\1aIEMIT 6 = TEMP13>
2899                     <RETURN TEMP13>
2900                     <DEAD TEMP13>
2901 PHRASE11
2902                     <FRAME '\1aIEMIT>
2903                     <PUSH '`NTHUS>
2904                     <PUSH SRC6>
2905                     <DEAD SRC6>
2906                     <PUSH AMT8>
2907                     <DEAD AMT8>
2908                     <PUSH '=>
2909                     <PUSH DST7>
2910                     <DEAD DST7>
2911                     <CALL '\1aIEMIT 5 = TEMP13>
2912                     <RETURN TEMP13>
2913                     <DEAD TEMP13>
2914                     <END \1aNTH-STRING>
2915 #WORD *37642433207*
2916 <GFCN \1aNTH-BYTES ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 DST7 AMT8 RESTYP9>
2917                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
2918 OPT4
2919                     <PUSH %<>>
2920 OPT5
2921                     <TEMP TEMP13>
2922                     <INTGO>
2923                     <TYPE? RESTYP9 <TYPE-CODE FALSE> + PHRASE11>
2924                     <FRAME '\1aIEMIT>
2925                     <PUSH '`NTHUB>
2926                     <PUSH SRC6>
2927                     <DEAD SRC6>
2928                     <PUSH AMT8>
2929                     <DEAD AMT8>
2930                     <PUSH '=>
2931                     <PUSH DST7>
2932                     <DEAD DST7>
2933                     <CONS RESTYP9 () = TEMP13>
2934                     <DEAD RESTYP9>
2935                     <CONS '`TYPE TEMP13 = STACK>
2936                     <DEAD TEMP13>
2937                     <CALL '\1aIEMIT 6 = TEMP13>
2938                     <RETURN TEMP13>
2939                     <DEAD TEMP13>
2940 PHRASE11
2941                     <FRAME '\1aIEMIT>
2942                     <PUSH '`NTHUB>
2943                     <PUSH SRC6>
2944                     <DEAD SRC6>
2945                     <PUSH AMT8>
2946                     <DEAD AMT8>
2947                     <PUSH '=>
2948                     <PUSH DST7>
2949                     <DEAD DST7>
2950                     <CALL '\1aIEMIT 5 = TEMP13>
2951                     <RETURN TEMP13>
2952                     <DEAD TEMP13>
2953                     <END \1aNTH-BYTES>
2954 #WORD *36622040206*
2955 <GFCN \1aNTH-RECORD ("VALUE" ATOM ANY ANY ANY ANY "OPTIONAL" ANY) SRC6 DST7 AMT8 TPS9 RESTYP10>
2956                     <OPT-DISPATCH 4 %<> OPT4 OPT5>
2957 OPT4
2958                     <PUSH %<>>
2959 OPT5
2960                     <TEMP TEMP14>
2961                     <INTGO>
2962                     <TYPE? RESTYP10 <TYPE-CODE FALSE> + PHRASE12>
2963                     <FRAME '\1aIEMIT>
2964                     <PUSH '`NTHR>
2965                     <PUSH SRC6>
2966                     <DEAD SRC6>
2967                     <PUSH AMT8>
2968                     <DEAD AMT8>
2969                     <PUSH '=>
2970                     <PUSH DST7>
2971                     <DEAD DST7>
2972                     <CONS TPS9 () = TEMP14>
2973                     <DEAD TPS9>
2974                     <CONS '`RECORD-TYPE TEMP14 = STACK>
2975                     <DEAD TEMP14>
2976                     <CONS RESTYP10 () = TEMP14>
2977                     <DEAD RESTYP10>
2978                     <CONS '`TYPE TEMP14 = STACK>
2979                     <DEAD TEMP14>
2980                     <CALL '\1aIEMIT 7 = TEMP14>
2981                     <RETURN TEMP14>
2982                     <DEAD TEMP14>
2983 PHRASE12
2984                     <FRAME '\1aIEMIT>
2985                     <PUSH '`NTHR>
2986                     <PUSH SRC6>
2987                     <DEAD SRC6>
2988                     <PUSH AMT8>
2989                     <DEAD AMT8>
2990                     <PUSH '=>
2991                     <PUSH DST7>
2992                     <DEAD DST7>
2993                     <CONS TPS9 () = TEMP14>
2994                     <DEAD TPS9>
2995                     <CONS '`RECORD-TYPE TEMP14 = STACK>
2996                     <DEAD TEMP14>
2997                     <CALL '\1aIEMIT 6 = TEMP14>
2998                     <RETURN TEMP14>
2999                     <DEAD TEMP14>
3000                     <END \1aNTH-RECORD>
3001 #WORD *26165674423*
3002 <GFCN \1aREST-LIST ("VALUE" ATOM ANY ANY ANY) SRC4 DST5 AMT6>
3003                     <TEMP TEMP8:ATOM>
3004                     <INTGO>
3005                     <FRAME '\1aIEMIT>
3006                     <PUSH '`RESTL>
3007                     <PUSH SRC4>
3008                     <DEAD SRC4>
3009                     <PUSH AMT6>
3010                     <DEAD AMT6>
3011                     <PUSH '=>
3012                     <PUSH DST5>
3013                     <DEAD DST5>
3014                     <PUSH (`TYPE LIST)>
3015                     <CALL '\1aIEMIT 6 = TEMP8>
3016                     <RETURN TEMP8>
3017                     <DEAD TEMP8>
3018                     <END \1aREST-LIST>
3019 #WORD *31527275142*
3020 <GFCN \1aREST-UVECTOR ("VALUE" ATOM ANY ANY ANY) SRC4 DST5 AMT6>
3021                     <TEMP TEMP8:ATOM>
3022                     <INTGO>
3023                     <FRAME '\1aIEMIT>
3024                     <PUSH '`RESTUU>
3025                     <PUSH SRC4>
3026                     <DEAD SRC4>
3027                     <PUSH AMT6>
3028                     <DEAD AMT6>
3029                     <PUSH '=>
3030                     <PUSH DST5>
3031                     <DEAD DST5>
3032                     <PUSH (`TYPE UVECTOR)>
3033                     <CALL '\1aIEMIT 6 = TEMP8>
3034                     <RETURN TEMP8>
3035                     <DEAD TEMP8>
3036                     <END \1aREST-UVECTOR>
3037 #WORD *1112506473*
3038 <GFCN \1aREST-VECTOR ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 DST7 AMT8 TY9>
3039                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
3040 OPT4
3041                     <PUSH #T$UNBOUND 0>
3042 OPT5
3043                     <TEMP TEMP13>
3044                     <INTGO>
3045                     <TYPE? TY9 <TYPE-CODE UNBOUND> + PHRASE11>
3046                     <FRAME '\1aIEMIT>
3047                     <PUSH '`RESTUV>
3048                     <PUSH SRC6>
3049                     <DEAD SRC6>
3050                     <PUSH AMT8>
3051                     <DEAD AMT8>
3052                     <PUSH '=>
3053                     <PUSH DST7>
3054                     <DEAD DST7>
3055                     <CONS TY9 () = TEMP13>
3056                     <DEAD TY9>
3057                     <CONS '`TYPE TEMP13 = STACK>
3058                     <DEAD TEMP13>
3059                     <CALL '\1aIEMIT 6 = TEMP13>
3060                     <RETURN TEMP13>
3061                     <DEAD TEMP13>
3062 PHRASE11
3063                     <FRAME '\1aIEMIT>
3064                     <PUSH '`RESTUV>
3065                     <PUSH SRC6>
3066                     <DEAD SRC6>
3067                     <PUSH AMT8>
3068                     <DEAD AMT8>
3069                     <PUSH '=>
3070                     <PUSH DST7>
3071                     <DEAD DST7>
3072                     <CALL '\1aIEMIT 5 = TEMP13>
3073                     <RETURN TEMP13>
3074                     <DEAD TEMP13>
3075                     <END \1aREST-VECTOR>
3076 #WORD *17426161542*
3077 <GFCN \1aREST-STRING ("VALUE" ATOM ANY ANY ANY) SRC4 DST5 AMT6>
3078                     <TEMP TEMP8:ATOM>
3079                     <INTGO>
3080                     <FRAME '\1aIEMIT>
3081                     <PUSH '`RESTUS>
3082                     <PUSH SRC4>
3083                     <DEAD SRC4>
3084                     <PUSH AMT6>
3085                     <DEAD AMT6>
3086                     <PUSH '=>
3087                     <PUSH DST5>
3088                     <DEAD DST5>
3089                     <PUSH (`TYPE STRING)>
3090                     <CALL '\1aIEMIT 6 = TEMP8>
3091                     <RETURN TEMP8>
3092                     <DEAD TEMP8>
3093                     <END \1aREST-STRING>
3094 #WORD *23726174240*
3095 <GFCN \1aREST-BYTES ("VALUE" ATOM ANY ANY ANY) SRC4 DST5 AMT6>
3096                     <TEMP TEMP8:ATOM>
3097                     <INTGO>
3098                     <FRAME '\1aIEMIT>
3099                     <PUSH '`RESTUB>
3100                     <PUSH SRC4>
3101                     <DEAD SRC4>
3102                     <PUSH AMT6>
3103                     <DEAD AMT6>
3104                     <PUSH '=>
3105                     <PUSH DST5>
3106                     <DEAD DST5>
3107                     <PUSH (`TYPE BYTES)>
3108                     <CALL '\1aIEMIT 6 = TEMP8>
3109                     <RETURN TEMP8>
3110                     <DEAD TEMP8>
3111                     <END \1aREST-BYTES>
3112 #WORD *2775313625*
3113 <GFCN \1aEMPTY-LIST ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 TG7 DIR8 TY9>
3114                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
3115 OPT4
3116                     <PUSH %<>>
3117 OPT5
3118                     <TEMP TEMP15>
3119                     <INTGO>
3120                     <TYPE? TY9 <TYPE-CODE FALSE> + PHRASE11>
3121                     <FRAME '\1aIEMIT>
3122                     <PUSH '`EMPL?>
3123                     <PUSH SRC6>
3124                     <DEAD SRC6>
3125                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE14>
3126                     <DEAD DIR8>
3127                     <SET TEMP15 '+ (TYPE ATOM)>
3128                     <JUMP + PHRASE16>
3129 PHRASE14
3130                     <SET TEMP15 '- (TYPE ATOM)>
3131 PHRASE16
3132                     <PUSH TEMP15>
3133                     <DEAD TEMP15>
3134                     <PUSH TG7>
3135                     <DEAD TG7>
3136                     <CONS TY9 () = TEMP15>
3137                     <DEAD TY9>
3138                     <CONS '`TYPE TEMP15 = STACK>
3139                     <DEAD TEMP15>
3140                     <CALL '\1aIEMIT 5 = TEMP15>
3141                     <RETURN TEMP15>
3142                     <DEAD TEMP15>
3143 PHRASE11
3144                     <FRAME '\1aIEMIT>
3145                     <PUSH '`EMPL?>
3146                     <PUSH SRC6>
3147                     <DEAD SRC6>
3148                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE20>
3149                     <DEAD DIR8>
3150                     <SET TEMP15 '+ (TYPE ATOM)>
3151                     <JUMP + PHRASE22>
3152 PHRASE20
3153                     <SET TEMP15 '- (TYPE ATOM)>
3154 PHRASE22
3155                     <PUSH TEMP15>
3156                     <DEAD TEMP15>
3157                     <PUSH TG7>
3158                     <DEAD TG7>
3159                     <CALL '\1aIEMIT 4 = TEMP15>
3160                     <RETURN TEMP15>
3161                     <DEAD TEMP15>
3162                     <END \1aEMPTY-LIST>
3163 #WORD *11563557552*
3164 <GFCN \1aEMPTY-UVECTOR ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 TG7 DIR8 TY9>
3165                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
3166 OPT4
3167                     <PUSH %<>>
3168 OPT5
3169                     <TEMP TEMP15>
3170                     <INTGO>
3171                     <TYPE? TY9 <TYPE-CODE FALSE> + PHRASE11>
3172                     <FRAME '\1aIEMIT>
3173                     <PUSH '`EMPUU?>
3174                     <PUSH SRC6>
3175                     <DEAD SRC6>
3176                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE14>
3177                     <DEAD DIR8>
3178                     <SET TEMP15 '+ (TYPE ATOM)>
3179                     <JUMP + PHRASE16>
3180 PHRASE14
3181                     <SET TEMP15 '- (TYPE ATOM)>
3182 PHRASE16
3183                     <PUSH TEMP15>
3184                     <DEAD TEMP15>
3185                     <PUSH TG7>
3186                     <DEAD TG7>
3187                     <CONS TY9 () = TEMP15>
3188                     <DEAD TY9>
3189                     <CONS '`TYPE TEMP15 = STACK>
3190                     <DEAD TEMP15>
3191                     <CALL '\1aIEMIT 5 = TEMP15>
3192                     <RETURN TEMP15>
3193                     <DEAD TEMP15>
3194 PHRASE11
3195                     <FRAME '\1aIEMIT>
3196                     <PUSH '`EMPUU?>
3197                     <PUSH SRC6>
3198                     <DEAD SRC6>
3199                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE20>
3200                     <DEAD DIR8>
3201                     <SET TEMP15 '+ (TYPE ATOM)>
3202                     <JUMP + PHRASE22>
3203 PHRASE20
3204                     <SET TEMP15 '- (TYPE ATOM)>
3205 PHRASE22
3206                     <PUSH TEMP15>
3207                     <DEAD TEMP15>
3208                     <PUSH TG7>
3209                     <DEAD TG7>
3210                     <CALL '\1aIEMIT 4 = TEMP15>
3211                     <RETURN TEMP15>
3212                     <DEAD TEMP15>
3213                     <END \1aEMPTY-UVECTOR>
3214 #WORD *11563561552*
3215 <GFCN \1aEMPTY-VECTOR ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 TG7 DIR8 TY9>
3216                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
3217 OPT4
3218                     <PUSH %<>>
3219 OPT5
3220                     <TEMP TEMP15>
3221                     <INTGO>
3222                     <TYPE? TY9 <TYPE-CODE FALSE> + PHRASE11>
3223                     <FRAME '\1aIEMIT>
3224                     <PUSH '`EMPUV?>
3225                     <PUSH SRC6>
3226                     <DEAD SRC6>
3227                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE14>
3228                     <DEAD DIR8>
3229                     <SET TEMP15 '+ (TYPE ATOM)>
3230                     <JUMP + PHRASE16>
3231 PHRASE14
3232                     <SET TEMP15 '- (TYPE ATOM)>
3233 PHRASE16
3234                     <PUSH TEMP15>
3235                     <DEAD TEMP15>
3236                     <PUSH TG7>
3237                     <DEAD TG7>
3238                     <CONS TY9 () = TEMP15>
3239                     <DEAD TY9>
3240                     <CONS '`TYPE TEMP15 = STACK>
3241                     <DEAD TEMP15>
3242                     <CALL '\1aIEMIT 5 = TEMP15>
3243                     <RETURN TEMP15>
3244                     <DEAD TEMP15>
3245 PHRASE11
3246                     <FRAME '\1aIEMIT>
3247                     <PUSH '`EMPUV?>
3248                     <PUSH SRC6>
3249                     <DEAD SRC6>
3250                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE20>
3251                     <DEAD DIR8>
3252                     <SET TEMP15 '+ (TYPE ATOM)>
3253                     <JUMP + PHRASE22>
3254 PHRASE20
3255                     <SET TEMP15 '- (TYPE ATOM)>
3256 PHRASE22
3257                     <PUSH TEMP15>
3258                     <DEAD TEMP15>
3259                     <PUSH TG7>
3260                     <DEAD TG7>
3261                     <CALL '\1aIEMIT 4 = TEMP15>
3262                     <RETURN TEMP15>
3263                     <DEAD TEMP15>
3264                     <END \1aEMPTY-VECTOR>
3265 #WORD *11563523552*
3266 <GFCN \1aEMPTY-STRING ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 TG7 DIR8 TY9>
3267                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
3268 OPT4
3269                     <PUSH %<>>
3270 OPT5
3271                     <TEMP TEMP15>
3272                     <INTGO>
3273                     <TYPE? TY9 <TYPE-CODE FALSE> + PHRASE11>
3274                     <FRAME '\1aIEMIT>
3275                     <PUSH '`EMPUS?>
3276                     <PUSH SRC6>
3277                     <DEAD SRC6>
3278                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE14>
3279                     <DEAD DIR8>
3280                     <SET TEMP15 '+ (TYPE ATOM)>
3281                     <JUMP + PHRASE16>
3282 PHRASE14
3283                     <SET TEMP15 '- (TYPE ATOM)>
3284 PHRASE16
3285                     <PUSH TEMP15>
3286                     <DEAD TEMP15>
3287                     <PUSH TG7>
3288                     <DEAD TG7>
3289                     <CONS TY9 () = TEMP15>
3290                     <DEAD TY9>
3291                     <CONS '`TYPE TEMP15 = STACK>
3292                     <DEAD TEMP15>
3293                     <CALL '\1aIEMIT 5 = TEMP15>
3294                     <RETURN TEMP15>
3295                     <DEAD TEMP15>
3296 PHRASE11
3297                     <FRAME '\1aIEMIT>
3298                     <PUSH '`EMPUS?>
3299                     <PUSH SRC6>
3300                     <DEAD SRC6>
3301                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE20>
3302                     <DEAD DIR8>
3303                     <SET TEMP15 '+ (TYPE ATOM)>
3304                     <JUMP + PHRASE22>
3305 PHRASE20
3306                     <SET TEMP15 '- (TYPE ATOM)>
3307 PHRASE22
3308                     <PUSH TEMP15>
3309                     <DEAD TEMP15>
3310                     <PUSH TG7>
3311                     <DEAD TG7>
3312                     <CALL '\1aIEMIT 4 = TEMP15>
3313                     <RETURN TEMP15>
3314                     <DEAD TEMP15>
3315                     <END \1aEMPTY-STRING>
3316 #WORD *11563771552*
3317 <GFCN \1aEMPTY-BYTES ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 TG7 DIR8 TY9>
3318                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
3319 OPT4
3320                     <PUSH %<>>
3321 OPT5
3322                     <TEMP TEMP15>
3323                     <INTGO>
3324                     <TYPE? TY9 <TYPE-CODE FALSE> + PHRASE11>
3325                     <FRAME '\1aIEMIT>
3326                     <PUSH '`EMPUB?>
3327                     <PUSH SRC6>
3328                     <DEAD SRC6>
3329                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE14>
3330                     <DEAD DIR8>
3331                     <SET TEMP15 '+ (TYPE ATOM)>
3332                     <JUMP + PHRASE16>
3333 PHRASE14
3334                     <SET TEMP15 '- (TYPE ATOM)>
3335 PHRASE16
3336                     <PUSH TEMP15>
3337                     <DEAD TEMP15>
3338                     <PUSH TG7>
3339                     <DEAD TG7>
3340                     <CONS TY9 () = TEMP15>
3341                     <DEAD TY9>
3342                     <CONS '`TYPE TEMP15 = STACK>
3343                     <DEAD TEMP15>
3344                     <CALL '\1aIEMIT 5 = TEMP15>
3345                     <RETURN TEMP15>
3346                     <DEAD TEMP15>
3347 PHRASE11
3348                     <FRAME '\1aIEMIT>
3349                     <PUSH '`EMPUB?>
3350                     <PUSH SRC6>
3351                     <DEAD SRC6>
3352                     <TYPE? DIR8 <TYPE-CODE FALSE> + PHRASE20>
3353                     <DEAD DIR8>
3354                     <SET TEMP15 '+ (TYPE ATOM)>
3355                     <JUMP + PHRASE22>
3356 PHRASE20
3357                     <SET TEMP15 '- (TYPE ATOM)>
3358 PHRASE22
3359                     <PUSH TEMP15>
3360                     <DEAD TEMP15>
3361                     <PUSH TG7>
3362                     <DEAD TG7>
3363                     <CALL '\1aIEMIT 4 = TEMP15>
3364                     <RETURN TEMP15>
3365                     <DEAD TEMP15>
3366                     <END \1aEMPTY-BYTES>
3367 #WORD *1702352460*
3368 <GFCN \1aEMPTY-RECORD ("VALUE" ATOM ANY ANY ANY ANY) SRC4 TG5 DIR6 TPS7>
3369                     <TEMP TEMP11>
3370                     <INTGO>
3371                     <FRAME '\1aIEMIT>
3372                     <PUSH '`EMPR?>
3373                     <PUSH SRC4>
3374                     <DEAD SRC4>
3375                     <TYPE? DIR6 <TYPE-CODE FALSE> + PHRASE10>
3376                     <DEAD DIR6>
3377                     <SET TEMP11 '+ (TYPE ATOM)>
3378                     <JUMP + PHRASE12>
3379 PHRASE10
3380                     <SET TEMP11 '- (TYPE ATOM)>
3381 PHRASE12
3382                     <PUSH TEMP11>
3383                     <DEAD TEMP11>
3384                     <PUSH TG5>
3385                     <DEAD TG5>
3386                     <CONS TPS7 () = TEMP11>
3387                     <DEAD TPS7>
3388                     <CONS '`RECORD-TYPE TEMP11 = STACK>
3389                     <DEAD TEMP11>
3390                     <CALL '\1aIEMIT 5 = TEMP11>
3391                     <RETURN TEMP11>
3392                     <DEAD TEMP11>
3393                     <END \1aEMPTY-RECORD>
3394 #WORD *36742164650*
3395 <GFCN \1aLENGTH-LIST ("VALUE" ATOM ANY ANY) SRC4 DST5>
3396                     <TEMP TEMP7:ATOM>
3397                     <INTGO>
3398                     <FRAME '\1aIEMIT>
3399                     <PUSH '`LENL>
3400                     <PUSH SRC4>
3401                     <DEAD SRC4>
3402                     <PUSH '=>
3403                     <PUSH DST5>
3404                     <DEAD DST5>
3405                     <PUSH (`TYPE FIX)>
3406                     <CALL '\1aIEMIT 5 = TEMP7>
3407                     <RETURN TEMP7>
3408                     <DEAD TEMP7>
3409                     <END \1aLENGTH-LIST>
3410 #WORD *36742544644*
3411 <GFCN \1aLENGTH-UVECTOR ("VALUE" ATOM ANY ANY) SRC4 DST5>
3412                     <TEMP TEMP7:ATOM>
3413                     <INTGO>
3414                     <FRAME '\1aIEMIT>
3415                     <PUSH '`LENUU>
3416                     <PUSH SRC4>
3417                     <DEAD SRC4>
3418                     <PUSH '=>
3419                     <PUSH DST5>
3420                     <DEAD DST5>
3421                     <PUSH (`TYPE FIX)>
3422                     <CALL '\1aIEMIT 5 = TEMP7>
3423                     <RETURN TEMP7>
3424                     <DEAD TEMP7>
3425                     <END \1aLENGTH-UVECTOR>
3426 #WORD *36742545244*
3427 <GFCN \1aLENGTH-VECTOR ("VALUE" ATOM ANY ANY) SRC4 DST5>
3428                     <TEMP TEMP7:ATOM>
3429                     <INTGO>
3430                     <FRAME '\1aIEMIT>
3431                     <PUSH '`LENUV>
3432                     <PUSH SRC4>
3433                     <DEAD SRC4>
3434                     <PUSH '=>
3435                     <PUSH DST5>
3436                     <DEAD DST5>
3437                     <PUSH (`TYPE FIX)>
3438                     <CALL '\1aIEMIT 5 = TEMP7>
3439                     <RETURN TEMP7>
3440                     <DEAD TEMP7>
3441                     <END \1aLENGTH-VECTOR>
3442 #WORD *36742547644*
3443 <GFCN \1aLENGTH-STRING ("VALUE" ATOM ANY ANY) SRC4 DST5>
3444                     <TEMP TEMP7:ATOM>
3445                     <INTGO>
3446                     <FRAME '\1aIEMIT>
3447                     <PUSH '`LENUS>
3448                     <PUSH SRC4>
3449                     <DEAD SRC4>
3450                     <PUSH '=>
3451                     <PUSH DST5>
3452                     <DEAD DST5>
3453                     <PUSH (`TYPE FIX)>
3454                     <CALL '\1aIEMIT 5 = TEMP7>
3455                     <RETURN TEMP7>
3456                     <DEAD TEMP7>
3457                     <END \1aLENGTH-STRING>
3458 #WORD *36742557244*
3459 <GFCN \1aLENGTH-BYTES ("VALUE" ATOM ANY ANY) SRC4 DST5>
3460                     <TEMP TEMP7:ATOM>
3461                     <INTGO>
3462                     <FRAME '\1aIEMIT>
3463                     <PUSH '`LENUB>
3464                     <PUSH SRC4>
3465                     <DEAD SRC4>
3466                     <PUSH '=>
3467                     <PUSH DST5>
3468                     <DEAD DST5>
3469                     <PUSH (`TYPE FIX)>
3470                     <CALL '\1aIEMIT 5 = TEMP7>
3471                     <RETURN TEMP7>
3472                     <DEAD TEMP7>
3473                     <END \1aLENGTH-BYTES>
3474 #WORD *24305305022*
3475 <GFCN \1aLENGTH-RECORD ("VALUE" ATOM ANY ANY ANY) SRC4 DST5 TPS6>
3476                     <TEMP TEMP8>
3477                     <INTGO>
3478                     <FRAME '\1aIEMIT>
3479                     <PUSH '`LENR>
3480                     <PUSH SRC4>
3481                     <DEAD SRC4>
3482                     <PUSH '=>
3483                     <PUSH DST5>
3484                     <DEAD DST5>
3485                     <CONS TPS6 () = TEMP8>
3486                     <DEAD TPS6>
3487                     <CONS '`RECORD-TYPE TEMP8 = STACK>
3488                     <DEAD TEMP8>
3489                     <PUSH (`TYPE FIX)>
3490                     <CALL '\1aIEMIT 6 = TEMP8>
3491                     <RETURN TEMP8>
3492                     <DEAD TEMP8>
3493                     <END \1aLENGTH-RECORD>
3494 #WORD *30661471225*
3495 <GFCN \1aPUT-LIST ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 NUM7 NEW8 TY9>
3496                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
3497 OPT4
3498                     <PUSH %<>>
3499 OPT5
3500                     <TEMP TEMP14:ATOM>
3501                     <INTGO>
3502                     <TYPE? TY9 <TYPE-CODE FALSE> + PHRASE11>
3503                     <FRAME '\1aIEMIT>
3504                     <PUSH '`PUTL>
3505                     <PUSH SRC6>
3506                     <DEAD SRC6>
3507                     <PUSH NUM7>
3508                     <DEAD NUM7>
3509                     <FRAME '\1aATOMCHK>
3510                     <PUSH NEW8>
3511                     <DEAD NEW8>
3512                     <CALL '\1aATOMCHK 1 = STACK>
3513                     <PUSH TY9>
3514                     <DEAD TY9>
3515                     <CALL '\1aIEMIT 5 = TEMP14>
3516                     <RETURN TEMP14>
3517                     <DEAD TEMP14>
3518 PHRASE11
3519                     <FRAME '\1aIEMIT>
3520                     <PUSH '`PUTL>
3521                     <PUSH SRC6>
3522                     <DEAD SRC6>
3523                     <PUSH NUM7>
3524                     <DEAD NUM7>
3525                     <FRAME '\1aATOMCHK>
3526                     <PUSH NEW8>
3527                     <DEAD NEW8>
3528                     <CALL '\1aATOMCHK 1 = STACK>
3529                     <CALL '\1aIEMIT 4 = TEMP14>
3530                     <RETURN TEMP14>
3531                     <DEAD TEMP14>
3532                     <END \1aPUT-LIST>
3533 #WORD *7456411203*
3534 <GFCN \1aPUT-VECTOR ("VALUE" ATOM ANY ANY ANY "OPTIONAL" ANY) SRC6 NUM7 NEW8 TY9>
3535                     <OPT-DISPATCH 3 %<> OPT4 OPT5>
3536 OPT4
3537                     <PUSH %<>>
3538 OPT5
3539                     <TEMP TEMP14:ATOM>
3540                     <INTGO>
3541                     <TYPE? TY9 <TYPE-CODE FALSE> + PHRASE11>
3542                     <FRAME '\1aIEMIT>
3543                     <PUSH '`PUTUV>
3544                     <PUSH SRC6>
3545                     <DEAD SRC6>
3546                     <PUSH NUM7>
3547                     <DEAD NUM7>
3548                     <FRAME '\1aATOMCHK>
3549                     <PUSH NEW8>
3550                     <DEAD NEW8>
3551                     <CALL '\1aATOMCHK 1 = STACK>
3552                     <PUSH TY9>
3553                     <DEAD TY9>
3554                     <CALL '\1aIEMIT 5 = TEMP14>
3555                     <RETURN TEMP14>
3556                     <DEAD TEMP14>
3557 PHRASE11
3558                     <FRAME '\1aIEMIT>
3559                     <PUSH '`PUTUV>
3560                     <PUSH SRC6>
3561                     <DEAD SRC6>
3562                     <PUSH NUM7>
3563                     <DEAD NUM7>
3564                     <FRAME '\1aATOMCHK>
3565                     <PUSH NEW8>
3566                     <DEAD NEW8>
3567                     <CALL '\1aATOMCHK 1 = STACK>
3568                     <CALL '\1aIEMIT 4 = TEMP14>
3569                     <RETURN TEMP14>
3570                     <DEAD TEMP14>
3571                     <END \1aPUT-VECTOR>
3572 #WORD *11513072505*
3573 <GFCN \1aPUT-UVECTOR ("VALUE" ATOM ANY ANY ANY) SRC4 NUM5 NEW6>
3574                     <TEMP TEMP8:ATOM>
3575                     <INTGO>
3576                     <FRAME '\1aIEMIT>
3577                     <PUSH '`PUTUU>
3578                     <PUSH SRC4>
3579                     <DEAD SRC4>
3580                     <PUSH NUM5>
3581                     <DEAD NUM5>
3582                     <PUSH NEW6>
3583                     <DEAD NEW6>
3584                     <CALL '\1aIEMIT 4 = TEMP8>
3585                     <RETURN TEMP8>
3586                     <DEAD TEMP8>
3587                     <END \1aPUT-UVECTOR>
3588 #WORD *11613072505*
3589 <GFCN \1aPUT-STRING ("VALUE" ATOM ANY ANY ANY) SRC4 NUM5 NEW6>
3590                     <TEMP TEMP8:ATOM>
3591                     <INTGO>
3592                     <FRAME '\1aIEMIT>
3593                     <PUSH '`PUTUS>
3594                     <PUSH SRC4>
3595                     <DEAD SRC4>
3596                     <PUSH NUM5>
3597                     <DEAD NUM5>
3598                     <PUSH NEW6>
3599                     <DEAD NEW6>
3600                     <CALL '\1aIEMIT 4 = TEMP8>
3601                     <RETURN TEMP8>
3602                     <DEAD TEMP8>
3603                     <END \1aPUT-STRING>
3604 #WORD *10653072505*
3605 <GFCN \1aPUT-BYTES ("VALUE" ATOM ANY ANY ANY) SRC4 NUM5 NEW6>
3606                     <TEMP TEMP8:ATOM>
3607                     <INTGO>
3608                     <FRAME '\1aIEMIT>
3609                     <PUSH '`PUTUB>
3610                     <PUSH SRC4>
3611                     <DEAD SRC4>
3612                     <PUSH NUM5>
3613                     <DEAD NUM5>
3614                     <PUSH NEW6>
3615                     <DEAD NEW6>
3616                     <CALL '\1aIEMIT 4 = TEMP8>
3617                     <RETURN TEMP8>
3618                     <DEAD TEMP8>
3619                     <END \1aPUT-BYTES>
3620 #WORD *21515124213*
3621 <GFCN \1aPUT-RECORD ("VALUE" ATOM ANY ANY ANY ANY "OPTIONAL" ANY) SRC6 NUM7 NEW8 TPS9 TY10>
3622                     <OPT-DISPATCH 4 %<> OPT4 OPT5>
3623 OPT4
3624                     <PUSH %<>>
3625 OPT5
3626                     <TEMP TEMP15>
3627                     <INTGO>
3628                     <TYPE? TY10 <TYPE-CODE FALSE> + PHRASE12>
3629                     <FRAME '\1aIEMIT>
3630                     <PUSH '`PUTR>
3631                     <PUSH SRC6>
3632                     <DEAD SRC6>
3633                     <PUSH NUM7>
3634                     <DEAD NUM7>
3635                     <FRAME '\1aATOMCHK>
3636                     <PUSH NEW8>
3637                     <DEAD NEW8>
3638                     <CALL '\1aATOMCHK 1 = STACK>
3639                     <CONS TPS9 () = TEMP15>
3640                     <DEAD TPS9>
3641                     <CONS '`RECORD-TYPE TEMP15 = STACK>
3642                     <DEAD TEMP15>
3643                     <PUSH TY10>
3644                     <DEAD TY10>
3645                     <CALL '\1aIEMIT 6 = TEMP15>
3646                     <RETURN TEMP15>
3647                     <DEAD TEMP15>
3648 PHRASE12
3649                     <FRAME '\1aIEMIT>
3650                     <PUSH '`PUTR>
3651                     <PUSH SRC6>
3652                     <DEAD SRC6>
3653                     <PUSH NUM7>
3654                     <DEAD NUM7>
3655                     <FRAME '\1aATOMCHK>
3656                     <PUSH NEW8>
3657                     <DEAD NEW8>
3658                     <CALL '\1aATOMCHK 1 = STACK>
3659                     <CONS TPS9 () = TEMP15>
3660                     <DEAD TPS9>
3661                     <CONS '`RECORD-TYPE TEMP15 = STACK>
3662                     <DEAD TEMP15>
3663                     <CALL '\1aIEMIT 5 = TEMP15>
3664                     <RETURN TEMP15>
3665                     <DEAD TEMP15>
3666                     <END \1aPUT-RECORD>
3667 #WORD *6150273754*
3668 <GFCN \1aPROTECT ("VALUE" ANY ANY) ITM4>
3669                     <TEMP TEMP8>
3670                     <INTGO>
3671                     <TYPE? ITM4 <TYPE-CODE TEMP> - PHRASE6>
3672                     <NTHUV ITM4 2 = TEMP8 (TYPE FIX)>
3673                     <VEQUAL? TEMP8 0 - PHRASE6 (TYPE FIX)>
3674                     <DEAD TEMP8>
3675                     <RETURN ITM4>
3676                     <DEAD ITM4>
3677 PHRASE6
3678                     <FRAME '\1aPUSH>
3679                     <PUSH ITM4>
3680                     <DEAD ITM4>
3681                     <CALL '\1aPUSH 1 = TEMP8>
3682                     <RETURN TEMP8>
3683                     <DEAD TEMP8>
3684                     <END \1aPROTECT>
3685 #WORD *31340356417*
3686 <GFCN \1aGEN-VAL-==? ("VALUE" ATOM ANY ANY ANY ANY) D14 D25 DIR6 BR7>
3687                     <TEMP TEMP13:ATOM>
3688                     <INTGO>
3689                     <FRAME '\1aIEMIT>
3690                     <PUSH '`VEQUAL?>
3691                     <FRAME '\1aATOMCHK>
3692                     <PUSH D14>
3693                     <DEAD D14>
3694                     <CALL '\1aATOMCHK 1 = STACK>
3695                     <FRAME '\1aATOMCHK>
3696                     <PUSH D25>
3697                     <DEAD D25>
3698                     <CALL '\1aATOMCHK 1 = STACK>
3699                     <TYPE? DIR6 <TYPE-CODE FALSE> + PHRASE12>
3700                     <DEAD DIR6>
3701                     <SET TEMP13 '+ (TYPE ATOM)>
3702                     <JUMP + PHRASE14>
3703 PHRASE12
3704                     <SET TEMP13 '- (TYPE ATOM)>
3705 PHRASE14
3706                     <PUSH TEMP13>
3707                     <DEAD TEMP13>
3708                     <PUSH BR7>
3709                     <DEAD BR7>
3710                     <CALL '\1aIEMIT 5 = TEMP13>
3711                     <RETURN TEMP13>
3712                     <DEAD TEMP13>
3713                     <END \1aGEN-VAL-==?>
3714 #WORD *5543604076*
3715 <GFCN \1aGEN-==? ("VALUE" ATOM ANY ANY ANY ANY) D14 D25 DIR6 BR7>
3716                     <TEMP TEMP13:ATOM>
3717                     <INTGO>
3718                     <FRAME '\1aIEMIT>
3719                     <PUSH '`EQUAL?>
3720                     <FRAME '\1aATOMCHK>
3721                     <PUSH D14>
3722                     <DEAD D14>
3723                     <CALL '\1aATOMCHK 1 = STACK>
3724                     <FRAME '\1aATOMCHK>
3725                     <PUSH D25>
3726                     <DEAD D25>
3727                     <CALL '\1aATOMCHK 1 = STACK>
3728                     <TYPE? DIR6 <TYPE-CODE FALSE> + PHRASE12>
3729                     <DEAD DIR6>
3730                     <SET TEMP13 '+ (TYPE ATOM)>
3731                     <JUMP + PHRASE14>
3732 PHRASE12
3733                     <SET TEMP13 '- (TYPE ATOM)>
3734 PHRASE14
3735                     <PUSH TEMP13>
3736                     <DEAD TEMP13>
3737                     <PUSH BR7>
3738                     <DEAD BR7>
3739                     <CALL '\1aIEMIT 5 = TEMP13>
3740                     <RETURN TEMP13>
3741                     <DEAD TEMP13>
3742                     <END \1aGEN-==?>
3743 #WORD *4641046574*
3744 <GFCN \1aPREV-FRAME ("VALUE" ANY ANY) WHERE4>
3745                     <TEMP TEMP7:LIST>
3746                     <INTGO>
3747                     <FRAME '\1aIEMIT>
3748                     <PUSH '`CFRAME>
3749                     <PUSH '=>
3750                     <PUSH WHERE4>
3751                     <CALL '\1aIEMIT 3>
3752                     <FRAME '\1aIEMIT>
3753                     <PUSH '`NTHR>
3754                     <PUSH WHERE4>
3755                     <PUSH 5>
3756                     <PUSH '=>
3757                     <PUSH WHERE4>
3758                     <CONS 'FRAME () = TEMP7>
3759                     <CONS '`RECORD-TYPE TEMP7 = STACK>
3760                     <DEAD TEMP7>
3761                     <CALL '\1aIEMIT 6>
3762                     <RETURN WHERE4>
3763                     <DEAD WHERE4>
3764                     <END \1aPREV-FRAME>
3765 <ENDPACKAGE>