source: to-imperative/trunk/bootstrap/compiler/rfp_asail_cpp.cc @ 1996

Last change on this file since 1996 was 1996, checked in by orlov, 15 years ago
  • iter, lsplit, and rsplit are renamed to RF_iter, RF_lsplit, and RF_rsplit.
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 131.6 KB
Line 
1#include <rf_core.hh>
2#include <refal/Apply.hh>
3#include <refal/Box.hh>
4#include <refal/Arithm.hh>
5#include <refal/Convert.hh>
6#include <refal/Compare.hh>
7#include <refal/List.hh>
8#include <refal/CppMangle.hh>
9#include <refal/Class.hh>
10#include <refal/Table.hh>
11#include "rfpc.hh"
12#include "rfp_helper.hh"
13#include <refal/StdIO.hh>
14
15namespace refal
16{
17
18using namespace rfrt;
19
20namespace rfp__asail__cpp
21{
22
23static Expr Int;
24
25static Expr Module_m_Name;
26
27static Expr Current_m_Namespace;
28
29static Expr Current_m_Func;
30
31static Expr Current_m_Trace;
32
33static Expr Entry;
34
35static Expr Entry_m_Name;
36
37static Expr Const_m_Exprs;
38
39static Expr Externs;
40
41RF_DECL (RFP_m_ASAIL_m_To_m_CPP);
42
43RF_DECL (ASAIL_m_To_m_CPP);
44
45RF_DECL (Expr_m_To_m_CPP);
46
47RF_DECL (Expr_m_Ref_m_To_m_CPP);
48
49RF_DECL (Term_m_Ref_m_To_m_CPP);
50
51RF_DECL (Expr_m_Int_m_To_m_CPP);
52
53RF_DECL (Cond_m_To_m_CPP);
54
55RF_DECL (Infix_m_To_m_CPP);
56
57RF_DECL (Op_m_Arg_m_To_m_CPP);
58
59RF_DECL (Step_m_To_m_CPP);
60
61RF_DECL (Const_m_Expr_m_To_m_CPP);
62
63RF_DECL (Const_m_Expr_m_Aux);
64
65RF_DECL (Symbol_m_To_m_CPP);
66
67RF_DECL (Args_m_To_m_CPP);
68
69RF_DECL (Name_m_To_m_CPP);
70
71RF_DECL (Namespace_m_Control);
72
73RF_DECL (Trace_m_Enter);
74
75RF_DECL (Trace_m_Exit);
76
77RF_DECL (Trace_m_Fail);
78
79RF_DECL (Extract_m_Qualifiers);
80
81static Expr _c_0;
82
83static Expr _c_1;
84
85static Expr _c_2;
86
87static Expr _c_175;
88
89static Expr _c_32;
90
91static Expr _c_6;
92
93static Expr _c_8;
94
95static Expr _c_3;
96
97static Expr _c_4;
98
99static Expr _c_5;
100
101static Expr _c_7;
102
103static Expr _c_9;
104
105static Expr _c_10;
106
107static Expr _c_176;
108
109static Expr _c_11;
110
111static Expr _c_12;
112
113static Expr _c_13;
114
115static Expr _c_14;
116
117static Expr _c_15;
118
119static Expr _c_16;
120
121static Expr _c_17;
122
123static Expr _c_59;
124
125static Expr _c_18;
126
127static Expr _c_19;
128
129static Expr _c_159;
130
131static Expr _c_20;
132
133static Expr _c_21;
134
135static Expr _c_22;
136
137static Expr _c_23;
138
139static Expr _c_165;
140
141static Expr _c_24;
142
143static Expr _c_25;
144
145static Expr _c_26;
146
147static Expr _c_27;
148
149static Expr _c_83;
150
151static Expr _c_28;
152
153static Expr _c_29;
154
155static Expr _c_30;
156
157static Expr _c_31;
158
159static Expr _c_34;
160
161static Expr _c_33;
162
163static Expr _c_35;
164
165static Expr _c_36;
166
167static Expr _c_37;
168
169static Expr _c_38;
170
171static Expr _c_39;
172
173static Expr _c_40;
174
175static Expr _c_41;
176
177static Expr _c_177;
178
179static Expr _c_42;
180
181static Expr _c_43;
182
183static Expr _c_44;
184
185static Expr _c_45;
186
187static Expr _c_46;
188
189static Expr _c_47;
190
191static Expr _c_48;
192
193static Expr _c_49;
194
195static Expr _c_50;
196
197static Expr _c_51;
198
199static Expr _c_52;
200
201static Expr _c_53;
202
203static Expr _c_54;
204
205static Expr _c_76;
206
207static Expr _c_55;
208
209static Expr _c_56;
210
211static Expr _c_57;
212
213static Expr _c_58;
214
215static Expr _c_60;
216
217static Expr _c_61;
218
219static Expr _c_62;
220
221static Expr _c_63;
222
223static Expr _c_64;
224
225static Expr _c_65;
226
227static Expr _c_66;
228
229static Expr _c_67;
230
231static Expr _c_68;
232
233static Expr _c_69;
234
235static Expr _c_70;
236
237static Expr _c_168;
238
239static Expr _c_71;
240
241static Expr _c_72;
242
243static Expr _c_73;
244
245static Expr _c_74;
246
247static Expr _c_75;
248
249static Expr _c_77;
250
251static Expr _c_78;
252
253static Expr _c_79;
254
255static Expr _c_80;
256
257static Expr _c_81;
258
259static Expr _c_82;
260
261static Expr _c_84;
262
263static Expr _c_85;
264
265static Expr _c_86;
266
267static Expr _c_87;
268
269static Expr _c_88;
270
271static Expr _c_89;
272
273static Expr _c_90;
274
275static Expr _c_91;
276
277static Expr _c_92;
278
279static Expr _c_93;
280
281static Expr _c_94;
282
283static Expr _c_95;
284
285static Expr _c_96;
286
287static Expr _c_97;
288
289static Expr _c_98;
290
291static Expr _c_99;
292
293static Expr _c_100;
294
295static Expr _c_101;
296
297static Expr _c_102;
298
299static Expr _c_103;
300
301static Expr _c_104;
302
303static Expr _c_105;
304
305static Expr _c_106;
306
307static Expr _c_107;
308
309static Expr _c_108;
310
311static Expr _c_109;
312
313static Expr _c_110;
314
315static Expr _c_111;
316
317static Expr _c_112;
318
319static Expr _c_113;
320
321static Expr _c_114;
322
323static Expr _c_115;
324
325static Expr _c_116;
326
327static Expr _c_117;
328
329static Expr _c_118;
330
331static Expr _c_119;
332
333static Expr _c_120;
334
335static Expr _c_121;
336
337static Expr _c_122;
338
339static Expr _c_123;
340
341static Expr _c_124;
342
343static Expr _c_125;
344
345static Expr _c_126;
346
347static Expr _c_127;
348
349static Expr _c_128;
350
351static Expr _c_129;
352
353static Expr _c_130;
354
355static Expr _c_131;
356
357static Expr _c_132;
358
359static Expr _c_133;
360
361static Expr _c_134;
362
363static Expr _c_135;
364
365static Expr _c_136;
366
367static Expr _c_137;
368
369static Expr _c_138;
370
371static Expr _c_139;
372
373static Expr _c_141;
374
375static Expr _c_140;
376
377static Expr _c_142;
378
379static Expr _c_143;
380
381static Expr _c_144;
382
383static Expr _c_147;
384
385static Expr _c_145;
386
387static Expr _c_146;
388
389static Expr _c_149;
390
391static Expr _c_148;
392
393static Expr _c_150;
394
395static Expr _c_151;
396
397static Expr _c_152;
398
399static Expr _c_153;
400
401static Expr _c_154;
402
403static Expr _c_155;
404
405static Expr _c_156;
406
407static Expr _c_157;
408
409static Expr _c_158;
410
411static Expr _c_160;
412
413static Expr _c_161;
414
415static Expr _c_162;
416
417static Expr _c_163;
418
419static Expr _c_164;
420
421static Expr _c_166;
422
423static Expr _c_167;
424
425static Expr _c_172;
426
427static Expr _c_169;
428
429static Expr _c_170;
430
431static Expr _c_171;
432
433static Expr _c_173;
434
435static Expr _c_174;
436
437RF_FUNC (RFP_m_ASAIL_m_To_m_CPP, (RF_ARG _v_arg1, _v_arg2;;), (RF_RES _v_res1;;))
438  uintptr_t _v_len1 = (_v_arg2.get_len () + 1);
439  uintptr_t _v_len2 = 1;
440  if ((_v_len1 < _v_len2))
441  {
442    RF_FUNC_ERROR (unexpected_fail);
443  }
444  uintptr_t _v_len__asail = (_v_len1 - _v_len2);
445  Expr _v_compose1 ((_v_arg1 + _v_arg2));
446  if (_v_compose1.symbol_at (0))
447  {
448    RF_FUNC_ERROR (unexpected_fail);
449  }
450  Expr _v_deref__compose1 (_v_compose1, 0);
451  uintptr_t _v_len3 = _v_deref__compose1.get_len ();
452  uintptr_t _v_len4 = 0;
453  if ((_v_len3 < _v_len4))
454  {
455    RF_FUNC_ERROR (unexpected_fail);
456  }
457  uintptr_t _v_len__ModuleName = (_v_len3 - _v_len4);
458  Expr _ve_asail (_v_compose1, 1, _v_len__asail);
459  Expr _ve_ModuleName (_v_deref__compose1, 0, _v_len__ModuleName);
460  {
461    {
462      Expr _v_Lookup1;
463      if (!RF_CALL (Table::Lookup, (rfp__helper::RFP_m_Options, _c_0), _v_Lookup1))
464      {
465        goto _block1__branch1;
466      }
467      RF_CALL (Box::Store, (Int, _v_Lookup1), /*void*/);
468      goto _block1;
469    }
470  _block1__branch1: {}
471    RF_CALL (Box::Store, (Int, _c_1), /*void*/);
472  }
473_block1: {}
474  RF_CALL (Box::Store, (Module_m_Name, _ve_ModuleName), /*void*/);
475  RF_CALL (Box::Store, (Current_m_Namespace, empty), /*void*/);
476  RF_CALL (Box::Store, (Entry, (_ve_ModuleName + _c_2) ()), /*void*/);
477  RF_CALL (Box::Store, (Entry_m_Name, empty), /*void*/);
478  RF_CALL (Box::Store, (Const_m_Exprs, empty), /*void*/);
479  RF_CALL (rfp__helper::RFP_m_Clear_m_Table, Externs, /*void*/);
480  {
481    {
482      Expr _v_ASAIL_m_To_m_CPP1;
483      RF_CALL (ASAIL_m_To_m_CPP, _ve_asail, _v_ASAIL_m_To_m_CPP1);
484      uintptr_t _v_len5 = _v_ASAIL_m_To_m_CPP1.get_len ();
485      uintptr_t _v_len6 = 0;
486      if ((_v_len5 < (_v_len6 + 1)))
487      {
488        goto _block2__branch1;
489      }
490      uintptr_t _v_len__cpp = (_v_len5 - _v_len6);
491      Expr _vv_cpp (_v_ASAIL_m_To_m_CPP1, 0, _v_len__cpp);
492      Expr _ve_close_m_namespace;
493      {
494        {
495          Expr _v__q_1;
496          RF_CALL (Box::_q_, Current_m_Namespace, _v__q_1);
497          uintptr_t _v_len7 = _v__q_1.get_len ();
498          uintptr_t _v_len8 = 0;
499          if ((_v_len7 < (_v_len8 + 1)))
500          {
501            goto _block3__branch1;
502          }
503          uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_74_m_35 = (_v_len7 - _v_len8);
504          Expr _vv__e__e_tmp_m_rfp__asail__cpprf_m_74_m_35 (_v__q_1, 0, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_74_m_35);
505          _ve_close_m_namespace = _c_3;
506          goto _block3;
507        }
508      _block3__branch1: {}
509        _ve_close_m_namespace = empty;
510      }
511    _block3: {}
512      RF_CALL (Box::Store, (Current_m_Namespace, empty), /*void*/);
513      Expr _ve_entry;
514      {
515        {
516          Expr _v__q_2;
517          RF_CALL (Box::_q_, Entry_m_Name, _v__q_2);
518          uintptr_t _v_len9 = _v__q_2.get_len ();
519          uintptr_t _v_len10 = 0;
520          if ((_v_len9 < (_v_len10 + 1)))
521          {
522            goto _block4__branch1;
523          }
524          uintptr_t _v_len__name = (_v_len9 - _v_len10);
525          Expr _vv_name (_v__q_2, 0, _v_len__name);
526          _ve_entry = (_c_5 + _vv_name + _c_4) ();
527          goto _block4;
528        }
529      _block4__branch1: {}
530        _ve_entry = empty;
531      }
532    _block4: {}
533      Expr _ve_init;
534      {
535        {
536          Expr _v__q_3;
537          RF_CALL (Box::_q_, Const_m_Exprs, _v__q_3);
538          uintptr_t _v_len11 = _v__q_3.get_len ();
539          uintptr_t _v_len12 = 0;
540          if ((_v_len11 < (_v_len12 + 1)))
541          {
542            goto _block5__branch1;
543          }
544          uintptr_t _v_len__c_m_exprs = (_v_len11 - _v_len12);
545          Expr _vv_c_m_exprs (_v__q_3, 0, _v_len__c_m_exprs);
546          Expr _ve_c_m_exprs;
547          RF_CALL (Box::_q_, Const_m_Exprs, _ve_c_m_exprs);
548          Expr _ve_init_m_consts (empty);
549          for ( ; ; )
550          {
551            {
552              if ((_ve_c_m_exprs.get_len () != 0))
553              {
554                goto _iter1;
555              }
556              Expr _v__q_4;
557              RF_CALL (Box::_q_, Module_m_Name, _v__q_4);
558              Expr _v_Namespace_m_Control1;
559              RF_CALL (Namespace_m_Control, _v__q_4, _v_Namespace_m_Control1);
560              _ve_init = (_v_Namespace_m_Control1 + (_c_7 + _ve_init_m_consts () + _c_6) () + _c_8);
561              goto _exit__iter1;
562            }
563          _iter1: {}
564            uintptr_t _v_len13 = _ve_c_m_exprs.get_len ();
565            uintptr_t _v_len14 = 1;
566            if ((_v_len13 < _v_len14))
567            {
568              RF_FUNC_ERROR (unexpected_fail);
569            }
570            uintptr_t _v_len__rest = (_v_len13 - _v_len14);
571            if (_ve_c_m_exprs.symbol_at (0))
572            {
573              RF_FUNC_ERROR (unexpected_fail);
574            }
575            Expr _v_deref__c_m_exprs (_ve_c_m_exprs, 0);
576            uintptr_t _v_len15 = _v_deref__c_m_exprs.get_len ();
577            uintptr_t _v_len16 = 1;
578            if ((_v_len15 < _v_len16))
579            {
580              RF_FUNC_ERROR (unexpected_fail);
581            }
582            uintptr_t _v_len__cpp_m_name = (_v_len15 - _v_len16);
583            if (_v_deref__c_m_exprs.symbol_at (_v_len__cpp_m_name))
584            {
585              RF_FUNC_ERROR (unexpected_fail);
586            }
587            Expr _v_deref__deref__c_m_exprs (_v_deref__c_m_exprs, _v_len__cpp_m_name);
588            uintptr_t _v_len17 = _v_deref__deref__c_m_exprs.get_len ();
589            uintptr_t _v_len18 = 0;
590            if ((_v_len17 < _v_len18))
591            {
592              RF_FUNC_ERROR (unexpected_fail);
593            }
594            uintptr_t _v_len__value = (_v_len17 - _v_len18);
595            Expr _ve_rest (_ve_c_m_exprs, 1, _v_len__rest);
596            Expr _ve_cpp_m_name (_v_deref__c_m_exprs, 0, _v_len__cpp_m_name);
597            Expr _ve_value (_v_deref__deref__c_m_exprs, 0, _v_len__value);
598            _ve_init_m_consts = (_ve_init_m_consts + (_ve_cpp_m_name + _c_10 + _ve_value + _c_9) ());
599            _ve_c_m_exprs = _ve_rest;
600          }
601        _exit__iter1: {}
602          goto _block5;
603        }
604      _block5__branch1: {}
605        _ve_init = empty;
606      }
607    _block5: {}
608      _v_res1 = (_c_11 + _vv_cpp + _ve_close_m_namespace + _ve_init + _ve_entry + _c_3);
609      goto _block2;
610    }
611  _block2__branch1: {}
612    _v_res1 = empty;
613  }
614_block2: {}
615RF_END
616
617RF_FUNC (ASAIL_m_To_m_CPP, (RF_ARG _ve_asail;;), (RF_RES _v_res1;;))
618  {
619    {
620      uintptr_t _v_len1 = _ve_asail.get_len ();
621      uintptr_t _v_len2 = 1;
622      if ((_v_len1 < _v_len2))
623      {
624        goto _block1__branch1;
625      }
626      uintptr_t _v_len__rest = (_v_len1 - _v_len2);
627      Expr _vt_item (_ve_asail, 0, 1);
628      Expr _ve_rest (_ve_asail, 1, _v_len__rest);
629      Expr _ve_cpp_m_item;
630      {
631        {
632          if (_vt_item.symbol_at (0))
633          {
634            goto _block2__branch1;
635          }
636          Expr _v_deref__item (_vt_item, 0);
637          uintptr_t _v_len3 = _v_deref__item.get_len ();
638          uintptr_t _v_len4 = 4;
639          if ((_v_len3 < _v_len4))
640          {
641            goto _block2__branch1;
642          }
643          uintptr_t _v_len__body = (_v_len3 - _v_len4);
644          if (_v_deref__item.symbol_at (2))
645          {
646            goto _block2__branch1;
647          }
648          if (_v_deref__item.symbol_at (3))
649          {
650            goto _block2__branch1;
651          }
652          Expr _v_deref__deref__item (_v_deref__item, 2);
653          Expr _v_deref__deref__item2 (_v_deref__item, 3);
654          uintptr_t _v_len5 = _v_deref__deref__item2.get_len ();
655          uintptr_t _v_len6 = 0;
656          if ((_v_len5 < _v_len6))
657          {
658            goto _block2__branch1;
659          }
660          uintptr_t _v_len__ress = (_v_len5 - _v_len6);
661          uintptr_t _v_len7 = _v_deref__deref__item.get_len ();
662          uintptr_t _v_len8 = 0;
663          if ((_v_len7 < _v_len8))
664          {
665            goto _block2__branch1;
666          }
667          uintptr_t _v_len__args = (_v_len7 - _v_len8);
668          if (!_v_deref__item.symbol_at (0))
669          {
670            goto _block2__branch1;
671          }
672          Expr _vs_tag (_v_deref__item, 0, 1);
673          Expr _vt_name (_v_deref__item, 1, 1);
674          Expr _ve_body (_v_deref__item, 4, _v_len__body);
675          Expr _ve_args (_v_deref__deref__item, 0, _v_len__args);
676          Expr _ve_ress (_v_deref__deref__item2, 0, _v_len__ress);
677          Expr _ve_return_m_type;
678          Expr _ve_return;
679          {
680            {
681              if (!_vs_tag.term_eq (_c_12, 0))
682              {
683                goto _block3__branch1;
684              }
685              _ve_return_m_type = _c_13;
686              _ve_return = empty;
687              goto _block3;
688            }
689          _block3__branch1: {}
690            if (!_vs_tag.term_eq (_c_14, 0))
691            {
692              goto _block2__branch1;
693            }
694            _ve_return_m_type = _c_15;
695            _ve_return = _c_16;
696          }
697        _block3: {}
698          RF_CALL (Box::Store, (Current_m_Func, _vt_name), /*void*/);
699          {
700            {
701              Expr _v__q_1;
702              RF_CALL (Box::_q_, Entry, _v__q_1);
703              if ((_v__q_1.get_len () != 1))
704              {
705                goto _block4__branch1;
706              }
707              if (!_vt_name.term_eq (_v__q_1, 0))
708              {
709                goto _block4__branch1;
710              }
711              Expr _v_Rfp2Cpp1;
712              RF_CALL (CppMangle::Rfp2Cpp, _vt_name, _v_Rfp2Cpp1);
713              RF_CALL (Box::Store, (Entry_m_Name, _v_Rfp2Cpp1), /*void*/);
714              goto _block4;
715            }
716          _block4__branch1: {}
717          }
718        _block4: {}
719          Expr _ve_trace_m_enter;
720          Expr _ve_trace_m_exit;
721          {
722            {
723              {
724                {
725                  if (!RF_CALL (Table::In_m_Table_q_, (rfp__helper::RFP_m_Options, _c_17), /*void*/))
726                  {
727                    goto _block6__branch1;
728                  }
729                  goto _block6;
730                }
731              _block6__branch1: {}
732                if (!RF_CALL (Table::In_m_Table_q_, (rfpc::RFP_m_Trace, _vt_name), /*void*/))
733                {
734                  goto _block5__branch1;
735                }
736              }
737            _block6: {}
738              Expr _v_Concat1;
739              RF_CALL (List::Concat, _vt_name, _v_Concat1);
740              Expr _ve_name;
741              RF_CALL (List::Intersperse, (_c_18, _v_Concat1), _ve_name);
742              RF_CALL (Box::Store, (Current_m_Trace, (_ve_name + _ve_ress ())), /*void*/);
743              RF_CALL (Trace_m_Enter, (_ve_name, _ve_args), _ve_trace_m_enter);
744              RF_CALL (Trace_m_Exit, (_ve_name, _ve_ress), _ve_trace_m_exit);
745              goto _block5;
746            }
747          _block5__branch1: {}
748            RF_CALL (Box::Store, (Current_m_Trace, empty), /*void*/);
749            _ve_trace_m_enter = empty;
750            _ve_trace_m_exit = empty;
751          }
752        _block5: {}
753          Expr _ve_qualifiers;
754          Expr _ve_name;
755          RF_CALL (Extract_m_Qualifiers, _vt_name, (_ve_qualifiers, _ve_name));
756          Expr _v_Namespace_m_Control1;
757          RF_CALL (Namespace_m_Control, _ve_qualifiers, _v_Namespace_m_Control1);
758          Expr _v_Rfp2Cpp2;
759          RF_CALL (CppMangle::Rfp2Cpp, _ve_name, _v_Rfp2Cpp2);
760          Expr _v_Args_m_To_m_CPP1;
761          RF_CALL (Args_m_To_m_CPP, (_c_19, _c_20, _ve_args), _v_Args_m_To_m_CPP1);
762          Expr _v_Args_m_To_m_CPP2;
763          RF_CALL (Args_m_To_m_CPP, (_c_21, _c_20, _ve_ress), _v_Args_m_To_m_CPP2);
764          Expr _v_ASAIL_m_To_m_CPP1;
765          RF_CALL (ASAIL_m_To_m_CPP, _ve_body, _v_ASAIL_m_To_m_CPP1);
766          _ve_cpp_m_item = (_v_Namespace_m_Control1 + (_c_25 + _v_Rfp2Cpp2 + _c_24 + _v_Args_m_To_m_CPP1 + _c_24 + _v_Args_m_To_m_CPP2 + _c_23 + (_ve_trace_m_enter + _v_ASAIL_m_To_m_CPP1 + _ve_trace_m_exit) () + _c_22) ());
767          goto _block2;
768        }
769      _block2__branch1: {}
770        {
771          if (_vt_item.symbol_at (0))
772          {
773            goto _block2__branch2;
774          }
775          Expr _v_deref__item2 (_vt_item, 0);
776          if ((_v_deref__item2.get_len () != 2))
777          {
778            goto _block2__branch2;
779          }
780          if (!_c_26.term_eq (_v_deref__item2, 0))
781          {
782            goto _block2__branch2;
783          }
784          Expr _vt_name (_v_deref__item2, 1, 1);
785          RF_CALL (Table::Bind, (rfpc::RFP_m_Trace, _vt_name, empty), /*void*/);
786          _ve_cpp_m_item = empty;
787          goto _block2;
788        }
789      _block2__branch2: {}
790        {
791          if (_vt_item.symbol_at (0))
792          {
793            goto _block2__branch3;
794          }
795          Expr _v_deref__item3 (_vt_item, 0);
796          uintptr_t _v_len9 = _v_deref__item3.get_len ();
797          uintptr_t _v_len10 = 2;
798          if ((_v_len9 < _v_len10))
799          {
800            goto _block2__branch3;
801          }
802          uintptr_t _v_len__body2 = (_v_len9 - _v_len10);
803          if (_v_deref__item3.symbol_at (1))
804          {
805            goto _block2__branch3;
806          }
807          Expr _v_deref__deref__item3 (_v_deref__item3, 1);
808          uintptr_t _v_len11 = _v_deref__deref__item3.get_len ();
809          uintptr_t _v_len12 = 0;
810          if ((_v_len11 < _v_len12))
811          {
812            goto _block2__branch3;
813          }
814          uintptr_t _v_len__cond = (_v_len11 - _v_len12);
815          if (!_c_27.term_eq (_v_deref__item3, 0))
816          {
817            goto _block2__branch3;
818          }
819          Expr _ve_body (_v_deref__item3, 2, _v_len__body2);
820          Expr _ve_cond (_v_deref__deref__item3, 0, _v_len__cond);
821          Expr _v_Cond_m_To_m_CPP1;
822          RF_CALL (Cond_m_To_m_CPP, _ve_cond, _v_Cond_m_To_m_CPP1);
823          Expr _v_ASAIL_m_To_m_CPP2;
824          RF_CALL (ASAIL_m_To_m_CPP, _ve_body, _v_ASAIL_m_To_m_CPP2);
825          _ve_cpp_m_item = ((_c_28 + _v_Cond_m_To_m_CPP1 + _c_23) () + (_c_29 + _v_ASAIL_m_To_m_CPP2 () + _c_6) ());
826          goto _block2;
827        }
828      _block2__branch3: {}
829        {
830          if (_vt_item.symbol_at (0))
831          {
832            goto _block2__branch4;
833          }
834          Expr _v_deref__item4 (_vt_item, 0);
835          uintptr_t _v_len13 = _v_deref__item4.get_len ();
836          uintptr_t _v_len14 = 5;
837          if ((_v_len13 < _v_len14))
838          {
839            goto _block2__branch4;
840          }
841          uintptr_t _v_len__body3 = (_v_len13 - _v_len14);
842          if (_v_deref__item4.symbol_at (1))
843          {
844            goto _block2__branch4;
845          }
846          if (_v_deref__item4.symbol_at (2))
847          {
848            goto _block2__branch4;
849          }
850          if (_v_deref__item4.symbol_at (3))
851          {
852            goto _block2__branch4;
853          }
854          if (_v_deref__item4.symbol_at (4))
855          {
856            goto _block2__branch4;
857          }
858          Expr _v_deref__deref__item4 (_v_deref__item4, 1);
859          Expr _v_deref__deref__item42 (_v_deref__item4, 2);
860          Expr _v_deref__deref__item43 (_v_deref__item4, 3);
861          Expr _v_deref__deref__item44 (_v_deref__item4, 4);
862          uintptr_t _v_len15 = _v_deref__deref__item4.get_len ();
863          uintptr_t _v_len16 = 0;
864          if ((_v_len15 < _v_len16))
865          {
866            goto _block2__branch4;
867          }
868          uintptr_t _v_len__cont_m_label = (_v_len15 - _v_len16);
869          uintptr_t _v_len17 = _v_deref__deref__item42.get_len ();
870          uintptr_t _v_len18 = 0;
871          if ((_v_len17 < _v_len18))
872          {
873            goto _block2__branch4;
874          }
875          uintptr_t _v_len__break_m_label = (_v_len17 - _v_len18);
876          uintptr_t _v_len19 = _v_deref__deref__item44.get_len ();
877          uintptr_t _v_len20 = 0;
878          if ((_v_len19 < _v_len20))
879          {
880            goto _block2__branch4;
881          }
882          uintptr_t _v_len__step = (_v_len19 - _v_len20);
883          uintptr_t _v_len21 = _v_deref__deref__item43.get_len ();
884          uintptr_t _v_len22 = 0;
885          if ((_v_len21 < _v_len22))
886          {
887            goto _block2__branch4;
888          }
889          uintptr_t _v_len__cond2 = (_v_len21 - _v_len22);
890          if (!_c_30.term_eq (_v_deref__item4, 0))
891          {
892            goto _block2__branch4;
893          }
894          Expr _ve_body (_v_deref__item4, 5, _v_len__body3);
895          Expr _ve_cont_m_label (_v_deref__deref__item4, 0, _v_len__cont_m_label);
896          Expr _ve_break_m_label (_v_deref__deref__item42, 0, _v_len__break_m_label);
897          Expr _ve_cond (_v_deref__deref__item43, 0, _v_len__cond2);
898          Expr _ve_step (_v_deref__deref__item44, 0, _v_len__step);
899          {
900            {
901              if ((_v_len__cont_m_label != 1))
902              {
903                goto _block7__branch1;
904              }
905              Expr _vt__e__e_tmp_m_rfp__asail__cpprf_m_132_m_25 (_ve_cont_m_label, 0, 1);
906              Expr _v_ASAIL_m_To_m_CPP3;
907              RF_CALL (ASAIL_m_To_m_CPP, _ve_body, _v_ASAIL_m_To_m_CPP3);
908              Expr _v_Rfp2Cpp3;
909              RF_CALL (CppMangle::Rfp2Cpp, (_c_31 + _ve_cont_m_label) (), _v_Rfp2Cpp3);
910              _ve_body = (_c_29 + (_c_29 + _v_ASAIL_m_To_m_CPP3 () + _c_6) () + (_c_31 + _v_Rfp2Cpp3 + _c_32) () + _c_6) ();
911              goto _block7;
912            }
913          _block7__branch1: {}
914            Expr _v_ASAIL_m_To_m_CPP4;
915            RF_CALL (ASAIL_m_To_m_CPP, _ve_body, _v_ASAIL_m_To_m_CPP4);
916            _ve_body = (_c_29 + _v_ASAIL_m_To_m_CPP4 () + _c_6) ();
917          }
918        _block7: {}
919          Expr _ve_break;
920          {
921            {
922              if ((_v_len__break_m_label != 1))
923              {
924                goto _block8__branch1;
925              }
926              Expr _vt__e__e_tmp_m_rfp__asail__cpprf_m_140_m_26 (_ve_break_m_label, 0, 1);
927              Expr _v_Rfp2Cpp4;
928              RF_CALL (CppMangle::Rfp2Cpp, (_c_31 + _ve_break_m_label) (), _v_Rfp2Cpp4);
929              _ve_break = (_c_31 + _v_Rfp2Cpp4 + _c_32) ();
930              goto _block8;
931            }
932          _block8__branch1: {}
933            _ve_break = empty;
934          }
935        _block8: {}
936          Expr _v_Cond_m_To_m_CPP2;
937          RF_CALL (Cond_m_To_m_CPP, _ve_cond, _v_Cond_m_To_m_CPP2);
938          Expr _v_Step_m_To_m_CPP1;
939          RF_CALL (Step_m_To_m_CPP, _ve_step, _v_Step_m_To_m_CPP1);
940          _ve_cpp_m_item = ((_c_34 + _v_Cond_m_To_m_CPP2 + _c_33 + _v_Step_m_To_m_CPP1 + _c_23) () + _ve_body + _ve_break);
941          goto _block2;
942        }
943      _block2__branch4: {}
944        {
945          if (_vt_item.symbol_at (0))
946          {
947            goto _block2__branch5;
948          }
949          Expr _v_deref__item5 (_vt_item, 0);
950          uintptr_t _v_len23 = _v_deref__item5.get_len ();
951          uintptr_t _v_len24 = 2;
952          if ((_v_len23 < _v_len24))
953          {
954            goto _block2__branch5;
955          }
956          uintptr_t _v_len__body4 = (_v_len23 - _v_len24);
957          if (_v_deref__item5.symbol_at (1))
958          {
959            goto _block2__branch5;
960          }
961          Expr _v_deref__deref__item5 (_v_deref__item5, 1);
962          uintptr_t _v_len25 = _v_deref__deref__item5.get_len ();
963          uintptr_t _v_len26 = 0;
964          if ((_v_len25 < _v_len26))
965          {
966            goto _block2__branch5;
967          }
968          uintptr_t _v_len__label = (_v_len25 - _v_len26);
969          if (!_c_31.term_eq (_v_deref__item5, 0))
970          {
971            goto _block2__branch5;
972          }
973          Expr _ve_body (_v_deref__item5, 2, _v_len__body4);
974          Expr _ve_label (_v_deref__deref__item5, 0, _v_len__label);
975          Expr _v_ASAIL_m_To_m_CPP5;
976          RF_CALL (ASAIL_m_To_m_CPP, _ve_body, _v_ASAIL_m_To_m_CPP5);
977          Expr _v_Rfp2Cpp5;
978          RF_CALL (CppMangle::Rfp2Cpp, (_c_31 + _ve_label) (), _v_Rfp2Cpp5);
979          _ve_cpp_m_item = ((_c_29 + _v_ASAIL_m_To_m_CPP5 () + _c_6) () + (_c_31 + _v_Rfp2Cpp5 + _c_32) ());
980          goto _block2;
981        }
982      _block2__branch5: {}
983        {
984          if (_vt_item.symbol_at (0))
985          {
986            goto _block2__branch6;
987          }
988          Expr _v_deref__item6 (_vt_item, 0);
989          uintptr_t _v_len27 = _v_deref__item6.get_len ();
990          uintptr_t _v_len28 = 1;
991          if ((_v_len27 < _v_len28))
992          {
993            goto _block2__branch6;
994          }
995          uintptr_t _v_len__body5 = (_v_len27 - _v_len28);
996          if (!_c_35.term_eq (_v_deref__item6, 0))
997          {
998            goto _block2__branch6;
999          }
1000          Expr _ve_body (_v_deref__item6, 1, _v_len__body5);
1001          Expr _v_ASAIL_m_To_m_CPP6;
1002          RF_CALL (ASAIL_m_To_m_CPP, _ve_body, _v_ASAIL_m_To_m_CPP6);
1003          _ve_cpp_m_item = (_c_36 + (_c_29 + _v_ASAIL_m_To_m_CPP6 () + _c_6) ());
1004          goto _block2;
1005        }
1006      _block2__branch6: {}
1007        {
1008          if (_vt_item.symbol_at (0))
1009          {
1010            goto _block2__branch7;
1011          }
1012          Expr _v_deref__item7 (_vt_item, 0);
1013          uintptr_t _v_len29 = _v_deref__item7.get_len ();
1014          uintptr_t _v_len30 = 1;
1015          if ((_v_len29 < _v_len30))
1016          {
1017            goto _block2__branch7;
1018          }
1019          uintptr_t _v_len__body6 = (_v_len29 - _v_len30);
1020          if (!_c_37.term_eq (_v_deref__item7, 0))
1021          {
1022            goto _block2__branch7;
1023          }
1024          Expr _ve_body (_v_deref__item7, 1, _v_len__body6);
1025          Expr _v_ASAIL_m_To_m_CPP7;
1026          RF_CALL (ASAIL_m_To_m_CPP, _ve_body, _v_ASAIL_m_To_m_CPP7);
1027          _ve_cpp_m_item = (_c_39 + (_c_29 + (_c_38 + _v_ASAIL_m_To_m_CPP7) () + _c_6) ());
1028          goto _block2;
1029        }
1030      _block2__branch7: {}
1031        {
1032          if (!_vt_item.term_eq (_c_40, 0))
1033          {
1034            goto _block2__branch8;
1035          }
1036          Expr _ve_trace_m_exit;
1037          {
1038            {
1039              Expr _v__q_2;
1040              RF_CALL (Box::_q_, Current_m_Trace, _v__q_2);
1041              uintptr_t _v_len31 = _v__q_2.get_len ();
1042              uintptr_t _v_len32 = 1;
1043              if ((_v_len31 < _v_len32))
1044              {
1045                goto _block9__branch1;
1046              }
1047              uintptr_t _v_len__name = (_v_len31 - _v_len32);
1048              if (_v__q_2.symbol_at (_v_len__name))
1049              {
1050                goto _block9__branch1;
1051              }
1052              Expr _v_deref___q_2 (_v__q_2, _v_len__name);
1053              uintptr_t _v_len33 = _v_deref___q_2.get_len ();
1054              uintptr_t _v_len34 = 0;
1055              if ((_v_len33 < _v_len34))
1056              {
1057                goto _block9__branch1;
1058              }
1059              uintptr_t _v_len__ress2 = (_v_len33 - _v_len34);
1060              Expr _ve_name (_v__q_2, 0, _v_len__name);
1061              Expr _ve_ress (_v_deref___q_2, 0, _v_len__ress2);
1062              RF_CALL (Trace_m_Exit, (_ve_name, _ve_ress), _ve_trace_m_exit);
1063              goto _block9;
1064            }
1065          _block9__branch1: {}
1066            _ve_trace_m_exit = empty;
1067          }
1068        _block9: {}
1069          _ve_cpp_m_item = (_ve_trace_m_exit + _c_16);
1070          goto _block2;
1071        }
1072      _block2__branch8: {}
1073        {
1074          if (!_vt_item.term_eq (_c_41, 0))
1075          {
1076            goto _block2__branch9;
1077          }
1078          Expr _ve_trace_m_exit;
1079          {
1080            {
1081              Expr _v__q_3;
1082              RF_CALL (Box::_q_, Current_m_Trace, _v__q_3);
1083              uintptr_t _v_len35 = _v__q_3.get_len ();
1084              uintptr_t _v_len36 = 1;
1085              if ((_v_len35 < _v_len36))
1086              {
1087                goto _block10__branch1;
1088              }
1089              uintptr_t _v_len__name2 = (_v_len35 - _v_len36);
1090              if (_v__q_3.symbol_at (_v_len__name2))
1091              {
1092                goto _block10__branch1;
1093              }
1094              Expr _v_deref___q_3 (_v__q_3, _v_len__name2);
1095              uintptr_t _v_len37 = _v_deref___q_3.get_len ();
1096              uintptr_t _v_len38 = 0;
1097              if ((_v_len37 < _v_len38))
1098              {
1099                goto _block10__branch1;
1100              }
1101              uintptr_t _v_len__ress3 = (_v_len37 - _v_len38);
1102              Expr _ve_name (_v__q_3, 0, _v_len__name2);
1103              Expr _ve_ress (_v_deref___q_3, 0, _v_len__ress3);
1104              RF_CALL (Trace_m_Fail, _ve_name, _ve_trace_m_exit);
1105              goto _block10;
1106            }
1107          _block10__branch1: {}
1108            _ve_trace_m_exit = empty;
1109          }
1110        _block10: {}
1111          _ve_cpp_m_item = (_ve_trace_m_exit + _c_42);
1112          goto _block2;
1113        }
1114      _block2__branch9: {}
1115        {
1116          if (!_vt_item.term_eq (_c_43, 0))
1117          {
1118            goto _block2__branch10;
1119          }
1120          _ve_cpp_m_item = _c_44;
1121          goto _block2;
1122        }
1123      _block2__branch10: {}
1124        {
1125          if (_vt_item.symbol_at (0))
1126          {
1127            goto _block2__branch11;
1128          }
1129          Expr _v_deref__item8 (_vt_item, 0);
1130          uintptr_t _v_len39 = _v_deref__item8.get_len ();
1131          uintptr_t _v_len40 = 4;
1132          if ((_v_len39 < _v_len40))
1133          {
1134            goto _block2__branch11;
1135          }
1136          uintptr_t _v_len__expr = (_v_len39 - _v_len40);
1137          if (_v_deref__item8.symbol_at ((_v_len__expr + 1)))
1138          {
1139            goto _block2__branch11;
1140          }
1141          Expr _v_deref__deref__item8 (_v_deref__item8, (_v_len__expr + 1));
1142          uintptr_t _v_len41 = _v_deref__deref__item8.get_len ();
1143          uintptr_t _v_len42 = 0;
1144          if ((_v_len41 < _v_len42))
1145          {
1146            goto _block2__branch11;
1147          }
1148          uintptr_t _v_len__min = (_v_len41 - _v_len42);
1149          if (!_c_45.term_eq (_v_deref__item8, 0))
1150          {
1151            goto _block2__branch11;
1152          }
1153          Expr _ve_expr (_v_deref__item8, 1, _v_len__expr);
1154          Expr _vt_var1 (_v_deref__item8, (_v_len__expr + 2), 1);
1155          Expr _vt_var2 (_v_deref__item8, (_v_len__expr + 3), 1);
1156          Expr _ve_min (_v_deref__deref__item8, 0, _v_len__min);
1157          Expr _v_Expr_m_Ref_m_To_m_CPP1;
1158          RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP1);
1159          Expr _v_Expr_m_Int_m_To_m_CPP1;
1160          RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_min, _v_Expr_m_Int_m_To_m_CPP1);
1161          Expr _v_Rfp2Cpp6;
1162          RF_CALL (CppMangle::Rfp2Cpp, _vt_var1, _v_Rfp2Cpp6);
1163          Expr _v_Rfp2Cpp7;
1164          RF_CALL (CppMangle::Rfp2Cpp, _vt_var2, _v_Rfp2Cpp7);
1165          _ve_cpp_m_item = (_c_46 + _v_Expr_m_Ref_m_To_m_CPP1 + _c_24 + _v_Expr_m_Int_m_To_m_CPP1 + _c_24 + _v_Rfp2Cpp6 + _c_24 + _v_Rfp2Cpp7 + _c_4) ();
1166          goto _block2;
1167        }
1168      _block2__branch11: {}
1169        {
1170          if (_vt_item.symbol_at (0))
1171          {
1172            goto _block2__branch12;
1173          }
1174          Expr _v_deref__item9 (_vt_item, 0);
1175          uintptr_t _v_len43 = _v_deref__item9.get_len ();
1176          uintptr_t _v_len44 = 4;
1177          if ((_v_len43 < _v_len44))
1178          {
1179            goto _block2__branch12;
1180          }
1181          uintptr_t _v_len__expr2 = (_v_len43 - _v_len44);
1182          if (_v_deref__item9.symbol_at ((_v_len__expr2 + 1)))
1183          {
1184            goto _block2__branch12;
1185          }
1186          Expr _v_deref__deref__item9 (_v_deref__item9, (_v_len__expr2 + 1));
1187          uintptr_t _v_len45 = _v_deref__deref__item9.get_len ();
1188          uintptr_t _v_len46 = 0;
1189          if ((_v_len45 < _v_len46))
1190          {
1191            goto _block2__branch12;
1192          }
1193          uintptr_t _v_len__min2 = (_v_len45 - _v_len46);
1194          if (!_c_47.term_eq (_v_deref__item9, 0))
1195          {
1196            goto _block2__branch12;
1197          }
1198          Expr _ve_expr (_v_deref__item9, 1, _v_len__expr2);
1199          Expr _vt_var1 (_v_deref__item9, (_v_len__expr2 + 2), 1);
1200          Expr _vt_var2 (_v_deref__item9, (_v_len__expr2 + 3), 1);
1201          Expr _ve_min (_v_deref__deref__item9, 0, _v_len__min2);
1202          Expr _v_Expr_m_Ref_m_To_m_CPP2;
1203          RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP2);
1204          Expr _v_Expr_m_Int_m_To_m_CPP2;
1205          RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_min, _v_Expr_m_Int_m_To_m_CPP2);
1206          Expr _v_Rfp2Cpp8;
1207          RF_CALL (CppMangle::Rfp2Cpp, _vt_var1, _v_Rfp2Cpp8);
1208          Expr _v_Rfp2Cpp9;
1209          RF_CALL (CppMangle::Rfp2Cpp, _vt_var2, _v_Rfp2Cpp9);
1210          _ve_cpp_m_item = (_c_48 + _v_Expr_m_Ref_m_To_m_CPP2 + _c_24 + _v_Expr_m_Int_m_To_m_CPP2 + _c_24 + _v_Rfp2Cpp8 + _c_24 + _v_Rfp2Cpp9 + _c_4) ();
1211          goto _block2;
1212        }
1213      _block2__branch12: {}
1214        {
1215          if (_vt_item.symbol_at (0))
1216          {
1217            goto _block2__branch13;
1218          }
1219          Expr _v_deref__item10 (_vt_item, 0);
1220          uintptr_t _v_len47 = _v_deref__item10.get_len ();
1221          uintptr_t _v_len48 = 2;
1222          if ((_v_len47 < _v_len48))
1223          {
1224            goto _block2__branch13;
1225          }
1226          uintptr_t _v_len__expr3 = (_v_len47 - _v_len48);
1227          if (!_c_49.term_eq (_v_deref__item10, 0))
1228          {
1229            goto _block2__branch13;
1230          }
1231          Expr _vt_var (_v_deref__item10, 1, 1);
1232          Expr _ve_expr (_v_deref__item10, 2, _v_len__expr3);
1233          Expr _v_Rfp2Cpp10;
1234          RF_CALL (CppMangle::Rfp2Cpp, _vt_var, _v_Rfp2Cpp10);
1235          Expr _v_Expr_m_To_m_CPP1;
1236          RF_CALL (Expr_m_To_m_CPP, (empty, _ve_expr), _v_Expr_m_To_m_CPP1);
1237          _ve_cpp_m_item = (_v_Rfp2Cpp10 + _c_10 + _v_Expr_m_To_m_CPP1 + _c_9) ();
1238          goto _block2;
1239        }
1240      _block2__branch13: {}
1241        {
1242          if (_vt_item.symbol_at (0))
1243          {
1244            goto _block2__branch14;
1245          }
1246          Expr _v_deref__item11 (_vt_item, 0);
1247          if ((_v_deref__item11.get_len () != 3))
1248          {
1249            goto _block2__branch14;
1250          }
1251          if (!_c_50.term_eq (_v_deref__item11, 0))
1252          {
1253            goto _block2__branch14;
1254          }
1255          if (!_v_deref__item11.symbol_at (1))
1256          {
1257            goto _block2__branch14;
1258          }
1259          Expr _vs_type (_v_deref__item11, 1, 1);
1260          Expr _vt_var (_v_deref__item11, 2, 1);
1261          Expr _v_Rfp2Cpp11;
1262          RF_CALL (CppMangle::Rfp2Cpp, _vt_var, _v_Rfp2Cpp11);
1263          _ve_cpp_m_item = (_vs_type + _c_51 + _v_Rfp2Cpp11 + _c_9) ();
1264          goto _block2;
1265        }
1266      _block2__branch14: {}
1267        {
1268          if (_vt_item.symbol_at (0))
1269          {
1270            goto _block2__branch15;
1271          }
1272          Expr _v_deref__item12 (_vt_item, 0);
1273          uintptr_t _v_len49 = _v_deref__item12.get_len ();
1274          uintptr_t _v_len50 = 2;
1275          if ((_v_len49 < _v_len50))
1276          {
1277            goto _block2__branch15;
1278          }
1279          uintptr_t _v_len__expr4 = (_v_len49 - _v_len50);
1280          if (!_c_0.term_eq (_v_deref__item12, 0))
1281          {
1282            goto _block2__branch15;
1283          }
1284          Expr _vt_var (_v_deref__item12, 1, 1);
1285          Expr _ve_expr (_v_deref__item12, 2, _v_len__expr4);
1286          Expr _v_Rfp2Cpp12;
1287          RF_CALL (CppMangle::Rfp2Cpp, _vt_var, _v_Rfp2Cpp12);
1288          Expr _v_Expr_m_Int_m_To_m_CPP3;
1289          RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_expr, _v_Expr_m_Int_m_To_m_CPP3);
1290          _ve_cpp_m_item = (_c_52 + _v_Rfp2Cpp12 + _c_10 + _v_Expr_m_Int_m_To_m_CPP3 + _c_9) ();
1291          goto _block2;
1292        }
1293      _block2__branch15: {}
1294        {
1295          if (_vt_item.symbol_at (0))
1296          {
1297            goto _block2__branch16;
1298          }
1299          Expr _v_deref__item13 (_vt_item, 0);
1300          uintptr_t _v_len51 = _v_deref__item13.get_len ();
1301          uintptr_t _v_len52 = 2;
1302          if ((_v_len51 < _v_len52))
1303          {
1304            goto _block2__branch16;
1305          }
1306          uintptr_t _v_len__expr5 = (_v_len51 - _v_len52);
1307          if (!_c_53.term_eq (_v_deref__item13, 0))
1308          {
1309            goto _block2__branch16;
1310          }
1311          Expr _vt_var (_v_deref__item13, 1, 1);
1312          Expr _ve_expr (_v_deref__item13, 2, _v_len__expr5);
1313          Expr _v_Rfp2Cpp13;
1314          RF_CALL (CppMangle::Rfp2Cpp, _vt_var, _v_Rfp2Cpp13);
1315          Expr _v_Expr_m_Ref_m_To_m_CPP3;
1316          RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP3);
1317          _ve_cpp_m_item = (_c_55 + _v_Rfp2Cpp13 + _c_54 + _v_Expr_m_Ref_m_To_m_CPP3 + _c_4) ();
1318          goto _block2;
1319        }
1320      _block2__branch16: {}
1321        {
1322          if (_vt_item.symbol_at (0))
1323          {
1324            goto _block2__branch17;
1325          }
1326          Expr _v_deref__item14 (_vt_item, 0);
1327          uintptr_t _v_len53 = _v_deref__item14.get_len ();
1328          uintptr_t _v_len54 = 3;
1329          if ((_v_len53 < _v_len54))
1330          {
1331            goto _block2__branch17;
1332          }
1333          uintptr_t _v_len__expr6 = (_v_len53 - _v_len54);
1334          if (_v_deref__item14.symbol_at ((_v_len__expr6 + 2)))
1335          {
1336            goto _block2__branch17;
1337          }
1338          Expr _v_deref__deref__item14 (_v_deref__item14, (_v_len__expr6 + 2));
1339          uintptr_t _v_len55 = _v_deref__deref__item14.get_len ();
1340          uintptr_t _v_len56 = 0;
1341          if ((_v_len55 < _v_len56))
1342          {
1343            goto _block2__branch17;
1344          }
1345          uintptr_t _v_len__pos = (_v_len55 - _v_len56);
1346          if (!_c_56.term_eq (_v_deref__item14, 0))
1347          {
1348            goto _block2__branch17;
1349          }
1350          Expr _vt_var (_v_deref__item14, 1, 1);
1351          Expr _ve_expr (_v_deref__item14, 2, _v_len__expr6);
1352          Expr _ve_pos (_v_deref__deref__item14, 0, _v_len__pos);
1353          Expr _v_Rfp2Cpp14;
1354          RF_CALL (CppMangle::Rfp2Cpp, _vt_var, _v_Rfp2Cpp14);
1355          Expr _v_Expr_m_Ref_m_To_m_CPP4;
1356          RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP4);
1357          Expr _v_Expr_m_Int_m_To_m_CPP4;
1358          RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_pos, _v_Expr_m_Int_m_To_m_CPP4);
1359          _ve_cpp_m_item = (_c_55 + _v_Rfp2Cpp14 + _c_54 + _v_Expr_m_Ref_m_To_m_CPP4 + _c_24 + _v_Expr_m_Int_m_To_m_CPP4 + _c_4) ();
1360          goto _block2;
1361        }
1362      _block2__branch17: {}
1363        {
1364          if (_vt_item.symbol_at (0))
1365          {
1366            goto _block2__branch18;
1367          }
1368          Expr _v_deref__item15 (_vt_item, 0);
1369          uintptr_t _v_len57 = _v_deref__item15.get_len ();
1370          uintptr_t _v_len58 = 4;
1371          if ((_v_len57 < _v_len58))
1372          {
1373            goto _block2__branch18;
1374          }
1375          uintptr_t _v_len__expr7 = (_v_len57 - _v_len58);
1376          if (_v_deref__item15.symbol_at ((_v_len__expr7 + 2)))
1377          {
1378            goto _block2__branch18;
1379          }
1380          if (_v_deref__item15.symbol_at ((_v_len__expr7 + 3)))
1381          {
1382            goto _block2__branch18;
1383          }
1384          Expr _v_deref__deref__item15 (_v_deref__item15, (_v_len__expr7 + 2));
1385          Expr _v_deref__deref__item152 (_v_deref__item15, (_v_len__expr7 + 3));
1386          uintptr_t _v_len59 = _v_deref__deref__item152.get_len ();
1387          uintptr_t _v_len60 = 0;
1388          if ((_v_len59 < _v_len60))
1389          {
1390            goto _block2__branch18;
1391          }
1392          uintptr_t _v_len__len = (_v_len59 - _v_len60);
1393          uintptr_t _v_len61 = _v_deref__deref__item15.get_len ();
1394          uintptr_t _v_len62 = 0;
1395          if ((_v_len61 < _v_len62))
1396          {
1397            goto _block2__branch18;
1398          }
1399          uintptr_t _v_len__pos2 = (_v_len61 - _v_len62);
1400          if (!_c_57.term_eq (_v_deref__item15, 0))
1401          {
1402            goto _block2__branch18;
1403          }
1404          Expr _vt_var (_v_deref__item15, 1, 1);
1405          Expr _ve_expr (_v_deref__item15, 2, _v_len__expr7);
1406          Expr _ve_pos (_v_deref__deref__item15, 0, _v_len__pos2);
1407          Expr _ve_len (_v_deref__deref__item152, 0, _v_len__len);
1408          Expr _v_Rfp2Cpp15;
1409          RF_CALL (CppMangle::Rfp2Cpp, _vt_var, _v_Rfp2Cpp15);
1410          Expr _v_Expr_m_Ref_m_To_m_CPP5;
1411          RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP5);
1412          Expr _v_Expr_m_Int_m_To_m_CPP5;
1413          RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_pos, _v_Expr_m_Int_m_To_m_CPP5);
1414          Expr _v_Expr_m_Int_m_To_m_CPP6;
1415          RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_len, _v_Expr_m_Int_m_To_m_CPP6);
1416          _ve_cpp_m_item = (_c_55 + _v_Rfp2Cpp15 + _c_54 + _v_Expr_m_Ref_m_To_m_CPP5 + _c_24 + _v_Expr_m_Int_m_To_m_CPP5 + _c_24 + _v_Expr_m_Int_m_To_m_CPP6 + _c_4) ();
1417          goto _block2;
1418        }
1419      _block2__branch18: {}
1420        {
1421          if (_vt_item.symbol_at (0))
1422          {
1423            goto _block2__branch19;
1424          }
1425          Expr _v_deref__item16 (_vt_item, 0);
1426          if ((_v_deref__item16.get_len () != 2))
1427          {
1428            goto _block2__branch19;
1429          }
1430          if (!_c_58.term_eq (_v_deref__item16, 0))
1431          {
1432            goto _block2__branch19;
1433          }
1434          Expr _vt_var (_v_deref__item16, 1, 1);
1435          Expr _v_Rfp2Cpp16;
1436          RF_CALL (CppMangle::Rfp2Cpp, _vt_var, _v_Rfp2Cpp16);
1437          _ve_cpp_m_item = (_v_Rfp2Cpp16 + _c_59) ();
1438          goto _block2;
1439        }
1440      _block2__branch19: {}
1441        {
1442          if (_vt_item.symbol_at (0))
1443          {
1444            goto _block2__branch20;
1445          }
1446          Expr _v_deref__item17 (_vt_item, 0);
1447          if ((_v_deref__item17.get_len () != 2))
1448          {
1449            goto _block2__branch20;
1450          }
1451          if (!_c_60.term_eq (_v_deref__item17, 0))
1452          {
1453            goto _block2__branch20;
1454          }
1455          Expr _vt_label (_v_deref__item17, 1, 1);
1456          Expr _v_Rfp2Cpp17;
1457          RF_CALL (CppMangle::Rfp2Cpp, (_c_31 + _vt_label) (), _v_Rfp2Cpp17);
1458          _ve_cpp_m_item = (_c_61 + _v_Rfp2Cpp17 + _c_9) ();
1459          goto _block2;
1460        }
1461      _block2__branch20: {}
1462        {
1463          if (_vt_item.symbol_at (0))
1464          {
1465            goto _block2__branch21;
1466          }
1467          Expr _v_deref__item18 (_vt_item, 0);
1468          if ((_v_deref__item18.get_len () != 2))
1469          {
1470            goto _block2__branch21;
1471          }
1472          if (!_c_62.term_eq (_v_deref__item18, 0))
1473          {
1474            goto _block2__branch21;
1475          }
1476          Expr _vt_label (_v_deref__item18, 1, 1);
1477          Expr _v_Rfp2Cpp18;
1478          RF_CALL (CppMangle::Rfp2Cpp, (_c_31 + _vt_label) (), _v_Rfp2Cpp18);
1479          _ve_cpp_m_item = (_c_61 + _v_Rfp2Cpp18 + _c_9) ();
1480          goto _block2;
1481        }
1482      _block2__branch21: {}
1483        {
1484          if (_vt_item.symbol_at (0))
1485          {
1486            goto _block2__branch22;
1487          }
1488          Expr _v_deref__item19 (_vt_item, 0);
1489          uintptr_t _v_len63 = _v_deref__item19.get_len ();
1490          uintptr_t _v_len64 = 1;
1491          if ((_v_len63 < _v_len64))
1492          {
1493            goto _block2__branch22;
1494          }
1495          uintptr_t _v_len__expr8 = (_v_len63 - _v_len64);
1496          if (!_c_63.term_eq (_v_deref__item19, 0))
1497          {
1498            goto _block2__branch22;
1499          }
1500          Expr _ve_expr (_v_deref__item19, 1, _v_len__expr8);
1501          Expr _v_Expr_m_Ref_m_To_m_CPP6;
1502          RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP6);
1503          _ve_cpp_m_item = (_c_64 + _v_Expr_m_Ref_m_To_m_CPP6 + _c_4) ();
1504          goto _block2;
1505        }
1506      _block2__branch22: {}
1507        {
1508          if (_vt_item.symbol_at (0))
1509          {
1510            goto _block2__branch23;
1511          }
1512          Expr _v_deref__item20 (_vt_item, 0);
1513          uintptr_t _v_len65 = _v_deref__item20.get_len ();
1514          uintptr_t _v_len66 = 4;
1515          if ((_v_len65 < _v_len66))
1516          {
1517            goto _block2__branch23;
1518          }
1519          uintptr_t _v_len__expr9 = (_v_len65 - _v_len66);
1520          if (_v_deref__item20.symbol_at (3))
1521          {
1522            goto _block2__branch23;
1523          }
1524          Expr _v_deref__deref__item20 (_v_deref__item20, 3);
1525          uintptr_t _v_len67 = _v_deref__deref__item20.get_len ();
1526          uintptr_t _v_len68 = 0;
1527          if ((_v_len67 < _v_len68))
1528          {
1529            goto _block2__branch23;
1530          }
1531          uintptr_t _v_len__comment = (_v_len67 - _v_len68);
1532          if (!_c_65.term_eq (_v_deref__item20, 0))
1533          {
1534            goto _block2__branch23;
1535          }
1536          if (!_v_deref__item20.symbol_at (1))
1537          {
1538            goto _block2__branch23;
1539          }
1540          Expr _vs_linkage (_v_deref__item20, 1, 1);
1541          Expr _vt_name (_v_deref__item20, 2, 1);
1542          Expr _ve_expr (_v_deref__item20, 4, _v_len__expr9);
1543          Expr _ve_comment (_v_deref__deref__item20, 0, _v_len__comment);
1544          Expr _ve_linkage;
1545          {
1546            {
1547              if (!_vs_linkage.term_eq (_c_66, 0))
1548              {
1549                goto _block11__branch1;
1550              }
1551              _ve_linkage = _c_67;
1552              goto _block11;
1553            }
1554          _block11__branch1: {}
1555            _ve_linkage = empty;
1556          }
1557        _block11: {}
1558          Expr _ve_qualifiers;
1559          Expr _ve_name;
1560          {
1561            {
1562              if (_vt_name.symbol_at (0))
1563              {
1564                goto _block12__branch1;
1565              }
1566              Expr _v_deref__name (_vt_name, 0);
1567              uintptr_t _v_len69 = _v_deref__name.get_len ();
1568              uintptr_t _v_len70 = 1;
1569              if ((_v_len69 < _v_len70))
1570              {
1571                goto _block12__branch1;
1572              }
1573              uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_203_m_27 = (_v_len69 - _v_len70);
1574              if (!_c_68.term_eq (_v_deref__name, 0))
1575              {
1576                goto _block12__branch1;
1577              }
1578              Expr _ve__e__e_tmp_m_rfp__asail__cpprf_m_203_m_27 (_v_deref__name, 1, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_203_m_27);
1579              RF_CALL (Box::_q_, Module_m_Name, _ve_qualifiers);
1580              _ve_name = _vt_name;
1581              goto _block12;
1582            }
1583          _block12__branch1: {}
1584            RF_CALL (Extract_m_Qualifiers, _vt_name, (_ve_qualifiers, _ve_name));
1585          }
1586        _block12: {}
1587          Expr _ve_cpp_m_name;
1588          RF_CALL (CppMangle::Rfp2Cpp, _ve_name, _ve_cpp_m_name);
1589          Expr _v_Const_m_Expr_m_To_m_CPP1;
1590          RF_CALL (Const_m_Expr_m_To_m_CPP, _ve_expr, _v_Const_m_Expr_m_To_m_CPP1);
1591          RF_CALL (Box::Put, (Const_m_Exprs, (_ve_cpp_m_name + _v_Const_m_Expr_m_To_m_CPP1 ()) ()), /*void*/);
1592          Expr _v_Namespace_m_Control2;
1593          RF_CALL (Namespace_m_Control, _ve_qualifiers, _v_Namespace_m_Control2);
1594          _ve_cpp_m_item = (_v_Namespace_m_Control2 + (_ve_linkage + _c_55 + _ve_cpp_m_name + _c_9) ());
1595          goto _block2;
1596        }
1597      _block2__branch23: {}
1598        {
1599          if (_vt_item.symbol_at (0))
1600          {
1601            goto _block2__branch24;
1602          }
1603          Expr _v_deref__item21 (_vt_item, 0);
1604          if ((_v_deref__item21.get_len () != 4))
1605          {
1606            goto _block2__branch24;
1607          }
1608          if (!_c_69.term_eq (_v_deref__item21, 0))
1609          {
1610            goto _block2__branch24;
1611          }
1612          if (!_v_deref__item21.symbol_at (1))
1613          {
1614            goto _block2__branch24;
1615          }
1616          if (!_v_deref__item21.symbol_at (2))
1617          {
1618            goto _block2__branch24;
1619          }
1620          Expr _vs_linkage (_v_deref__item21, 1, 1);
1621          Expr _vs_tag (_v_deref__item21, 2, 1);
1622          Expr _vt_name (_v_deref__item21, 3, 1);
1623          Expr _ve_linkage;
1624          {
1625            {
1626              if (!_vs_linkage.term_eq (_c_66, 0))
1627              {
1628                goto _block13__branch1;
1629              }
1630              _ve_linkage = _c_67;
1631              goto _block13;
1632            }
1633          _block13__branch1: {}
1634            _ve_linkage = empty;
1635          }
1636        _block13: {}
1637          Expr _v_To_m_Chars1;
1638          RF_CALL (Convert::To_m_Chars, _vs_tag, _v_To_m_Chars1);
1639          uintptr_t _v_len71 = _v_To_m_Chars1.get_len ();
1640          uintptr_t _v_len72 = 1;
1641          if ((_v_len71 < _v_len72))
1642          {
1643            goto _block1__branch1;
1644          }
1645          uintptr_t _v_len__2 = (_v_len71 - _v_len72);
1646          if (!_v_To_m_Chars1.symbol_at (0))
1647          {
1648            goto _block1__branch1;
1649          }
1650          Expr _vs_1 (_v_To_m_Chars1, 0, 1);
1651          Expr _ve_2 (_v_To_m_Chars1, 1, _v_len__2);
1652          Expr _ve_qualifiers;
1653          Expr _ve_name;
1654          RF_CALL (Extract_m_Qualifiers, _vt_name, (_ve_qualifiers, _ve_name));
1655          Expr _ve_cpp_m_name;
1656          RF_CALL (CppMangle::Rfp2Cpp, _ve_name, _ve_cpp_m_name);
1657          {
1658            {
1659              if (!_vs_tag.term_eq (_c_70, 0))
1660              {
1661                goto _block14__branch1;
1662              }
1663              RF_CALL (Box::Put, (Const_m_Exprs, (_ve_cpp_m_name + (_c_72 + _ve_name + _c_71) ()) ()), /*void*/);
1664              goto _block14;
1665            }
1666          _block14__branch1: {}
1667            Expr _v_To_m_Lower1;
1668            RF_CALL (Convert::To_m_Lower, _ve_2, _v_To_m_Lower1);
1669            RF_CALL (Box::Put, (Const_m_Exprs, (_ve_cpp_m_name + (_c_74 + _vs_1 + _v_To_m_Lower1 + _c_73 + _ve_name + _c_71) ()) ()), /*void*/);
1670          }
1671        _block14: {}
1672          Expr _v_Namespace_m_Control3;
1673          RF_CALL (Namespace_m_Control, _ve_qualifiers, _v_Namespace_m_Control3);
1674          _ve_cpp_m_item = (_v_Namespace_m_Control3 + (_ve_linkage + _c_55 + _ve_cpp_m_name + _c_9) ());
1675          goto _block2;
1676        }
1677      _block2__branch24: {}
1678        {
1679          if (_vt_item.symbol_at (0))
1680          {
1681            goto _block2__branch25;
1682          }
1683          Expr _v_deref__item22 (_vt_item, 0);
1684          if ((_v_deref__item22.get_len () != 2))
1685          {
1686            goto _block2__branch25;
1687          }
1688          if (!_c_75.term_eq (_v_deref__item22, 0))
1689          {
1690            goto _block2__branch25;
1691          }
1692          Expr _vt_name (_v_deref__item22, 1, 1);
1693          Expr _ve_qualifiers;
1694          Expr _ve_name;
1695          RF_CALL (Extract_m_Qualifiers, _vt_name, (_ve_qualifiers, _ve_name));
1696          Expr _v_Namespace_m_Control4;
1697          RF_CALL (Namespace_m_Control, _ve_qualifiers, _v_Namespace_m_Control4);
1698          Expr _v_Rfp2Cpp19;
1699          RF_CALL (CppMangle::Rfp2Cpp, _ve_name, _v_Rfp2Cpp19);
1700          _ve_cpp_m_item = (_v_Namespace_m_Control4 + (_c_76 + _v_Rfp2Cpp19 + _c_9) ());
1701          goto _block2;
1702        }
1703      _block2__branch25: {}
1704        {
1705          if (_vt_item.symbol_at (0))
1706          {
1707            goto _block2__branch26;
1708          }
1709          Expr _v_deref__item23 (_vt_item, 0);
1710          if ((_v_deref__item23.get_len () != 2))
1711          {
1712            goto _block2__branch26;
1713          }
1714          if (!_c_77.term_eq (_v_deref__item23, 0))
1715          {
1716            goto _block2__branch26;
1717          }
1718          Expr _vt_name (_v_deref__item23, 1, 1);
1719          Expr _ve_qualifiers;
1720          Expr _ve_name;
1721          RF_CALL (Extract_m_Qualifiers, _vt_name, (_ve_qualifiers, _ve_name));
1722          Expr _v_Namespace_m_Control5;
1723          RF_CALL (Namespace_m_Control, _ve_qualifiers, _v_Namespace_m_Control5);
1724          Expr _v_Rfp2Cpp20;
1725          RF_CALL (CppMangle::Rfp2Cpp, _ve_name, _v_Rfp2Cpp20);
1726          _ve_cpp_m_item = (_v_Namespace_m_Control5 + (_c_78 + _v_Rfp2Cpp20 + _c_4) ());
1727          goto _block2;
1728        }
1729      _block2__branch26: {}
1730        {
1731          if (_vt_item.symbol_at (0))
1732          {
1733            goto _block2__branch27;
1734          }
1735          Expr _v_deref__item24 (_vt_item, 0);
1736          if ((_v_deref__item24.get_len () != 2))
1737          {
1738            goto _block2__branch27;
1739          }
1740          if (!_c_79.term_eq (_v_deref__item24, 0))
1741          {
1742            goto _block2__branch27;
1743          }
1744          Expr _vt_name (_v_deref__item24, 1, 1);
1745          RF_CALL (Table::Bind, (Externs, _vt_name, empty), /*void*/);
1746          Expr _ve_qualifiers;
1747          Expr _ve_name;
1748          RF_CALL (Extract_m_Qualifiers, _vt_name, (_ve_qualifiers, _ve_name));
1749          Expr _v_Namespace_m_Control6;
1750          RF_CALL (Namespace_m_Control, _ve_qualifiers, _v_Namespace_m_Control6);
1751          Expr _v_Rfp2Cpp21;
1752          RF_CALL (CppMangle::Rfp2Cpp, _ve_name, _v_Rfp2Cpp21);
1753          _ve_cpp_m_item = (_v_Namespace_m_Control6 + (_c_78 + _v_Rfp2Cpp21 + _c_4) ());
1754          goto _block2;
1755        }
1756      _block2__branch27: {}
1757        if (_vt_item.symbol_at (0))
1758        {
1759          RF_FUNC_ERROR (unexpected_fail);
1760        }
1761        Expr _v_deref__item25 (_vt_item, 0);
1762        if ((_v_deref__item25.get_len () != 4))
1763        {
1764          RF_FUNC_ERROR (unexpected_fail);
1765        }
1766        if (_v_deref__item25.symbol_at (2))
1767        {
1768          RF_FUNC_ERROR (unexpected_fail);
1769        }
1770        if (_v_deref__item25.symbol_at (3))
1771        {
1772          RF_FUNC_ERROR (unexpected_fail);
1773        }
1774        Expr _v_deref__deref__item25 (_v_deref__item25, 2);
1775        Expr _v_deref__deref__item252 (_v_deref__item25, 3);
1776        uintptr_t _v_len73 = _v_deref__deref__item252.get_len ();
1777        uintptr_t _v_len74 = 0;
1778        if ((_v_len73 < _v_len74))
1779        {
1780          RF_FUNC_ERROR (unexpected_fail);
1781        }
1782        uintptr_t _v_len__ress4 = (_v_len73 - _v_len74);
1783        uintptr_t _v_len75 = _v_deref__deref__item25.get_len ();
1784        uintptr_t _v_len76 = 0;
1785        if ((_v_len75 < _v_len76))
1786        {
1787          RF_FUNC_ERROR (unexpected_fail);
1788        }
1789        uintptr_t _v_len__exprs = (_v_len75 - _v_len76);
1790        if (!_v_deref__item25.symbol_at (0))
1791        {
1792          RF_FUNC_ERROR (unexpected_fail);
1793        }
1794        Expr _vs_call (_v_deref__item25, 0, 1);
1795        Expr _vt_name (_v_deref__item25, 1, 1);
1796        Expr _ve_exprs (_v_deref__deref__item25, 0, _v_len__exprs);
1797        Expr _ve_ress (_v_deref__deref__item252, 0, _v_len__ress4);
1798        {
1799          {
1800            {
1801              if (!_vs_call.term_eq (_c_80, 0))
1802              {
1803                goto _negation1;
1804              }
1805              goto _block15__branch1;
1806            }
1807          _negation1: {}
1808            Expr _v__q_4;
1809            RF_CALL (Box::_q_, Current_m_Trace, _v__q_4);
1810            uintptr_t _v_len77 = _v__q_4.get_len ();
1811            uintptr_t _v_len78 = 1;
1812            if ((_v_len77 < _v_len78))
1813            {
1814              goto _block15__branch1;
1815            }
1816            uintptr_t _v_len__full_m_name = (_v_len77 - _v_len78);
1817            if (_v__q_4.symbol_at (_v_len__full_m_name))
1818            {
1819              goto _block15__branch1;
1820            }
1821            Expr _v_deref___q_4 (_v__q_4, _v_len__full_m_name);
1822            if ((_v_deref___q_4.get_len () != _v_len__ress4))
1823            {
1824              goto _block15__branch1;
1825            }
1826            if (!_ve_ress.eq (_v_deref___q_4, 0))
1827            {
1828              goto _block15__branch1;
1829            }
1830            Expr _ve_full_m_name (_v__q_4, 0, _v_len__full_m_name);
1831            Expr _v_Name_m_To_m_CPP1;
1832            RF_CALL (Name_m_To_m_CPP, _vt_name, _v_Name_m_To_m_CPP1);
1833            Expr _v_Args_m_To_m_CPP3;
1834            RF_CALL (Args_m_To_m_CPP, (empty, _c_81, _ve_exprs), _v_Args_m_To_m_CPP3);
1835            Expr _v_Args_m_To_m_CPP4;
1836            RF_CALL (Args_m_To_m_CPP, (empty, _c_20, _ve_ress), _v_Args_m_To_m_CPP4);
1837            Expr _v_Trace_m_Exit1;
1838            RF_CALL (Trace_m_Exit, (_ve_full_m_name, _ve_ress), _v_Trace_m_Exit1);
1839            _ve_cpp_m_item = ((_c_83 + _v_Name_m_To_m_CPP1 + _c_24 + _v_Args_m_To_m_CPP3 + _c_24 + _v_Args_m_To_m_CPP4 + _c_82) () + (_c_29 + (_v_Trace_m_Exit1 + _c_16) () + _c_6) () + _c_84);
1840            goto _block15;
1841          }
1842        _block15__branch1: {}
1843          Expr _v_call__1;
1844          {
1845            {
1846              if (!_vs_call.term_eq (_c_85, 0))
1847              {
1848                goto _block17__branch1;
1849              }
1850              _v_call__1 = _c_86;
1851              goto _block17;
1852            }
1853          _block17__branch1: {}
1854            _v_call__1 = _vs_call;
1855          }
1856        _block17: {}
1857          Expr _v_Name_m_To_m_CPP2;
1858          RF_CALL (Name_m_To_m_CPP, _vt_name, _v_Name_m_To_m_CPP2);
1859          Expr _v_Args_m_To_m_CPP5;
1860          RF_CALL (Args_m_To_m_CPP, (empty, _c_81, _ve_exprs), _v_Args_m_To_m_CPP5);
1861          Expr _v_Args_m_To_m_CPP6;
1862          RF_CALL (Args_m_To_m_CPP, (empty, _c_20, _ve_ress), _v_Args_m_To_m_CPP6);
1863          _ve_cpp_m_item = (_c_87 + _v_call__1 + _c_54 + _v_Name_m_To_m_CPP2 + _c_24 + _v_Args_m_To_m_CPP5 + _c_24 + _v_Args_m_To_m_CPP6 + _c_4) ();
1864        }
1865      _block15: {}
1866      }
1867    _block2: {}
1868      Expr _v_ASAIL_m_To_m_CPP8;
1869      RF_CALL (ASAIL_m_To_m_CPP, _ve_rest, _v_ASAIL_m_To_m_CPP8);
1870      _v_res1 = (_ve_cpp_m_item + _v_ASAIL_m_To_m_CPP8);
1871      goto _block1;
1872    }
1873  _block1__branch1: {}
1874    _v_res1 = empty;
1875  }
1876_block1: {}
1877RF_END
1878
1879RF_FUNC (Expr_m_To_m_CPP, (RF_ARG _ve_init, _ve_expr_m_all;;), (RF_RES _v_res1;;))
1880  {
1881    {
1882      if ((_ve_expr_m_all.get_len () != 0))
1883      {
1884        goto _block1__branch1;
1885      }
1886      RF_TAILCALL (Expr_m_Ref_m_To_m_CPP, _ve_init, _v_res1);
1887      goto _block1;
1888    }
1889  _block1__branch1: {}
1890    {
1891      uintptr_t _v_len1 = _ve_expr_m_all.get_len ();
1892      uintptr_t _v_len2 = 1;
1893      if ((_v_len1 < _v_len2))
1894      {
1895        goto _block1__branch2;
1896      }
1897      uintptr_t _v_len__rest = (_v_len1 - _v_len2);
1898      if (_ve_expr_m_all.symbol_at (0))
1899      {
1900        goto _block1__branch2;
1901      }
1902      Expr _v_deref__expr_m_all (_ve_expr_m_all, 0);
1903      uintptr_t _v_len3 = _v_deref__expr_m_all.get_len ();
1904      uintptr_t _v_len4 = 1;
1905      if ((_v_len3 < _v_len4))
1906      {
1907        goto _block1__branch2;
1908      }
1909      uintptr_t _v_len__expr = (_v_len3 - _v_len4);
1910      if (!_c_88.term_eq (_v_deref__expr_m_all, 0))
1911      {
1912        goto _block1__branch2;
1913      }
1914      Expr _ve_rest (_ve_expr_m_all, 1, _v_len__rest);
1915      Expr _ve_expr (_v_deref__expr_m_all, 1, _v_len__expr);
1916      RF_TAILCALL (Expr_m_Ref_m_To_m_CPP, (_ve_init + _ve_expr_m_all), _v_res1);
1917      goto _block1;
1918    }
1919  _block1__branch2: {}
1920    {
1921      uintptr_t _v_len5 = _ve_expr_m_all.get_len ();
1922      uintptr_t _v_len6 = 1;
1923      if ((_v_len5 < _v_len6))
1924      {
1925        goto _block1__branch3;
1926      }
1927      uintptr_t _v_len__rest2 = (_v_len5 - _v_len6);
1928      if (_ve_expr_m_all.symbol_at (0))
1929      {
1930        goto _block1__branch3;
1931      }
1932      Expr _v_deref__expr_m_all2 (_ve_expr_m_all, 0);
1933      uintptr_t _v_len7 = _v_deref__expr_m_all2.get_len ();
1934      uintptr_t _v_len8 = 1;
1935      if ((_v_len7 < _v_len8))
1936      {
1937        goto _block1__branch3;
1938      }
1939      uintptr_t _v_len__expr2 = (_v_len7 - _v_len8);
1940      if (!_c_53.term_eq (_v_deref__expr_m_all2, 0))
1941      {
1942        goto _block1__branch3;
1943      }
1944      Expr _ve_rest (_ve_expr_m_all, 1, _v_len__rest2);
1945      Expr _ve_expr (_v_deref__expr_m_all2, 1, _v_len__expr2);
1946      RF_TAILCALL (Expr_m_Ref_m_To_m_CPP, (_ve_init + _ve_expr_m_all), _v_res1);
1947      goto _block1;
1948    }
1949  _block1__branch3: {}
1950    {
1951      uintptr_t _v_len9 = _ve_expr_m_all.get_len ();
1952      uintptr_t _v_len10 = 1;
1953      if ((_v_len9 < _v_len10))
1954      {
1955        goto _block1__branch4;
1956      }
1957      uintptr_t _v_len__rest3 = (_v_len9 - _v_len10);
1958      if (_ve_expr_m_all.symbol_at (0))
1959      {
1960        goto _block1__branch4;
1961      }
1962      Expr _v_deref__expr_m_all3 (_ve_expr_m_all, 0);
1963      uintptr_t _v_len11 = _v_deref__expr_m_all3.get_len ();
1964      uintptr_t _v_len12 = 1;
1965      if ((_v_len11 < _v_len12))
1966      {
1967        goto _block1__branch4;
1968      }
1969      uintptr_t _v_len__expr3 = (_v_len11 - _v_len12);
1970      if (!_c_56.term_eq (_v_deref__expr_m_all3, 0))
1971      {
1972        goto _block1__branch4;
1973      }
1974      Expr _ve_rest (_ve_expr_m_all, 1, _v_len__rest3);
1975      Expr _ve_expr (_v_deref__expr_m_all3, 1, _v_len__expr3);
1976      RF_TAILCALL (Expr_m_Ref_m_To_m_CPP, (_ve_init + _ve_expr_m_all), _v_res1);
1977      goto _block1;
1978    }
1979  _block1__branch4: {}
1980    {
1981      uintptr_t _v_len13 = _ve_expr_m_all.get_len ();
1982      uintptr_t _v_len14 = 1;
1983      if ((_v_len13 < _v_len14))
1984      {
1985        goto _block1__branch5;
1986      }
1987      uintptr_t _v_len__rest4 = (_v_len13 - _v_len14);
1988      if (_ve_expr_m_all.symbol_at (0))
1989      {
1990        goto _block1__branch5;
1991      }
1992      Expr _v_deref__expr_m_all4 (_ve_expr_m_all, 0);
1993      uintptr_t _v_len15 = _v_deref__expr_m_all4.get_len ();
1994      uintptr_t _v_len16 = 1;
1995      if ((_v_len15 < _v_len16))
1996      {
1997        goto _block1__branch5;
1998      }
1999      uintptr_t _v_len__expr4 = (_v_len15 - _v_len16);
2000      if (!_c_57.term_eq (_v_deref__expr_m_all4, 0))
2001      {
2002        goto _block1__branch5;
2003      }
2004      Expr _ve_rest (_ve_expr_m_all, 1, _v_len__rest4);
2005      Expr _ve_expr (_v_deref__expr_m_all4, 1, _v_len__expr4);
2006      RF_TAILCALL (Expr_m_Ref_m_To_m_CPP, (_ve_init + _ve_expr_m_all), _v_res1);
2007      goto _block1;
2008    }
2009  _block1__branch5: {}
2010    {
2011      uintptr_t _v_len17 = _ve_expr_m_all.get_len ();
2012      uintptr_t _v_len18 = 1;
2013      if ((_v_len17 < _v_len18))
2014      {
2015        goto _block1__branch6;
2016      }
2017      uintptr_t _v_len__rest5 = (_v_len17 - _v_len18);
2018      if (_ve_expr_m_all.symbol_at (0))
2019      {
2020        goto _block1__branch6;
2021      }
2022      Expr _v_deref__expr_m_all5 (_ve_expr_m_all, 0);
2023      uintptr_t _v_len19 = _v_deref__expr_m_all5.get_len ();
2024      uintptr_t _v_len20 = 1;
2025      if ((_v_len19 < _v_len20))
2026      {
2027        goto _block1__branch6;
2028      }
2029      uintptr_t _v_len__expr5 = (_v_len19 - _v_len20);
2030      if (!_c_89.term_eq (_v_deref__expr_m_all5, 0))
2031      {
2032        goto _block1__branch6;
2033      }
2034      Expr _ve_rest (_ve_expr_m_all, 1, _v_len__rest5);
2035      Expr _ve_expr (_v_deref__expr_m_all5, 1, _v_len__expr5);
2036      RF_TAILCALL (Expr_m_Int_m_To_m_CPP, (_ve_init + _ve_expr_m_all), _v_res1);
2037      goto _block1;
2038    }
2039  _block1__branch6: {}
2040    {
2041      uintptr_t _v_len21 = _ve_expr_m_all.get_len ();
2042      uintptr_t _v_len22 = 1;
2043      if ((_v_len21 < _v_len22))
2044      {
2045        goto _block1__branch7;
2046      }
2047      uintptr_t _v_len__rest6 = (_v_len21 - _v_len22);
2048      if (_ve_expr_m_all.symbol_at (0))
2049      {
2050        goto _block1__branch7;
2051      }
2052      Expr _v_deref__expr_m_all6 (_ve_expr_m_all, 0);
2053      uintptr_t _v_len23 = _v_deref__expr_m_all6.get_len ();
2054      uintptr_t _v_len24 = 1;
2055      if ((_v_len23 < _v_len24))
2056      {
2057        goto _block1__branch7;
2058      }
2059      uintptr_t _v_len__args = (_v_len23 - _v_len24);
2060      if (!_c_90.term_eq (_v_deref__expr_m_all6, 0))
2061      {
2062        goto _block1__branch7;
2063      }
2064      Expr _ve_rest (_ve_expr_m_all, 1, _v_len__rest6);
2065      Expr _ve_args (_v_deref__expr_m_all6, 1, _v_len__args);
2066      RF_TAILCALL (Expr_m_Int_m_To_m_CPP, (_ve_init + _ve_expr_m_all), _v_res1);
2067      goto _block1;
2068    }
2069  _block1__branch7: {}
2070    {
2071      uintptr_t _v_len25 = _ve_expr_m_all.get_len ();
2072      uintptr_t _v_len26 = 1;
2073      if ((_v_len25 < _v_len26))
2074      {
2075        goto _block1__branch8;
2076      }
2077      uintptr_t _v_len__rest7 = (_v_len25 - _v_len26);
2078      if (_ve_expr_m_all.symbol_at (0))
2079      {
2080        goto _block1__branch8;
2081      }
2082      Expr _v_deref__expr_m_all7 (_ve_expr_m_all, 0);
2083      uintptr_t _v_len27 = _v_deref__expr_m_all7.get_len ();
2084      uintptr_t _v_len28 = 1;
2085      if ((_v_len27 < _v_len28))
2086      {
2087        goto _block1__branch8;
2088      }
2089      uintptr_t _v_len__args2 = (_v_len27 - _v_len28);
2090      if (!_c_91.term_eq (_v_deref__expr_m_all7, 0))
2091      {
2092        goto _block1__branch8;
2093      }
2094      Expr _ve_rest (_ve_expr_m_all, 1, _v_len__rest7);
2095      Expr _ve_args (_v_deref__expr_m_all7, 1, _v_len__args2);
2096      RF_TAILCALL (Expr_m_Int_m_To_m_CPP, (_ve_init + _ve_expr_m_all), _v_res1);
2097      goto _block1;
2098    }
2099  _block1__branch8: {}
2100    {
2101      uintptr_t _v_len29 = _ve_expr_m_all.get_len ();
2102      uintptr_t _v_len30 = 1;
2103      if ((_v_len29 < _v_len30))
2104      {
2105        goto _block1__branch9;
2106      }
2107      uintptr_t _v_len__rest8 = (_v_len29 - _v_len30);
2108      if (_ve_expr_m_all.symbol_at (0))
2109      {
2110        goto _block1__branch9;
2111      }
2112      Expr _v_deref__expr_m_all8 (_ve_expr_m_all, 0);
2113      uintptr_t _v_len31 = _v_deref__expr_m_all8.get_len ();
2114      uintptr_t _v_len32 = 2;
2115      if ((_v_len31 < _v_len32))
2116      {
2117        goto _block1__branch9;
2118      }
2119      uintptr_t _v_len__args3 = (_v_len31 - _v_len32);
2120      if (!_c_92.term_eq (_v_deref__expr_m_all8, 0))
2121      {
2122        goto _block1__branch9;
2123      }
2124      if (!_v_deref__expr_m_all8.symbol_at (1))
2125      {
2126        goto _block1__branch9;
2127      }
2128      Expr _ve_rest (_ve_expr_m_all, 1, _v_len__rest8);
2129      Expr _vs_op (_v_deref__expr_m_all8, 1, 1);
2130      Expr _ve_args (_v_deref__expr_m_all8, 2, _v_len__args3);
2131      RF_TAILCALL (Expr_m_Int_m_To_m_CPP, (_ve_init + _ve_expr_m_all), _v_res1);
2132      goto _block1;
2133    }
2134  _block1__branch9: {}
2135    uintptr_t _v_len33 = _ve_expr_m_all.get_len ();
2136    uintptr_t _v_len34 = 1;
2137    if ((_v_len33 < _v_len34))
2138    {
2139      RF_FUNC_ERROR (unexpected_fail);
2140    }
2141    uintptr_t _v_len__rest9 = (_v_len33 - _v_len34);
2142    if (_ve_expr_m_all.symbol_at (0))
2143    {
2144      RF_FUNC_ERROR (unexpected_fail);
2145    }
2146    Expr _v_deref__expr_m_all9 (_ve_expr_m_all, 0);
2147    if ((_v_deref__expr_m_all9.get_len () != 2))
2148    {
2149      RF_FUNC_ERROR (unexpected_fail);
2150    }
2151    if (_v_deref__expr_m_all9.symbol_at (1))
2152    {
2153      RF_FUNC_ERROR (unexpected_fail);
2154    }
2155    Expr _v_deref__deref__expr_m_all9 (_v_deref__expr_m_all9, 1);
2156    uintptr_t _v_len35 = _v_deref__deref__expr_m_all9.get_len ();
2157    uintptr_t _v_len36 = 0;
2158    if ((_v_len35 < _v_len36))
2159    {
2160      RF_FUNC_ERROR (unexpected_fail);
2161    }
2162    uintptr_t _v_len__QualifiedName = (_v_len35 - _v_len36);
2163    if (!_v_deref__expr_m_all9.symbol_at (0))
2164    {
2165      RF_FUNC_ERROR (unexpected_fail);
2166    }
2167    Expr _ve_rest (_ve_expr_m_all, 1, _v_len__rest9);
2168    Expr _vs_var_m_tag (_v_deref__expr_m_all9, 0, 1);
2169    Expr _ve_QualifiedName (_v_deref__deref__expr_m_all9, 0, _v_len__QualifiedName);
2170    RF_TAILCALL (Expr_m_To_m_CPP, ((_ve_init + (_vs_var_m_tag + _ve_QualifiedName ()) ()), _ve_rest), _v_res1);
2171  }
2172_block1: {}
2173RF_END
2174
2175RF_FUNC (Expr_m_Ref_m_To_m_CPP, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
2176  {
2177    {
2178      if ((_v_arg1.get_len () != 0))
2179      {
2180        goto _block1__branch1;
2181      }
2182      _v_res1 = _c_93;
2183      goto _block1;
2184    }
2185  _block1__branch1: {}
2186    {
2187      if ((_v_arg1.get_len () != 1))
2188      {
2189        goto _block1__branch2;
2190      }
2191      Expr _vt_erm (_v_arg1, 0, 1);
2192      RF_TAILCALL (Term_m_Ref_m_To_m_CPP, _vt_erm, _v_res1);
2193      goto _block1;
2194    }
2195  _block1__branch2: {}
2196    Expr _v_Paren1;
2197    RF_CALL (List::Paren, _v_arg1, _v_Paren1);
2198    Expr _v_Infix_m_To_m_CPP1;
2199    RF_CALL (Infix_m_To_m_CPP, (_c_94, _c_95, _v_Paren1), _v_Infix_m_To_m_CPP1);
2200    _v_res1 = (_c_96 + _v_Infix_m_To_m_CPP1 + _c_23);
2201  }
2202_block1: {}
2203RF_END
2204
2205RF_FUNC (Term_m_Ref_m_To_m_CPP, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
2206  {
2207    {
2208      if ((_v_arg1.get_len () != 1))
2209      {
2210        goto _block1__branch1;
2211      }
2212      if (_v_arg1.symbol_at (0))
2213      {
2214        goto _block1__branch1;
2215      }
2216      Expr _v_deref__arg1 (_v_arg1, 0);
2217      uintptr_t _v_len1 = _v_deref__arg1.get_len ();
2218      uintptr_t _v_len2 = 1;
2219      if ((_v_len1 < _v_len2))
2220      {
2221        goto _block1__branch1;
2222      }
2223      uintptr_t _v_len__expr = (_v_len1 - _v_len2);
2224      if (!_c_88.term_eq (_v_deref__arg1, 0))
2225      {
2226        goto _block1__branch1;
2227      }
2228      Expr _ve_expr (_v_deref__arg1, 1, _v_len__expr);
2229      Expr _v_Expr_m_Ref_m_To_m_CPP1;
2230      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP1);
2231      _v_res1 = (_v_Expr_m_Ref_m_To_m_CPP1 + _c_97);
2232      goto _block1;
2233    }
2234  _block1__branch1: {}
2235    {
2236      if ((_v_arg1.get_len () != 1))
2237      {
2238        goto _block1__branch2;
2239      }
2240      if (_v_arg1.symbol_at (0))
2241      {
2242        goto _block1__branch2;
2243      }
2244      Expr _v_deref__arg12 (_v_arg1, 0);
2245      uintptr_t _v_len3 = _v_deref__arg12.get_len ();
2246      uintptr_t _v_len4 = 1;
2247      if ((_v_len3 < _v_len4))
2248      {
2249        goto _block1__branch2;
2250      }
2251      uintptr_t _v_len__expr2 = (_v_len3 - _v_len4);
2252      if (!_c_53.term_eq (_v_deref__arg12, 0))
2253      {
2254        goto _block1__branch2;
2255      }
2256      Expr _ve_expr (_v_deref__arg12, 1, _v_len__expr2);
2257      Expr _v_Expr_m_Ref_m_To_m_CPP2;
2258      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP2);
2259      _v_res1 = (_c_98 + _v_Expr_m_Ref_m_To_m_CPP2 + _c_23);
2260      goto _block1;
2261    }
2262  _block1__branch2: {}
2263    {
2264      if ((_v_arg1.get_len () != 1))
2265      {
2266        goto _block1__branch3;
2267      }
2268      if (_v_arg1.symbol_at (0))
2269      {
2270        goto _block1__branch3;
2271      }
2272      Expr _v_deref__arg13 (_v_arg1, 0);
2273      uintptr_t _v_len5 = _v_deref__arg13.get_len ();
2274      uintptr_t _v_len6 = 2;
2275      if ((_v_len5 < _v_len6))
2276      {
2277        goto _block1__branch3;
2278      }
2279      uintptr_t _v_len__expr3 = (_v_len5 - _v_len6);
2280      if (_v_deref__arg13.symbol_at ((_v_len__expr3 + 1)))
2281      {
2282        goto _block1__branch3;
2283      }
2284      Expr _v_deref__deref__arg13 (_v_deref__arg13, (_v_len__expr3 + 1));
2285      uintptr_t _v_len7 = _v_deref__deref__arg13.get_len ();
2286      uintptr_t _v_len8 = 0;
2287      if ((_v_len7 < _v_len8))
2288      {
2289        goto _block1__branch3;
2290      }
2291      uintptr_t _v_len__pos = (_v_len7 - _v_len8);
2292      if (!_c_56.term_eq (_v_deref__arg13, 0))
2293      {
2294        goto _block1__branch3;
2295      }
2296      Expr _ve_expr (_v_deref__arg13, 1, _v_len__expr3);
2297      Expr _ve_pos (_v_deref__deref__arg13, 0, _v_len__pos);
2298      Expr _v_Expr_m_Ref_m_To_m_CPP3;
2299      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP3);
2300      Expr _v_Expr_m_Int_m_To_m_CPP1;
2301      RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_pos, _v_Expr_m_Int_m_To_m_CPP1);
2302      _v_res1 = (_c_98 + _v_Expr_m_Ref_m_To_m_CPP3 + _c_24 + _v_Expr_m_Int_m_To_m_CPP1 + _c_23);
2303      goto _block1;
2304    }
2305  _block1__branch3: {}
2306    {
2307      if ((_v_arg1.get_len () != 1))
2308      {
2309        goto _block1__branch4;
2310      }
2311      if (_v_arg1.symbol_at (0))
2312      {
2313        goto _block1__branch4;
2314      }
2315      Expr _v_deref__arg14 (_v_arg1, 0);
2316      uintptr_t _v_len9 = _v_deref__arg14.get_len ();
2317      uintptr_t _v_len10 = 3;
2318      if ((_v_len9 < _v_len10))
2319      {
2320        goto _block1__branch4;
2321      }
2322      uintptr_t _v_len__expr4 = (_v_len9 - _v_len10);
2323      if (_v_deref__arg14.symbol_at ((_v_len__expr4 + 1)))
2324      {
2325        goto _block1__branch4;
2326      }
2327      if (_v_deref__arg14.symbol_at ((_v_len__expr4 + 2)))
2328      {
2329        goto _block1__branch4;
2330      }
2331      Expr _v_deref__deref__arg14 (_v_deref__arg14, (_v_len__expr4 + 1));
2332      Expr _v_deref__deref__arg142 (_v_deref__arg14, (_v_len__expr4 + 2));
2333      uintptr_t _v_len11 = _v_deref__deref__arg142.get_len ();
2334      uintptr_t _v_len12 = 0;
2335      if ((_v_len11 < _v_len12))
2336      {
2337        goto _block1__branch4;
2338      }
2339      uintptr_t _v_len__len = (_v_len11 - _v_len12);
2340      uintptr_t _v_len13 = _v_deref__deref__arg14.get_len ();
2341      uintptr_t _v_len14 = 0;
2342      if ((_v_len13 < _v_len14))
2343      {
2344        goto _block1__branch4;
2345      }
2346      uintptr_t _v_len__pos2 = (_v_len13 - _v_len14);
2347      if (!_c_57.term_eq (_v_deref__arg14, 0))
2348      {
2349        goto _block1__branch4;
2350      }
2351      Expr _ve_expr (_v_deref__arg14, 1, _v_len__expr4);
2352      Expr _ve_pos (_v_deref__deref__arg14, 0, _v_len__pos2);
2353      Expr _ve_len (_v_deref__deref__arg142, 0, _v_len__len);
2354      Expr _v_Expr_m_Ref_m_To_m_CPP4;
2355      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP4);
2356      Expr _v_Expr_m_Int_m_To_m_CPP2;
2357      RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_pos, _v_Expr_m_Int_m_To_m_CPP2);
2358      Expr _v_Expr_m_Int_m_To_m_CPP3;
2359      RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_len, _v_Expr_m_Int_m_To_m_CPP3);
2360      _v_res1 = (_c_98 + _v_Expr_m_Ref_m_To_m_CPP4 + _c_24 + _v_Expr_m_Int_m_To_m_CPP2 + _c_24 + _v_Expr_m_Int_m_To_m_CPP3 + _c_23);
2361      goto _block1;
2362    }
2363  _block1__branch4: {}
2364    {
2365      if ((_v_arg1.get_len () != 1))
2366      {
2367        goto _block1__branch5;
2368      }
2369      if (_v_arg1.symbol_at (0))
2370      {
2371        goto _block1__branch5;
2372      }
2373      Expr _v_deref__arg15 (_v_arg1, 0);
2374      if ((_v_deref__arg15.get_len () != 2))
2375      {
2376        goto _block1__branch5;
2377      }
2378      if (!_c_99.term_eq (_v_deref__arg15, 0))
2379      {
2380        goto _block1__branch5;
2381      }
2382      Expr _vt_name (_v_deref__arg15, 1, 1);
2383      RF_TAILCALL (Name_m_To_m_CPP, _vt_name, _v_res1);
2384      goto _block1;
2385    }
2386  _block1__branch5: {}
2387    {
2388      if ((_v_arg1.get_len () != 1))
2389      {
2390        goto _block1__branch6;
2391      }
2392      if (!_c_100.term_eq (_v_arg1, 0))
2393      {
2394        goto _block1__branch6;
2395      }
2396      _v_res1 = _c_101;
2397      goto _block1;
2398    }
2399  _block1__branch6: {}
2400    {
2401      if ((_v_arg1.get_len () != 1))
2402      {
2403        goto _block1__branch7;
2404      }
2405      if (_v_arg1.symbol_at (0))
2406      {
2407        goto _block1__branch7;
2408      }
2409      Expr _v_deref__arg16 (_v_arg1, 0);
2410      if ((_v_deref__arg16.get_len () != 2))
2411      {
2412        goto _block1__branch7;
2413      }
2414      if (!_c_68.term_eq (_v_deref__arg16, 0))
2415      {
2416        goto _block1__branch7;
2417      }
2418      Expr _vt_name (_v_deref__arg16, 1, 1);
2419      Expr _ve_namespace;
2420      RF_CALL (Box::_q_, Current_m_Namespace, _ve_namespace);
2421      Expr _ve_prefix;
2422      {
2423        {
2424          Expr _v__q_1;
2425          RF_CALL (Box::_q_, Module_m_Name, _v__q_1);
2426          if ((_v__q_1.get_len () != _ve_namespace.get_len ()))
2427          {
2428            goto _block2__branch1;
2429          }
2430          if (!_ve_namespace.eq (_v__q_1, 0))
2431          {
2432            goto _block2__branch1;
2433          }
2434          _ve_prefix = empty;
2435          goto _block2;
2436        }
2437      _block2__branch1: {}
2438        Expr _v__q_2;
2439        RF_CALL (Box::_q_, Module_m_Name, _v__q_2);
2440        _ve_prefix = (_v__q_2 + _c_102);
2441      }
2442    _block2: {}
2443      Expr _v_Rfp2Cpp1;
2444      RF_CALL (CppMangle::Rfp2Cpp, (_c_68 + _vt_name) (), _v_Rfp2Cpp1);
2445      _v_res1 = (_ve_prefix + _v_Rfp2Cpp1);
2446      goto _block1;
2447    }
2448  _block1__branch7: {}
2449    if ((_v_arg1.get_len () != 1))
2450    {
2451      RF_FUNC_ERROR (unexpected_fail);
2452    }
2453    if (_v_arg1.symbol_at (0))
2454    {
2455      RF_FUNC_ERROR (unexpected_fail);
2456    }
2457    Expr _v_deref__arg17 (_v_arg1, 0);
2458    if ((_v_deref__arg17.get_len () != 2))
2459    {
2460      RF_FUNC_ERROR (unexpected_fail);
2461    }
2462    if (!_v_deref__arg17.symbol_at (0))
2463    {
2464      RF_FUNC_ERROR (unexpected_fail);
2465    }
2466    Expr _vs_var_m_tag (_v_deref__arg17, 0, 1);
2467    Expr _vt_name (_v_deref__arg17, 1, 1);
2468    RF_TAILCALL (CppMangle::Rfp2Cpp, (_vs_var_m_tag + _vt_name) (), _v_res1);
2469  }
2470_block1: {}
2471RF_END
2472
2473RF_FUNC (Expr_m_Int_m_To_m_CPP, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
2474  {
2475    {
2476      if ((_v_arg1.get_len () != 0))
2477      {
2478        goto _block1__branch1;
2479      }
2480      _v_res1 = empty;
2481      goto _block1;
2482    }
2483  _block1__branch1: {}
2484    {
2485      if ((_v_arg1.get_len () != 1))
2486      {
2487        goto _block1__branch2;
2488      }
2489      if (!_v_arg1.symbol_at (0))
2490      {
2491        goto _block1__branch2;
2492      }
2493      Expr _vs_ObjectSymbol (_v_arg1, 0, 1);
2494      {
2495        {
2496          if (!RF_CALL (Class::Int_q_, _vs_ObjectSymbol, /*void*/))
2497          {
2498            goto _block2__branch1;
2499          }
2500          _v_res1 = _vs_ObjectSymbol;
2501          goto _block2;
2502        }
2503      _block2__branch1: {}
2504        RF_ERROR ((_c_103 + _vs_ObjectSymbol) ());
2505      }
2506    _block2: {}
2507      goto _block1;
2508    }
2509  _block1__branch2: {}
2510    {
2511      if ((_v_arg1.get_len () != 1))
2512      {
2513        goto _block1__branch3;
2514      }
2515      if (_v_arg1.symbol_at (0))
2516      {
2517        goto _block1__branch3;
2518      }
2519      Expr _v_deref__arg1 (_v_arg1, 0);
2520      uintptr_t _v_len1 = _v_deref__arg1.get_len ();
2521      uintptr_t _v_len2 = 1;
2522      if ((_v_len1 < _v_len2))
2523      {
2524        goto _block1__branch3;
2525      }
2526      uintptr_t _v_len__expr = (_v_len1 - _v_len2);
2527      if (!_c_89.term_eq (_v_deref__arg1, 0))
2528      {
2529        goto _block1__branch3;
2530      }
2531      Expr _ve_expr (_v_deref__arg1, 1, _v_len__expr);
2532      Expr _v_Expr_m_Ref_m_To_m_CPP1;
2533      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP1);
2534      _v_res1 = (_v_Expr_m_Ref_m_To_m_CPP1 + _c_104);
2535      goto _block1;
2536    }
2537  _block1__branch3: {}
2538    {
2539      if ((_v_arg1.get_len () != 1))
2540      {
2541        goto _block1__branch4;
2542      }
2543      if (_v_arg1.symbol_at (0))
2544      {
2545        goto _block1__branch4;
2546      }
2547      Expr _v_deref__arg12 (_v_arg1, 0);
2548      uintptr_t _v_len3 = _v_deref__arg12.get_len ();
2549      uintptr_t _v_len4 = 1;
2550      if ((_v_len3 < _v_len4))
2551      {
2552        goto _block1__branch4;
2553      }
2554      uintptr_t _v_len__args = (_v_len3 - _v_len4);
2555      if (!_c_90.term_eq (_v_deref__arg12, 0))
2556      {
2557        goto _block1__branch4;
2558      }
2559      Expr _ve_args (_v_deref__arg12, 1, _v_len__args);
2560      Expr _v_Args_m_To_m_CPP1;
2561      RF_CALL (Args_m_To_m_CPP, (empty, _c_105, _ve_args), _v_Args_m_To_m_CPP1);
2562      _v_res1 = (_c_106 + _v_Args_m_To_m_CPP1 + _c_23);
2563      goto _block1;
2564    }
2565  _block1__branch4: {}
2566    {
2567      if ((_v_arg1.get_len () != 1))
2568      {
2569        goto _block1__branch5;
2570      }
2571      if (_v_arg1.symbol_at (0))
2572      {
2573        goto _block1__branch5;
2574      }
2575      Expr _v_deref__arg13 (_v_arg1, 0);
2576      uintptr_t _v_len5 = _v_deref__arg13.get_len ();
2577      uintptr_t _v_len6 = 1;
2578      if ((_v_len5 < _v_len6))
2579      {
2580        goto _block1__branch5;
2581      }
2582      uintptr_t _v_len__args2 = (_v_len5 - _v_len6);
2583      if (!_c_91.term_eq (_v_deref__arg13, 0))
2584      {
2585        goto _block1__branch5;
2586      }
2587      Expr _ve_args (_v_deref__arg13, 1, _v_len__args2);
2588      Expr _v_Args_m_To_m_CPP2;
2589      RF_CALL (Args_m_To_m_CPP, (empty, _c_105, _ve_args), _v_Args_m_To_m_CPP2);
2590      _v_res1 = (_c_107 + _v_Args_m_To_m_CPP2 + _c_23);
2591      goto _block1;
2592    }
2593  _block1__branch5: {}
2594    {
2595      if ((_v_arg1.get_len () != 1))
2596      {
2597        goto _block1__branch6;
2598      }
2599      if (_v_arg1.symbol_at (0))
2600      {
2601        goto _block1__branch6;
2602      }
2603      Expr _v_deref__arg14 (_v_arg1, 0);
2604      uintptr_t _v_len7 = _v_deref__arg14.get_len ();
2605      uintptr_t _v_len8 = 2;
2606      if ((_v_len7 < _v_len8))
2607      {
2608        goto _block1__branch6;
2609      }
2610      uintptr_t _v_len__args3 = (_v_len7 - _v_len8);
2611      if (!_c_92.term_eq (_v_deref__arg14, 0))
2612      {
2613        goto _block1__branch6;
2614      }
2615      if (!_v_deref__arg14.symbol_at (1))
2616      {
2617        goto _block1__branch6;
2618      }
2619      Expr _vs_op (_v_deref__arg14, 1, 1);
2620      Expr _ve_args (_v_deref__arg14, 2, _v_len__args3);
2621      Expr _v_Infix_m_To_m_CPP1;
2622      RF_CALL (Infix_m_To_m_CPP, (_c_108, _vs_op, _ve_args), _v_Infix_m_To_m_CPP1);
2623      _v_res1 = (_c_96 + _v_Infix_m_To_m_CPP1 + _c_23);
2624      goto _block1;
2625    }
2626  _block1__branch6: {}
2627    {
2628      if ((_v_arg1.get_len () != 1))
2629      {
2630        goto _block1__branch7;
2631      }
2632      if (_v_arg1.symbol_at (0))
2633      {
2634        goto _block1__branch7;
2635      }
2636      Expr _v_deref__arg15 (_v_arg1, 0);
2637      if ((_v_deref__arg15.get_len () != 2))
2638      {
2639        goto _block1__branch7;
2640      }
2641      if (!_c_99.term_eq (_v_deref__arg15, 0))
2642      {
2643        goto _block1__branch7;
2644      }
2645      Expr _vt_name (_v_deref__arg15, 1, 1);
2646      RF_TAILCALL (Name_m_To_m_CPP, _vt_name, _v_res1);
2647      goto _block1;
2648    }
2649  _block1__branch7: {}
2650    {
2651      if ((_v_arg1.get_len () != 1))
2652      {
2653        goto _block1__branch8;
2654      }
2655      if (_v_arg1.symbol_at (0))
2656      {
2657        goto _block1__branch8;
2658      }
2659      Expr _v_deref__arg16 (_v_arg1, 0);
2660      if ((_v_deref__arg16.get_len () != 2))
2661      {
2662        goto _block1__branch8;
2663      }
2664      if (!_v_deref__arg16.symbol_at (0))
2665      {
2666        goto _block1__branch8;
2667      }
2668      Expr _vs_var_m_tag (_v_deref__arg16, 0, 1);
2669      Expr _vt_name (_v_deref__arg16, 1, 1);
2670      RF_TAILCALL (CppMangle::Rfp2Cpp, (_vs_var_m_tag + _vt_name) (), _v_res1);
2671      goto _block1;
2672    }
2673  _block1__branch8: {}
2674    Expr _v_Paren1;
2675    RF_CALL (List::Paren, _v_arg1, _v_Paren1);
2676    Expr _v_Infix_m_To_m_CPP2;
2677    RF_CALL (Infix_m_To_m_CPP, (_c_108, _c_95, _v_Paren1), _v_Infix_m_To_m_CPP2);
2678    _v_res1 = (_c_96 + _v_Infix_m_To_m_CPP2 + _c_23);
2679  }
2680_block1: {}
2681RF_END
2682
2683RF_FUNC (Cond_m_To_m_CPP, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
2684  {
2685    {
2686      if ((_v_arg1.get_len () != 0))
2687      {
2688        goto _block1__branch1;
2689      }
2690      _v_res1 = empty;
2691      goto _block1;
2692    }
2693  _block1__branch1: {}
2694    {
2695      if ((_v_arg1.get_len () != 1))
2696      {
2697        goto _block1__branch2;
2698      }
2699      if (_v_arg1.symbol_at (0))
2700      {
2701        goto _block1__branch2;
2702      }
2703      Expr _v_deref__arg1 (_v_arg1, 0);
2704      if ((_v_deref__arg1.get_len () != 4))
2705      {
2706        goto _block1__branch2;
2707      }
2708      if (_v_deref__arg1.symbol_at (2))
2709      {
2710        goto _block1__branch2;
2711      }
2712      if (_v_deref__arg1.symbol_at (3))
2713      {
2714        goto _block1__branch2;
2715      }
2716      Expr _v_deref__deref__arg1 (_v_deref__arg1, 2);
2717      Expr _v_deref__deref__arg12 (_v_deref__arg1, 3);
2718      uintptr_t _v_len1 = _v_deref__deref__arg12.get_len ();
2719      uintptr_t _v_len2 = 0;
2720      if ((_v_len1 < _v_len2))
2721      {
2722        goto _block1__branch2;
2723      }
2724      uintptr_t _v_len__ress = (_v_len1 - _v_len2);
2725      uintptr_t _v_len3 = _v_deref__deref__arg1.get_len ();
2726      uintptr_t _v_len4 = 0;
2727      if ((_v_len3 < _v_len4))
2728      {
2729        goto _block1__branch2;
2730      }
2731      uintptr_t _v_len__exprs = (_v_len3 - _v_len4);
2732      if (!_c_80.term_eq (_v_deref__arg1, 0))
2733      {
2734        goto _block1__branch2;
2735      }
2736      Expr _vt_name (_v_deref__arg1, 1, 1);
2737      Expr _ve_exprs (_v_deref__deref__arg1, 0, _v_len__exprs);
2738      Expr _ve_ress (_v_deref__deref__arg12, 0, _v_len__ress);
2739      Expr _v_Name_m_To_m_CPP1;
2740      RF_CALL (Name_m_To_m_CPP, _vt_name, _v_Name_m_To_m_CPP1);
2741      Expr _v_Args_m_To_m_CPP1;
2742      RF_CALL (Args_m_To_m_CPP, (empty, _c_81, _ve_exprs), _v_Args_m_To_m_CPP1);
2743      Expr _v_Args_m_To_m_CPP2;
2744      RF_CALL (Args_m_To_m_CPP, (empty, _c_20, _ve_ress), _v_Args_m_To_m_CPP2);
2745      _v_res1 = (_c_109 + _v_Name_m_To_m_CPP1 + _c_24 + _v_Args_m_To_m_CPP1 + _c_24 + _v_Args_m_To_m_CPP2 + _c_23);
2746      goto _block1;
2747    }
2748  _block1__branch2: {}
2749    {
2750      if ((_v_arg1.get_len () != 1))
2751      {
2752        goto _block1__branch3;
2753      }
2754      if (_v_arg1.symbol_at (0))
2755      {
2756        goto _block1__branch3;
2757      }
2758      Expr _v_deref__arg12 (_v_arg1, 0);
2759      uintptr_t _v_len5 = _v_deref__arg12.get_len ();
2760      uintptr_t _v_len6 = 2;
2761      if ((_v_len5 < _v_len6))
2762      {
2763        goto _block1__branch3;
2764      }
2765      uintptr_t _v_len__expr = (_v_len5 - _v_len6);
2766      if (_v_deref__arg12.symbol_at ((_v_len__expr + 1)))
2767      {
2768        goto _block1__branch3;
2769      }
2770      Expr _v_deref__deref__arg122 (_v_deref__arg12, (_v_len__expr + 1));
2771      uintptr_t _v_len7 = _v_deref__deref__arg122.get_len ();
2772      uintptr_t _v_len8 = 0;
2773      if ((_v_len7 < _v_len8))
2774      {
2775        goto _block1__branch3;
2776      }
2777      uintptr_t _v_len__pos = (_v_len7 - _v_len8);
2778      if (!_c_110.term_eq (_v_deref__arg12, 0))
2779      {
2780        goto _block1__branch3;
2781      }
2782      Expr _ve_expr (_v_deref__arg12, 1, _v_len__expr);
2783      Expr _ve_pos (_v_deref__deref__arg122, 0, _v_len__pos);
2784      Expr _v_Expr_m_Ref_m_To_m_CPP1;
2785      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP1);
2786      Expr _v_Expr_m_Int_m_To_m_CPP1;
2787      RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_pos, _v_Expr_m_Int_m_To_m_CPP1);
2788      _v_res1 = (_v_Expr_m_Ref_m_To_m_CPP1 + _c_111 + _v_Expr_m_Int_m_To_m_CPP1 + _c_23);
2789      goto _block1;
2790    }
2791  _block1__branch3: {}
2792    {
2793      if ((_v_arg1.get_len () != 1))
2794      {
2795        goto _block1__branch4;
2796      }
2797      if (_v_arg1.symbol_at (0))
2798      {
2799        goto _block1__branch4;
2800      }
2801      Expr _v_deref__arg13 (_v_arg1, 0);
2802      uintptr_t _v_len9 = _v_deref__arg13.get_len ();
2803      uintptr_t _v_len10 = 3;
2804      if ((_v_len9 < _v_len10))
2805      {
2806        goto _block1__branch4;
2807      }
2808      uintptr_t _v_len__expr2 = (_v_len9 - _v_len10);
2809      if (_v_deref__arg13.symbol_at ((_v_len__expr2 + 1)))
2810      {
2811        goto _block1__branch4;
2812      }
2813      if (_v_deref__arg13.symbol_at ((_v_len__expr2 + 2)))
2814      {
2815        goto _block1__branch4;
2816      }
2817      Expr _v_deref__deref__arg13 (_v_deref__arg13, (_v_len__expr2 + 1));
2818      Expr _v_deref__deref__arg132 (_v_deref__arg13, (_v_len__expr2 + 2));
2819      uintptr_t _v_len11 = _v_deref__deref__arg132.get_len ();
2820      uintptr_t _v_len12 = 0;
2821      if ((_v_len11 < _v_len12))
2822      {
2823        goto _block1__branch4;
2824      }
2825      uintptr_t _v_len__len = (_v_len11 - _v_len12);
2826      uintptr_t _v_len13 = _v_deref__deref__arg13.get_len ();
2827      uintptr_t _v_len14 = 0;
2828      if ((_v_len13 < _v_len14))
2829      {
2830        goto _block1__branch4;
2831      }
2832      uintptr_t _v_len__pos2 = (_v_len13 - _v_len14);
2833      if (!_c_112.term_eq (_v_deref__arg13, 0))
2834      {
2835        goto _block1__branch4;
2836      }
2837      Expr _ve_expr (_v_deref__arg13, 1, _v_len__expr2);
2838      Expr _ve_pos (_v_deref__deref__arg13, 0, _v_len__pos2);
2839      Expr _ve_len (_v_deref__deref__arg132, 0, _v_len__len);
2840      Expr _v_Expr_m_Ref_m_To_m_CPP2;
2841      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP2);
2842      Expr _v_Expr_m_Int_m_To_m_CPP2;
2843      RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_pos, _v_Expr_m_Int_m_To_m_CPP2);
2844      Expr _v_Expr_m_Int_m_To_m_CPP3;
2845      RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_len, _v_Expr_m_Int_m_To_m_CPP3);
2846      _v_res1 = (_v_Expr_m_Ref_m_To_m_CPP2 + _c_113 + _v_Expr_m_Int_m_To_m_CPP2 + _c_24 + _v_Expr_m_Int_m_To_m_CPP3 + _c_23);
2847      goto _block1;
2848    }
2849  _block1__branch4: {}
2850    {
2851      if ((_v_arg1.get_len () != 1))
2852      {
2853        goto _block1__branch5;
2854      }
2855      if (_v_arg1.symbol_at (0))
2856      {
2857        goto _block1__branch5;
2858      }
2859      Expr _v_deref__arg14 (_v_arg1, 0);
2860      uintptr_t _v_len15 = _v_deref__arg14.get_len ();
2861      uintptr_t _v_len16 = 1;
2862      if ((_v_len15 < _v_len16))
2863      {
2864        goto _block1__branch5;
2865      }
2866      uintptr_t _v_len__expr3 = (_v_len15 - _v_len16);
2867      if (!_c_114.term_eq (_v_deref__arg14, 0))
2868      {
2869        goto _block1__branch5;
2870      }
2871      Expr _ve_expr (_v_deref__arg14, 1, _v_len__expr3);
2872      Expr _v_Expr_m_Ref_m_To_m_CPP3;
2873      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP3);
2874      _v_res1 = (_c_115 + _v_Expr_m_Ref_m_To_m_CPP3 + _c_23);
2875      goto _block1;
2876    }
2877  _block1__branch5: {}
2878    {
2879      if ((_v_arg1.get_len () != 1))
2880      {
2881        goto _block1__branch6;
2882      }
2883      if (_v_arg1.symbol_at (0))
2884      {
2885        goto _block1__branch6;
2886      }
2887      Expr _v_deref__arg15 (_v_arg1, 0);
2888      uintptr_t _v_len17 = _v_deref__arg15.get_len ();
2889      uintptr_t _v_len18 = 3;
2890      if ((_v_len17 < _v_len18))
2891      {
2892        goto _block1__branch6;
2893      }
2894      uintptr_t _v_len__expr1 = (_v_len17 - _v_len18);
2895      if (_v_deref__arg15.symbol_at ((_v_len__expr1 + 1)))
2896      {
2897        goto _block1__branch6;
2898      }
2899      if (_v_deref__arg15.symbol_at ((_v_len__expr1 + 2)))
2900      {
2901        goto _block1__branch6;
2902      }
2903      Expr _v_deref__deref__arg15 (_v_deref__arg15, (_v_len__expr1 + 1));
2904      Expr _v_deref__deref__arg152 (_v_deref__arg15, (_v_len__expr1 + 2));
2905      uintptr_t _v_len19 = _v_deref__deref__arg152.get_len ();
2906      uintptr_t _v_len20 = 0;
2907      if ((_v_len19 < _v_len20))
2908      {
2909        goto _block1__branch6;
2910      }
2911      uintptr_t _v_len__pos3 = (_v_len19 - _v_len20);
2912      uintptr_t _v_len21 = _v_deref__deref__arg15.get_len ();
2913      uintptr_t _v_len22 = 0;
2914      if ((_v_len21 < _v_len22))
2915      {
2916        goto _block1__branch6;
2917      }
2918      uintptr_t _v_len__expr22 = (_v_len21 - _v_len22);
2919      if (!_c_116.term_eq (_v_deref__arg15, 0))
2920      {
2921        goto _block1__branch6;
2922      }
2923      Expr _ve_expr1 (_v_deref__arg15, 1, _v_len__expr1);
2924      Expr _ve_expr2 (_v_deref__deref__arg15, 0, _v_len__expr22);
2925      Expr _ve_pos (_v_deref__deref__arg152, 0, _v_len__pos3);
2926      Expr _v_Expr_m_Ref_m_To_m_CPP4;
2927      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr1, _v_Expr_m_Ref_m_To_m_CPP4);
2928      Expr _v_Expr_m_Ref_m_To_m_CPP5;
2929      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr2, _v_Expr_m_Ref_m_To_m_CPP5);
2930      Expr _v_Expr_m_Int_m_To_m_CPP4;
2931      RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_pos, _v_Expr_m_Int_m_To_m_CPP4);
2932      _v_res1 = (_v_Expr_m_Ref_m_To_m_CPP4 + _c_117 + _v_Expr_m_Ref_m_To_m_CPP5 + _c_24 + _v_Expr_m_Int_m_To_m_CPP4 + _c_23);
2933      goto _block1;
2934    }
2935  _block1__branch6: {}
2936    {
2937      if ((_v_arg1.get_len () != 1))
2938      {
2939        goto _block1__branch7;
2940      }
2941      if (_v_arg1.symbol_at (0))
2942      {
2943        goto _block1__branch7;
2944      }
2945      Expr _v_deref__arg16 (_v_arg1, 0);
2946      uintptr_t _v_len23 = _v_deref__arg16.get_len ();
2947      uintptr_t _v_len24 = 3;
2948      if ((_v_len23 < _v_len24))
2949      {
2950        goto _block1__branch7;
2951      }
2952      uintptr_t _v_len__expr12 = (_v_len23 - _v_len24);
2953      if (_v_deref__arg16.symbol_at ((_v_len__expr12 + 1)))
2954      {
2955        goto _block1__branch7;
2956      }
2957      if (_v_deref__arg16.symbol_at ((_v_len__expr12 + 2)))
2958      {
2959        goto _block1__branch7;
2960      }
2961      Expr _v_deref__deref__arg16 (_v_deref__arg16, (_v_len__expr12 + 1));
2962      Expr _v_deref__deref__arg162 (_v_deref__arg16, (_v_len__expr12 + 2));
2963      uintptr_t _v_len25 = _v_deref__deref__arg162.get_len ();
2964      uintptr_t _v_len26 = 0;
2965      if ((_v_len25 < _v_len26))
2966      {
2967        goto _block1__branch7;
2968      }
2969      uintptr_t _v_len__pos4 = (_v_len25 - _v_len26);
2970      uintptr_t _v_len27 = _v_deref__deref__arg16.get_len ();
2971      uintptr_t _v_len28 = 0;
2972      if ((_v_len27 < _v_len28))
2973      {
2974        goto _block1__branch7;
2975      }
2976      uintptr_t _v_len__expr23 = (_v_len27 - _v_len28);
2977      if (!_c_118.term_eq (_v_deref__arg16, 0))
2978      {
2979        goto _block1__branch7;
2980      }
2981      Expr _ve_expr1 (_v_deref__arg16, 1, _v_len__expr12);
2982      Expr _ve_expr2 (_v_deref__deref__arg16, 0, _v_len__expr23);
2983      Expr _ve_pos (_v_deref__deref__arg162, 0, _v_len__pos4);
2984      Expr _v_Expr_m_Ref_m_To_m_CPP6;
2985      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr1, _v_Expr_m_Ref_m_To_m_CPP6);
2986      Expr _v_Expr_m_Ref_m_To_m_CPP7;
2987      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr2, _v_Expr_m_Ref_m_To_m_CPP7);
2988      Expr _v_Expr_m_Int_m_To_m_CPP5;
2989      RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_pos, _v_Expr_m_Int_m_To_m_CPP5);
2990      _v_res1 = (_v_Expr_m_Ref_m_To_m_CPP6 + _c_119 + _v_Expr_m_Ref_m_To_m_CPP7 + _c_24 + _v_Expr_m_Int_m_To_m_CPP5 + _c_23);
2991      goto _block1;
2992    }
2993  _block1__branch7: {}
2994    {
2995      if ((_v_arg1.get_len () != 1))
2996      {
2997        goto _block1__branch8;
2998      }
2999      if (_v_arg1.symbol_at (0))
3000      {
3001        goto _block1__branch8;
3002      }
3003      Expr _v_deref__arg17 (_v_arg1, 0);
3004      uintptr_t _v_len29 = _v_deref__arg17.get_len ();
3005      uintptr_t _v_len30 = 1;
3006      if ((_v_len29 < _v_len30))
3007      {
3008        goto _block1__branch8;
3009      }
3010      uintptr_t _v_len__cond = (_v_len29 - _v_len30);
3011      if (!_c_120.term_eq (_v_deref__arg17, 0))
3012      {
3013        goto _block1__branch8;
3014      }
3015      Expr _ve_cond (_v_deref__arg17, 1, _v_len__cond);
3016      Expr _v_Cond_m_To_m_CPP1;
3017      RF_CALL (Cond_m_To_m_CPP, _ve_cond, _v_Cond_m_To_m_CPP1);
3018      _v_res1 = (_c_121 + _v_Cond_m_To_m_CPP1);
3019      goto _block1;
3020    }
3021  _block1__branch8: {}
3022    {
3023      if ((_v_arg1.get_len () != 1))
3024      {
3025        goto _block1__branch9;
3026      }
3027      if (_v_arg1.symbol_at (0))
3028      {
3029        goto _block1__branch9;
3030      }
3031      Expr _v_deref__arg18 (_v_arg1, 0);
3032      uintptr_t _v_len31 = _v_deref__arg18.get_len ();
3033      uintptr_t _v_len32 = 2;
3034      if ((_v_len31 < _v_len32))
3035      {
3036        goto _block1__branch9;
3037      }
3038      uintptr_t _v_len__args = (_v_len31 - _v_len32);
3039      if (!_c_92.term_eq (_v_deref__arg18, 0))
3040      {
3041        goto _block1__branch9;
3042      }
3043      if (!_v_deref__arg18.symbol_at (1))
3044      {
3045        goto _block1__branch9;
3046      }
3047      Expr _vs_op (_v_deref__arg18, 1, 1);
3048      Expr _ve_args (_v_deref__arg18, 2, _v_len__args);
3049      Expr _v_Op_m_Arg_m_To_m_CPP1;
3050      RF_CALL (Op_m_Arg_m_To_m_CPP, _vs_op, _v_Op_m_Arg_m_To_m_CPP1);
3051      Expr _v_Infix_m_To_m_CPP1;
3052      RF_CALL (Infix_m_To_m_CPP, (_v_Op_m_Arg_m_To_m_CPP1, _vs_op, _ve_args), _v_Infix_m_To_m_CPP1);
3053      _v_res1 = (_c_96 + _v_Infix_m_To_m_CPP1 + _c_23);
3054      goto _block1;
3055    }
3056  _block1__branch9: {}
3057    Expr _v_Paren1;
3058    RF_CALL (List::Paren, _v_arg1, _v_Paren1);
3059    Expr _v_Infix_m_To_m_CPP2;
3060    RF_CALL (Infix_m_To_m_CPP, (_c_122, _c_123, _v_Paren1), _v_Infix_m_To_m_CPP2);
3061    _v_res1 = (_c_96 + _v_Infix_m_To_m_CPP2 + _c_23);
3062  }
3063_block1: {}
3064RF_END
3065
3066RF_FUNC (Infix_m_To_m_CPP, (RF_ARG _vs_arg2cpp, _vs_op, _ve_args;;), (RF_RES _v_res1;;))
3067  {
3068    {
3069      uintptr_t _v_len1 = _ve_args.get_len ();
3070      uintptr_t _v_len2 = 1;
3071      if ((_v_len1 < _v_len2))
3072      {
3073        goto _block1__branch1;
3074      }
3075      uintptr_t _v_len__rest = (_v_len1 - _v_len2);
3076      if (_ve_args.symbol_at (0))
3077      {
3078        goto _block1__branch1;
3079      }
3080      Expr _v_deref__args (_ve_args, 0);
3081      uintptr_t _v_len3 = _v_deref__args.get_len ();
3082      uintptr_t _v_len4 = 0;
3083      if ((_v_len3 < _v_len4))
3084      {
3085        goto _block1__branch1;
3086      }
3087      uintptr_t _v_len__arg = (_v_len3 - _v_len4);
3088      Expr _ve_rest (_ve_args, 1, _v_len__rest);
3089      Expr _ve_arg (_v_deref__args, 0, _v_len__arg);
3090      if (!RF_CALL (Apply::Apply, (_vs_arg2cpp, _ve_arg), _ve_arg))
3091      {
3092        RF_FUNC_ERROR (unexpected_fail);
3093      }
3094      RF_CALL (Infix_m_To_m_CPP, (_vs_arg2cpp, _vs_op, _ve_rest), _ve_rest);
3095      {
3096        {
3097          uintptr_t _v_len5 = _ve_rest.get_len ();
3098          uintptr_t _v_len6 = 0;
3099          if ((_v_len5 < (_v_len6 + 1)))
3100          {
3101            goto _block2__branch1;
3102          }
3103          uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_362_m_28 = (_v_len5 - _v_len6);
3104          uintptr_t _v_len7 = _ve_arg.get_len ();
3105          uintptr_t _v_len8 = 0;
3106          if ((_v_len7 < (_v_len8 + 1)))
3107          {
3108            goto _block2__branch1;
3109          }
3110          uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_362_m_16 = (_v_len7 - _v_len8);
3111          Expr _vv__e__e_tmp_m_rfp__asail__cpprf_m_362_m_16 (_ve_arg, 0, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_362_m_16);
3112          Expr _vv__e__e_tmp_m_rfp__asail__cpprf_m_362_m_28 (_ve_rest, 0, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_362_m_28);
3113          _v_res1 = (_ve_arg + _c_51 + _vs_op + _c_51 + _ve_rest);
3114          goto _block2;
3115        }
3116      _block2__branch1: {}
3117        _v_res1 = (_ve_arg + _ve_rest);
3118      }
3119    _block2: {}
3120      goto _block1;
3121    }
3122  _block1__branch1: {}
3123    _v_res1 = empty;
3124  }
3125_block1: {}
3126RF_END
3127
3128RF_FUNC (Op_m_Arg_m_To_m_CPP, (RF_ARG _vs_op;;), (RF_RES _v_res1;;))
3129  {
3130    {
3131      {
3132        {
3133          if (!_vs_op.term_eq (_c_123, 0))
3134          {
3135            goto _block2__branch1;
3136          }
3137          goto _block2;
3138        }
3139      _block2__branch1: {}
3140        if (!_vs_op.term_eq (_c_124, 0))
3141        {
3142          goto _block1__branch1;
3143        }
3144      }
3145    _block2: {}
3146      _v_res1 = _c_122;
3147      goto _block1;
3148    }
3149  _block1__branch1: {}
3150    {
3151      {
3152        if (!_vs_op.term_eq (_c_125, 0))
3153        {
3154          goto _block3__branch1;
3155        }
3156        goto _block3;
3157      }
3158    _block3__branch1: {}
3159      {
3160        if (!_vs_op.term_eq (_c_126, 0))
3161        {
3162          goto _block3__branch2;
3163        }
3164        goto _block3;
3165      }
3166    _block3__branch2: {}
3167      {
3168        if (!_vs_op.term_eq (_c_127, 0))
3169        {
3170          goto _block3__branch3;
3171        }
3172        goto _block3;
3173      }
3174    _block3__branch3: {}
3175      {
3176        if (!_vs_op.term_eq (_c_128, 0))
3177        {
3178          goto _block3__branch4;
3179        }
3180        goto _block3;
3181      }
3182    _block3__branch4: {}
3183      {
3184        if (!_vs_op.term_eq (_c_129, 0))
3185        {
3186          goto _block3__branch5;
3187        }
3188        goto _block3;
3189      }
3190    _block3__branch5: {}
3191      {
3192        if (!_vs_op.term_eq (_c_130, 0))
3193        {
3194          goto _block3__branch6;
3195        }
3196        goto _block3;
3197      }
3198    _block3__branch6: {}
3199      {
3200        if (!_vs_op.term_eq (_c_95, 0))
3201        {
3202          goto _block3__branch7;
3203        }
3204        goto _block3;
3205      }
3206    _block3__branch7: {}
3207      {
3208        if (!_vs_op.term_eq (_c_131, 0))
3209        {
3210          goto _block3__branch8;
3211        }
3212        goto _block3;
3213      }
3214    _block3__branch8: {}
3215      {
3216        if (!_vs_op.term_eq (_c_132, 0))
3217        {
3218          goto _block3__branch9;
3219        }
3220        goto _block3;
3221      }
3222    _block3__branch9: {}
3223      {
3224        if (!_vs_op.term_eq (_c_133, 0))
3225        {
3226          goto _block3__branch10;
3227        }
3228        goto _block3;
3229      }
3230    _block3__branch10: {}
3231      if (!_vs_op.term_eq (_c_134, 0))
3232      {
3233        RF_FUNC_ERROR (unexpected_fail);
3234      }
3235    }
3236  _block3: {}
3237    _v_res1 = _c_108;
3238  }
3239_block1: {}
3240RF_END
3241
3242RF_FUNC (Step_m_To_m_CPP, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
3243  {
3244    {
3245      if ((_v_arg1.get_len () != 0))
3246      {
3247        goto _block1__branch1;
3248      }
3249      _v_res1 = empty;
3250      goto _block1;
3251    }
3252  _block1__branch1: {}
3253    {
3254      if ((_v_arg1.get_len () != 1))
3255      {
3256        goto _block1__branch2;
3257      }
3258      if (_v_arg1.symbol_at (0))
3259      {
3260        goto _block1__branch2;
3261      }
3262      Expr _v_deref__arg1 (_v_arg1, 0);
3263      uintptr_t _v_len1 = _v_deref__arg1.get_len ();
3264      uintptr_t _v_len2 = 1;
3265      if ((_v_len1 < _v_len2))
3266      {
3267        goto _block1__branch2;
3268      }
3269      uintptr_t _v_len__expr = (_v_len1 - _v_len2);
3270      if (!_c_135.term_eq (_v_deref__arg1, 0))
3271      {
3272        goto _block1__branch2;
3273      }
3274      Expr _ve_expr (_v_deref__arg1, 1, _v_len__expr);
3275      Expr _v_Expr_m_Ref_m_To_m_CPP1;
3276      RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP1);
3277      _v_res1 = (_c_115 + _v_Expr_m_Ref_m_To_m_CPP1 + _c_136);
3278      goto _block1;
3279    }
3280  _block1__branch2: {}
3281    if ((_v_arg1.get_len () != 1))
3282    {
3283      RF_FUNC_ERROR (unexpected_fail);
3284    }
3285    if (_v_arg1.symbol_at (0))
3286    {
3287      RF_FUNC_ERROR (unexpected_fail);
3288    }
3289    Expr _v_deref__arg12 (_v_arg1, 0);
3290    uintptr_t _v_len3 = _v_deref__arg12.get_len ();
3291    uintptr_t _v_len4 = 1;
3292    if ((_v_len3 < _v_len4))
3293    {
3294      RF_FUNC_ERROR (unexpected_fail);
3295    }
3296    uintptr_t _v_len__expr2 = (_v_len3 - _v_len4);
3297    if (!_c_137.term_eq (_v_deref__arg12, 0))
3298    {
3299      RF_FUNC_ERROR (unexpected_fail);
3300    }
3301    Expr _ve_expr (_v_deref__arg12, 1, _v_len__expr2);
3302    Expr _v_Expr_m_Ref_m_To_m_CPP2;
3303    RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_expr, _v_Expr_m_Ref_m_To_m_CPP2);
3304    _v_res1 = (_c_115 + _v_Expr_m_Ref_m_To_m_CPP2 + _c_138);
3305  }
3306_block1: {}
3307RF_END
3308
3309RF_FUNC (Const_m_Expr_m_To_m_CPP, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
3310  {
3311    {
3312      if ((_v_arg1.get_len () != 0))
3313      {
3314        goto _block1__branch1;
3315      }
3316      _v_res1 = _c_93;
3317      goto _block1;
3318    }
3319  _block1__branch1: {}
3320    {
3321      if ((_v_arg1.get_len () != 1))
3322      {
3323        goto _block1__branch2;
3324      }
3325      if (_v_arg1.symbol_at (0))
3326      {
3327        goto _block1__branch2;
3328      }
3329      Expr _v_deref__arg1 (_v_arg1, 0);
3330      if ((_v_deref__arg1.get_len () != 4))
3331      {
3332        goto _block1__branch2;
3333      }
3334      if (!_c_57.term_eq (_v_deref__arg1, 0))
3335      {
3336        goto _block1__branch2;
3337      }
3338      if (!_v_deref__arg1.symbol_at (2))
3339      {
3340        goto _block1__branch2;
3341      }
3342      if (!_v_deref__arg1.symbol_at (3))
3343      {
3344        goto _block1__branch2;
3345      }
3346      Expr _vt_name (_v_deref__arg1, 1, 1);
3347      Expr _vs_pos (_v_deref__arg1, 2, 1);
3348      Expr _vs_len (_v_deref__arg1, 3, 1);
3349      Expr _v_Rfp2Cpp1;
3350      RF_CALL (CppMangle::Rfp2Cpp, _vt_name, _v_Rfp2Cpp1);
3351      _v_res1 = (_c_98 + _v_Rfp2Cpp1 + _c_24 + _vs_pos + _c_24 + _vs_len + _c_23);
3352      goto _block1;
3353    }
3354  _block1__branch2: {}
3355    Expr _v_Const_m_Expr_m_Aux1;
3356    RF_CALL (Const_m_Expr_m_Aux, (_c_139 + _v_arg1), _v_Const_m_Expr_m_Aux1);
3357    {
3358      {
3359        uintptr_t _v_len1 = _v_Const_m_Expr_m_Aux1.get_len ();
3360        uintptr_t _v_len2 = 3;
3361        if ((_v_len1 < _v_len2))
3362        {
3363          goto _block2__branch1;
3364        }
3365        uintptr_t _v_len__cpp_m_expr = (_v_len1 - _v_len2);
3366        if (!_c_140.eq (_v_Const_m_Expr_m_Aux1, 0))
3367        {
3368          goto _block2__branch1;
3369        }
3370        Expr _ve_cpp_m_expr (_v_Const_m_Expr_m_Aux1, 3, _v_len__cpp_m_expr);
3371        _v_res1 = _ve_cpp_m_expr;
3372        goto _block2;
3373      }
3374    _block2__branch1: {}
3375      uintptr_t _v_len3 = _v_Const_m_Expr_m_Aux1.get_len ();
3376      uintptr_t _v_len4 = 0;
3377      if ((_v_len3 < _v_len4))
3378      {
3379        RF_FUNC_ERROR (unexpected_fail);
3380      }
3381      uintptr_t _v_len__cpp_m_expr2 = (_v_len3 - _v_len4);
3382      Expr _ve_cpp_m_expr (_v_Const_m_Expr_m_Aux1, 0, _v_len__cpp_m_expr2);
3383      _v_res1 = _ve_cpp_m_expr;
3384    }
3385  _block2: {}
3386  }
3387_block1: {}
3388RF_END
3389
3390RF_FUNC (Const_m_Expr_m_Aux, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
3391  uintptr_t _v_len1 = _v_arg1.get_len ();
3392  uintptr_t _v_len2 = 1;
3393  if ((_v_len1 < _v_len2))
3394  {
3395    RF_FUNC_ERROR (unexpected_fail);
3396  }
3397  uintptr_t _v_len__expr = (_v_len1 - _v_len2);
3398  if (_v_arg1.symbol_at (0))
3399  {
3400    RF_FUNC_ERROR (unexpected_fail);
3401  }
3402  Expr _v_deref__arg1 (_v_arg1, 0);
3403  uintptr_t _v_len3 = _v_deref__arg1.get_len ();
3404  uintptr_t _v_len4 = 0;
3405  if ((_v_len3 < _v_len4))
3406  {
3407    RF_FUNC_ERROR (unexpected_fail);
3408  }
3409  uintptr_t _v_len__accum = (_v_len3 - _v_len4);
3410  Expr _ve_expr (_v_arg1, 1, _v_len__expr);
3411  Expr _ve_accum (_v_deref__arg1, 0, _v_len__accum);
3412  {
3413    {
3414      uintptr_t _v_len5 = _v_len__expr;
3415      uintptr_t _v_len6 = 1;
3416      if ((_v_len5 < _v_len6))
3417      {
3418        goto _block1__branch1;
3419      }
3420      uintptr_t _v_len__rest = (_v_len5 - _v_len6);
3421      if (!_ve_expr.symbol_at (0))
3422      {
3423        goto _block1__branch1;
3424      }
3425      Expr _vs_sym (_ve_expr, 0, 1);
3426      Expr _ve_rest (_ve_expr, 1, _v_len__rest);
3427      if (!RF_CALL (Class::Char_q_, _vs_sym, /*void*/))
3428      {
3429        goto _block1__branch1;
3430      }
3431      Expr _v_Symbol_m_To_m_CPP1;
3432      RF_CALL (Symbol_m_To_m_CPP, _vs_sym, _v_Symbol_m_To_m_CPP1);
3433      RF_TAILCALL (Const_m_Expr_m_Aux, ((_ve_accum + _v_Symbol_m_To_m_CPP1) () + _ve_rest), _v_res1);
3434      goto _block1;
3435    }
3436  _block1__branch1: {}
3437    {
3438      uintptr_t _v_len7 = _v_len__accum;
3439      uintptr_t _v_len8 = 0;
3440      if ((_v_len7 < (_v_len8 + 1)))
3441      {
3442        goto _block1__branch2;
3443      }
3444      uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_400_m_14 = (_v_len7 - _v_len8);
3445      Expr _vv__e__e_tmp_m_rfp__asail__cpprf_m_400_m_14 (_ve_accum, 0, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_400_m_14);
3446      Expr _v_Const_m_Expr_m_Aux1;
3447      RF_CALL (Const_m_Expr_m_Aux, (_c_139 + _ve_expr), _v_Const_m_Expr_m_Aux1);
3448      _v_res1 = (_c_141 + _ve_accum + _c_71 + _v_Const_m_Expr_m_Aux1);
3449      goto _block1;
3450    }
3451  _block1__branch2: {}
3452    {
3453      uintptr_t _v_len9 = _v_len__expr;
3454      uintptr_t _v_len10 = 1;
3455      if ((_v_len9 < _v_len10))
3456      {
3457        goto _block1__branch3;
3458      }
3459      uintptr_t _v_len__rest2 = (_v_len9 - _v_len10);
3460      Expr _vt_item (_ve_expr, 0, 1);
3461      Expr _ve_rest (_ve_expr, 1, _v_len__rest2);
3462      Expr _ve_cpp_m_item;
3463      {
3464        {
3465          if (_vt_item.symbol_at (0))
3466          {
3467            goto _block2__branch1;
3468          }
3469          Expr _v_deref__item (_vt_item, 0);
3470          uintptr_t _v_len11 = _v_deref__item.get_len ();
3471          uintptr_t _v_len12 = 1;
3472          if ((_v_len11 < _v_len12))
3473          {
3474            goto _block2__branch1;
3475          }
3476          uintptr_t _v_len__paren_m_expr = (_v_len11 - _v_len12);
3477          if (!_c_88.term_eq (_v_deref__item, 0))
3478          {
3479            goto _block2__branch1;
3480          }
3481          Expr _ve_paren_m_expr (_v_deref__item, 1, _v_len__paren_m_expr);
3482          Expr _v_Const_m_Expr_m_To_m_CPP1;
3483          RF_CALL (Const_m_Expr_m_To_m_CPP, _ve_paren_m_expr, _v_Const_m_Expr_m_To_m_CPP1);
3484          _ve_cpp_m_item = (_c_143 + _v_Const_m_Expr_m_To_m_CPP1 + _c_142);
3485          goto _block2;
3486        }
3487      _block2__branch1: {}
3488        {
3489          if (_vt_item.symbol_at (0))
3490          {
3491            goto _block2__branch2;
3492          }
3493          Expr _v_deref__item2 (_vt_item, 0);
3494          if ((_v_deref__item2.get_len () != 2))
3495          {
3496            goto _block2__branch2;
3497          }
3498          if (!_c_99.term_eq (_v_deref__item2, 0))
3499          {
3500            goto _block2__branch2;
3501          }
3502          Expr _vt_name (_v_deref__item2, 1, 1);
3503          Expr _v_Name_m_To_m_CPP1;
3504          RF_CALL (Name_m_To_m_CPP, _vt_name, _v_Name_m_To_m_CPP1);
3505          _ve_cpp_m_item = (_c_140 + _v_Name_m_To_m_CPP1);
3506          goto _block2;
3507        }
3508      _block2__branch2: {}
3509        {
3510          if (_vt_item.symbol_at (0))
3511          {
3512            goto _block2__branch3;
3513          }
3514          Expr _v_deref__item3 (_vt_item, 0);
3515          uintptr_t _v_len13 = _v_deref__item3.get_len ();
3516          uintptr_t _v_len14 = 1;
3517          if ((_v_len13 < _v_len14))
3518          {
3519            goto _block2__branch3;
3520          }
3521          uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_408_m_14 = (_v_len13 - _v_len14);
3522          if (!_c_68.term_eq (_v_deref__item3, 0))
3523          {
3524            goto _block2__branch3;
3525          }
3526          Expr _ve__e__e_tmp_m_rfp__asail__cpprf_m_408_m_14 (_v_deref__item3, 1, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_408_m_14);
3527          Expr _v_Rfp2Cpp1;
3528          RF_CALL (CppMangle::Rfp2Cpp, _vt_item, _v_Rfp2Cpp1);
3529          _ve_cpp_m_item = (_c_140 + _v_Rfp2Cpp1);
3530          goto _block2;
3531        }
3532      _block2__branch3: {}
3533        {
3534          if (_vt_item.symbol_at (0))
3535          {
3536            goto _block2__branch4;
3537          }
3538          Expr _v_deref__item4 (_vt_item, 0);
3539          if ((_v_deref__item4.get_len () != 2))
3540          {
3541            goto _block2__branch4;
3542          }
3543          if (!_v_deref__item4.symbol_at (0))
3544          {
3545            goto _block2__branch4;
3546          }
3547          Expr _vs_FUNC (_v_deref__item4, 0, 1);
3548          Expr _vt_name (_v_deref__item4, 1, 1);
3549          {
3550            {
3551              if (!_vs_FUNC.term_eq (_c_12, 0))
3552              {
3553                goto _block3__branch1;
3554              }
3555              goto _block3;
3556            }
3557          _block3__branch1: {}
3558            if (!_vs_FUNC.term_eq (_c_14, 0))
3559            {
3560              goto _block2__branch4;
3561            }
3562          }
3563        _block3: {}
3564          Expr _v_Name_m_To_m_CPP2;
3565          RF_CALL (Name_m_To_m_CPP, _vt_name, _v_Name_m_To_m_CPP2);
3566          _ve_cpp_m_item = (_c_144 + _v_Name_m_To_m_CPP2 + _c_23);
3567          goto _block2;
3568        }
3569      _block2__branch4: {}
3570        if (!_vt_item.symbol_at (0))
3571        {
3572          RF_FUNC_ERROR (unexpected_fail);
3573        }
3574        Expr _vs_sym (_vt_item, 0, 1);
3575        {
3576          {
3577            if (!RF_CALL (Class::Int_q_, _vs_sym, /*void*/))
3578            {
3579              goto _block4__branch1;
3580            }
3581            Expr _v__q_1;
3582            RF_CALL (Box::_q_, Int, _v__q_1);
3583            _ve_cpp_m_item = (_c_146 + _v__q_1 + _c_145 + _vs_sym + _c_71);
3584            goto _block4;
3585          }
3586        _block4__branch1: {}
3587          if (!RF_CALL (Class::Word_q_, _vs_sym, /*void*/))
3588          {
3589            RF_FUNC_ERROR (unexpected_fail);
3590          }
3591          Expr _v_Symbol_m_To_m_CPP2;
3592          RF_CALL (Symbol_m_To_m_CPP, _vs_sym, _v_Symbol_m_To_m_CPP2);
3593          _ve_cpp_m_item = (_c_147 + _v_Symbol_m_To_m_CPP2 + _c_71);
3594        }
3595      _block4: {}
3596      }
3597    _block2: {}
3598      Expr _v_Const_m_Expr_m_Aux2;
3599      RF_CALL (Const_m_Expr_m_Aux, (_c_139 + _ve_rest), _v_Const_m_Expr_m_Aux2);
3600      _v_res1 = (_ve_cpp_m_item + _v_Const_m_Expr_m_Aux2);
3601      goto _block1;
3602    }
3603  _block1__branch3: {}
3604    _v_res1 = empty;
3605  }
3606_block1: {}
3607RF_END
3608
3609RF_FUNC (Symbol_m_To_m_CPP, (RF_ARG _vs_ObjectSymbol;;), (RF_RES _v_res1;;))
3610  Expr _ve_symbol;
3611  RF_CALL (Convert::To_m_Chars, _vs_ObjectSymbol, _ve_symbol);
3612  Expr _ve_cpp_m_symbol (empty);
3613  for ( ; ; )
3614  {
3615    {
3616      if ((_ve_symbol.get_len () != 0))
3617      {
3618        goto _iter1;
3619      }
3620      _v_res1 = _ve_cpp_m_symbol;
3621      goto _exit__iter1;
3622    }
3623  _iter1: {}
3624    uintptr_t _v_len1 = _ve_symbol.get_len ();
3625    uintptr_t _v_len2 = 1;
3626    if ((_v_len1 < _v_len2))
3627    {
3628      RF_FUNC_ERROR (unexpected_fail);
3629    }
3630    uintptr_t _v_len__rest = (_v_len1 - _v_len2);
3631    if (!_ve_symbol.symbol_at (0))
3632    {
3633      RF_FUNC_ERROR (unexpected_fail);
3634    }
3635    Expr _vs_char (_ve_symbol, 0, 1);
3636    Expr _ve_rest (_ve_symbol, 1, _v_len__rest);
3637    Expr _ve_cpp_m_char;
3638    {
3639      {
3640        if (!_vs_char.term_eq (_c_148, 0))
3641        {
3642          goto _block3__branch1;
3643        }
3644        _ve_cpp_m_char = _c_149;
3645        goto _block3;
3646      }
3647    _block3__branch1: {}
3648      {
3649        if (!_vs_char.term_eq (_c_150, 0))
3650        {
3651          goto _block3__branch2;
3652        }
3653        _ve_cpp_m_char = _c_151;
3654        goto _block3;
3655      }
3656    _block3__branch2: {}
3657      {
3658        if (!_vs_char.term_eq (_c_152, 0))
3659        {
3660          goto _block3__branch3;
3661        }
3662        _ve_cpp_m_char = _c_153;
3663        goto _block3;
3664      }
3665    _block3__branch3: {}
3666      {
3667        if (!_vs_char.term_eq (_c_154, 0))
3668        {
3669          goto _block3__branch4;
3670        }
3671        _ve_cpp_m_char = _c_155;
3672        goto _block3;
3673      }
3674    _block3__branch4: {}
3675      {
3676        if (!_vs_char.term_eq (_c_156, 0))
3677        {
3678          goto _block3__branch5;
3679        }
3680        _ve_cpp_m_char = _c_157;
3681        goto _block3;
3682      }
3683    _block3__branch5: {}
3684      if (!_vs_char.symbol_at (0))
3685      {
3686        RF_FUNC_ERROR (unexpected_fail);
3687      }
3688      Expr _vs__e__e_tmp_m_rfp__asail__cpprf_m_435_m_8 (_vs_char, 0, 1);
3689      _ve_cpp_m_char = _vs_char;
3690    }
3691  _block3: {}
3692    _ve_symbol = _ve_rest;
3693    _ve_cpp_m_symbol = (_ve_cpp_m_symbol + _ve_cpp_m_char);
3694  }
3695_exit__iter1: {}
3696RF_END
3697
3698RF_FUNC (Args_m_To_m_CPP, (RF_ARG _v_arg1, _v_arg2, _v_arg3;;), (RF_RES _v_res1;;))
3699  {
3700    {
3701      if (((_v_arg3.get_len () + 2) != 2))
3702      {
3703        goto _block1__branch1;
3704      }
3705      Expr _v_compose1 ((_v_arg1 () + _v_arg2 + _v_arg3));
3706      if (_v_compose1.symbol_at (0))
3707      {
3708        goto _block1__branch1;
3709      }
3710      Expr _v_deref__compose1 (_v_compose1, 0);
3711      uintptr_t _v_len1 = _v_deref__compose1.get_len ();
3712      uintptr_t _v_len2 = 0;
3713      if ((_v_len1 < (_v_len2 + 1)))
3714      {
3715        goto _block1__branch1;
3716      }
3717      uintptr_t _v_len__prefix = (_v_len1 - _v_len2);
3718      if (!_c_20.term_eq (_v_compose1, 1))
3719      {
3720        goto _block1__branch1;
3721      }
3722      Expr _vv_prefix (_v_deref__compose1, 0, _v_len__prefix);
3723      _v_res1 = _c_158;
3724      goto _block1;
3725    }
3726  _block1__branch1: {}
3727    {
3728      if (((_v_arg3.get_len () + 2) != 2))
3729      {
3730        goto _block1__branch2;
3731      }
3732      Expr _v_compose2 ((_v_arg1 () + _v_arg2 + _v_arg3));
3733      if (!_c_159.eq (_v_compose2, 0))
3734      {
3735        goto _block1__branch2;
3736      }
3737      _v_res1 = _c_160;
3738      goto _block1;
3739    }
3740  _block1__branch2: {}
3741    {
3742      if (((_v_arg3.get_len () + 2) != 3))
3743      {
3744        goto _block1__branch3;
3745      }
3746      Expr _v_compose3 ((_v_arg1 () + _v_arg2 + _v_arg3));
3747      if (_v_compose3.symbol_at (2))
3748      {
3749        goto _block1__branch3;
3750      }
3751      Expr _v_deref__compose3 (_v_compose3, 2);
3752      uintptr_t _v_len3 = _v_deref__compose3.get_len ();
3753      uintptr_t _v_len4 = 0;
3754      if ((_v_len3 < _v_len4))
3755      {
3756        goto _block1__branch3;
3757      }
3758      uintptr_t _v_len__arg = (_v_len3 - _v_len4);
3759      if (!_c_159.eq (_v_compose3, 0))
3760      {
3761        goto _block1__branch3;
3762      }
3763      Expr _ve_arg (_v_deref__compose3, 0, _v_len__arg);
3764      RF_TAILCALL (CppMangle::Rfp2Cpp, _ve_arg (), _v_res1);
3765      goto _block1;
3766    }
3767  _block1__branch3: {}
3768    {
3769      if (((_v_arg3.get_len () + 2) != 2))
3770      {
3771        goto _block1__branch4;
3772      }
3773      Expr _v_compose4 ((_v_arg1 () + _v_arg2 + _v_arg3));
3774      if (_v_compose4.symbol_at (0))
3775      {
3776        goto _block1__branch4;
3777      }
3778      Expr _v_deref__compose4 (_v_compose4, 0);
3779      uintptr_t _v_len5 = _v_deref__compose4.get_len ();
3780      uintptr_t _v_len6 = 0;
3781      if ((_v_len5 < _v_len6))
3782      {
3783        goto _block1__branch4;
3784      }
3785      uintptr_t _v_len__prefix2 = (_v_len5 - _v_len6);
3786      if (!_c_81.term_eq (_v_compose4, 1))
3787      {
3788        goto _block1__branch4;
3789      }
3790      Expr _ve_prefix (_v_deref__compose4, 0, _v_len__prefix2);
3791      _v_res1 = _c_160;
3792      goto _block1;
3793    }
3794  _block1__branch4: {}
3795    {
3796      if (((_v_arg3.get_len () + 2) != 3))
3797      {
3798        goto _block1__branch5;
3799      }
3800      Expr _v_compose5 ((_v_arg1 () + _v_arg2 + _v_arg3));
3801      if (_v_compose5.symbol_at (0))
3802      {
3803        goto _block1__branch5;
3804      }
3805      if (_v_compose5.symbol_at (2))
3806      {
3807        goto _block1__branch5;
3808      }
3809      Expr _v_deref__compose5 (_v_compose5, 0);
3810      Expr _v_deref__compose52 (_v_compose5, 2);
3811      uintptr_t _v_len7 = _v_deref__compose52.get_len ();
3812      uintptr_t _v_len8 = 0;
3813      if ((_v_len7 < _v_len8))
3814      {
3815        goto _block1__branch5;
3816      }
3817      uintptr_t _v_len__arg2 = (_v_len7 - _v_len8);
3818      uintptr_t _v_len9 = _v_deref__compose5.get_len ();
3819      uintptr_t _v_len10 = 0;
3820      if ((_v_len9 < _v_len10))
3821      {
3822        goto _block1__branch5;
3823      }
3824      uintptr_t _v_len__prefix3 = (_v_len9 - _v_len10);
3825      if (!_c_81.term_eq (_v_compose5, 1))
3826      {
3827        goto _block1__branch5;
3828      }
3829      Expr _ve_prefix (_v_deref__compose5, 0, _v_len__prefix3);
3830      Expr _ve_arg (_v_deref__compose52, 0, _v_len__arg2);
3831      RF_TAILCALL (Expr_m_Ref_m_To_m_CPP, _ve_arg, _v_res1);
3832      goto _block1;
3833    }
3834  _block1__branch5: {}
3835    Expr _v_arg3__1 (_v_arg3);
3836    Expr _ve_cpp_m_args (empty);
3837    for ( ; ; )
3838    {
3839      {
3840        if ((_v_arg3__1.get_len () != 0))
3841        {
3842          goto _iter1;
3843        }
3844        {
3845          {
3846            Expr _v_compose6 ((_v_arg1 () + _v_arg2));
3847            if (!_c_81.term_eq (_v_compose6, 1))
3848            {
3849              goto _block2__branch1;
3850            }
3851            Expr _vt__e__e_tmp_m_rfp__asail__cpprf_m_466_m_8 (_v_compose6, 0, 1);
3852            _v_res1 = (_c_96 + _ve_cpp_m_args + _c_23);
3853            goto _block2;
3854          }
3855        _block2__branch1: {}
3856          {
3857            Expr _v_compose7 ((_v_arg1 () + _v_arg2));
3858            if (!_c_159.eq (_v_compose7, 0))
3859            {
3860              goto _block2__branch2;
3861            }
3862            _v_res1 = (_c_96 + _ve_cpp_m_args + _c_23);
3863            goto _block2;
3864          }
3865        _block2__branch2: {}
3866          {
3867            Expr _v_compose8 ((_v_arg1 () + _v_arg2));
3868            if (_v_compose8.symbol_at (0))
3869            {
3870              goto _block2__branch3;
3871            }
3872            Expr _v_deref__compose8 (_v_compose8, 0);
3873            uintptr_t _v_len11 = _v_deref__compose8.get_len ();
3874            uintptr_t _v_len12 = 0;
3875            if ((_v_len11 < (_v_len12 + 1)))
3876            {
3877              goto _block2__branch3;
3878            }
3879            uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_468_m_9 = (_v_len11 - _v_len12);
3880            if (!_c_20.term_eq (_v_compose8, 1))
3881            {
3882              goto _block2__branch3;
3883            }
3884            Expr _vv__e__e_tmp_m_rfp__asail__cpprf_m_468_m_9 (_v_deref__compose8, 0, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_468_m_9);
3885            _v_res1 = (_c_96 + _v_arg1 + _ve_cpp_m_args + _c_161);
3886            goto _block2;
3887          }
3888        _block2__branch3: {}
3889          uintptr_t _v_len13 = 2;
3890          uintptr_t _v_len14 = 0;
3891          if ((_v_len13 < _v_len14))
3892          {
3893            RF_FUNC_ERROR (unexpected_fail);
3894          }
3895          uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_469_m_8 = (_v_len13 - _v_len14);
3896          Expr _v_compose9 ((_v_arg1 () + _v_arg2));
3897          Expr _ve__e__e_tmp_m_rfp__asail__cpprf_m_469_m_8 (_v_compose9, 0, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_469_m_8);
3898          _v_res1 = (_v_arg1 + _ve_cpp_m_args);
3899        }
3900      _block2: {}
3901        goto _exit__iter1;
3902      }
3903    _iter1: {}
3904      uintptr_t _v_len15 = _v_arg3__1.get_len ();
3905      uintptr_t _v_len16 = 1;
3906      if ((_v_len15 < _v_len16))
3907      {
3908        RF_FUNC_ERROR (unexpected_fail);
3909      }
3910      uintptr_t _v_len__rest = (_v_len15 - _v_len16);
3911      if (_v_arg3__1.symbol_at (0))
3912      {
3913        RF_FUNC_ERROR (unexpected_fail);
3914      }
3915      Expr _v_deref__arg3__1 (_v_arg3__1, 0);
3916      uintptr_t _v_len17 = _v_deref__arg3__1.get_len ();
3917      uintptr_t _v_len18 = 0;
3918      if ((_v_len17 < _v_len18))
3919      {
3920        RF_FUNC_ERROR (unexpected_fail);
3921      }
3922      uintptr_t _v_len__arg3 = (_v_len17 - _v_len18);
3923      Expr _ve_rest (_v_arg3__1, 1, _v_len__rest);
3924      Expr _ve_arg (_v_deref__arg3__1, 0, _v_len__arg3);
3925      Expr _ve_comma;
3926      {
3927        {
3928          uintptr_t _v_len19 = _v_len__rest;
3929          uintptr_t _v_len20 = 0;
3930          if ((_v_len19 < (_v_len20 + 1)))
3931          {
3932            goto _block4__branch1;
3933          }
3934          uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_455_m_21 = (_v_len19 - _v_len20);
3935          Expr _vv__e__e_tmp_m_rfp__asail__cpprf_m_455_m_21 (_ve_rest, 0, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_455_m_21);
3936          _ve_comma = _c_24;
3937          goto _block4;
3938        }
3939      _block4__branch1: {}
3940        _ve_comma = empty;
3941      }
3942    _block4: {}
3943      {
3944        {
3945          if (!_v_arg2.term_eq (_c_20, 0))
3946          {
3947            goto _block5__branch1;
3948          }
3949          Expr _v_Rfp2Cpp1;
3950          RF_CALL (CppMangle::Rfp2Cpp, _ve_arg (), _v_Rfp2Cpp1);
3951          _v_arg3__1 = _ve_rest;
3952          _ve_cpp_m_args = (_ve_cpp_m_args + _v_Rfp2Cpp1 + _ve_comma);
3953          goto _block5;
3954        }
3955      _block5__branch1: {}
3956        {
3957          if (!_v_arg2.term_eq (_c_81, 0))
3958          {
3959            goto _block5__branch2;
3960          }
3961          Expr _v_Expr_m_Ref_m_To_m_CPP1;
3962          RF_CALL (Expr_m_Ref_m_To_m_CPP, _ve_arg, _v_Expr_m_Ref_m_To_m_CPP1);
3963          _v_arg3__1 = _ve_rest;
3964          _ve_cpp_m_args = (_ve_cpp_m_args + _v_Expr_m_Ref_m_To_m_CPP1 + _ve_comma);
3965          goto _block5;
3966        }
3967      _block5__branch2: {}
3968        if (!_v_arg2.term_eq (_c_105, 0))
3969        {
3970          RF_FUNC_ERROR (unexpected_fail);
3971        }
3972        Expr _v_Expr_m_Int_m_To_m_CPP1;
3973        RF_CALL (Expr_m_Int_m_To_m_CPP, _ve_arg, _v_Expr_m_Int_m_To_m_CPP1);
3974        _v_arg3__1 = _ve_rest;
3975        _ve_cpp_m_args = (_ve_cpp_m_args + _v_Expr_m_Int_m_To_m_CPP1 + _ve_comma);
3976      }
3977    _block5: {}
3978    }
3979  _exit__iter1: {}
3980  }
3981_block1: {}
3982RF_END
3983
3984RF_FUNC (Name_m_To_m_CPP, (RF_ARG _vt_obj_m_name;;), (RF_RES _v_res1;;))
3985  Expr _ve_qualifiers;
3986  Expr _ve_name;
3987  RF_CALL (rfp__helper::RFP_m_Extract_m_Qualifiers, _vt_obj_m_name, (_ve_qualifiers, _ve_name));
3988  Expr _ve_namespace;
3989  RF_CALL (Box::_q_, Current_m_Namespace, _ve_namespace);
3990  {
3991    {
3992      uintptr_t _v_len1 = _ve_qualifiers.get_len ();
3993      uintptr_t _v_len2 = _ve_namespace.get_len ();
3994      if ((_v_len1 < _v_len2))
3995      {
3996        goto _block1__branch1;
3997      }
3998      uintptr_t _v_len__cont = (_v_len1 - _v_len2);
3999      if (!_ve_namespace.eq (_ve_qualifiers, 0))
4000      {
4001        goto _block1__branch1;
4002      }
4003      Expr _ve_cont (_ve_qualifiers, _ve_namespace.get_len (), _v_len__cont);
4004      RF_TAILCALL (CppMangle::Rfp2Cpp, (_ve_cont + _ve_name), _v_res1);
4005      goto _block1;
4006    }
4007  _block1__branch1: {}
4008    RF_TAILCALL (CppMangle::Rfp2Cpp, (_ve_qualifiers + _ve_name) (), _v_res1);
4009  }
4010_block1: {}
4011RF_END
4012
4013RF_FUNC (Namespace_m_Control, (RF_ARG _ve_qualifiers;;), (RF_RES _v_res1;;))
4014  Expr _v_qualifiers__1;
4015  {
4016    {
4017      if ((_ve_qualifiers.get_len () != 0))
4018      {
4019        goto _block1__branch1;
4020      }
4021      RF_CALL (Box::_q_, Module_m_Name, _v_qualifiers__1);
4022      goto _block1;
4023    }
4024  _block1__branch1: {}
4025    {
4026      if ((_ve_qualifiers.get_len () != 1))
4027      {
4028        goto _block1__branch2;
4029      }
4030      if (!_c_139.term_eq (_ve_qualifiers, 0))
4031      {
4032        goto _block1__branch2;
4033      }
4034      _v_qualifiers__1 = empty;
4035      goto _block1;
4036    }
4037  _block1__branch2: {}
4038    _v_qualifiers__1 = _ve_qualifiers;
4039  }
4040_block1: {}
4041  {
4042    {
4043      Expr _v__q_1;
4044      RF_CALL (Box::_q_, Current_m_Namespace, _v__q_1);
4045      if ((_v__q_1.get_len () != _v_qualifiers__1.get_len ()))
4046      {
4047        goto _block2__branch1;
4048      }
4049      if (!_v_qualifiers__1.eq (_v__q_1, 0))
4050      {
4051        goto _block2__branch1;
4052      }
4053      _v_res1 = empty;
4054      goto _block2;
4055    }
4056  _block2__branch1: {}
4057    Expr _ve_close_m_namespace;
4058    {
4059      {
4060        Expr _v__q_2;
4061        RF_CALL (Box::_q_, Current_m_Namespace, _v__q_2);
4062        uintptr_t _v_len1 = _v__q_2.get_len ();
4063        uintptr_t _v_len2 = 0;
4064        if ((_v_len1 < (_v_len2 + 1)))
4065        {
4066          goto _block3__branch1;
4067        }
4068        uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_490_m_33 = (_v_len1 - _v_len2);
4069        Expr _vv__e__e_tmp_m_rfp__asail__cpprf_m_490_m_33 (_v__q_2, 0, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_490_m_33);
4070        _ve_close_m_namespace = _c_3;
4071        goto _block3;
4072      }
4073    _block3__branch1: {}
4074      _ve_close_m_namespace = empty;
4075    }
4076  _block3: {}
4077    RF_CALL (Box::Store, (Current_m_Namespace, _v_qualifiers__1), /*void*/);
4078    Expr _ve_open_m_namespace;
4079    {
4080      {
4081        uintptr_t _v_len3 = _v_qualifiers__1.get_len ();
4082        uintptr_t _v_len4 = 0;
4083        if ((_v_len3 < (_v_len4 + 1)))
4084        {
4085          goto _block4__branch1;
4086        }
4087        uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_494_m_25 = (_v_len3 - _v_len4);
4088        Expr _vv__e__e_tmp_m_rfp__asail__cpprf_m_494_m_25 (_v_qualifiers__1, 0, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_494_m_25);
4089        Expr _v_Rfp2Cpp1;
4090        RF_CALL (CppMangle::Rfp2Cpp, _v_qualifiers__1, _v_Rfp2Cpp1);
4091        _ve_open_m_namespace = (_c_163 + _v_Rfp2Cpp1 + _c_162) ();
4092        goto _block4;
4093      }
4094    _block4__branch1: {}
4095      _ve_open_m_namespace = empty;
4096    }
4097  _block4: {}
4098    _v_res1 = (_ve_close_m_namespace + _ve_open_m_namespace);
4099  }
4100_block2: {}
4101RF_END
4102
4103RF_FUNC (Trace_m_Enter, (RF_ARG _ve_name, _ve_args;;), (RF_RES _v_res1;;))
4104  Expr _v_args__1 (_ve_args);
4105  Expr _vs_n (_c_164);
4106  Expr _ve_pr_m_args (empty);
4107  for ( ; ; )
4108  {
4109    {
4110      if ((_v_args__1.get_len () != 0))
4111      {
4112        goto _iter1;
4113      }
4114      _v_res1 = ((_c_166 + _ve_name + _c_165) () + _ve_pr_m_args);
4115      goto _exit__iter1;
4116    }
4117  _iter1: {}
4118    uintptr_t _v_len1 = _v_args__1.get_len ();
4119    uintptr_t _v_len2 = 1;
4120    if ((_v_len1 < _v_len2))
4121    {
4122      RF_FUNC_ERROR (unexpected_fail);
4123    }
4124    uintptr_t _v_len__rest = (_v_len1 - _v_len2);
4125    Expr _vt_arg (_v_args__1, 0, 1);
4126    Expr _ve_rest (_v_args__1, 1, _v_len__rest);
4127    Expr _ve_num;
4128    {
4129      {
4130        {
4131          {
4132            uintptr_t _v_len3 = _v_len__rest;
4133            uintptr_t _v_len4 = 0;
4134            if ((_v_len3 < (_v_len4 + 1)))
4135            {
4136              goto _block3__branch1;
4137            }
4138            uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_503_m_22 = (_v_len3 - _v_len4);
4139            Expr _vv__e__e_tmp_m_rfp__asail__cpprf_m_503_m_22 (_ve_rest, 0, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_503_m_22);
4140            goto _block3;
4141          }
4142        _block3__branch1: {}
4143          if (!RF_CALL (Compare::_gt_, (_vs_n, _c_164), /*void*/))
4144          {
4145            goto _block2__branch1;
4146          }
4147        }
4148      _block3: {}
4149        _ve_num = (_c_167 + _vs_n + _c_4);
4150        goto _block2;
4151      }
4152    _block2__branch1: {}
4153      _ve_num = _c_168;
4154    }
4155  _block2: {}
4156    RF_CALL (Arithm::_p_, (_vs_n, _c_164), _vs_n);
4157    Expr _v_Rfp2Cpp1;
4158    RF_CALL (CppMangle::Rfp2Cpp, _vt_arg, _v_Rfp2Cpp1);
4159    _v_args__1 = _ve_rest;
4160    _ve_pr_m_args = (_ve_pr_m_args + (_c_170 + _ve_num + _c_54 + _v_Rfp2Cpp1 + _c_169) ());
4161  }
4162_exit__iter1: {}
4163RF_END
4164
4165RF_FUNC (Trace_m_Exit, (RF_ARG _ve_name, _ve_args;;), (RF_RES _v_res1;;))
4166  Expr _v_args__1 (_ve_args);
4167  Expr _vs_n (_c_164);
4168  Expr _ve_pr_m_args (empty);
4169  for ( ; ; )
4170  {
4171    {
4172      if ((_v_args__1.get_len () != 0))
4173      {
4174        goto _iter1;
4175      }
4176      _v_res1 = ((_c_171 + _ve_name + _c_165) () + _ve_pr_m_args);
4177      goto _exit__iter1;
4178    }
4179  _iter1: {}
4180    uintptr_t _v_len1 = _v_args__1.get_len ();
4181    uintptr_t _v_len2 = 1;
4182    if ((_v_len1 < _v_len2))
4183    {
4184      RF_FUNC_ERROR (unexpected_fail);
4185    }
4186    uintptr_t _v_len__rest = (_v_len1 - _v_len2);
4187    Expr _vt_arg (_v_args__1, 0, 1);
4188    Expr _ve_rest (_v_args__1, 1, _v_len__rest);
4189    Expr _ve_num;
4190    {
4191      {
4192        {
4193          {
4194            uintptr_t _v_len3 = _v_len__rest;
4195            uintptr_t _v_len4 = 0;
4196            if ((_v_len3 < (_v_len4 + 1)))
4197            {
4198              goto _block3__branch1;
4199            }
4200            uintptr_t _v_len___e__e_tmp_m_rfp__asail__cpprf_m_516_m_22 = (_v_len3 - _v_len4);
4201            Expr _vv__e__e_tmp_m_rfp__asail__cpprf_m_516_m_22 (_ve_rest, 0, _v_len___e__e_tmp_m_rfp__asail__cpprf_m_516_m_22);
4202            goto _block3;
4203          }
4204        _block3__branch1: {}
4205          if (!RF_CALL (Compare::_gt_, (_vs_n, _c_164), /*void*/))
4206          {
4207            goto _block2__branch1;
4208          }
4209        }
4210      _block3: {}
4211        _ve_num = (_c_167 + _vs_n + _c_4);
4212        goto _block2;
4213      }
4214    _block2__branch1: {}
4215      _ve_num = _c_168;
4216    }
4217  _block2: {}
4218    RF_CALL (Arithm::_p_, (_vs_n, _c_164), _vs_n);
4219    Expr _v_Rfp2Cpp1;
4220    RF_CALL (CppMangle::Rfp2Cpp, _vt_arg, _v_Rfp2Cpp1);
4221    _v_args__1 = _ve_rest;
4222    _ve_pr_m_args = (_ve_pr_m_args + (_c_173 + _ve_num + _c_54 + _v_Rfp2Cpp1 + _c_172) ());
4223  }
4224_exit__iter1: {}
4225RF_END
4226
4227RF_FUNC (Trace_m_Fail, (RF_ARG _ve_name;;), (RF_RES _v_res1;;))
4228  _v_res1 = (_c_174 + _ve_name + _c_165) ();
4229RF_END
4230
4231RF_FUNC (Extract_m_Qualifiers, (RF_ARG _vt_name;;), (RF_RES _v_res1, _v_res2;;))
4232  {
4233    {
4234      if (!RF_CALL (Table::In_m_Table_q_, (Externs, _vt_name), /*void*/))
4235      {
4236        goto _block1__branch1;
4237      }
4238      if (_vt_name.symbol_at (0))
4239      {
4240        RF_FUNC_ERROR (unexpected_fail);
4241      }
4242      Expr _v_deref__name (_vt_name, 0);
4243      uintptr_t _v_len1 = _v_deref__name.get_len ();
4244      uintptr_t _v_len2 = 0;
4245      if ((_v_len1 < _v_len2))
4246      {
4247        RF_FUNC_ERROR (unexpected_fail);
4248      }
4249      uintptr_t _v_len__n = (_v_len1 - _v_len2);
4250      Expr _ve_n (_v_deref__name, 0, _v_len__n);
4251      _v_res1 = _c_139;
4252      _v_res2 = _ve_n;
4253      goto _block1;
4254    }
4255  _block1__branch1: {}
4256    RF_TAILCALL (rfp__helper::RFP_m_Extract_m_Qualifiers, _vt_name, (_v_res1, _v_res2));
4257  }
4258_block1: {}
4259RF_END
4260
4261}
4262
4263namespace rfp__asail__cpp
4264{
4265
4266static void init_ ()
4267{
4268  Int = Expr::create_sym< NamedObject<BoxContents> >(L"Int");
4269  Module_m_Name = Expr::create_sym< NamedObject<BoxContents> >(L"Module-Name");
4270  Current_m_Namespace = Expr::create_sym< NamedObject<BoxContents> >(L"Current-Namespace");
4271  Current_m_Func = Expr::create_sym< NamedObject<BoxContents> >(L"Current-Func");
4272  Current_m_Trace = Expr::create_sym< NamedObject<BoxContents> >(L"Current-Trace");
4273  Entry = Expr::create_sym< NamedObject<BoxContents> >(L"Entry");
4274  Entry_m_Name = Expr::create_sym< NamedObject<BoxContents> >(L"Entry-Name");
4275  Const_m_Exprs = Expr::create_sym< NamedObject<BoxContents> >(L"Const-Exprs");
4276  Externs = new rftype::StaticObject<rftype::Table>(L"Externs");
4277  _c_0 = Expr::create<Word>("INT");
4278  _c_1 = Expr::create<Word>("Integer");
4279  _c_2 = Expr::create<Word>("Main");
4280  _c_175 = Char::create_expr ("static AtStart init_registrator_ (&init_);");
4281  _c_32 = Char::create_expr (": {}");
4282  _c_6 = Expr (_c_32, 3, 1);
4283  _c_8 = (_c_175) () + (_c_6) ();
4284  _c_3 = Expr (_c_8, 1, 1);
4285  _c_4 = Expr (_c_175, 40, 2);
4286  _c_5 = Char::create_expr ("rfrt::Entry rf_entry (");
4287  _c_7 = Char::create_expr ("static void init_ ()\n{");
4288  _c_9 = Expr (_c_4, 1, 1);
4289  _c_10 = Char::create_expr (" = ");
4290  _c_176 = Char::create_expr ("using namespace rfrt;");
4291  _c_11 = (Char::create_expr ("namespace refal\n{")) () + (_c_176) ();
4292  _c_12 = Expr::create<Word>("FUNC");
4293  _c_13 = Expr (_c_7, 7, 4);
4294  _c_14 = Expr::create<Word>("FUNC?");
4295  _c_15 = Char::create_expr ("boolean");
4296  _c_16 = (Char::create_expr ("return true;")) ();
4297  _c_17 = Expr::create<Word>("TRACEALL");
4298  _c_59 = Char::create_expr (".drop ();");
4299  _c_18 = Expr (_c_59, 0, 1);
4300  _c_19 = Char::create_expr ("RF_ARG ");
4301  _c_159 = (empty) () + Expr::create<Word>("Vars");
4302  _c_20 = Expr (_c_159, 1, 1);
4303  _c_21 = Char::create_expr ("RF_RES ");
4304  _c_22 = Char::create_expr ("RF_END");
4305  _c_23 = Expr (_c_4, 0, 1);
4306  _c_165 = Char::create_expr (" <<<\\n\", rfrt::stack->get_depth());");
4307  _c_24 = Expr (_c_165, 7, 2);
4308  _c_25 = Char::create_expr ("RF_FUNC (");
4309  _c_26 = Expr::create<Word>("TRACE");
4310  _c_27 = Expr::create<Word>("IF");
4311  _c_83 = Char::create_expr ("if (RF_CALL (");
4312  _c_28 = Expr (_c_83, 0, 4);
4313  _c_29 = Expr (_c_7, 21, 1);
4314  _c_30 = Expr::create<Word>("FOR");
4315  _c_31 = Expr::create<Word>("LABEL");
4316  _c_34 = Char::create_expr ("for ( ; ");
4317  _c_33 = Expr (_c_34, 6, 2);
4318  _c_35 = Expr::create<Word>("TRY");
4319  _c_36 = (Char::create_expr ("RF_TRAP")) ();
4320  _c_37 = Expr::create<Word>("CATCH-ERROR");
4321  _c_38 = (Char::create_expr ("RF_CLEANUP;")) ();
4322  _c_39 = (Char::create_expr ("RF_WITH")) ();
4323  _c_40 = Expr::create<Word>("RETURN");
4324  _c_41 = Expr::create<Word>("RETFAIL");
4325  _c_177 = Char::create_expr ("else RF_RETFAIL;");
4326  _c_42 = (Expr (_c_177, 5, 11)) ();
4327  _c_43 = Expr::create<Word>("FATAL");
4328  _c_44 = (Char::create_expr ("RF_FUNC_ERROR (unexpected_fail);")) ();
4329  _c_45 = Expr::create<Word>("LSPLIT");
4330  _c_46 = Char::create_expr ("RF_lsplit (");
4331  _c_47 = Expr::create<Word>("RSPLIT");
4332  _c_48 = Char::create_expr ("RF_rsplit (");
4333  _c_49 = Expr::create<Word>("ASSIGN");
4334  _c_50 = Expr::create<Word>("DECL");
4335  _c_51 = Expr (_c_33, 1, 1);
4336  _c_52 = Char::create_expr ("uintptr_t ");
4337  _c_53 = Expr::create<Word>("EXPR");
4338  _c_54 = Expr (_c_28, 2, 2);
4339  _c_76 = Char::create_expr ("extern Expr ");
4340  _c_55 = Expr (_c_76, 7, 5);
4341  _c_56 = Expr::create<Word>("DEREF");
4342  _c_57 = Expr::create<Word>("SUBEXPR");
4343  _c_58 = Expr::create<Word>("DROP");
4344  _c_60 = Expr::create<Word>("CONTINUE");
4345  _c_61 = Char::create_expr ("goto ");
4346  _c_62 = Expr::create<Word>("BREAK");
4347  _c_63 = Expr::create<Word>("ERROR");
4348  _c_64 = Char::create_expr ("RF_ERROR (");
4349  _c_65 = Expr::create<Word>("CONSTEXPR");
4350  _c_66 = Expr::create<Word>("LOCAL");
4351  _c_67 = Expr (_c_7, 0, 7);
4352  _c_68 = Expr::create<Word>("STATIC");
4353  _c_69 = Expr::create<Word>("OBJ");
4354  _c_70 = Expr::create<Word>("BOX");
4355  _c_168 = Char::create_expr ("printf(\"  : \");");
4356  _c_71 = Expr (_c_168, 12, 2);
4357  _c_72 = Char::create_expr ("Expr::create_sym< NamedObject<BoxContents> >(L\"");
4358  _c_73 = Expr (_c_72, 43, 4);
4359  _c_74 = Char::create_expr ("new rftype::StaticObject<rftype::");
4360  _c_75 = Expr::create<Word>("DECL-OBJ");
4361  _c_77 = Expr::create<Word>("DECL-FUNC");
4362  _c_78 = Char::create_expr ("RF_DECL (");
4363  _c_79 = Expr::create<Word>("EXTERN");
4364  _c_80 = Expr::create<Word>("CALL");
4365  _c_81 = Expr::create<Word>("Exprs");
4366  _c_82 = Expr (_c_165, 32, 2);
4367  _c_84 = (_c_177) ();
4368  _c_85 = Expr::create<Word>("TAILCALL?");
4369  _c_86 = Expr::create<Word>("TAILCALL");
4370  _c_87 = Expr (_c_22, 0, 3);
4371  _c_88 = Expr::create<Word>("PAREN");
4372  _c_89 = Expr::create<Word>("LENGTH");
4373  _c_90 = Expr::create<Word>("MAX");
4374  _c_91 = Expr::create<Word>("MIN");
4375  _c_92 = Expr::create<Word>("INFIX");
4376  _c_93 = Char::create_expr ("empty");
4377  _c_94 = Expr::create_sym<Func> (Term_m_Ref_m_To_m_CPP);
4378  _c_95 = Expr::create<Word>("+");
4379  _c_96 = Expr (_c_54, 1, 1);
4380  _c_97 = Expr (_c_59, 5, 3);
4381  _c_98 = Char::create_expr ("Expr (");
4382  _c_99 = Expr::create<Word>("REF");
4383  _c_100 = Expr::create<Word>("ERROR-EXPR");
4384  _c_101 = Char::create_expr ("err");
4385  _c_102 = Expr (_c_74, 10, 2);
4386  _c_103 = Expr::create<Word>("Illegal type int-symbol: ");
4387  _c_104 = Char::create_expr (".get_len ()");
4388  _c_105 = Expr::create<Word>("Ints");
4389  _c_106 = Char::create_expr ("pxx_max (");
4390  _c_107 = Char::create_expr ("pxx_min (");
4391  _c_108 = Expr::create_sym<Func> (Expr_m_Int_m_To_m_CPP);
4392  _c_109 = Expr (_c_83, 4, 9);
4393  _c_110 = Expr::create<Word>("SYMBOL?");
4394  _c_111 = Char::create_expr (".symbol_at (");
4395  _c_112 = Expr::create<Word>("FLAT-SUBEXPR?");
4396  _c_113 = Char::create_expr (".flat_at (");
4397  _c_114 = Expr::create<Word>("CHECK-ITER");
4398  _c_115 = Char::create_expr ("RF_iter(");
4399  _c_116 = Expr::create<Word>("EQ");
4400  _c_117 = Char::create_expr (".eq (");
4401  _c_118 = Expr::create<Word>("TERM-EQ");
4402  _c_119 = Char::create_expr (".term_eq (");
4403  _c_120 = Expr::create<Word>("NOT");
4404  _c_121 = Char::create_expr ("!");
4405  _c_122 = Expr::create_sym<Func> (Cond_m_To_m_CPP);
4406  _c_123 = Expr::create<Word>("&&");
4407  _c_124 = Expr::create<Word>("||");
4408  _c_125 = Expr::create<Word>("<");
4409  _c_126 = Expr::create<Word>(">");
4410  _c_127 = Expr::create<Word>("<=");
4411  _c_128 = Expr::create<Word>(">=");
4412  _c_129 = Expr::create<Word>("==");
4413  _c_130 = Expr::create<Word>("!=");
4414  _c_131 = Expr::create<Word>("-");
4415  _c_132 = Expr::create<Word>("%");
4416  _c_133 = Expr::create<Word>("*");
4417  _c_134 = Expr::create<Word>("/");
4418  _c_135 = Expr::create<Word>("INC-ITER");
4419  _c_136 = Char::create_expr (")++");
4420  _c_137 = Expr::create<Word>("DEC-ITER");
4421  _c_138 = Char::create_expr (")--");
4422  _c_139 = Expr (_c_159, 0, 1);
4423  _c_141 = Char::create_expr (" + Char::create_expr (\"");
4424  _c_140 = Expr (_c_141, 0, 3);
4425  _c_142 = Char::create_expr (") ()");
4426  _c_143 = Char::create_expr (" + (");
4427  _c_144 = Char::create_expr (" + Expr::create_sym<Func> (");
4428  _c_147 = Char::create_expr (" + Expr::create<Word>(\"");
4429  _c_145 = Expr (_c_147, 20, 3);
4430  _c_146 = Expr (_c_147, 0, 16);
4431  _c_149 = Char::create_expr ("\\\\");
4432  _c_148 = Expr (_c_149, 0, 1);
4433  _c_150 = Expr (_c_7, 20, 1);
4434  _c_151 = Expr (_c_165, 4, 2);
4435  _c_152 = Char::create_expr ("\t");
4436  _c_153 = Char::create_expr ("\\t");
4437  _c_154 = Char::create_expr ("\r");
4438  _c_155 = Char::create_expr ("\\r");
4439  _c_156 = Expr (_c_71, 0, 1);
4440  _c_157 = Char::create_expr ("\\\"");
4441  _c_158 = Char::create_expr ("RF_VOID");
4442  _c_160 = Char::create_expr ("/*void*/");
4443  _c_161 = Char::create_expr (";;)");
4444  _c_162 = Expr (_c_7, 20, 2);
4445  _c_163 = Expr (_c_176, 6, 10);
4446  _c_164 = Expr::create<Integer>("1");
4447  _c_166 = Char::create_expr ("printf (\"+ %5u: enter >>> ");
4448  _c_167 = Char::create_expr ("printf(\"%2d: \", ");
4449  _c_172 = Char::create_expr (").to_Expr().writeln(stdout);");
4450  _c_169 = Expr (_c_172, 10, 18);
4451  _c_170 = Char::create_expr ("printf (\"           argument \"); ");
4452  _c_171 = Char::create_expr ("printf (\"- %5u: exit  >>> ");
4453  _c_173 = Char::create_expr ("printf (\"           result   \"); ");
4454  _c_174 = Char::create_expr ("printf (\"- %5u: fail  >>> ");
4455}
4456
4457static AtStart init_registrator_ (&init_);
4458
4459}
4460
4461}
Note: See TracBrowser for help on using the repository browser.