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

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