1 /* j/6/mint.c
2 **
3 */
4 #include "all.h"
5 
6 /* logic
7 */
8   static u3_noun
9   _mint_in(u3_noun, u3_noun, u3_noun, u3_noun);
10 
11   static u3_noun
_mint_bean()12   _mint_bean()
13   {
14     return u3kf_fork(u3nt(u3nq(c3__atom, 'f', u3_nul, 0),
15                           u3nq(c3__atom, 'f', u3_nul, 1),
16                           u3_nul));
17   }
18 
19   static u3_noun
_mint_vet(u3_noun van)20   _mint_vet(u3_noun van)
21   {
22     // u3_noun vet = u3j_hook(u3k(van), "vet");
23     u3_noun vet = u3r_at(u3qfu_van_vet, van);
24 
25     switch ( vet ) {
26       case c3n:
27       case c3y: return vet;
28       default: return u3m_bail(c3__fail);
29     }
30   }
31 
32   static u3_noun
_mint_core(u3_noun pac,u3_noun con)33   _mint_core(u3_noun pac,
34              u3_noun con)
35   {
36     if ( (c3__void == pac) ) {
37       return c3__void;
38     } else {
39       return u3nt(c3__core, pac, con);
40     }
41   }
42 
43   static u3_noun
_mint_cond(u3_noun pex,u3_noun yom,u3_noun woq)44   _mint_cond(u3_noun pex,
45              u3_noun yom,
46              u3_noun woq)
47   {
48     if ( 1 == u3h(pex) ) {
49       if ( 0 == u3t(pex) ) {
50         u3z(pex);
51         u3z(woq);
52 
53         return yom;
54       }
55       else if ( 1 == u3t(pex) ) {
56         u3z(pex);
57         u3z(yom);
58 
59         return woq;
60       }
61     }
62     return u3nq(6, pex, yom, woq);
63   }
64 
65   static u3_noun
_mint_corn(u3_noun van,u3_noun sut,u3_noun gen)66   _mint_corn(u3_noun van,
67              u3_noun sut,
68              u3_noun gen)
69   {
70     u3_noun mil = _mint_in(van, sut, c3__noun, gen);
71     u3_noun fol = u3k(u3t(mil));
72 
73     u3z(mil);
74     return fol;
75   }
76 
77   static u3_noun
_mint_nice(u3_noun van,u3_noun gol,u3_noun typ)78   _mint_nice(u3_noun van,
79              u3_noun gol,
80              u3_noun typ)
81   {
82     if ( (c3y == _mint_vet(van)) &&
83          (c3n == u3qfu_nest(van, gol, c3y, typ)) )
84     {
85       // u3_noun dun = u3qfu_dunq(van, "need", gol);
86       // u3_noun niz = u3qfu_dunq(van, "have", typ);
87 
88       // u3t_push(u3nc(c3__mean, dun));
89       // u3t_push(u3nc(c3__mean, niz));
90 
91       return u3m_error("mint-nice");
92     }
93     else return typ;
94   }
95 
96   static u3_noun
_mint_coke(u3_noun nug)97   _mint_coke(u3_noun nug)
98   {
99     if ( 0 == u3h(nug) ) {
100       return u3k(u3t(nug));
101     }
102     else if ( 10 == u3h(nug) ) {
103       return _mint_coke(u3t(u3t(nug)));
104     }
105     else {
106       return u3m_error("mint-coke");
107     }
108   }
109 
110   static u3_noun
_mint_brew(u3_noun van,u3_noun sut,u3_noun tov,u3_noun gen)111   _mint_brew(u3_noun van,
112              u3_noun sut,
113              u3_noun tov,
114              u3_noun gen)
115   {
116     u3_noun von;
117 
118     switch ( tov ) {
119       default: return u3m_bail(c3__fail);
120       case c3y:
121         von = u3k(van); break;
122       case c3n:
123         von = u3i_molt(u3k(van), u3qfu_van_vet, c3n, 0); break;
124     }
125     {
126       u3_noun mil = u3qfu_mint(von, sut, c3__noun, gen);
127       u3_noun fol = u3k(u3t(mil));
128 
129       u3z(mil);
130       u3z(von);
131       return fol;
132     }
133   }
134 
135   static u3_noun
_mint_harp(u3_noun van,u3_noun sut,u3_noun dab)136   _mint_harp(u3_noun van,
137              u3_noun sut,
138              u3_noun dab)
139   {
140     if ( (u3_nul == dab) ) {
141       return 0;
142     }
143     else {
144       u3_noun n_dab, l_dab, r_dab;
145 
146       u3r_trel(dab, &n_dab, &l_dab, &r_dab);
147       if ( c3n == u3du(n_dab) ) {
148         return u3m_bail(c3__fail);
149       }
150       else {
151         u3_noun qqn_dab = u3t(u3t(n_dab));
152         u3_noun vad;
153 
154         switch ( u3h(qqn_dab) ) {
155           default: return u3m_bail(c3__exit);
156           case c3__ash: {
157             vad = _mint_brew(van, sut, c3y, u3t(qqn_dab));
158             break;
159           }
160           case c3__elm: {
161             vad = _mint_brew(van, sut, c3n, u3t(qqn_dab));
162             break;
163           }
164         }
165 
166         if ( (u3_nul == l_dab) && (u3_nul == r_dab) ) {
167           return vad;
168         }
169         else if ( (u3_nul == l_dab) ) {
170           return u3nc(vad, _mint_harp(van, sut, r_dab));
171         }
172         else if ( (u3_nul == r_dab) ) {
173           return u3nc(vad, _mint_harp(van, sut, l_dab));
174         }
175         else {
176           return u3nt(vad,
177                       _mint_harp(van, sut, l_dab),
178                       _mint_harp(van, sut, r_dab));
179         }
180       }
181     }
182   }
183 
184   static u3_noun
_mint_hope(u3_noun van,u3_noun sut,u3_noun dom)185   _mint_hope(u3_noun van,
186              u3_noun sut,
187              u3_noun dom)
188   {
189     if ( (u3_nul == dom) ) {
190       return 0;
191     }
192     else {
193       u3_noun n_dom, l_dom, r_dom;
194 
195       u3r_trel(dom, &n_dom, &l_dom, &r_dom);
196       if ( c3n == u3du(n_dom) ) {
197         return u3m_bail(c3__fail);
198       }
199       else {
200         u3_noun qqn_dom = u3t(u3t(n_dom));
201         u3_noun dov;
202 
203         dov = _mint_harp(van, sut, qqn_dom);
204 
205         if ( (u3_nul == l_dom) && (u3_nul == r_dom) ) {
206           return dov;
207         }
208         else if ( (u3_nul == l_dom) ) {
209           return u3nc(dov, _mint_hope(van, sut, r_dom));
210         }
211         else if ( (u3_nul == r_dom) ) {
212           return u3nc(dov, _mint_hope(van, sut, l_dom));
213         }
214         else {
215           return u3nt(dov,
216                       _mint_hope(van, sut, l_dom),
217                       _mint_hope(van, sut, r_dom));
218         }
219       }
220     }
221   }
222 
223   static u3_noun
_mint_grow(u3_noun van,u3_noun sut,u3_noun gol,u3_atom mel,u3_noun ruf,u3_noun wan,u3_noun dom)224   _mint_grow(u3_noun van,
225              u3_noun sut,
226              u3_noun gol,
227              u3_atom mel,
228              u3_noun ruf,
229              u3_noun wan,
230              u3_noun dom)
231   {
232     u3_noun dan = _mint_in(van, sut, c3__noun, ruf);
233     u3_noun p_dan = u3h(dan);
234     u3_noun q_dan = u3t(dan);
235     u3_noun toc = _mint_core(u3k(p_dan),
236                              u3nq(c3__gold,
237                                   u3k(p_dan),
238                                   u3k(wan),
239                                   u3nc(u3_nul,
240                                        u3k(dom))));
241     u3_noun dez = _mint_hope(van, toc, dom);
242     u3_noun zod = u3nc(1, dez);
243     u3_noun cot = _mint_core(u3k(p_dan),
244                              u3nq(mel,
245                                   u3k(p_dan),
246                                   u3k(wan),
247                                   u3nc(u3k(dez),
248                                        u3k(dom))));
249     u3_noun ret = u3nc(_mint_nice(van, gol, cot),
250                        u3qf_cons(zod, q_dan));
251 
252     u3z(zod);
253     u3z(toc);
254     u3z(dan);
255 
256     return ret;
257   }
258 
259   static u3_noun
_mint_loc(u3_noun van,u3_noun loc)260   _mint_loc(u3_noun van,
261             u3_noun loc)
262   {
263     u3_noun mol = u3nc('o', u3k(loc));
264     u3_noun sho = u3j_hook(u3k(van), "show");
265     u3_noun ret = u3i_molt(u3k(sho), u3x_sam, u3k(mol), 0);
266 
267     u3z(mol);
268     u3z(sho);
269 
270     return ret;
271   }
272 
273 #if 1
274   static u3_noun
_mint_cnts(u3_noun van,u3_noun sut,u3_noun gol,u3_noun hyp,u3_noun rig)275   _mint_cnts(u3_noun van,
276              u3_noun sut,
277              u3_noun gol,
278              u3_noun hyp,
279              u3_noun rig)
280   {
281     u3_noun von = u3i_molt(u3k(van), u3x_sam, u3k(sut), 0);
282     u3_noun gat = u3j_hook(von, "emin");
283 
284     return u3n_kick_on(u3i_molt(gat,
285                                 u3x_sam_2,
286                                 u3k(gol),
287                                 u3x_sam_6,
288                                 u3k(hyp),
289                                 u3x_sam_7,
290                                 u3k(rig),
291                                 0));
292   }
293 #else
294   static u3_noun
_mint_edit(u3_noun van,u3_noun sut,u3_noun mew,u3_noun p_lar,u3_noun rag,u3_noun hej)295   _mint_edit(u3_noun van,
296              u3_noun sut,
297              u3_noun mew,
298              u3_noun p_lar,
299              u3_noun rag,
300              u3_noun hej)
301   {
302     while ( 1 ) {
303       if ( c3n == u3du(mew) ) {
304         u3_noun gim = u3qfu_fire(van, sut, rag);
305         u3_noun fol = u3qf_hike(p_lar, hej);
306 
307         u3z(rag);
308         u3z(hej);
309 
310         return u3nc(gim, fol);
311       } else {
312         u3_noun i_mew = u3h(mew);
313         u3_noun t_mew = u3t(mew);
314         u3_noun pi_mew = u3h(i_mew);
315         u3_noun qi_mew = u3t(i_mew);
316         u3_noun zil = u3qfu_mint(van, sut, c3__noun, qi_mew);
317         u3_noun p_zil = u3h(zil);
318         u3_noun q_zil = u3t(zil);
319         u3_noun wip = u3qfu_toss(van, sut, pi_mew, p_zil, rag);
320 
321         u3z(rag);
322         rag = u3k(u3t(wip));
323 
324         hej = u3nc(u3nc(u3k(u3h(wip)),
325                         u3k(q_zil)),
326                    hej);
327 
328         u3z(zil);
329         u3z(wip);
330 
331         mew = t_mew;
332       }
333     }
334   }
335   static u3_noun
_mint_cnts_old(u3_noun van,u3_noun sut,u3_noun gol,u3_noun hyp,u3_noun rig)336   _mint_cnts_old(u3_noun van,
337                  u3_noun sut,
338                  u3_noun gol,
339                  u3_noun hyp,
340                  u3_noun rig)
341   {
342     u3_noun lar = u3qfu_seek(van, sut, c3__read, hyp);
343     u3_noun p_lar = u3h(lar);
344     u3_noun q_lar = u3t(lar);
345     u3_noun pq_lar = u3h(q_lar);
346     u3_noun qq_lar = u3t(q_lar);
347     u3_noun mew = rig;
348     u3_noun yom = _mint_edit(van, sut, mew, p_lar, u3k(qq_lar), u3_nul);
349     u3_noun p_yom = u3h(yom);
350     u3_noun q_yom = u3t(yom);
351     u3_noun ret = u3nc(_mint_nice(van, gol, u3k(p_yom)),
352                        (0 == pq_lar) ? u3k(q_yom)
353                                      : u3nt(9, u3k(pq_lar), u3k(q_yom)));
354 
355     u3z(yom);
356     u3z(lar);
357 
358     return ret;
359   }
360 #endif
361 
362 # define _mint_used()
363 
364   static u3_noun
_mint_in(u3_noun van,u3_noun sut,u3_noun gol,u3_noun gen)365   _mint_in(u3_noun van,
366            u3_noun sut,
367            u3_noun gol,
368            u3_noun gen)
369   {
370     u3_noun p_gen, q_gen, r_gen;
371     u3_noun ret;
372 
373     if ( (c3__void == sut) &&
374          !((c3y == u3du(gen)) && (c3__dbug == u3h(gen))) )
375     {
376       if ( (c3n == _mint_vet(van))
377            || ((c3y == u3du(gen)) &&
378                ((c3__zpfs == u3h(gen)) ||
379                 (c3__zpsk == u3h(gen)) ||
380                 (c3__lost == u3h(gen)) ||
381                 (c3__fail == u3h(gen)) ||
382                 (c3__zpzp == u3h(gen)))) )
383       {
384         return u3nt(c3__void, 0, 0);
385       }
386       else {
387         return u3m_error("mint-vain");
388       }
389     }
390 
391     if ( c3n == u3du(gen) ) {
392       u3_noun fab = u3r_at(u3qfu_van_fab, van);
393       u3_noun ter = u3r_at(u3x_con_3, van);
394       u3_noun rex = (c3n == fab) ? u3qfp_nepo(ter, gen)
395                                  : u3qfp_open(ter, gen);
396 
397       ret = _mint_in(van, sut, gol, rex);
398       u3z(rex);
399 
400       return ret;
401     }
402     else if ( c3y == u3du(u3h(gen)) ) {
403       _mint_used();
404       {
405         u3_noun hed = _mint_in(van, sut, c3__noun, u3h(gen));
406         u3_noun tal = _mint_in(van, sut, c3__noun, u3t(gen));
407         u3_noun typ = u3qf_cell(u3h(hed), u3h(tal));
408 
409         ret = u3nc(_mint_nice(van, gol, typ),
410                    u3qf_cons(u3t(hed),
411                              u3t(tal)));
412 
413         u3z(hed);
414         u3z(tal);
415 
416         return ret;
417       }
418     } else switch ( u3h(gen) ) {
419       default: {
420         u3_noun fab = u3r_at(u3qfu_van_fab, van);
421         u3_noun ter = u3r_at(u3x_con_3, van);
422         u3_noun rex = (c3n == fab) ? u3qfp_nepo(ter, gen)
423                                    : u3qfp_open(ter, gen);
424 
425         if ( c3y == u3r_sing(rex, gen) ) {
426 #if 1
427           u3_noun zix = u3qfu_shep(van, "gene", 'q', u3k(gen));
428 
429           u3t_push(u3nc(c3__mean, zix));
430           return u3m_error("mint-open");
431 #else
432           u3_err("h", u3h(gen));
433           return u3m_bail(c3__fail);
434 #endif
435         }
436         ret = _mint_in(van, sut, gol, rex);
437         u3z(rex);
438 
439         return ret;
440       }
441 
442       case c3__fits: u3x_cell(u3t(gen), &p_gen, &q_gen);
443       _mint_used();
444       {
445         u3_noun wam = u3qfu_play(van, sut, p_gen);
446         u3_noun dok = u3nc(c3__wing, u3k(q_gen));
447         u3_noun vol = _mint_corn(van, sut, dok);
448         u3_noun axe = _mint_coke(vol);
449 
450         ret = u3nc(_mint_nice(van, gol, _mint_bean()),
451                    u3qfu_fish(van, wam, axe));
452 
453         u3z(axe);
454         u3z(vol);
455         u3z(wam);
456         u3z(dok);
457 
458         return ret;
459       }
460 
461       case c3__wtcl: u3x_trel(u3t(gen), &p_gen, &q_gen, &r_gen);
462       _mint_used();
463       {
464         u3_noun bol = _mint_bean();
465         u3_noun nor = _mint_in(van, sut, bol, p_gen);
466         u3_noun fex = u3qfu_gain(van, sut, p_gen);
467         u3_noun wux = u3qfu_lose(van, sut, p_gen);
468         u3_noun duy = (c3__void == fex)
469                         ? ( (c3__void == wux)
470                              ?  u3nc(0, 0)
471                              :  u3nc(1, 1) )
472                         : ( (c3__void == wux)
473                             ?  u3nc(1, 0)
474                             :  u3k(u3t(nor)) );
475         u3_noun hiq = _mint_in(van, fex, gol, q_gen);
476         u3_noun ran = _mint_in(van, wux, gol, r_gen);
477 
478         ret = u3nc(u3qf_forq(u3h(hiq),
479                    u3h(ran)),
480                    _mint_cond(duy,
481                               u3k(u3t(hiq)),
482                               u3k(u3t(ran))));
483 
484         u3z(ran);
485         u3z(hiq);
486         u3z(nor);
487         u3z(wux);
488         u3z(fex);
489         u3z(bol);
490 
491         return ret;
492       }
493 
494       case c3__clhp: u3x_cell(u3t(gen), &p_gen, &q_gen);
495       _mint_used();
496       {
497         u3_noun hed = _mint_in(van, sut, c3__noun, p_gen);
498         u3_noun tal = _mint_in(van, sut, c3__noun, q_gen);
499         u3_noun typ = u3qf_cell(u3h(hed), u3h(tal));
500 
501         ret = u3nc(_mint_nice(van, gol, typ),
502                    u3qf_cons(u3t(hed),
503                              u3t(tal)));
504 
505         u3z(hed);
506         u3z(tal);
507 
508         return ret;
509       }
510 
511       case c3__dtts: u3x_cell(u3t(gen), &p_gen, &q_gen);
512       _mint_used();
513       {
514         u3_noun typ = _mint_nice(van, gol, _mint_bean());
515         u3_noun one = _mint_in(van, sut, c3__noun, p_gen);
516         u3_noun two = _mint_in(van, sut, c3__noun, q_gen);
517         u3_noun ret;
518 
519         if ( (c3y == _mint_vet(van)) &&
520              (c3n == u3qfu_nest(van, u3h(one), c3n, u3h(two))) &&
521              (c3n == u3qfu_nest(van, u3h(two), c3y, u3h(one))) )
522         {
523           return u3m_error("nest");
524         }
525         ret = u3nc(typ, u3nt(5, u3k(u3t(one)), u3k(u3t(two))));
526         u3z(one);
527         u3z(two);
528 
529         return ret;
530       }
531 
532       case c3__dtwt: p_gen = u3t(gen);
533       _mint_used();
534       {
535         u3_noun typ = _mint_nice(van, gol, _mint_bean());
536 
537         return u3nc(typ,
538                     u3nc(3, _mint_corn(van, sut, p_gen)));
539       }
540 
541       case c3__dtkt: u3x_cell(u3t(gen), &p_gen, &q_gen);
542       _mint_used();
543       {
544         u3_noun nog = u3nc(c3__bunt, u3k(p_gen));
545         u3_noun nef = _mint_in(van, sut, gol, nog);
546         u3_noun viz = _mint_in(van, sut, c3__noun, q_gen);
547 
548         ret = u3nc(u3k(u3h(nef)),
549                    u3nt(11, u3nc(1, u3nc(151, u3k(u3h(nef)))), u3k(u3t(viz))));
550 
551         u3z(viz);
552         u3z(nef);
553         u3z(nog);
554         return ret;
555       }
556 
557       case c3__dtls: p_gen = u3t(gen);
558       _mint_used();
559       {
560         u3_noun tom = u3nt(c3__atom, u3_blip, u3_nul);
561         u3_noun sam = _mint_in(van, sut, tom, p_gen);
562 
563         ret = u3nc(_mint_nice(van, gol, tom),
564                    u3nc(4, u3k(u3t(sam))));
565 
566         u3z(sam);
567         return ret;
568       }
569 
570       case c3__rock: u3x_cell(u3t(gen), &p_gen, &q_gen);
571       _mint_used();
572       {
573         u3_noun typ = u3qfu_play(van, sut, gen);
574         u3_noun ret = u3nc(_mint_nice(van, gol, typ),
575                            u3nc(1, u3k(q_gen)));
576 
577         return ret;
578       }
579 
580       case c3__dttr: u3x_cell(u3t(gen), &p_gen, &q_gen);
581       _mint_used();
582       {
583         u3_noun one = _mint_corn(van, sut, p_gen);
584         u3_noun two = _mint_corn(van, sut, q_gen);
585 
586         return u3nc(_mint_nice(van, gol, c3__noun),
587                     u3nt(2, one, two));
588       }
589 
590       case c3__sand: u3x_cell(u3t(gen), &p_gen, &q_gen);
591       _mint_used();
592       {
593         u3_noun typ = u3qfu_play(van, sut, gen);
594         u3_noun ret = u3nc(_mint_nice(van, gol, typ),
595                            u3nc(1, u3k(q_gen)));
596 
597         return ret;
598       }
599 
600       case c3__hand:
601       _mint_used();
602       {
603         return u3k(u3t(gen));
604       }
605 
606       case c3__ktbr: p_gen = u3t(gen);
607       _mint_used();
608       {
609         u3_noun ryd = _mint_in(van, sut, gol, p_gen);
610         u3_noun tyf = u3qfu_wrap(van, u3h(ryd), c3__iron);
611         u3_noun pro = u3nc(tyf, u3k(u3t(ryd)));
612 
613         u3z(ryd);
614         return pro;
615       }
616 
617       case c3__ktpm: p_gen = u3t(gen);
618       _mint_used();
619       {
620         u3_noun ryd = _mint_in(van, sut, gol, p_gen);
621         u3_noun tyf = u3qfu_wrap(van, u3h(ryd), c3__zinc);
622         u3_noun pro = u3nc(tyf, u3k(u3t(ryd)));
623 
624         u3z(ryd);
625         return pro;
626       }
627 
628       case c3__ktwt: p_gen = u3t(gen);
629       _mint_used();
630       {
631         u3_noun ryd = _mint_in(van, sut, gol, p_gen);
632         u3_noun tyf = u3qfu_wrap(van, u3h(ryd), c3__lead);
633         u3_noun pro = u3nc(tyf, u3k(u3t(ryd)));
634 
635         u3z(ryd);
636         return pro;
637       }
638 
639       case c3__help: u3x_cell(u3t(gen), &p_gen, &q_gen);
640       _mint_used();
641       {
642         u3_noun hum = _mint_in(van, sut, gol, q_gen);
643 
644         u3_noun ret = u3nc(u3qf_help(p_gen, u3h(hum)),
645                            u3k(u3t(hum)));
646         u3z(hum);
647         return ret;
648       }
649 
650       case c3__docs: u3x_cell(u3t(gen), &p_gen, &q_gen);
651       _mint_used();
652       {
653         u3_noun hep = u3nc(c3__docs, u3k(p_gen));
654         u3_noun hum = _mint_in(van, sut, gol, q_gen);
655 
656         u3_noun ret = u3nc(u3qf_help(hep, u3h(hum)),
657                            u3k(u3t(hum)));
658 
659         u3z(hep);
660         u3z(hum);
661         return ret;
662       }
663 
664       case c3__ktts: u3x_cell(u3t(gen), &p_gen, &q_gen);
665       _mint_used();
666       {
667         u3_noun vat = _mint_in(van, sut, gol, q_gen);
668 
669         ret = u3nc(u3qfu_conk(van, u3h(vat), p_gen),
670                    u3k(u3t(vat)));
671 
672         u3z(vat);
673         return ret;
674       }
675 
676       case c3__tune: p_gen = u3t(gen);
677       _mint_used();
678       {
679         return u3nc(u3qf_face(p_gen, sut), u3nc(0, 1));
680       }
681 
682       case c3__ktsg: p_gen = u3t(gen);
683       _mint_used();
684       {
685         u3_noun nef = _mint_in(van, sut, gol, p_gen);
686         u3_noun p_nef = u3h(nef);
687         u3_noun q_nef = u3t(nef);
688         u3_noun fom;
689 
690         {
691           u3_noun cag = u3qfu_burn(van, sut);
692           u3_noun wim = u3n_nock_an(cag, u3k(q_nef));
693 
694           if ( 0 == u3h(wim) ) {
695             fom = u3nc(1, u3k(u3t(wim)));
696           } else {
697             fom = u3k(q_nef);
698           }
699           u3z(wim);
700         }
701         ret = u3nc(u3k(p_nef), fom);
702 
703         u3z(nef);
704         return ret;
705       }
706 
707       case c3__ktls: u3x_cell(u3t(gen), &p_gen, &q_gen);
708       _mint_used();
709       {
710         u3_noun huz = u3qfu_play(van, sut, p_gen);
711         u3_noun hif = _mint_nice(van, gol, huz);
712         u3_noun zel = _mint_in(van, sut, hif, q_gen);
713         u3_noun ret = u3nc(hif, u3k(u3t(zel)));
714 
715         u3z(zel);
716         return ret;
717       }
718 
719       case c3__tsgr: u3x_cell(u3t(gen), &p_gen, &q_gen);
720       _mint_used();
721       {
722         u3_noun fid = _mint_in(van, sut, c3__noun, p_gen);
723         u3_noun p_fid = u3h(fid);
724         u3_noun q_fid = u3t(fid);
725         u3_noun dov = _mint_in(van, p_fid, gol, q_gen);
726         u3_noun p_dov = u3h(dov);
727         u3_noun q_dov = u3t(dov);
728 
729         ret = u3nc(u3k(p_dov),
730                    u3qf_comb(q_fid, q_dov));
731 
732         u3z(fid);
733         u3z(dov);
734         return ret;
735       }
736 
737       case c3__tstr: u3x_trel(u3t(gen), &p_gen, &q_gen, &r_gen);
738       _mint_used();
739       {
740         u3_noun boc = u3qfu_buss(van, sut, p_gen, q_gen);
741         u3_noun ret = _mint_in(van, boc, gol, r_gen);
742 
743         u3z(boc);
744         return ret;
745       }
746 
747       case c3__tscm: u3x_cell(u3t(gen), &p_gen, &q_gen);
748       _mint_used();
749       {
750         u3_noun boc = u3qfu_busk(van, sut, p_gen);
751         u3_noun ret = _mint_in(van, boc, gol, q_gen);
752 
753         u3z(boc);
754         return ret;
755       }
756 
757       case c3__cnts: u3x_cell(u3t(gen), &p_gen, &q_gen);
758       _mint_used();
759       {
760         return _mint_cnts(van, sut, gol, p_gen, q_gen);
761       }
762 
763       case c3__brcn: u3x_cell(u3t(gen), &p_gen, &q_gen);
764       _mint_used();
765       {
766         u3_noun ruf = u3nc(u3_nul, 1);
767 
768         ret = _mint_grow(van, sut, gol, c3__gold, ruf, p_gen, q_gen);
769         u3z(ruf);
770 
771         return ret;
772       }
773 
774       case c3__sgzp: u3x_cell(u3t(gen), &p_gen, &q_gen);
775       _mint_used();
776       {
777         u3_noun typ = u3qfu_play(van, sut, p_gen);
778         u3_noun dug = u3qfu_duck(van, typ);
779 
780         u3t_push(u3nc(c3__mean, dug));
781         {
782           ret = _mint_in(van, sut, gol, q_gen);
783         }
784         u3t_drop();
785 
786         u3z(typ);
787         return ret;
788       }
789 
790       case c3__sggr: u3x_cell(u3t(gen), &p_gen, &q_gen);
791       _mint_used();
792       {
793         u3_noun hum = _mint_in(van, sut, gol, q_gen);
794         u3_noun bez;
795 
796           if ( c3y == u3ud(p_gen) ) {
797             bez = u3k(p_gen);
798           } else {
799             bez = u3nc(u3k(u3h(p_gen)),
800                        _mint_corn(van, sut, u3t(p_gen)));
801           }
802           ret = u3nc(u3k(u3h(hum)),
803                      u3nt(10, bez, u3k(u3t(hum))));
804 
805         u3z(hum);
806         return ret;
807       }
808 
809       case c3__zpts: p_gen = u3t(gen);
810       _mint_used();
811       {
812         u3_noun von = u3i_molt(u3k(van), u3qfu_van_vet, c3n, 0);
813         u3_noun sev = _mint_corn(von, sut, p_gen);
814 
815         u3z(von);
816         return u3nc(c3__noun, u3nc(1, sev));
817       }
818 
819       case c3__ktcn: p_gen = u3t(gen);
820       _mint_used();
821       {
822         u3_noun von = u3i_molt(u3k(van), u3qfu_van_fab, c3n, 0);
823         u3_noun ret = _mint_in(von, sut, gol, p_gen);
824 
825         u3z(von);
826         return ret;
827       }
828 
829       case c3__cold: p_gen = u3t(gen);
830       _mint_used();
831       {
832 
833         c3_m    fun_m = 144 + c3__blow;
834         u3_noun vrf   = u3r_at(u3qfu_van_vrf, van);
835         u3_noun pro   = u3z_find_4(fun_m, vrf, sut, gol, p_gen);
836 
837         if ( u3_none != pro ) {
838           return pro;
839         }
840         else {
841           u3_noun von = u3i_molt(u3k(van), u3x_sam, u3k(sut), 0);
842           u3_noun gat = u3j_hook(von, "blow");
843           u3_noun pro;
844 
845           pro = u3n_kick_on(u3i_molt(gat,
846                             u3x_sam_2,
847                             u3k(gol),
848                             u3x_sam_3,
849                             u3k(p_gen),
850                             0));
851 
852           return u3z_save_4(fun_m, vrf, sut, gol, p_gen, pro);
853         }
854       }
855 
856       case c3__zpcm: u3x_cell(u3t(gen), &p_gen, &q_gen);
857       _mint_used();
858       {
859         return u3nc(_mint_nice(van,
860                                gol,
861                                u3qfu_play(van, sut, p_gen)),
862                     u3nc(1, u3k(q_gen)));
863       }
864 
865       case c3__dbug: u3x_cell(u3t(gen), &p_gen, &q_gen);
866       {
867         u3t_push(u3nc(c3__mean, _mint_loc(van, p_gen)));
868         {
869           u3_noun hum = _mint_in(van, sut, gol, q_gen);
870           u3_noun bez = u3nt(c3__spot, 1, u3k(p_gen));
871 
872           ret = u3nc(u3k(u3h(hum)), u3nt(10, bez, u3k(u3t(hum))));
873           u3z(hum);
874         }
875         u3t_drop();
876         return ret;
877       }
878 
879       case c3__zpsm:
880       case c3__zpmc: u3x_cell(u3t(gen), &p_gen, &q_gen);
881       _mint_used();
882       {
883         u3_noun vos   = _mint_in(van, sut, c3__noun, q_gen);
884         u3_noun zur   = u3qfu_play(van, sut, p_gen);
885         u3_noun p_vos = u3h(vos);
886         u3_noun q_vos = u3t(vos);
887         u3_noun waz   = u3nc(1, u3k(p_vos));
888         u3_noun sif   = u3k(zur);
889         u3_noun cig   = u3qf_cell(sif, p_vos);
890         u3_noun ret;
891 
892         ret = u3nc(_mint_nice(van, gol, cig),
893                    u3qf_cons(waz, q_vos));
894 
895         u3z(waz);
896         u3z(zur);
897         u3z(sif);
898         u3z(vos);
899 
900         return ret;
901       }
902 
903       case c3__lost: p_gen = u3t(gen);
904       _mint_used();
905       {
906         if ( c3y == _mint_vet(van) ) {
907           u3_noun zur = u3qfu_play(van, sut, p_gen);
908           u3_noun dun = u3qfu_dunq(van, "lost", zur);
909 
910           u3t_push(u3nc(c3__mean, dun));
911           return u3m_error("mint-lost");
912         }
913         else {
914           return u3nt(c3__void, 0, 0);
915         }
916       }
917 
918       case c3__fail:
919       case c3__zpzp:
920       _mint_used();
921       {
922         return u3nt(c3__void, 0, 0);
923       }
924     }
925   }
926 
927   static u3_noun
_cqfu_mint(u3_noun van,u3_noun sut,u3_noun gol,u3_noun gen)928   _cqfu_mint(u3_noun van,
929              u3_noun sut,
930              u3_noun gol,
931              u3_noun gen)
932   {
933     return _mint_in(van, sut, gol, gen);
934   }
935 
936 /* boilerplate
937 */
938   u3_noun
u3wfu_mint(u3_noun cor)939   u3wfu_mint(u3_noun cor)
940   {
941     u3_noun sut, gol, gen, van;
942 
943     if ( (c3n == u3r_mean(cor, u3x_sam_2, &gol,
944                                u3x_sam_3, &gen,
945                                u3x_con, &van,
946                                0)) ||
947          (u3_none == (sut = u3r_at(u3x_sam, van))) )
948     {
949       return u3m_bail(c3__fail);
950     } else {
951       return _cqfu_mint(van, sut, gol, gen);
952     }
953   }
954 
955   u3_noun
u3qfu_mint(u3_noun van,u3_noun sut,u3_noun gol,u3_noun gen)956   u3qfu_mint(u3_noun van,
957              u3_noun sut,
958              u3_noun gol,
959              u3_noun gen)
960   {
961     c3_m    fun_m = 144 + c3__mint;
962     u3_noun vrf   = u3r_at(u3qfu_van_vrf, van);
963     u3_noun pro   = u3z_find_4(fun_m, vrf, sut, gol, gen);
964 
965     if ( u3_none != pro ) {
966       return pro;
967     }
968     else {
969       pro = _cqfu_mint(van, sut, gol, gen);
970 
971       return u3z_save_4(fun_m, vrf, sut, gol, gen, pro);
972     }
973   }
974