/* Generated by Nim Compiler v0.13.0 */
/*   (c) 2015 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 32

#include "nimbase.h"
#include <string.h>
typedef struct Tcgen469026 Tcgen469026;
typedef struct Ropeobj169006 Ropeobj169006;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Cell47505 Cell47505;
typedef struct TNimType TNimType;
typedef struct Cellseq47521 Cellseq47521;
typedef struct Gcheap49818 Gcheap49818;
typedef struct Gcstack49816 Gcstack49816;
typedef struct Cellset47517 Cellset47517;
typedef struct Pagedesc47513 Pagedesc47513;
typedef struct Memregion29687 Memregion29687;
typedef struct Smallchunk29639 Smallchunk29639;
typedef struct Llchunk29681 Llchunk29681;
typedef struct Bigchunk29641 Bigchunk29641;
typedef struct Intset29614 Intset29614;
typedef struct Trunk29610 Trunk29610;
typedef struct Avlnode29685 Avlnode29685;
typedef struct Gcstat49814 Gcstat49814;
typedef struct Ttypeseq214824 Ttypeseq214824;
typedef struct Ttype214828 Ttype214828;
typedef struct TNimNode TNimNode;
typedef struct Intset211035 Intset211035;
typedef struct Trunk211031 Trunk211031;
typedef struct Trunkseq211033 Trunkseq211033;
typedef struct Tpasscontext261002 Tpasscontext261002;
typedef struct Tsym214822 Tsym214822;
typedef struct Tidobj189006 Tidobj189006;
typedef struct TNimObject TNimObject;
typedef struct Tscope214816 Tscope214816;
typedef struct TY214925 TY214925;
typedef struct Tstrtable214794 Tstrtable214794;
typedef struct Tsymseq214792 Tsymseq214792;
typedef struct Tident189012 Tident189012;
typedef struct Tlineinfo182337 Tlineinfo182337;
typedef struct Tnode214790 Tnode214790;
typedef struct Tloc214804 Tloc214804;
typedef struct Tlib214808 Tlib214808;
typedef struct TY469140 TY469140;
typedef struct TY88687 TY88687;
typedef struct Tidtable214840 Tidtable214840;
typedef struct Tidpairseq214838 Tidpairseq214838;
typedef struct Tlinkedlist135016 Tlinkedlist135016;
typedef struct Tlistentry135010 Tlistentry135010;
typedef struct Tcproc469022 Tcproc469022;
typedef struct Tnodetable214852 Tnodetable214852;
typedef struct Tnodepairseq214850 Tnodepairseq214850;
typedef struct Tnodeseq214784 Tnodeseq214784;
typedef struct TY182350 TY182350;
typedef struct TY469094 TY469094;
typedef struct Tinfocc194008 Tinfocc194008;
typedef struct Tblock469020 Tblock469020;
typedef struct Ttraversalclosure476422 Ttraversalclosure476422;
typedef struct Tbitset259006 Tbitset259006;
typedef struct TY125202 TY125202;
typedef struct Trodreader252021 Trodreader252021;
typedef struct TY182612 TY182612;
typedef struct Tfileinfo182335 Tfileinfo182335;
typedef struct Tinfoos167037 Tinfoos167037;
typedef struct Tinfocpu167462 Tinfocpu167462;
typedef struct Tstrentry135012 Tstrentry135012;
typedef struct TY118706 TY118706;
typedef struct Basechunk29637 Basechunk29637;
typedef struct Freecell29629 Freecell29629;
typedef struct Tinstantiation214812 Tinstantiation214812;
typedef struct Tidpair214836 Tidpair214836;
typedef struct Tnodepair214848 Tnodepair214848;
typedef struct TY214913 TY214913;
typedef struct Tindex252019 Tindex252019;
typedef struct Tiitable221163 Tiitable221163;
typedef struct Tiipairseq221161 Tiipairseq221161;
typedef struct Table252054 Table252054;
typedef struct Keyvaluepairseq252057 Keyvaluepairseq252057;
typedef struct Memfile250202 Memfile250202;
typedef struct Tiipair221159 Tiipair221159;
typedef struct Keyvaluepair252060 Keyvaluepair252060;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Cell47505  {
NI refcount;
TNimType* typ;
};
struct  Cellseq47521  {
NI len;
NI cap;
Cell47505** d;
};
struct  Cellset47517  {
NI counter;
NI max;
Pagedesc47513* head;
Pagedesc47513** data;
};
typedef Smallchunk29639* TY29702[512];
typedef Trunk29610* Trunkbuckets29612[256];
struct  Intset29614  {
Trunkbuckets29612 data;
};
struct  Memregion29687  {
NI minlargeobj;
NI maxlargeobj;
TY29702 freesmallchunks;
Llchunk29681* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk29641* freechunkslist;
Intset29614 chunkstarts;
Avlnode29685* root;
Avlnode29685* deleted;
Avlnode29685* last;
Avlnode29685* freeavlnodes;
};
struct  Gcstat49814  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap49818  {
Gcstack49816* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq47521 zct;
Cellseq47521 decstack;
Cellset47517 cycleroots;
Cellseq47521 tempstack;
NI recgclock;
Memregion29687 region;
Gcstat49814 stat;
};
typedef N_NIMCALL_PTR(void, TY3489) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3494) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3489 marker;
TY3494 deepcopy;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  Intset211035  {
NI counter;
NI max;
Trunk211031* head;
Trunkseq211033* data;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj189006  {
  TNimObject Sup;
NI id;
};
struct  Tstrtable214794  {
NI counter;
Tsymseq214792* data;
};
struct  Tlineinfo182337  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tloc214804  {
NU8 k;
NU8 s;
NU16 flags;
Ttype214828* t;
Ropeobj169006* r;
Ropeobj169006* heaproot;
};
struct  Tsym214822  {
  Tidobj189006 Sup;
NU8 kind;
union{
struct {Ttypeseq214824* typeinstcache;
Tscope214816* typscope;
} S1;
struct {TY214925* procinstcache;
Tsym214822* gcunsafetyreason;
} S2;
struct {TY214925* usedgenerics;
Tstrtable214794 tab;
} S3;
struct {Tsym214822* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype214828* typ;
Tident189012* name;
Tlineinfo182337 info;
Tsym214822* owner;
NU32 flags;
Tnode214790* ast;
NU32 options;
NI position;
NI offset;
Tloc214804 loc;
Tlib214808* annex;
Tnode214790* constraint;
};
struct TY88687 {
NimStringDesc* Field0;
NI Field1;
};
struct  Tpasscontext261002  {
  TNimObject Sup;
NIM_BOOL fromcache;
};
typedef Ropeobj169006* Tcfilesections469010[18];
struct  Tidtable214840  {
NI counter;
Tidpairseq214838* data;
};
struct  Tlinkedlist135016  {
Tlistentry135010* head;
Tlistentry135010* tail;
NI counter;
};
struct  Tnodetable214852  {
NI counter;
Tnodepairseq214850* data;
};
typedef Ropeobj169006* TY469132[10];
struct  Tcgen469026  {
  Tpasscontext261002 Sup;
Tsym214822* module;
NimStringDesc* filename;
Tcfilesections469010 s;
NIM_BOOL preventstacktrace;
NIM_BOOL usesthreadvars;
NIM_BOOL framedeclared;
NIM_BOOL isheaderfile;
NIM_BOOL includesstringh;
NIM_BOOL objhaskidsvalid;
NimStringDesc* cfilename;
Tidtable214840 typecache;
Tidtable214840 forwtypecache;
Intset211035 declaredthings;
Intset211035 declaredprotos;
Tlinkedlist135016 headerfiles;
Intset211035 typeinfomarker;
Tcproc469022* initproc;
Tcproc469022* postinitproc;
Tcproc469022* preinitproc;
Ttypeseq214824* typestack;
Tnodetable214852 datacache;
Tsymseq214792* forwardedprocs;
NI typenodes;
NI nimtypes;
Ropeobj169006* typenodesname;
Ropeobj169006* nimtypesname;
NI labels;
TY469132 extensionloaders;
Ropeobj169006* injectstmt;
};
struct  Tcproc469022  {
Tsym214822* prc;
NIM_BOOL beforeretneeded;
NIM_BOOL threadvaraccessed;
Tlineinfo182337 lastlineinfo;
Tnodeseq214784* nestedtrystmts;
NI inexceptblock;
TY182350* finallysafepoints;
NI labels;
TY469094* blocks;
NI breakidx;
NU32 options;
NI maxframelen;
Tcgen469026* module;
NI withinloop;
NI splitdecls;
NI gcframeid;
Ropeobj169006* gcframetype;
};
struct  Tident189012  {
  Tidobj189006 Sup;
NimStringDesc* s;
Tident189012* next;
NI h;
};
typedef Ropeobj169006* TY473064[1];
struct  Tlistentry135010  {
  TNimObject Sup;
Tlistentry135010* prev;
Tlistentry135010* next;
};
struct  Tlib214808  {
  Tlistentry135010 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj169006* name;
Tnode214790* path;
};
typedef Ropeobj169006* TY501032[2];
struct  Ttype214828  {
  Tidobj189006 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq214824* sons;
Tnode214790* n;
Tsym214822* owner;
Tsym214822* sym;
Tsym214822* destructor;
Tsym214822* deepcopy;
Tsym214822* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc214804 loc;
};
typedef NimStringDesc* TY473543[14];
struct  Tnode214790  {
Ttype214828* typ;
Tlineinfo182337 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym214822* sym;
} S4;
struct {Tident189012* ident;
} S5;
struct {Tnodeseq214784* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
typedef Ropeobj169006* TY474652[4];
typedef NimStringDesc* TY214016[10];
typedef Ropeobj169006* TY474655[3];
struct  Ropeobj169006  {
  TNimObject Sup;
Ropeobj169006* left;
Ropeobj169006* right;
NI length;
NimStringDesc* data;
};
struct Tinfocc194008 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
NimStringDesc* Field3;
NimStringDesc* Field4;
NimStringDesc* Field5;
NimStringDesc* Field6;
NimStringDesc* Field7;
NimStringDesc* Field8;
NimStringDesc* Field9;
NimStringDesc* Field10;
NimStringDesc* Field11;
NimStringDesc* Field12;
NimStringDesc* Field13;
NimStringDesc* Field14;
NimStringDesc* Field15;
NimStringDesc* Field16;
NimStringDesc* Field17;
NimStringDesc* Field18;
NimStringDesc* Field19;
NU8 Field20;
};
typedef Tinfocc194008 TY194427[13];
typedef Ropeobj169006* TY169507[1];
typedef Ropeobj169006* Tcprocsections469014[3];
struct  Tblock469020  {
NI id;
Ropeobj169006* label;
Tcprocsections469014 sections;
NIM_BOOL isloop;
NI16 nestedtrystmts;
NI16 nestedexceptstmts;
NI16 framelen;
};
struct  Ttraversalclosure476422  {
Tcproc469022* p;
NimStringDesc* visitorfrmt;
};
typedef Ropeobj169006* TY476247[6];
typedef Ropeobj169006* TY475801[7];
typedef Ropeobj169006* TY475874[5];
typedef NimStringDesc* TY493055[19];
typedef NimStringDesc* TY492042[3];
typedef NimStringDesc* TY497164[4];
typedef NimStringDesc* TY492228[43];
typedef NimStringDesc* TY491681[7];
typedef NimStringDesc* TY497454[2];
typedef NimStringDesc* TY496828[6];
typedef NU8 TY202404[32];
struct  Tfileinfo182335  {
NimStringDesc* fullpath;
NimStringDesc* projpath;
NimStringDesc* shortname;
Ropeobj169006* quotedname;
TY182350* lines;
NimStringDesc* dirtyfile;
};
struct Tinfoos167037 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
NimStringDesc* Field3;
NimStringDesc* Field4;
NimStringDesc* Field5;
NimStringDesc* Field6;
NimStringDesc* Field7;
NimStringDesc* Field8;
NimStringDesc* Field9;
NimStringDesc* Field10;
NimStringDesc* Field11;
NU8 Field12;
};
typedef Tinfoos167037 TY167069[24];
struct Tinfocpu167462 {
NimStringDesc* Field0;
NI Field1;
NU8 Field2;
NI Field3;
NI Field4;
};
typedef Tinfocpu167462 TY167490[18];
struct  Tstrentry135012  {
  Tlistentry135010 Sup;
NimStringDesc* data;
};
struct TY118706 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
struct  Gcstack49816  {
Gcstack49816* prev;
Gcstack49816* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY29618[16];
struct  Pagedesc47513  {
Pagedesc47513* next;
NI key;
TY29618 bits;
};
struct  Basechunk29637  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk29639  {
  Basechunk29637 Sup;
Smallchunk29639* next;
Smallchunk29639* prev;
Freecell29629* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk29681  {
NI size;
NI acc;
Llchunk29681* next;
};
struct  Bigchunk29641  {
  Basechunk29637 Sup;
Bigchunk29641* next;
Bigchunk29641* prev;
NI align;
NF data;
};
struct  Trunk29610  {
Trunk29610* next;
NI key;
TY29618 bits;
};
typedef Avlnode29685* TY29692[2];
struct  Avlnode29685  {
TY29692 link;
NI key;
NI upperbound;
NI level;
};
struct  Trunk211031  {
Trunk211031* next;
NI key;
TY29618 bits;
};
struct  Tscope214816  {
NI depthlevel;
Tstrtable214794 symbols;
Tnodeseq214784* usingsyms;
Tscope214816* parent;
};
struct  Tidpair214836  {
Tidobj189006* key;
TNimObject* val;
};
struct  Tnodepair214848  {
NI h;
Tnode214790* key;
NI val;
};
struct  Tiitable221163  {
NI counter;
Tiipairseq221161* data;
};
struct  Tindex252019  {
NI lastidxkey;
NI lastidxval;
Tiitable221163 tab;
NimStringDesc* r;
NI offset;
};
struct  Table252054  {
Keyvaluepairseq252057* data;
NI counter;
};
struct  Memfile250202  {
void* mem;
NI size;
int handle;
};
struct  Trodreader252021  {
  TNimObject Sup;
NI pos;
NCSTRING s;
NU32 options;
NU8 reason;
TY214913* moddeps;
TY214913* files;
NI dataidx;
NI convertersidx;
NI initidx;
NI interfidx;
NI compilerprocsidx;
NI methodsidx;
NimStringDesc* filename;
Tindex252019 index;
Tindex252019 imports;
NI readerindex;
NI line;
NI moduleid;
Table252054 syms;
Memfile250202 memfile;
Tsymseq214792* methods;
NimStringDesc* origfile;
NIM_BOOL inviewmode;
};
struct  Freecell29629  {
Freecell29629* next;
NI zerofield;
};
struct  Tinstantiation214812  {
Tsym214822* sym;
Ttypeseq214824* concretetypes;
TY214913* usedby;
NI compilesid;
};
struct  Tiipair221159  {
NI key;
NI val;
};
struct Keyvaluepair252060 {
NI Field0;
NI Field1;
Tsym214822* Field2;
};
struct Ttypeseq214824 {
  TGenericSeq Sup;
  Ttype214828* data[SEQ_DECL_SIZE];
};
struct TY469140 {
  TGenericSeq Sup;
  Tcgen469026* data[SEQ_DECL_SIZE];
};
struct Tsymseq214792 {
  TGenericSeq Sup;
  Tsym214822* data[SEQ_DECL_SIZE];
};
struct Tbitset259006 {
  TGenericSeq Sup;
  NI8 data[SEQ_DECL_SIZE];
};
struct TY469094 {
  TGenericSeq Sup;
  Tblock469020 data[SEQ_DECL_SIZE];
};
struct TY125202 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct TY182350 {
  TGenericSeq Sup;
  Ropeobj169006* data[SEQ_DECL_SIZE];
};
struct Tnodeseq214784 {
  TGenericSeq Sup;
  Tnode214790* data[SEQ_DECL_SIZE];
};
struct TY182612 {
  TGenericSeq Sup;
  Tfileinfo182335 data[SEQ_DECL_SIZE];
};
struct Trunkseq211033 {
  TGenericSeq Sup;
  Trunk211031* data[SEQ_DECL_SIZE];
};
struct TY214925 {
  TGenericSeq Sup;
  Tinstantiation214812* data[SEQ_DECL_SIZE];
};
struct Tidpairseq214838 {
  TGenericSeq Sup;
  Tidpair214836 data[SEQ_DECL_SIZE];
};
struct Tnodepairseq214850 {
  TGenericSeq Sup;
  Tnodepair214848 data[SEQ_DECL_SIZE];
};
struct TY214913 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct Tiipairseq221161 {
  TGenericSeq Sup;
  Tiipair221159 data[SEQ_DECL_SIZE];
};
struct Keyvaluepairseq252057 {
  TGenericSeq Sup;
  Keyvaluepair252060 data[SEQ_DECL_SIZE];
};
N_NIMCALL(Ropeobj169006*, rope_169277)(NimStringDesc* s);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Cell47505*, usrtocell_51440)(void* usr);
static N_INLINE(void, rtladdzct_53001)(Cell47505* c);
N_NOINLINE(void, addzct_51417)(Cellseq47521* s, Cell47505* c);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(void, initintset_211885)(Intset211035* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_NIMCALL(Tcgen469026*, newmodule_503445)(Tsym214822* module);
N_NIMCALL(Tcgen469026*, getcgenmodule_472226)(Tsym214822* s);
N_NIMCALL(void, internalerror_187113)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_187183)(TY88687 x);
N_NIMCALL(Tcgen469026*, rawnewmodule_503438)(Tsym214822* module);
N_NIMCALL(Tcgen469026*, rawnewmodule_503063)(Tsym214822* module, NimStringDesc* filename);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_NIMCALL(void, initlinkedlist_135028)(Tlinkedlist135016* list);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_NIMCALL(void, initidtable_218033)(Tidtable214840* x);
N_NIMCALL(Tcproc469022*, newproc_469193)(Tsym214822* prc, Tcgen469026* module);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_53819)(Cell47505* c);
static N_INLINE(NIM_BOOL, canbecycleroot_51458)(Cell47505* c);
static N_INLINE(void, rtladdcycleroot_52220)(Cell47505* c);
N_NOINLINE(void, incl_48247)(Cellset47517* s, Cell47505* cell);
static N_INLINE(void, decref_53401)(Cell47505* c);
N_NIMCALL(NU32, initprocoptions_503035)(Tcgen469026* m);
N_NIMCALL(Tcproc469022*, newpreinitproc_503025)(Tcgen469026* m);
N_NIMCALL(Tcproc469022*, newpostinitproc_503030)(Tcgen469026* m);
N_NIMCALL(void, initnodetable_218099)(Tnodetable214852* x);
N_NIMCALL(Ropeobj169006*, gettempname_473366)(void);
N_NIMCALL(Ropeobj169006*, ropecg_472407)(Tcgen469026* m, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0);
N_NIMCALL(void, add_169487)(Ropeobj169006** a, NimStringDesc* b);
N_NIMCALL(void, add_169482)(Ropeobj169006** a, Ropeobj169006* b);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_79810, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(Ropeobj169006*, cgsym_472403)(Tcgen469026* m, NimStringDesc* name);
N_NIMCALL(Tsym214822*, getcompilerproc_258746)(NimStringDesc* name);
N_NIMCALL(void, genproc_472951)(Tcgen469026* m, Tsym214822* prc);
N_NIMCALL(NIM_BOOL, isactivated_501631)(Tsym214822* prc);
N_NIMCALL(void, fillprocloc_478601)(Tsym214822* sym);
N_NIMCALL(void, fillloc_472282)(Tloc214804* a, NU8 k, Ttype214828* typ, Ropeobj169006* r, NU8 s);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(Ropeobj169006*, manglename_472977)(Tsym214822* s);
N_NIMCALL(NIM_BOOL, iskeyword_472960)(Tident189012* w);
N_NIMCALL(NimStringDesc*, mangle_468847)(NimStringDesc* name);
N_NIMCALL(Ropeobj169006*, HEX25_169905)(NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0);
N_NIMCALL(Ropeobj169006*, rope_169401)(NI64 i);
N_NIMCALL(void, addforwardedproc_472203)(Tcgen469026* m, Tsym214822* prc);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(void, genprocnoforward_501116)(Tcgen469026* m, Tsym214822* prc);
N_NIMCALL(void, useheader_472349)(Tcgen469026* m, Tsym214822* sym);
N_NIMCALL(NIM_BOOL, includestr_135249)(Tlinkedlist135016* list, NimStringDesc* data);
N_NIMCALL(NimStringDesc*, getstr_219303)(Tnode214790* a);
N_NIMCALL(void, genprocprototype_478654)(Tcgen469026* m, Tsym214822* sym);
N_NIMCALL(Tsym214822*, getmodule_221144)(Tsym214822* s);
N_NIMCALL(NIM_BOOL, containsorincl_211862)(Intset211035* s, NI key);
N_NIMCALL(Ropeobj169006*, gettypedesc_475055)(Tcgen469026* m, Ttype214828* typ);
N_NIMCALL(Ropeobj169006*, gettypedescaux_473273)(Tcgen469026* m, Ttype214828* typ, Intset211035* check);
N_NIMCALL(Ttype214828*, getuniquetype_468640)(Ttype214828* key);
N_NIMCALL(Ropeobj169006*, gettypepre_473561)(Tcgen469026* m, Ttype214828* typ);
N_NIMCALL(Ropeobj169006*, getsimpletypedesc_473536)(Tcgen469026* m, Ttype214828* typ);
N_NIMCALL(Ropeobj169006*, typenameorliteral_473498)(Ttype214828* t, NimStringDesc* literal);
N_NIMCALL(Ropeobj169006*, gettypename_473086)(Ttype214828* typ);
N_NIMCALL(Ropeobj169006*, HEX26_169418)(Ropeobj169006* a, Ropeobj169006* b);
N_NIMCALL(Ropeobj169006*, typename_473065)(Ttype214828* typ);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_85009, TNimType* typ);
N_NIMCALL(NI64, firstord_240001)(Ttype214828* t);
N_NIMCALL(NI64, getsize_240124)(Ttype214828* typ);
N_NIMCALL(void, internalerror_187100)(Tlineinfo182337 info, NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(Ropeobj169006*, cachegettype_473361)(Tidtable214840 tab, Ttype214828* key);
N_NIMCALL(TNimObject*, idtableget_221107)(Tidtable214840 t, Tidobj189006* key);
N_NIMCALL(NIM_BOOL, isimportedcpptype_473246)(Ttype214828* t);
N_NIMCALL(NimStringDesc*, typetostring_240017)(Ttype214828* typ, NU8 prefer);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(Ttype214828*, lastson_217377)(Ttype214828* n);
N_NIMCALL(Ttype214828*, skiptypes_218113)(Ttype214828* t, NU64 kinds);
N_NIMCALL(Ttype214828*, elemtype_240383)(Ttype214828* t);
N_NIMCALL(Ropeobj169006*, HEX26_169447)(Ropeobj169006* a, NimStringDesc* b);
N_NIMCALL(Ropeobj169006*, gettypeforward_473628)(Tcgen469026* m, Ttype214828* typ);
N_NIMCALL(NIM_BOOL, isimportedtype_473219)(Ttype214828* t);
N_NIMCALL(void, addf_170205)(Ropeobj169006** c, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0);
N_NIMCALL(NimStringDesc*, getforwardstructformat_473604)(Tcgen469026* m);
N_NIMCALL(Ropeobj169006*, structorunion_473590)(Ttype214828* t);
N_NIMCALL(void, idtableput_221115)(Tidtable214840* t, Tidobj189006* key, TNimObject* val);
N_NIMCALL(void, pushtype_473547)(Tcgen469026* m, Ttype214828* typ);
N_NIMCALL(void, genprocparams_473704)(Tcgen469026* m, Ttype214828* t, Ropeobj169006** rettype, Ropeobj169006** params, Intset211035* check, NIM_BOOL declareenvironment, NIM_BOOL weakdep);
N_NIMCALL(NIM_BOOL, isinvalidreturntype_473318)(Ttype214828* rettype);
N_NIMCALL(NU8, maptype_473166)(Ttype214828* typ);
N_NIMCALL(NU8, mapsettype_473162)(Ttype214828* typ);
N_NIMCALL(NIM_BOOL, needscomplexassignment_473279)(Ttype214828* typ);
N_NIMCALL(NIM_BOOL, containsgarbagecollectedref_240106)(Ttype214828* typ);
static N_INLINE(NIM_BOOL, isobjlackingtypefield_473283)(Ttype214828* typ);
N_NIMCALL(NIM_BOOL, ispureobject_240127)(Ttype214828* typ);
N_NIMCALL(NI, sonslen_217351)(Tnode214790* n);
static N_INLINE(NIM_BOOL, iscompiletimeonly_248906)(Ttype214828* t);
N_NIMCALL(NU8, paramstorageloc_473687)(Tsym214822* param);
N_NIMCALL(NIM_BOOL, ccgintroducedptr_473376)(Tsym214822* s);
N_NIMCALL(Ropeobj169006*, gettypedescweak_473668)(Tcgen469026* m, Ttype214828* t, Intset211035* check);
N_NIMCALL(NU8, mapreturntype_473206)(Ttype214828* typ);
N_NIMCALL(Ropeobj169006*, HEX26_169452)(NimStringDesc* a, Ropeobj169006* b);
N_NIMCALL(void, appcg_472632)(Tcgen469026* m, Ropeobj169006** c, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0);
N_NIMCALL(NI64, lengthord_240007)(Ttype214828* t);
N_NIMCALL(NIM_BOOL, scancppgenericslot_474416)(NimStringDesc* pat, NI* cursor, NI* outidx, NI* outstars);
N_NIMCALL(Ttype214828*, resolvestarsincpptype_474480)(Ttype214828* typ, NI idx, NI stars);
N_NIMCALL(NI, len_217339)(Ttype214828* n);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI start);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI first);
N_NIMCALL(Ropeobj169006*, getrecorddesc_474232)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name, Intset211035* check);
N_NIMCALL(Ropeobj169006*, getrecordfields_474225)(Tcgen469026* m, Ttype214828* typ, Intset211035* check);
N_NIMCALL(Ropeobj169006*, genrecordfieldsaux_474010)(Tcgen469026* m, Tnode214790* n, Ropeobj169006* accessexpr, Ttype214828* rectype, Intset211035* check);
N_NIMCALL(Tnode214790*, lastson_217364)(Tnode214790* n);
N_NIMCALL(Ropeobj169006*, manglerecfieldname_473950)(Tsym214822* field, Ttype214828* rectype);
N_NIMCALL(NimStringDesc*, manglefield_472973)(Tident189012* name);
N_NIMCALL(NIM_CHAR, nsuToUpperChar)(NIM_CHAR c);
N_NIMCALL(Ropeobj169006*, gettupledesc_474366)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name, Intset211035* check);
N_NIMCALL(NI, sonslen_217327)(Ttype214828* n);
N_NIMCALL(void, excl_211841)(Intset211035* s, NI key);
N_NIMCALL(Ropeobj169006*, mangledynlibproc_478362)(Tsym214822* sym);
N_NIMCALL(Ropeobj169006*, genprocheader_475286)(Tcgen469026* m, Tsym214822* prc);
N_NIMCALL(void, genclinedir_472813)(Ropeobj169006** r, Tlineinfo182337 info);
N_NIMCALL(void, genclinedir_472733)(Ropeobj169006** r, NimStringDesc* filename, NI line);
N_NIMCALL(NimStringDesc*, makesinglelinecstring_468835)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, tofullpath_183269)(NI32 fileidx);
N_NIMCALL(NI, safelinenm_472729)(Tlineinfo182337 info);
static N_INLINE(NI, tolinenumber_183415)(Tlineinfo182337 info);
static N_INLINE(NIM_BOOL, crossescppboundary_500964)(Tcgen469026* m, Tsym214822* sym);
N_NIMCALL(void, genprocaux_500409)(Tcgen469026* m, Tsym214822* prc);
static N_INLINE(NI, len_215059)(Tnode214790* n);
N_NIMCALL(void, assignlocalvar_478180)(Tcproc469022* p, Tsym214822* s);
N_NIMCALL(Ropeobj169006*, localvardecl_478098)(Tcproc469022* p, Tsym214822* s);
N_NIMCALL(void, line_472690)(Tcproc469022* p, NU8 s, Ropeobj169006* r);
static N_INLINE(Ropeobj169006**, s_469166)(Tcproc469022* p, NU8 s);
N_NIMCALL(Ropeobj169006*, indentline_472656)(Tcproc469022* p, Ropeobj169006* r);
N_NIMCALL(void, prepend_169893)(Ropeobj169006** a, Ropeobj169006* b);
N_NIMCALL(void, localdebuginfo_478015)(Tcproc469022* p, Tsym214822* s);
N_NIMCALL(void, linef_472700)(Tcproc469022* p, NU8 s, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0);
N_NIMCALL(Ropeobj169006*, makecstring_182637)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(Ropeobj169006*, gentypeinfo_475350)(Tcgen469026* m, Ttype214828* t_475353);
N_NIMCALL(Tcgen469026*, bmod_469188)(Tsym214822* module);
N_NIMCALL(void, gentypeinfoauxbase_475369)(Tcgen469026* m, Ttype214828* typ, Ttype214828* origtype, Ropeobj169006* name, Ropeobj169006* base);
N_NIMCALL(NIM_BOOL, canformacycle_240112)(Ttype214828* typ);
N_NIMCALL(void, gentupleinfo_475948)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name);
N_NIMCALL(Ropeobj169006*, getnimnode_475354)(Tcgen469026* m);
N_NIMCALL(Ttype214828*, fakeclosuretype_476410)(Tsym214822* owner);
N_NIMCALL(Ttype214828*, newtype_217107)(NU8 kind, Tsym214822* owner);
N_NIMCALL(void, rawaddson_218408)(Ttype214828* father, Ttype214828* son);
N_NIMCALL(void, gentypeinfoaux_475436)(Tcgen469026* m, Ttype214828* typ, Ttype214828* origtype, Ropeobj169006* name);
N_NIMCALL(Ropeobj169006*, gentraverseproc_477032)(Tcgen469026* m, Ttype214828* typ, NU8 reason);
N_NIMCALL(Ropeobj169006*, getglobaltempname_473371)(void);
static N_INLINE(NI, backendid_213413)(void);
N_NIMCALL(void, gentraverseprocseq_476785)(Ttraversalclosure476422* c, Ropeobj169006* accessor, Ttype214828* typ);
N_NIMCALL(void, gettemp_476435)(Tcproc469022* p, Ttype214828* t, Tloc214804* result, NIM_BOOL needsinit);
N_NIMCALL(void, linefmt_472714)(Tcproc469022* p, NU8 s, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0);
N_NIMCALL(void, constructloc_477770)(Tcproc469022* p, Tloc214804 loc, NIM_BOOL istemp);
static N_INLINE(NIM_BOOL, iscomplexvaluetype_477699)(Ttype214828* t);
N_NIMCALL(Ropeobj169006*, rdloc_477569)(Tloc214804 a);
N_NIMCALL(void, usestringh_472345)(Tcgen469026* m);
N_NIMCALL(Ropeobj169006*, addrloc_477585)(Tloc214804 a);
N_NIMCALL(void, genobjectinit_477623)(Tcproc469022* p, NU8 section, Ttype214828* t, Tloc214804 a, NIM_BOOL takeaddr);
N_NIMCALL(NU8, analyseobjectwithtypefield_240138)(Ttype214828* t);
N_NIMCALL(Ttype214828*, getsystype_258130)(NU8 kind);
N_NIMCALL(void, gentraverseproc_476425)(Ttraversalclosure476422* c, Ropeobj169006* accessor, Ttype214828* typ_476430);
static N_INLINE(Ropeobj169006*, parentobj_476657)(Ropeobj169006* accessor, Tcgen469026* m);
N_NIMCALL(void, gentraverseproc_476442)(Ttraversalclosure476422* c, Ropeobj169006* accessor, Tnode214790* n);
N_NIMCALL(void, gencaserange_476431)(Tcproc469022* p, Tnode214790* branch);
static N_INLINE(Tnode214790*, HEX5BHEX5D_215238)(Tnode214790* n, NI i);
N_NIMCALL(Ropeobj169006*, genliteral_478673)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(Ropeobj169006*, genliteral_489503)(Tcproc469022* p, Tnode214790* n, Ttype214828* ty);
N_NIMCALL(Ropeobj169006*, intliteral_478670)(NI64 i);
N_NIMCALL(Ropeobj169006*, int64literal_489430)(NI64 i);
N_NIMCALL(Ropeobj169006*, uint64literal_489442)(NU64 i);
N_NIMCALL(NimStringDesc*, HEX24_7801)(NU64 x);
N_NIMCALL(NI, nodetabletestorset_262682)(Tnodetable214852* t, Tnode214790* key, NI val);
N_NIMCALL(Ropeobj169006*, getstrlit_489495)(Tcgen469026* m, NimStringDesc* s);
N_NIMCALL(NimStringDesc*, tostrmaxprecision_220009)(NF f);
N_NIMCALL(Tnode214790*, copynode_218542)(Tnode214790* src);
N_NIMCALL(void, linecg_472707)(Tcproc469022* p, NU8 s, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0);
N_NIMCALL(void, genarrayinfo_476405)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name);
N_NIMCALL(void, gensetinfo_476267)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name);
N_NIMCALL(void, genenuminfo_475996)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name);
N_NIMCALL(void, genobjectinfo_475905)(Tcgen469026* m, Ttype214828* typ, Ttype214828* origtype, Ropeobj169006* name);
N_NIMCALL(void, genobjectfields_475503)(Tcgen469026* m, Ttype214828* typ, Tnode214790* n, Ropeobj169006* expr);
N_NIMCALL(Ropeobj169006*, discriminatortablename_475456)(Tcgen469026* m, Ttype214828* objtype_475459, Tsym214822* d);
N_NIMCALL(Tsym214822*, lookupinrecord_221140)(Tnode214790* n, Tident189012* field);
N_NIMCALL(NI64, getordvalue_240118)(Tnode214790* n);
N_NIMCALL(void, gendeepcopyproc_477466)(Tcgen469026* m, Tsym214822* s, Ropeobj169006* result);
N_NIMCALL(void, initlocalvar_477780)(Tcproc469022* p, Tsym214822* v, NIM_BOOL immediateasgn);
N_NIMCALL(void, fillresult_473465)(Tsym214822* param);
N_NIMCALL(void, assignparam_478540)(Tcproc469022* p, Tsym214822* s);
N_NIMCALL(void, closuresetup_500376)(Tcproc469022* p, Tsym214822* prc);
N_NIMCALL(void, genstmts_478644)(Tcproc469022* p, Tnode214790* t);
N_NIMCALL(void, expr_478648)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, putlocintodest_478658)(Tcproc469022* p, Tloc214804* d, Tloc214804 s);
N_NIMCALL(void, genassignment_478664)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src, NU8 flags);
N_NIMCALL(void, genrefassign_477693)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src, NU8 flags);
static N_INLINE(NIM_BOOL, usesnativegc_160168)(void);
N_NIMCALL(void, keepalive_477817)(Tcproc469022* p, Tloc214804 tokeepalive);
N_NIMCALL(void, optasgnloc_490008)(Tloc214804 a, Ttype214828* t, Ropeobj169006* field, Tloc214804* Result);
N_NIMCALL(void, genoptasgntuple_490201)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src, NU8 flags);
N_NIMCALL(void, gengenericasgn_490367)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src, NU8 flags);
N_NIMCALL(NI, asgncomplexity_489970)(Tnode214790* n);
N_NIMCALL(void, genoptasgnobject_490284)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src, NU8 flags, Tnode214790* t);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(void, localerror_187085)(Tlineinfo182337 info, NimStringDesc* arg);
N_NIMCALL(void, genvarprototype_478636)(Tcgen469026* m, Tsym214822* sym);
N_NIMCALL(void, genvarprototypeaux_484054)(Tcgen469026* m, Tsym214822* sym);
N_NIMCALL(void, declarethreadvar_478232)(Tcgen469026* m, Tsym214822* s, NIM_BOOL isextern);
static N_INLINE(NIM_BOOL, emulatedthreadvars_472949)(void);
N_NIMCALL(NIM_BOOL, issimpleconst_472311)(Ttype214828* typ);
N_NIMCALL(void, putintodest_490713)(Tcproc469022* p, Tloc214804* d, Ttype214828* t, Ropeobj169006* r, NU8 s);
N_NIMCALL(void, initloc_472273)(Tloc214804* result, NU8 k, Ttype214828* typ, NU8 s);
N_NIMCALL(void, gencomplexconst_498480)(Tcproc469022* p, Tsym214822* sym, Tloc214804* d);
N_NIMCALL(void, requestconstimpl_478640)(Tcproc469022* p, Tsym214822* sym);
N_NIMCALL(Tcgen469026*, findpendingmodule_472241)(Tcgen469026* m, Tsym214822* s);
N_NIMCALL(Ropeobj169006*, genconstexpr_497898)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(void, tobitset_260001)(Tnode214790* s, Tbitset259006** b);
N_NIMCALL(Ropeobj169006*, genrawsetdata_489829)(Tbitset259006* cs, NI size);
N_NIMCALL(NimStringDesc*, nsuToHex)(NI64 x, NI len);
N_NIMCALL(NI64, bitsettoword_489605)(Tbitset259006* s, NI size);
N_NIMCALL(Ropeobj169006*, genconstseq_499519)(Tcproc469022* p, Tnode214790* n, Ttype214828* t);
N_NIMCALL(void, appcg_472640)(Tcgen469026* m, NU8 s, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0);
N_NIMCALL(Ropeobj169006*, genconstsimplelist_499464)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(Ropeobj169006*, gennamedconstexpr_499449)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(void, initlocexpr_478683)(Tcproc469022* p, Tnode214790* e, Tloc214804* result);
N_NIMCALL(void, accessthreadlocalvar_472945)(Tcproc469022* p, Tsym214822* s);
static N_INLINE(Ropeobj169006**, procsec_469181)(Tcproc469022* p, NU8 s);
static N_INLINE(NIM_BOOL, isemptytype_219513)(Ttype214828* t);
N_NIMCALL(void, putdataintodest_490681)(Tcproc469022* p, Tloc214804* d, Ttype214828* t, Ropeobj169006* r);
N_NIMCALL(void, genlinedir_472823)(Tcproc469022* p, Tnode214790* t);
N_NIMCALL(Ropeobj169006*, sourceline_183077)(Tlineinfo182337 i);
N_NIMCALL(NIM_BOOL, freshlineinfo_472818)(Tcproc469022* p, Tlineinfo182337 info);
N_NIMCALL(NimStringDesc*, tofilename_183265)(NI32 fileidx);
N_NIMCALL(Ropeobj169006*, quotedfilename_187418)(Tlineinfo182337 i);
N_NIMCALL(void, genmagicexpr_497433)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 op);
N_NIMCALL(void, genandor_494735)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 m);
N_NIMCALL(Ropeobj169006*, getlabel_478617)(Tcproc469022* p);
N_NIMCALL(void, fixlabel_478630)(Tcproc469022* p, Ropeobj169006* labl);
N_NIMCALL(void, unaryarith_493046)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 op);
N_NIMCALL(void, unaryarithoverflow_492033)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 m);
N_NIMCALL(void, binaryfloatarith_497128)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 m);
N_NIMCALL(void, binaryarith_492219)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 op);
N_NIMCALL(void, geneqproc_492614)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, binaryarithoverflow_491662)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 m);
N_NIMCALL(Ropeobj169006*, binaryarithoverflowraw_491635)(Tcproc469022* p, Ttype214828* t, Tloc214804 a, Tloc214804 b, NimStringDesc* frmt);
N_NIMCALL(Ropeobj169006*, rdcharloc_477608)(Tloc214804 a);
N_NIMCALL(NI64, lastord_240004)(Ttype214828* t);
N_NIMCALL(void, genrepr_495739)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(Ropeobj169006*, lenfield_478705)(Tcproc469022* p);
N_NIMCALL(void, gcusage_494863)(Tnode214790* n);
N_NIMCALL(void, message_187095)(Tlineinfo182337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, rendertree_233044)(Tnode214790* n, NU8 renderflags);
N_NIMCALL(void, gengettypeinfo_495783)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, genswap_496038)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, unaryexpr_491609)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt);
N_NIMCALL(void, binarystmt_490746)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt);
N_NIMCALL(void, genstrconcat_494876)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, genstrappend_494977)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, genseqelemappend_495083)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, genstrequals_497066)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, binaryexpr_490820)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt);
N_NIMCALL(void, genisnil_493020)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, gendollar_495791)(Tcproc469022* p, Tnode214790* n, Tloc214804* d, NimStringDesc* frmt);
N_NIMCALL(void, genof_495731)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, genof_495601)(Tcproc469022* p, Tnode214790* x, Ttype214828* typ, Tloc214804* d);
N_NIMCALL(void, globalerror_187071)(Tlineinfo182337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(Ropeobj169006*, genofhelper_495470)(Tcproc469022* p, Ttype214828* dest, Ropeobj169006* a);
N_NIMCALL(void, gennew_495180)(Tcproc469022* p, Tnode214790* e);
N_NIMCALL(void, rawgennew_495140)(Tcproc469022* p, Tloc214804 a, Ropeobj169006* sizeexpr_495144);
N_NIMCALL(void, gennewfinalize_495440)(Tcproc469022* p, Tnode214790* e);
N_NIMCALL(void, gennewseq_495221)(Tcproc469022* p, Tnode214790* e);
N_NIMCALL(void, gennewseqaux_495193)(Tcproc469022* p, Tloc214804 dest, Ropeobj169006* length);
N_NIMCALL(void, gensomecast_496880)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(Ropeobj169006*, getclosuretype_475067)(Tcgen469026* m, Ttype214828* t, NU8 kind);
N_NIMCALL(void, genord_496874)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, unaryexprchar_491622)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt);
N_NIMCALL(void, genarraylen_495814)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 op);
N_NIMCALL(void, unarystmt_490772)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt);
N_NIMCALL(void, gensetlengthstr_496032)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, gensetlengthseq_495899)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, gensetop_496819)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 op);
N_NIMCALL(void, binarystmtinexcl_496257)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt);
N_NIMCALL(Ropeobj169006*, rdsetelemloc_496062)(Tloc214804 a, Ttype214828* settype);
N_NIMCALL(void, binaryexprchar_491209)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt);
N_NIMCALL(void, geninop_496409)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(NIM_BOOL, fewcmps_496203)(Tnode214790* s);
N_NIMCALL(void, geninexpraux_493896)(Tcproc469022* p, Tnode214790* e, Tloc214804* a, Tloc214804* b, Tloc214804* d);
N_NIMCALL(void, binaryexprin_496237)(Tcproc469022* p, Tnode214790* e, Tloc214804* a, Tloc214804* b, Tloc214804* d, NimStringDesc* frmt);
N_NIMCALL(NimStringDesc*, HEX24_169856)(Ropeobj169006* r);
N_NIMCALL(void, gencall_483033)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, genclosurecall_479852)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* d);
N_NIMCALL(Ropeobj169006*, genarg_479187)(Tcproc469022* p, Tnode214790* n_479190, Tsym214822* param, Tnode214790* call);
static N_INLINE(Ropeobj169006*, genargstringtocstring_479176)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(Ropeobj169006*, openarrayloc_479065)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(Tnode214790*, skipconv_249082)(Tnode214790* n);
N_NIMCALL(NU8, getmagic_239323)(Tnode214790* op);
N_NIMCALL(void, initlocexprsingleuse_478689)(Tcproc469022* p, Tnode214790* e, Tloc214804* result);
N_NIMCALL(Ropeobj169006*, genargnoparam_479338)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(Ropeobj169006*, getrawproctype_479859)(Tcproc469022* p, Ttype214828* t);
N_NIMCALL(NIM_BOOL, leftappearsonrightside_478729)(Tnode214790* le, Tnode214790* ri);
N_NIMCALL(NU8, ispartof_415328)(Tnode214790* a, Tnode214790* b);
static N_INLINE(NIM_BOOL, hasnoinit_478783)(Tnode214790* call);
N_NIMCALL(void, resetloc_477732)(Tcproc469022* p, Tloc214804* loc);
N_NIMCALL(Ropeobj169006*, addcomma_479864)(Ropeobj169006* r);
N_NIMCALL(void, geninfixcall_481329)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* d);
N_NIMCALL(NIM_BOOL, contains_101033)(NimStringDesc* s, TY202404 chars);
N_NIMCALL(Ropeobj169006*, genpatterncall_481099)(Tcproc469022* p, Tnode214790* ri_481102, NimStringDesc* pat, Ttype214828* typ_481104);
N_NIMCALL(Ropeobj169006*, genotherarg_478677)(Tcproc469022* p, Tnode214790* ri, NI i, Ttype214828* typ);
N_NIMCALL(Ropeobj169006*, genthisarg_480865)(Tcproc469022* p, Tnode214790* ri_480868, NI i, Ttype214828* typ);
N_NIMCALL(Tnode214790*, skipaddrderef_480823)(Tnode214790* node);
N_NIMCALL(void, fixupcall_478810)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* d, Ropeobj169006* callee, Ropeobj169006* params);
N_NIMCALL(void, gennamedparamcall_482017)(Tcproc469022* p, Tnode214790* ri, Tloc214804* d);
N_NIMCALL(NIM_BOOL, contains_101023)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(void, genprefixcall_479360)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* d);
static N_INLINE(void, poststmtactions_472942)(Tcproc469022* p);
N_NIMCALL(void, genreset_495130)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(void, genecho_494793)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(NimStringDesc*, nsuRepeatStr)(NimStringDesc* s, NI n);
N_NIMCALL(void, genarrtoseq_495376)(Tcproc469022* p, Tnode214790* t, Tloc214804* d);
N_NIMCALL(void, genseqconstr_495334)(Tcproc469022* p, Tnode214790* t, Tloc214804* d);
N_NIMCALL(void, localerror_187080)(Tlineinfo182337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(Tnode214790*, wrapprocforspawn_378500)(Tsym214822* owner, Tnode214790* spawnexpr, Ttype214828* rettype, Tnode214790* barrier, Tnode214790* dest);
N_NIMCALL(Tnode214790*, liftparallel_420821)(Tsym214822* owner, Tnode214790* n);
N_NIMCALL(void, gendeepcopy_490604)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src);
N_NIMCALL(NIM_BOOL, isdeepconstexpr_239361)(Tnode214790* n);
N_NIMCALL(Ropeobj169006*, gensetnode_489864)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(void, gensetconstr_497945)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, exprcomplexconst_498884)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, genarrayconstr_498438)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(NIM_BOOL, handleconstexpr_497902)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, gentupleconstr_498067)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, genobjconstr_495233)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(Tsym214822*, lookupfieldagain_493543)(Tcproc469022* p, Ttype214828* ty_493546, Tsym214822* field, Ropeobj169006** r);
N_NIMCALL(void, genfieldcheck_493904)(Tcproc469022* p, Tnode214790* e, Ropeobj169006* obj, Tsym214822* field, Ttype214828* origty);
N_NIMCALL(Tnode214790*, newstrnode_215678)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(void, gencast_496937)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, genconv_497032)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(NIM_BOOL, comparetypes_246404)(Ttype214828* x, Ttype214828* y, NU8 cmp, NU8 flags);
N_NIMCALL(void, genaddr_493392)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
static N_INLINE(NIM_BOOL, iscppref_493207)(Tcproc469022* p, Ttype214828* typ);
N_NIMCALL(void, genbracketexpr_494701)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, genarrayelem_494493)(Tcproc469022* p, Tnode214790* x, Tnode214790* y, Tloc214804* d);
N_NIMCALL(NIM_BOOL, isconstexpr_239336)(Tnode214790* n);
N_NIMCALL(void, genopenarrayelem_494593)(Tcproc469022* p, Tnode214790* x, Tnode214790* y, Tloc214804* d);
N_NIMCALL(void, genseqelem_494629)(Tcproc469022* p, Tnode214790* x, Tnode214790* y, Tloc214804* d);
N_NIMCALL(void, gencstringelem_494568)(Tcproc469022* p, Tnode214790* x, Tnode214790* y, Tloc214804* d);
N_NIMCALL(void, gentupleelem_493490)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, genderef_483563)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NIM_BOOL enforcederef);
N_NIMCALL(void, genrecordfield_493848)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(Ttype214828*, genrecordfieldaux_493438)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, Tloc214804* a);
N_NIMCALL(void, gencheckedrecordfield_494446)(Tcproc469022* p, Tnode214790* e, Tloc214804* d);
N_NIMCALL(void, genblock_485884)(Tcproc469022* p, Tnode214790* t, Tloc214804* d);
N_NIMCALL(NI, startblock_483620)(Tcproc469022* p, NimStringDesc* start, Ropeobj169006** args, NI argsLen0);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, endblock_483702)(Tcproc469022* p);
N_NIMCALL(void, endblock_483677)(Tcproc469022* p, Ropeobj169006* blockend);
N_NIMCALL(Ropeobj169006*, blockbody_483667)(Tblock469020* b);
N_NIMCALL(void, genstmtlistexpr_498602)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, genif_484793)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, downconv_498781)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(NI, inheritancediff_246442)(Ttype214828* a, Ttype214828* b);
N_NIMCALL(void, upconv_498631)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, genrangechck_496990)(Tcproc469022* p, Tnode214790* n, Tloc214804* d, NimStringDesc* magic);
N_NIMCALL(void, convstrtocstr_497042)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, convcstrtostr_497054)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, genclosure_498236)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
static N_INLINE(NIM_BOOL, isconstclosure_498210)(Tnode214790* n);
static N_INLINE(NIM_BOOL, isroutine_219396)(Tsym214822* s);
N_NIMCALL(void, genwhilestmt_485793)(Tcproc469022* p, Tnode214790* t);
static N_INLINE(Ropeobj169006*, assignlabel_483662)(Tblock469020* b);
N_NIMCALL(NIM_BOOL, stmtscontainpragma_468085)(Tnode214790* n, NU16 w);
N_NIMCALL(void, gencomputedgoto_485553)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(void, genvarstmt_484654)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(void, gensinglevar_484076)(Tcproc469022* p, Tnode214790* a);
N_NIMCALL(void, gengotovar_484058)(Tcproc469022* p, Tnode214790* value);
N_NIMCALL(void, assignglobalvar_478365)(Tcproc469022* p, Tsym214822* s);
N_NIMCALL(void, varindynamiclib_478358)(Tcgen469026* m, Tsym214822* sym);
N_NIMCALL(void, loaddynamiclib_499637)(Tcgen469026* m, Tlib214808* lib);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, libcandidates_161603)(NimStringDesc* s, TY125202** dest);
N_NIMCALL(void, rawmessage_185612)(NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, registergcroot_483404)(Tcproc469022* p, Tsym214822* v);
N_NIMCALL(Ropeobj169006*, gentraverseprocforglobal_477432)(Tcgen469026* m, Tsym214822* s);
static N_INLINE(NIM_BOOL, isassignedimmediately_483423)(Tnode214790* n);
N_NIMCALL(NIM_BOOL, containshiddenpointer_240109)(Ttype214828* typ);
static N_INLINE(void, loadinto_483570)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* a);
N_NIMCALL(void, genasgncall_483201)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* d);
N_NIMCALL(void, genclosurevar_484632)(Tcproc469022* p, Tnode214790* a);
N_NIMCALL(void, genvartuple_483436)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(Tnode214790*, lowertupleunpacking_376039)(Tnode214790* n, Tsym214822* owner);
N_NIMCALL(void, genconststmt_484709)(Tcproc469022* p, Tnode214790* t);
N_NIMCALL(NIM_BOOL, containscompiletimeonly_248921)(Ttype214828* t);
static N_INLINE(NIM_BOOL, emitlazily_472248)(Tsym214822* s);
N_NIMCALL(void, gencase_487617)(Tcproc469022* p, Tnode214790* t, Tloc214804* d);
N_NIMCALL(void, genstringcase_487216)(Tcproc469022* p, Tnode214790* t, Tloc214804* d);
N_NIMCALL(NI, nextpoweroftwo_155627)(NI x);
N_NIMCALL(void, gencasestringbranch_486881)(Tcproc469022* p, Tnode214790* b, Tloc214804 e, Ropeobj169006* labl, Ropeobj169006** branches, NI branchesLen0);
N_NIMCALL(NI64, hashstring_468102)(NimStringDesc* s);
N_NIMCALL(Ropeobj169006*, gencasesecondpass_486755)(Tcproc469022* p, Tnode214790* t, Tloc214804* d, NI labid, NI until);
N_NIMCALL(void, exprblock_483745)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(void, gencasegeneric_486868)(Tcproc469022* p, Tnode214790* t, Tloc214804* d, NimStringDesc* rangeformat, NimStringDesc* eqformat);
N_NIMCALL(Ropeobj169006*, genifforcaseuntil_486802)(Tcproc469022* p, Tnode214790* t, Tloc214804* d, NimStringDesc* rangeformat, NimStringDesc* eqformat, NI until, Tloc214804 a);
N_NIMCALL(void, gencasegenericbranch_486700)(Tcproc469022* p, Tnode214790* b, Tloc214804 e, NimStringDesc* rangeformat, NimStringDesc* eqformat, Ropeobj169006* labl);
N_NIMCALL(void, gengotoforcase_485482)(Tcproc469022* p, Tnode214790* casestmt);
N_NIMCALL(void, genordinalcase_487524)(Tcproc469022* p, Tnode214790* n, Tloc214804* d);
N_NIMCALL(NI, ifswitchsplitpoint_487415)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(NIM_BOOL, branchhastoobigrange_487375)(Tnode214790* b);
N_NIMCALL(void, genreturnstmt_485436)(Tcproc469022* p, Tnode214790* t);
N_NIMCALL(void, blockleaveactions_485242)(Tcproc469022* p, NI howmanytrys, NI howmanyexcepts);
static N_INLINE(Tnode214790*, pop_485305)(Tnodeseq214784** s);
N_NIMCALL(void, genbreakstmt_486244)(Tcproc469022* p, Tnode214790* t);
N_NIMCALL(void, genasgn_489241)(Tcproc469022* p, Tnode214790* e, NIM_BOOL fastasgn);
N_NIMCALL(NIM_BOOL, fielddiscriminantcheckneeded_489080)(Tcproc469022* p, Tnode214790* asgn);
N_NIMCALL(void, asgnfielddiscriminant_489209)(Tcproc469022* p, Tnode214790* e);
N_NIMCALL(void, gendiscriminantcheck_489144)(Tcproc469022* p, Tloc214804 a, Tloc214804 tmp, Ttype214828* objtype, Tsym214822* field);
N_NIMCALL(Ropeobj169006*, discriminatortabledecl_475493)(Tcgen469026* m, Ttype214828* objtype, Tsym214822* d);
N_NIMCALL(void, genasmstmt_488628)(Tcproc469022* p, Tnode214790* t);
N_NIMCALL(Ropeobj169006*, genasmoremitstmt_488508)(Tcproc469022* p, Tnode214790* t, NIM_BOOL isasmstmt);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(void, gentrycpp_487684)(Tcproc469022* p, Tnode214790* t, Tloc214804* d);
static N_INLINE(void, gensimpleblock_483737)(Tcproc469022* p, Tnode214790* stmts);
N_NIMCALL(void, gentry_488114)(Tcproc469022* p, Tnode214790* t, Tloc214804* d);
N_NIMCALL(NIM_BOOL, isdefined_190010)(NimStringDesc* symbol);
N_NIMCALL(void, line_472695)(Tcproc469022* p, NU8 s, NimStringDesc* r);
static N_INLINE(Ropeobj169006*, pop_169530)(TY182350** s);
N_NIMCALL(void, genraisestmt_486628)(Tcproc469022* p, Tnode214790* t);
N_NIMCALL(NimStringDesc*, getraisefrmt_486624)(Tcproc469022* p);
N_NIMCALL(void, gentypesection_477565)(Tcgen469026* m, Tnode214790* n);
N_NIMCALL(void, genpragma_489039)(Tcproc469022* p_489041, Tnode214790* n);
N_NIMCALL(NU16, whichpragma_239525)(Tnode214790* n);
N_NIMCALL(void, genemit_488839)(Tcproc469022* p, Tnode214790* t);
N_NIMCALL(NU8, determinesection_488819)(Tnode214790* n);
N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s, NimStringDesc* prefix);
N_NIMCALL(void, genbreakpoint_488862)(Tcproc469022* p, Tnode214790* t);
N_NIMCALL(void, genwatchpoint_489016)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(Tsym214822*, skipgenericowner_219352)(Tsym214822* s);
N_NIMCALL(Tnode214790*, getbody_254828)(Tsym214822* s);
N_NIMCALL(void, genparforstmt_486008)(Tcproc469022* p, Tnode214790* t);
N_NIMCALL(void, genstate_483759)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(void, gengotostate_483786)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(void, genbreakstate_484029)(Tcproc469022* p, Tnode214790* n);
N_NIMCALL(Ropeobj169006*, initgcframe_478001)(Tcproc469022* p);
N_NIMCALL(Ropeobj169006*, initframe_500358)(Tcproc469022* p, Ropeobj169006* procname, Ropeobj169006* filename);
N_NIMCALL(void, appcg_472648)(Tcproc469022* p, NU8 s, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0);
N_NIMCALL(Ropeobj169006*, deinitgcframe_478007)(Tcproc469022* p);
N_NIMCALL(Ropeobj169006*, deinitframe_500368)(Tcproc469022* p);
N_NIMCALL(void, symindynamiclib_500129)(Tcgen469026* m, Tsym214822* sym);
N_NIMCALL(NIM_BOOL, isgetprocaddr_499599)(Tlib214808* lib);
N_NIMCALL(void, symindynamiclibpartial_500271)(Tcgen469026* m, Tsym214822* sym);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, completecfilepath_194854)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(void, readmergeinfo_470613)(NimStringDesc* cfilename, Tcgen469026* m);
N_NIMCALL(NimStringDesc*, getcfile_503594)(Tcgen469026* m);
N_NIMCALL(NimStringDesc*, withpackagename_161074)(NimStringDesc* path);
static N_INLINE(NIM_BOOL, skipcodegen_261065)(Tnode214790* n);
N_NIMCALL(void, registermoduletomain_502643)(Tsym214822* m);
N_NIMCALL(Ropeobj169006*, getinitname_502635)(Tsym214822* m);
N_NIMCALL(Ropeobj169006*, getsomeinitname_502304)(Tsym214822* m, NimStringDesc* suffix);
N_NIMCALL(Ropeobj169006*, getdatinitname_502639)(Tsym214822* m);
N_NIMCALL(Tnode214790*, generatemethoddispatchers_375151)(void);
N_NIMCALL(void, genmainproc_502129)(Tcgen469026* m);
N_NIMCALL(Ropeobj169006*, genfilenames_502088)(Tcgen469026* m);
N_NIMCALL(void, finishmodule_503820)(Tcgen469026* m);
N_NIMCALL(void, updatecachedmodule_504213)(Tcgen469026* m);
N_NIMCALL(NIM_BOOL, mergerequired_470832)(Tcgen469026* m);
N_NIMCALL(void, mergefiles_471241)(NimStringDesc* cfilename, Tcgen469026* m);
N_NIMCALL(void, geninitcode_502686)(Tcgen469026* m);
N_NIMCALL(Ropeobj169006*, gensectionstart_470082)(NU8 ps);
N_NIMCALL(Ropeobj169006*, gensectionend_470117)(NU8 ps);
N_NIMCALL(Ropeobj169006*, gensectionstart_470016)(NU8 fs);
N_NIMCALL(Ropeobj169006*, gensectionend_470051)(NU8 fs);
N_NIMCALL(void, finishtypedescriptions_475261)(Tcgen469026* m);
N_NIMCALL(Ropeobj169006*, genmodule_502851)(Tcgen469026* m, NimStringDesc* cfile);
N_NIMCALL(Ropeobj169006*, getfileheader_502083)(NimStringDesc* cfile);
N_NIMCALL(Ropeobj169006*, getcopyright_502065)(NimStringDesc* cfile);
N_NIMCALL(NimStringDesc*, getcompilecfilecmd_195284)(NimStringDesc* cfilename, NIM_BOOL isexternal);
static N_INLINE(void, addinttypes_502059)(Ropeobj169006** result);
N_NIMCALL(Ropeobj169006*, genmergeinfo_470204)(Tcgen469026* m);
N_NIMCALL(void, generateheaders_500304)(Tcgen469026* m);
N_NIMCALL(NimStringDesc*, nsuReplaceChar)(NimStringDesc* s, NIM_CHAR sub, NIM_CHAR by);
N_NIMCALL(void, generatethreadlocalstorage_478273)(Tcgen469026* m);
N_NIMCALL(void, writerope_169836)(Ropeobj169006* head, NimStringDesc* filename, NIM_BOOL usewarning);
N_NIMCALL(void, addfiletocompile_194863)(NimStringDesc* filename);
N_NIMCALL(void, addfiletolink_194872)(NimStringDesc* filename);
N_NIMCALL(void, writemodule_504037)(Tcgen469026* m, NIM_BOOL pending);
N_NIMCALL(void, generatethreadvarssize_478317)(Tcgen469026* m);
N_NIMCALL(NIM_BOOL, shouldrecompile_504021)(Ropeobj169006* code, NimStringDesc* cfile);
N_NIMCALL(NimStringDesc*, toobjfile_194859)(NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, writeropeifnotequal_170491)(Ropeobj169006* r, NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, nosfileNewer)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, writemapping_195769)(Ropeobj169006* gsymbolmapping);
N_NIMCALL(void, writeheader_503542)(Tcgen469026* m);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY118706* Result);
N_NIMCALL(void, resetmodule_503153)(Tcgen469026* m);
N_NIMCALL(void, nullify_503203)(Ropeobj169006** arr);
N_NIMCALL(void, nullify_503228)(Ropeobj169006** arr);
STRING_LITERAL(TMP1178, "\011", 1);
STRING_LITERAL(TMP3753, "compiler/cgen.nim", 17);
NIM_CONST TY88687 TMP3752 = {((NimStringDesc*) &TMP3753),
((NI) 1161)}
;
STRING_LITERAL(TMP3754, "$", 1);
STRING_LITERAL(TMP3755, "ropes: invalid format string $", 30);
STRING_LITERAL(TMP3763, "_", 1);
STRING_LITERAL(TMP3764, "extern $1 $2;$n", 15);
STRING_LITERAL(TMP3766, "getTypeDescAux: t == nil", 24);
STRING_LITERAL(TMP3767, "void", 4);
STRING_LITERAL(TMP3768, "TY", 2);
STRING_LITERAL(TMP3769, "getTypeName: ", 13);
STRING_LITERAL(TMP3770, "void*", 5);
STRING_LITERAL(TMP3771, "NI32", 4);
STRING_LITERAL(TMP3772, "NU8", 3);
STRING_LITERAL(TMP3773, "NU16", 4);
STRING_LITERAL(TMP3774, "NI64", 4);
STRING_LITERAL(TMP3775, "getSimpleTypeDesc: ", 19);
STRING_LITERAL(TMP3776, "NimStringDesc", 13);
STRING_LITERAL(TMP3777, "NimStringDesc*", 14);
STRING_LITERAL(TMP3778, "NCSTRING", 8);
STRING_LITERAL(TMP3779, "NIM_BOOL", 8);
STRING_LITERAL(TMP3780, "NIM_CHAR", 8);
STRING_LITERAL(TMP3781, "0", 1);
STRING_LITERAL(TMP3782, "NI", 2);
STRING_LITERAL(TMP3783, "NI8", 3);
STRING_LITERAL(TMP3784, "NI16", 4);
STRING_LITERAL(TMP3785, "NF", 2);
STRING_LITERAL(TMP3786, "NF32", 4);
STRING_LITERAL(TMP3787, "NF64", 4);
STRING_LITERAL(TMP3788, "NF128", 5);
STRING_LITERAL(TMP3789, "NU", 2);
STRING_LITERAL(TMP3790, "NU32", 4);
STRING_LITERAL(TMP3791, "NU64", 4);
NIM_CONST TY473543 Numericaltypetostr_473541 = {((NimStringDesc*) &TMP3782),
((NimStringDesc*) &TMP3783),
((NimStringDesc*) &TMP3784),
((NimStringDesc*) &TMP3771),
((NimStringDesc*) &TMP3774),
((NimStringDesc*) &TMP3785),
((NimStringDesc*) &TMP3786),
((NimStringDesc*) &TMP3787),
((NimStringDesc*) &TMP3788),
((NimStringDesc*) &TMP3789),
((NimStringDesc*) &TMP3772),
((NimStringDesc*) &TMP3773),
((NimStringDesc*) &TMP3790),
((NimStringDesc*) &TMP3791)}
;
STRING_LITERAL(TMP3792, "cannot generate C type for: ", 28);
STRING_LITERAL(TMP3793, "&", 1);
STRING_LITERAL(TMP3794, "*", 1);
STRING_LITERAL(TMP3795, "$1 $2;$n", 8);
STRING_LITERAL(TMP3796, "typedef $1 $2 $2;$n", 19);
STRING_LITERAL(TMP3797, "union", 5);
STRING_LITERAL(TMP3798, "struct", 6);
STRING_LITERAL(TMP3799, "getTypeForward(", 15);
STRING_LITERAL(TMP3800, "mapType", 7);
STRING_LITERAL(TMP3801, "genProcParams", 13);
STRING_LITERAL(TMP3802, ", ", 2);
STRING_LITERAL(TMP3803, " ", 1);
STRING_LITERAL(TMP3804, ", NI $1Len$2", 12);
STRING_LITERAL(TMP3805, " Result", 7);
STRING_LITERAL(TMP3806, "void* ClEnv", 11);
STRING_LITERAL(TMP3807, "...", 3);
STRING_LITERAL(TMP3808, "void)", 5);
STRING_LITERAL(TMP3809, ")", 1);
STRING_LITERAL(TMP3810, "(", 1);
STRING_LITERAL(TMP3811, "typedef $1_PTR($2, $3) $4;$n", 28);
STRING_LITERAL(TMP3812, "N_NIMCALL", 9);
STRING_LITERAL(TMP3813, "N_STDCALL", 9);
STRING_LITERAL(TMP3814, "N_CDECL", 7);
STRING_LITERAL(TMP3815, "N_SAFECALL", 10);
STRING_LITERAL(TMP3816, "N_SYSCALL", 9);
STRING_LITERAL(TMP3817, "N_INLINE", 8);
STRING_LITERAL(TMP3818, "N_NOINLINE", 10);
STRING_LITERAL(TMP3819, "N_FASTCALL", 10);
STRING_LITERAL(TMP3820, "N_CLOSURE", 9);
STRING_LITERAL(TMP3821, "N_NOCONV", 8);
NIM_CONST TY214016 Callingconvtostr_473355 = {((NimStringDesc*) &TMP3812),
((NimStringDesc*) &TMP3813),
((NimStringDesc*) &TMP3814),
((NimStringDesc*) &TMP3815),
((NimStringDesc*) &TMP3816),
((NimStringDesc*) &TMP3817),
((NimStringDesc*) &TMP3818),
((NimStringDesc*) &TMP3819),
((NimStringDesc*) &TMP3820),
((NimStringDesc*) &TMP3821)}
;
STRING_LITERAL(TMP3822, "typedef struct {$nN_NIMCALL_PTR($2, ClPrc) $3;$nvoid* ClEnv;$n}"
" $1;$n", 69);
STRING_LITERAL(TMP3823, "struct $2 : #TGenericSeq {$n", 28);
STRING_LITERAL(TMP3824, "struct $2 {$n  #TGenericSeq Sup;$n", 34);
STRING_LITERAL(TMP3825, "  $1 data[SEQ_DECL_SIZE];$n};$n", 31);
STRING_LITERAL(TMP3826, "TGenericSeq", 11);
STRING_LITERAL(TMP3827, "typedef $1 $2[$3];$n", 20);
STRING_LITERAL(TMP3828, "invalid apostrophe type parameter index", 39);
STRING_LITERAL(TMP3829, "<", 1);
STRING_LITERAL(TMP3830, "> ", 2);
extern NIM_CONST TY194427 Cc_194413;
STRING_LITERAL(TMP3831, " {$n", 4);
STRING_LITERAL(TMP3832, " {$n#TNimType* m_type;$n", 24);
STRING_LITERAL(TMP3833, " : public $1 {$n", 16);
STRING_LITERAL(TMP3834, " {$n  $1 Sup;$n", 15);
STRING_LITERAL(TMP3835, "genRecordFieldsAux", 18);
STRING_LITERAL(TMP3836, "$1.$2", 5);
STRING_LITERAL(TMP3837, "S", 1);
STRING_LITERAL(TMP3838, "struct {", 8);
STRING_LITERAL(TMP3839, "} $1;$n", 7);
STRING_LITERAL(TMP3840, "genRecordFieldsAux(record case branch)", 38);
STRING_LITERAL(TMP3841, "union{$n$1} $2;$n", 17);
STRING_LITERAL(TMP3842, "mangleRecFieldName", 18);
STRING_LITERAL(TMP3843, "$1 $2[SEQ_DECL_SIZE];$n", 23);
STRING_LITERAL(TMP3844, "$1 $2:$3;$n", 11);
STRING_LITERAL(TMP3845, "genRecordFieldsAux()", 20);
STRING_LITERAL(TMP3846, "char dummy;$n", 13);
STRING_LITERAL(TMP3847, "};", 2);
STRING_LITERAL(TMP3848, "$1 $2 {$n", 9);
STRING_LITERAL(TMP3849, "$1 Field$2;$n", 13);
STRING_LITERAL(TMP3850, "char dummy;", 11);
STRING_LITERAL(TMP3851, "typedef NU8 $1[$2];$n", 21);
STRING_LITERAL(TMP3852, "getTypeDescAux(", 15);
STRING_LITERAL(TMP3853, "Dl_$1", 5);
STRING_LITERAL(TMP3854, "$N#line $2 $1$N", 15);
STRING_LITERAL(TMP3856, "N_LIB_IMPORT ", 13);
STRING_LITERAL(TMP3857, "N_LIB_EXPORT ", 13);
STRING_LITERAL(TMP3858, "static ", 7);
STRING_LITERAL(TMP3859, "$1($2, $3)$4", 12);
STRING_LITERAL(TMP3860, "__declspec(noreturn) ", 21);
STRING_LITERAL(TMP3861, "extern \"C\" ", 11);
STRING_LITERAL(TMP3862, " __attribute__((naked))", 23);
STRING_LITERAL(TMP3863, " __attribute__((noreturn))", 26);
STRING_LITERAL(TMP3864, "$1;$n", 5);
STRING_LITERAL(TMP3865, "proc has no result symbol", 25);
STRING_LITERAL(TMP3866, " register", 9);
STRING_LITERAL(TMP3867, " volatile", 9);
STRING_LITERAL(TMP3868, ";", 1);
STRING_LITERAL(TMP3869, "FR.s[$1].address = (void*)$3; FR.s[$1].typ = $4; FR.s[$1].name "
"= $2;$n", 70);
STRING_LITERAL(TMP3870, "NTI$1", 5);
STRING_LITERAL(TMP3871, "(&", 2);
STRING_LITERAL(TMP3872, "TNimType", 8);
STRING_LITERAL(TMP3873, "TNimNode", 8);
STRING_LITERAL(TMP3874, "extern TNimType $1; /* $2 */$n", 30);
STRING_LITERAL(TMP3875, "0", 1);
STRING_LITERAL(TMP3876, "void*", 5);
STRING_LITERAL(TMP3877, "$1.size = sizeof($2);$n$1.kind = $3;$n$1.base = $4;$n", 53);
STRING_LITERAL(TMP3878, "$1.flags = $2;$n", 16);
STRING_LITERAL(TMP3879, "TNimType $1; /* $2 */$n", 23);
STRING_LITERAL(TMP3880, "$1[$2]", 6);
STRING_LITERAL(TMP3881, "static TNimNode* $1[$2];$n", 26);
STRING_LITERAL(TMP3882, "$1[$2] = &$3;$n", 15);
STRING_LITERAL(TMP3883, "$1.kind = 1;$n$1.offset = offsetof($2, Field$3);$n$1.typ = $4;$"
"n$1.name = \"Field$3\";$n", 86);
STRING_LITERAL(TMP3884, "$1.len = $2; $1.kind = 2; $1.sons = &$3[0];$n", 45);
STRING_LITERAL(TMP3885, "$1.len = $2; $1.kind = 2;$n", 27);
STRING_LITERAL(TMP3886, "$1.node = &$2;$n", 16);
STRING_LITERAL(TMP3887, "TMP$1", 5);
STRING_LITERAL(TMP3888, "#nimGCvisit((void*)$1, op);$n", 29);
STRING_LITERAL(TMP3889, "N_NIMCALL(void, $1)(void* p, NI op)", 35);
STRING_LITERAL(TMP3890, "$1 a;$n", 7);
STRING_LITERAL(TMP3891, "a = ($1)p;$n", 12);
STRING_LITERAL(TMP3892, "LOC", 3);
STRING_LITERAL(TMP3893, "$1 = 0;$n", 9);
STRING_LITERAL(TMP3894, "(*$1)", 5);
STRING_LITERAL(TMP3895, "<string.h>", 10);
STRING_LITERAL(TMP3896, "memset((void*)$1, 0, sizeof($2));$n", 35);
STRING_LITERAL(TMP3897, ".Sup", 4);
STRING_LITERAL(TMP3898, "$1.m_type = $2;$n", 17);
STRING_LITERAL(TMP3899, "#objectInit($1, $2);$n", 22);
STRING_LITERAL(TMP3900, "for ($1 = 0; $1 < $2->$3; $1++) {$n", 35);
STRING_LITERAL(TMP3901, "len", 3);
STRING_LITERAL(TMP3902, "Sup.len", 7);
STRING_LITERAL(TMP3903, "for ($1 = 0; $1 < $2; $1++) {$n", 31);
STRING_LITERAL(TMP3904, "}$n", 3);
STRING_LITERAL(TMP3905, "$1.Sup", 6);
STRING_LITERAL(TMP3906, "genTraverseProc", 15);
STRING_LITERAL(TMP3907, "switch ($1.$2) {$n", 18);
STRING_LITERAL(TMP3908, "case $1 ... $2:$n", 17);
STRING_LITERAL(TMP3909, "genLiteral: ty is nil", 21);
STRING_LITERAL(TMP3910, "(-2147483647 -1)", 16);
STRING_LITERAL(TMP3911, "IL64($1)", 8);
STRING_LITERAL(TMP3912, "(IL64(-9223372036854775807) - IL64(1))", 38);
STRING_LITERAL(TMP3913, "NIM_TRUE", 8);
STRING_LITERAL(TMP3914, "NIM_FALSE", 9);
STRING_LITERAL(TMP3915, "ULL", 3);
STRING_LITERAL(TMP3916, "(($1) $2)", 9);
STRING_LITERAL(TMP3917, "TMP", 3);
STRING_LITERAL(TMP3918, "static NIM_CONST $1 $2 = {NIM_NIL,NIM_NIL};$n", 45);
STRING_LITERAL(TMP3919, "NIM_NIL", 7);
STRING_LITERAL(TMP3920, "((#NimStringDesc*) NIM_NIL)", 27);
STRING_LITERAL(TMP3921, "((#NimStringDesc*) &$1)", 23);
STRING_LITERAL(TMP3922, "STRING_LITERAL($1, $2, $3);$n", 29);
STRING_LITERAL(TMP3923, "((#NimStringDesc*) &TMP$1)", 26);
STRING_LITERAL(TMP3928, "genLiteral(", 11);
STRING_LITERAL(TMP3929, "case $1:$n", 10);
STRING_LITERAL(TMP3930, "default:$n", 10);
STRING_LITERAL(TMP3931, "break;$n", 8);
STRING_LITERAL(TMP3932, "} $n", 4);
STRING_LITERAL(TMP3933, "genTraverseProc()", 17);
STRING_LITERAL(TMP3934, "$1.Field$2", 10);
STRING_LITERAL(TMP3935, "$1.ClEnv", 8);
STRING_LITERAL(TMP3936, "$1->data[$2]", 12);
STRING_LITERAL(TMP3937, "a", 1);
STRING_LITERAL(TMP3938, "(*a)", 4);
STRING_LITERAL(TMP3939, "$1 {$n$2$3$4}$n", 15);
STRING_LITERAL(TMP3940, "$1.marker = $2;$n", 17);
STRING_LITERAL(TMP3941, "$1.len = $2; $1.kind = 0;$n$3.node = &$1;$n", 43);
STRING_LITERAL(TMP3942, "$1.offset = $2;$n", 17);
STRING_LITERAL(TMP3943, "NI $1;$n", 8);
STRING_LITERAL(TMP3944, "static char* NIM_CONST $1[$2] = {$n$3};$n", 41);
STRING_LITERAL(TMP3945, "for ($1 = 0; $1 < $2; $1++) {$n$3[$1+$4].kind = 1;$n$3[$1+$4].o"
"ffset = $1;$n$3[$1+$4].name = $5[$1];$n$6[$1] = &$3[$1+$4];$n}$n", 127);
STRING_LITERAL(TMP3946, "$1.len = $2; $1.kind = 2; $1.sons = &$3[0];$n$4.node = &$1;$n", 61);
STRING_LITERAL(TMP3947, "$1.flags = 1<<2;$n", 18);
STRING_LITERAL(TMP3948, "anonymous obj with discriminator", 32);
STRING_LITERAL(TMP3949, "NimDT_$1_$2", 11);
STRING_LITERAL(TMP3950, "$1.kind = 3;$n$1.offset = offsetof($2, $3);$n$1.typ = $4;$n$1.n"
"ame = $5;$n$1.sons = &$6[0];$n$1.len = $7;$n", 107);
STRING_LITERAL(TMP3951, "TNimNode* $1[$2];$n", 19);
STRING_LITERAL(TMP3952, "genObjectFields; nkOfBranch broken", 34);
STRING_LITERAL(TMP3953, "genObjectFields(nkRecCase)", 26);
STRING_LITERAL(TMP3954, "$1.kind = 1;$n$1.offset = offsetof($2, $3);$n$1.typ = $4;$n$1.n"
"ame = $5;$n", 74);
STRING_LITERAL(TMP3955, "genObjectFields", 15);
STRING_LITERAL(TMP3956, "genTypeInfo(", 12);
STRING_LITERAL(TMP3957, "$1.deepcopy =(void* (N_RAW_NIMCALL*)(void*))$2;$n", 49);
STRING_LITERAL(TMP3958, "\011return $1;$n", 13);
STRING_LITERAL(TMP3959, "Result", 6);
STRING_LITERAL(TMP3960, "closure generation failed", 25);
STRING_LITERAL(TMP3961, "$1 = ($2) ClEnv;$n", 18);
STRING_LITERAL(TMP3962, "$1 = $2;$n", 10);
STRING_LITERAL(TMP3963, "#asgnRef((void**) $1, $2);$n", 28);
STRING_LITERAL(TMP3964, "#asgnRefNoCycle((void**) $1, $2);$n", 35);
STRING_LITERAL(TMP3965, "#unsureAsgnRef((void**) $1, $2);$n", 34);
STRING_LITERAL(TMP3966, "#genericSeqAssign($1, $2, $3);$n", 32);
STRING_LITERAL(TMP3967, "$1 = #copyString($2);$n", 23);
STRING_LITERAL(TMP3968, "$3 = $1; $1 = #copyStringRC1($2);$n", 35);
STRING_LITERAL(TMP3969, "if ($1) #nimGCunrefNoCycle($1);$n", 33);
STRING_LITERAL(TMP3970, "#unsureAsgnRef((void**) $1, #copyString($2));$n", 47);
STRING_LITERAL(TMP3971, ".", 1);
STRING_LITERAL(TMP3972, "ClEnv", 5);
STRING_LITERAL(TMP3973, "$1.ClPrc = $2.ClPrc;$n", 22);
STRING_LITERAL(TMP3974, "Field$1", 7);
STRING_LITERAL(TMP3975, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($3));$n", 53);
STRING_LITERAL(TMP3976, "#genericShallowAssign((void*)$1, (void*)$2, $3);$n", 50);
STRING_LITERAL(TMP3977, "#genericAssign((void*)$1, (void*)$2, $3);$n", 43);
STRING_LITERAL(TMP3979, "compiler/ccgexprs.nim", 21);
NIM_CONST TY88687 TMP3978 = {((NimStringDesc*) &TMP3979),
((NI) 338)}
;
STRING_LITERAL(TMP3980, "#genericAssignOpenArray((void*)$1, (void*)$2, $1Len0, $3);$n", 60);
STRING_LITERAL(TMP3981, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($1[0])*$1Len0);$n", 63);
STRING_LITERAL(TMP3982, "memcpy((void*)$1, (NIM_CONST void*)$2, $3);$n", 45);
STRING_LITERAL(TMP3983, "genAssignment: ", 15);
STRING_LITERAL(TMP3984, "request to generate code for .compileTime proc: ", 48);
STRING_LITERAL(TMP3985, "expr: proc not init ", 20);
STRING_LITERAL(TMP3986, "extern ", 7);
STRING_LITERAL(TMP3987, "NIM_THREADVAR ", 14);
STRING_LITERAL(TMP3988, " $1;$n", 6);
STRING_LITERAL(TMP3989, "NIM_CONST $1 $2 = $3;$n", 23);
STRING_LITERAL(TMP3990, "{$n", 3);
STRING_LITERAL(TMP3991, "0x$1,$n", 7);
STRING_LITERAL(TMP3992, "0x$1, ", 6);
STRING_LITERAL(TMP3993, "0x$1}$n", 7);
STRING_LITERAL(TMP3994, "{{$1, $1}", 9);
STRING_LITERAL(TMP3995, ", {", 3);
STRING_LITERAL(TMP3996, ",$n", 3);
STRING_LITERAL(TMP3997, "}", 1);
STRING_LITERAL(TMP3998, "CNSTSEQ", 7);
STRING_LITERAL(TMP3999, "NIM_CONST struct {$n  #TGenericSeq Sup;$n  $1 data[$2];$n} $3 ="
" $4;$n", 69);
STRING_LITERAL(TMP4000, "(($1)&$2)", 9);
STRING_LITERAL(TMP4001, "{", 1);
STRING_LITERAL(TMP4002, "$1,$n", 5);
STRING_LITERAL(TMP4003, "extern NIM_CONST $1 $2;$n", 25);
STRING_LITERAL(TMP4004, "expr: var not init ", 19);
STRING_LITERAL(TMP4005, "\011NimThreadVars* NimTV;$n", 24);
STRING_LITERAL(TMP4006, "\011NimTV = (NimThreadVars*) #GetThreadLocalVars();$n", 50);
STRING_LITERAL(TMP4007, "NimTV->", 7);
STRING_LITERAL(TMP4008, "expr: temp not init ", 20);
STRING_LITERAL(TMP4009, "expr: param not init ", 21);
STRING_LITERAL(TMP4010, "expr(", 5);
STRING_LITERAL(TMP4011, "); unknown symbol", 17);
STRING_LITERAL(TMP4012, "//", 2);
STRING_LITERAL(TMP4013, "#endb($1, $2);$n", 16);
STRING_LITERAL(TMP4014, "nimln($1, $2);$n", 16);
STRING_LITERAL(TMP4016, "LA", 2);
STRING_LITERAL(TMP4017, "if ($1) goto $2;$n", 18);
STRING_LITERAL(TMP4018, "if (!($1)) goto $2;$n", 21);
STRING_LITERAL(TMP4019, "$1: ;$n", 7);
STRING_LITERAL(TMP4020, "!($1)", 5);
STRING_LITERAL(TMP4021, "$1", 2);
STRING_LITERAL(TMP4022, "($3)((NU$2) ~($1))", 18);
STRING_LITERAL(TMP4023, "-($1)", 5);
STRING_LITERAL(TMP4024, "($1 > 0? ($1) : -($1))", 22);
STRING_LITERAL(TMP4025, "(($3)(NU)(NU8)($1))", 19);
STRING_LITERAL(TMP4026, "(($3)(NU64)(NU8)($1))", 21);
STRING_LITERAL(TMP4027, "(($3)(NU)(NU16)($1))", 20);
STRING_LITERAL(TMP4028, "(($3)(NU64)(NU16)($1))", 22);
STRING_LITERAL(TMP4029, "(($3)(NU64)(NU32)($1))", 22);
STRING_LITERAL(TMP4030, "(($3)(NU64)(NU)($1))", 20);
STRING_LITERAL(TMP4031, "(($3)(NU8)(NU)($1))", 19);
STRING_LITERAL(TMP4032, "(($3)(NU16)(NU)($1))", 20);
STRING_LITERAL(TMP4033, "(($3)(NU32)(NU64)($1))", 22);
STRING_LITERAL(TMP4034, "((double) ($1))", 15);
STRING_LITERAL(TMP4035, "float64ToInt32($1)", 18);
STRING_LITERAL(TMP4036, "float64ToInt64($1)", 18);
NIM_CONST TY493055 unarithtab_493053 = {((NimStringDesc*) &TMP4020),
((NimStringDesc*) &TMP4021),
((NimStringDesc*) &TMP4022),
((NimStringDesc*) &TMP4021),
((NimStringDesc*) &TMP4023),
((NimStringDesc*) &TMP4024),
((NimStringDesc*) &TMP4025),
((NimStringDesc*) &TMP4026),
((NimStringDesc*) &TMP4027),
((NimStringDesc*) &TMP4028),
((NimStringDesc*) &TMP4029),
((NimStringDesc*) &TMP4030),
((NimStringDesc*) &TMP4031),
((NimStringDesc*) &TMP4032),
((NimStringDesc*) &TMP4033),
((NimStringDesc*) &TMP4034),
((NimStringDesc*) &TMP4034),
((NimStringDesc*) &TMP4035),
((NimStringDesc*) &TMP4036)}
;
STRING_LITERAL(TMP4037, "if ($1 == $2) #raiseOverflow();$n", 33);
STRING_LITERAL(TMP4038, "((NI$2)-($1))", 13);
NIM_CONST TY492042 opr_492040 = {((NimStringDesc*) &TMP4038),
((NimStringDesc*) &TMP4023),
((NimStringDesc*) &TMP4024)}
;
STRING_LITERAL(TMP4039, "(($4)($2) $1 ($4)($3))", 22);
STRING_LITERAL(TMP4040, "+", 1);
STRING_LITERAL(TMP4041, "-", 1);
STRING_LITERAL(TMP4042, "/", 1);
NIM_CONST TY497164 opr_497162 = {((NimStringDesc*) &TMP4040),
((NimStringDesc*) &TMP4041),
((NimStringDesc*) &TMP3794),
((NimStringDesc*) &TMP4042)}
;
STRING_LITERAL(TMP4043, "#nanCheck($1);$n", 16);
STRING_LITERAL(TMP4044, "#infCheck($1);$n", 16);
STRING_LITERAL(TMP4045, "(($4)($1) + ($4)($2))", 21);
STRING_LITERAL(TMP4046, "(($4)($1) - ($4)($2))", 21);
STRING_LITERAL(TMP4047, "(($4)($1) * ($4)($2))", 21);
STRING_LITERAL(TMP4048, "(($4)($1) / ($4)($2))", 21);
STRING_LITERAL(TMP4049, "($4)((NU$3)($1) >> (NU$3)($2))", 30);
STRING_LITERAL(TMP4050, "($4)((NU$3)($1) << (NU$3)($2))", 30);
STRING_LITERAL(TMP4051, "($4)($1 & $2)", 13);
STRING_LITERAL(TMP4052, "($4)($1 | $2)", 13);
STRING_LITERAL(TMP4053, "($4)($1 ^ $2)", 13);
STRING_LITERAL(TMP4054, "(($1 <= $2) ? $1 : $2)", 22);
STRING_LITERAL(TMP4055, "(($1 >= $2) ? $1 : $2)", 22);
STRING_LITERAL(TMP4056, "($4)((NU$3)($1) + (NU$3)($2))", 29);
STRING_LITERAL(TMP4057, "($4)((NU$3)($1) - (NU$3)($2))", 29);
STRING_LITERAL(TMP4058, "($4)((NU$3)($1) * (NU$3)($2))", 29);
STRING_LITERAL(TMP4059, "($4)((NU$3)($1) / (NU$3)($2))", 29);
STRING_LITERAL(TMP4060, "($4)((NU$3)($1) % (NU$3)($2))", 29);
STRING_LITERAL(TMP4061, "($1 == $2)", 10);
STRING_LITERAL(TMP4062, "($1 <= $2)", 10);
STRING_LITERAL(TMP4063, "($1 < $2)", 9);
STRING_LITERAL(TMP4064, "((NU$3)($1) <= (NU$3)($2))", 26);
STRING_LITERAL(TMP4065, "((NU$3)($1) < (NU$3)($2))", 25);
STRING_LITERAL(TMP4066, "((NU64)($1) <= (NU64)($2))", 26);
STRING_LITERAL(TMP4067, "((NU64)($1) < (NU64)($2))", 25);
STRING_LITERAL(TMP4068, "((NU8)($1) == (NU8)($2))", 24);
STRING_LITERAL(TMP4069, "((NU8)($1) <= (NU8)($2))", 24);
STRING_LITERAL(TMP4070, "((NU8)($1) < (NU8)($2))", 23);
STRING_LITERAL(TMP4071, "($1 != $2)", 10);
NIM_CONST TY492228 binarithtab_492226 = {((NimStringDesc*) &TMP4045),
((NimStringDesc*) &TMP4046),
((NimStringDesc*) &TMP4047),
((NimStringDesc*) &TMP4048),
((NimStringDesc*) &TMP4049),
((NimStringDesc*) &TMP4050),
((NimStringDesc*) &TMP4051),
((NimStringDesc*) &TMP4052),
((NimStringDesc*) &TMP4053),
((NimStringDesc*) &TMP4054),
((NimStringDesc*) &TMP4055),
((NimStringDesc*) &TMP4054),
((NimStringDesc*) &TMP4055),
((NimStringDesc*) &TMP4056),
((NimStringDesc*) &TMP4057),
((NimStringDesc*) &TMP4058),
((NimStringDesc*) &TMP4059),
((NimStringDesc*) &TMP4060),
((NimStringDesc*) &TMP4061),
((NimStringDesc*) &TMP4062),
((NimStringDesc*) &TMP4063),
((NimStringDesc*) &TMP4061),
((NimStringDesc*) &TMP4062),
((NimStringDesc*) &TMP4063),
((NimStringDesc*) &TMP4064),
((NimStringDesc*) &TMP4065),
((NimStringDesc*) &TMP4066),
((NimStringDesc*) &TMP4067),
((NimStringDesc*) &TMP4061),
((NimStringDesc*) &TMP4062),
((NimStringDesc*) &TMP4063),
((NimStringDesc*) &TMP4068),
((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4070),
((NimStringDesc*) &TMP4061),
((NimStringDesc*) &TMP4062),
((NimStringDesc*) &TMP4063),
((NimStringDesc*) &TMP4061),
((NimStringDesc*) &TMP4061),
((NimStringDesc*) &TMP4062),
((NimStringDesc*) &TMP4063),
((NimStringDesc*) &TMP4061),
((NimStringDesc*) &TMP4071)}
;
STRING_LITERAL(TMP4072, "($1.ClPrc == $2.ClPrc && $1.ClEnv == $2.ClEnv)", 46);
STRING_LITERAL(TMP4073, "($#)($# + $#)", 13);
STRING_LITERAL(TMP4074, "($#)($# - $#)", 13);
STRING_LITERAL(TMP4075, "($#)($# * $#)", 13);
STRING_LITERAL(TMP4076, "($#)($# / $#)", 13);
STRING_LITERAL(TMP4077, "($#)($# % $#)", 13);
NIM_CONST TY491681 opr_491679 = {((NimStringDesc*) &TMP4073),
((NimStringDesc*) &TMP4074),
((NimStringDesc*) &TMP4075),
((NimStringDesc*) &TMP4076),
((NimStringDesc*) &TMP4077),
((NimStringDesc*) &TMP4073),
((NimStringDesc*) &TMP4074)}
;
STRING_LITERAL(TMP4078, "((NU8)($1))", 11);
STRING_LITERAL(TMP4079, "if ($1 < $2 || $1 > $3) #raiseOverflow();$n", 43);
STRING_LITERAL(TMP4080, "$# = #addInt64($#, $#);$n", 25);
STRING_LITERAL(TMP4081, "$# = #subInt64($#, $#);$n", 25);
STRING_LITERAL(TMP4082, "$# = #mulInt64($#, $#);$n", 25);
STRING_LITERAL(TMP4083, "$# = #divInt64($#, $#);$n", 25);
STRING_LITERAL(TMP4084, "$# = #modInt64($#, $#);$n", 25);
NIM_CONST TY491681 prc64_491674 = {((NimStringDesc*) &TMP4080),
((NimStringDesc*) &TMP4081),
((NimStringDesc*) &TMP4082),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4080),
((NimStringDesc*) &TMP4081)}
;
STRING_LITERAL(TMP4085, "$# = #addInt($#, $#);$n", 23);
STRING_LITERAL(TMP4086, "$# = #subInt($#, $#);$n", 23);
STRING_LITERAL(TMP4087, "$# = #mulInt($#, $#);$n", 23);
STRING_LITERAL(TMP4088, "$# = #divInt($#, $#);$n", 23);
STRING_LITERAL(TMP4089, "$# = #modInt($#, $#);$n", 23);
NIM_CONST TY491681 prc_491669 = {((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4086),
((NimStringDesc*) &TMP4087),
((NimStringDesc*) &TMP4088),
((NimStringDesc*) &TMP4089),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4086)}
;
STRING_LITERAL(TMP4090, "($#)($#)", 8);
STRING_LITERAL(TMP4091, "#reprInt((NI64)$1)", 18);
STRING_LITERAL(TMP4092, "#reprFloat($1)", 14);
STRING_LITERAL(TMP4093, "#reprBool($1)", 13);
STRING_LITERAL(TMP4094, "#reprChar($1)", 13);
STRING_LITERAL(TMP4095, "#reprEnum($1, $2)", 17);
STRING_LITERAL(TMP4096, "#reprStr($1)", 12);
STRING_LITERAL(TMP4097, "#reprSet($1, $2)", 16);
STRING_LITERAL(TMP4098, "$1, $1Len0", 10);
STRING_LITERAL(TMP4099, "$1->data, $1->$2", 16);
STRING_LITERAL(TMP4100, "$1, $2", 6);
STRING_LITERAL(TMP4101, "genRepr()", 9);
STRING_LITERAL(TMP4102, "#reprOpenArray($1, $2)", 22);
STRING_LITERAL(TMP4103, "#reprAny($1, $2)", 16);
STRING_LITERAL(TMP4104, "\'repr\' doesn\'t support \'void\' type", 34);
STRING_LITERAL(TMP4105, "($1 - 1)", 8);
STRING_LITERAL(TMP4106, "#subInt($1, 1)", 14);
STRING_LITERAL(TMP4107, "binaryStmt", 10);
STRING_LITERAL(TMP4108, "$1 += $2;$n", 11);
STRING_LITERAL(TMP4109, "$1 -= $2;$n", 11);
NIM_CONST TY497454 opr_497452 = {((NimStringDesc*) &TMP4108),
((NimStringDesc*) &TMP4109)}
;
NIM_CONST TY497454 fun64_497457 = {((NimStringDesc*) &TMP4080),
((NimStringDesc*) &TMP4081)}
;
NIM_CONST TY497454 fun_497462 = {((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4086)}
;
STRING_LITERAL(TMP4110, "#appendChar($1, $2);$n", 22);
STRING_LITERAL(TMP4111, "$1->$2 + ", 9);
STRING_LITERAL(TMP4112, "#appendString($1, $2);$n", 24);
STRING_LITERAL(TMP4113, "$1 = #rawNewString($2$3);$n", 27);
STRING_LITERAL(TMP4114, "$1 = #addChar($1, $2);$n", 24);
STRING_LITERAL(TMP4115, "$1 = #resizeString($1, $2$3);$n", 31);
STRING_LITERAL(TMP4116, "$1 = ($2) #incrSeqV2(&($1)->Sup, sizeof($3));$n", 47);
STRING_LITERAL(TMP4117, "$1 = ($2) #incrSeqV2($1, sizeof($3));$n", 39);
STRING_LITERAL(TMP4118, "$1->data[$1->$2]", 16);
STRING_LITERAL(TMP4119, "++$1->$2;$n", 11);
STRING_LITERAL(TMP4120, "(($1) && ($1)->$2 == 0)", 23);
STRING_LITERAL(TMP4121, "#eqStrings($1, $2)", 18);
STRING_LITERAL(TMP4122, "(#cmpStrings($1, $2) <= 0)", 26);
STRING_LITERAL(TMP4123, "(#cmpStrings($1, $2) < 0)", 25);
STRING_LITERAL(TMP4124, "$1.ClPrc == 0", 13);
STRING_LITERAL(TMP4125, "$1 == 0", 7);
STRING_LITERAL(TMP4126, "#nimIntToStr($1)", 16);
STRING_LITERAL(TMP4127, "#nimInt64ToStr($1)", 18);
STRING_LITERAL(TMP4128, "#nimBoolToStr($1)", 17);
STRING_LITERAL(TMP4129, "#nimCharToStr($1)", 17);
STRING_LITERAL(TMP4130, "#nimFloatToStr($1)", 18);
STRING_LITERAL(TMP4131, "#cstrToNimstr($1)", 17);
STRING_LITERAL(TMP4132, "no \'of\' operator available for pure objects", 43);
STRING_LITERAL(TMP4133, "(($1) && ($2))", 14);
STRING_LITERAL(TMP4134, "$1.m_type == $2", 15);
STRING_LITERAL(TMP4135, "Nim_OfCheck_CACHE", 17);
STRING_LITERAL(TMP4136, "static TNimType* $#[2];$n", 25);
STRING_LITERAL(TMP4137, "#isObjWithCache($#.m_type, $#, $#)", 34);
STRING_LITERAL(TMP4138, "($1)", 4);
STRING_LITERAL(TMP4139, "sizeof($1)", 10);
STRING_LITERAL(TMP4140, "if ($1) #nimGCunref($1);$n", 26);
STRING_LITERAL(TMP4141, "($1) #newObjRC1($2, $3)", 23);
STRING_LITERAL(TMP4142, "($1) #newObj($2, $3)", 20);
STRING_LITERAL(TMP4143, "$1->finalizer = (void*)$2;$n", 28);
STRING_LITERAL(TMP4144, "($1) #newObj($2, sizeof($3))", 28);
STRING_LITERAL(TMP4145, "($1) #newSeqRC1($2, $3)", 23);
STRING_LITERAL(TMP4146, "($1) #newSeq($2, $3)", 20);
STRING_LITERAL(TMP4147, "((NI)sizeof($1))", 16);
STRING_LITERAL(TMP4148, "(*($1*) ($2))", 13);
STRING_LITERAL(TMP4149, "(($1) ($2))", 11);
STRING_LITERAL(TMP4150, "($1Len0-1)", 10);
STRING_LITERAL(TMP4151, "$1Len0", 6);
STRING_LITERAL(TMP4152, "($1 ? (strlen($1)-1) : -1)", 26);
STRING_LITERAL(TMP4153, "($1 ? strlen($1) : 0)", 21);
STRING_LITERAL(TMP4154, "($1 ? ($1->Sup.len-1) : -1)", 27);
STRING_LITERAL(TMP4155, "($1 ? $1->Sup.len : 0)", 22);
STRING_LITERAL(TMP4156, "($1 ? ($1->len-1) : -1)", 23);
STRING_LITERAL(TMP4157, "($1 ? $1->len : 0)", 18);
STRING_LITERAL(TMP4158, "genArrayLen()", 13);
STRING_LITERAL(TMP4159, "($1->Sup.len)", 13);
STRING_LITERAL(TMP4160, "$1->len", 7);
STRING_LITERAL(TMP4161, "unaryStmt", 9);
STRING_LITERAL(TMP4162, "#nimGCref($1);$n", 16);
STRING_LITERAL(TMP4163, "#nimGCunref($1);$n", 18);
STRING_LITERAL(TMP4164, "$1 = #setLengthStr($1, $2);$n", 29);
STRING_LITERAL(TMP4165, "$1 = ($3) #setLengthSeq(&($1)->Sup, sizeof($4), $2);$n", 54);
STRING_LITERAL(TMP4166, "$1 = ($3) #setLengthSeq($1, sizeof($4), $2);$n", 46);
STRING_LITERAL(TMP4167, "($1- $2)", 8);
STRING_LITERAL(TMP4168, "$1 |= ((", 8);
STRING_LITERAL(TMP4169, ")1)<<(($2)%(sizeof(", 19);
STRING_LITERAL(TMP4170, ")*8));$n", 8);
STRING_LITERAL(TMP4171, "$1 &= ~(((", 10);
STRING_LITERAL(TMP4172, ")1) << (($2) % (sizeof(", 23);
STRING_LITERAL(TMP4173, ")*8)));$n", 9);
STRING_LITERAL(TMP4174, "#countBits32($1)", 16);
STRING_LITERAL(TMP4175, "#countBits64($1)", 16);
STRING_LITERAL(TMP4176, "(($1 & ~ $2 ==0)&&($1 != $2))", 29);
STRING_LITERAL(TMP4177, "(($1 & ~ $2)==0)", 16);
STRING_LITERAL(TMP4178, "($1 & $2)", 9);
STRING_LITERAL(TMP4179, "($1 | $2)", 9);
STRING_LITERAL(TMP4180, "($1 & ~ $2)", 11);
STRING_LITERAL(TMP4181, "($1 ^ $2)", 9);
STRING_LITERAL(TMP4182, "fewCmps", 7);
STRING_LITERAL(TMP4183, "$1 >= $2 && $1 <= $3", 20);
STRING_LITERAL(TMP4184, "$1 == $2", 8);
STRING_LITERAL(TMP4185, " || ", 4);
STRING_LITERAL(TMP4186, "(($1 &(1U<<((NU)($2)&7U)))!=0)", 30);
STRING_LITERAL(TMP4187, "(($1 &(1U<<((NU)($2)&15U)))!=0)", 31);
STRING_LITERAL(TMP4188, "(($1 &(1U<<((NU)($2)&31U)))!=0)", 31);
STRING_LITERAL(TMP4189, "(($1 &((NU64)1<<((NU)($2)&63U)))!=0)", 36);
STRING_LITERAL(TMP4190, "(($1[(NU)($2)>>3] &(1U<<((NU)($2)&7U)))!=0)", 43);
STRING_LITERAL(TMP4191, "genSetOp()", 10);
STRING_LITERAL(TMP4192, "$1[(NU)($2)>>3] |=(1U<<($2&7U));$n", 34);
STRING_LITERAL(TMP4193, "$1[(NU)($2)>>3] &= ~(1U<<($2&7U));$n", 36);
STRING_LITERAL(TMP4194, "#cardSet($1, ", 13);
STRING_LITERAL(TMP4195, "for ($1 = 0; $1 < $2; $1++) { $n  $3 = (($4[$1] & ~ $5[$1]) == "
"0);$n  if (!$3) break;}$n", 88);
STRING_LITERAL(TMP4196, "for ($1 = 0; $1 < $2; $1++) { $n  $3 = (($4[$1] & ~ $5[$1]) == "
"0);$n  if (!$3) break;}$nif ($3) $3 = (memcmp($4, $5, $2) != 0);"
"$n", 129);
STRING_LITERAL(TMP4197, "|", 1);
STRING_LITERAL(TMP4198, "& ~", 3);
STRING_LITERAL(TMP4199, "^", 1);
NIM_CONST TY496828 lookupopr_496826 = {((NimStringDesc*) &TMP4195),
((NimStringDesc*) &TMP4196),
((NimStringDesc*) &TMP3793),
((NimStringDesc*) &TMP4197),
((NimStringDesc*) &TMP4198),
((NimStringDesc*) &TMP4199)}
;
STRING_LITERAL(TMP4200, "(memcmp($1, $2, ", 16);
STRING_LITERAL(TMP4201, ")==0)", 5);
STRING_LITERAL(TMP4202, "for ($1 = 0; $1 < $2; $1++) $n  $3[$1] = $4[$1] $6 $5[$1];$n", 60);
STRING_LITERAL(TMP4203, "genSetOp", 8);
STRING_LITERAL(TMP4204, "$1->data", 8);
STRING_LITERAL(TMP4205, "($1)+($2), ($3)-($2)+1", 22);
STRING_LITERAL(TMP4206, "(*$1)->data+($2), ($3)-($2)+1", 29);
STRING_LITERAL(TMP4207, "$1->data+($2), ($3)-($2)+1", 26);
STRING_LITERAL(TMP4208, "openArrayLoc: ", 14);
STRING_LITERAL(TMP4209, "", 0);
STRING_LITERAL(TMP4210, "(*$1)->data, (*$1)->$2", 22);
STRING_LITERAL(TMP4211, "$1.ClPrc($3$1.ClEnv)", 20);
STRING_LITERAL(TMP4212, "$1.ClEnv? $1.ClPrc($3$1.ClEnv):(($4)($1.ClPrc))($2)", 51);
STRING_LITERAL(TMP4213, "#chckNil((void*)$1);$n", 22);
STRING_LITERAL(TMP4214, "#genericReset((void*)$1, $2);$n", 31);
STRING_LITERAL(TMP4215, ";$n", 3);
STRING_LITERAL(TMP4217, "compiler/ccgcalls.nim", 21);
NIM_CONST TY88687 TMP4216 = {((NimStringDesc*) &TMP4217),
((NI) 419)}
;
static NIM_CONST TY202404 TMP4218 = {
0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP4219, "call expression expected for C++ pattern", 40);
NIM_CONST TY88687 TMP4220 = {((NimStringDesc*) &TMP4217),
((NI) 324)}
;
STRING_LITERAL(TMP4221, "->", 2);
STRING_LITERAL(TMP4222, ");$n", 4);
STRING_LITERAL(TMP4223, "[", 1);
NIM_CONST TY88687 TMP4224 = {((NimStringDesc*) &TMP4217),
((NI) 468)}
;
STRING_LITERAL(TMP4225, ": ", 2);
STRING_LITERAL(TMP4226, "varargs for objective C method?", 31);
STRING_LITERAL(TMP4227, "Result: ", 8);
STRING_LITERAL(TMP4228, "];$n", 4);
STRING_LITERAL(TMP4229, "]", 1);
NIM_CONST TY88687 TMP4230 = {((NimStringDesc*) &TMP3979),
((NI) 950)}
;
STRING_LITERAL(TMP4231, "<stdio.h>", 9);
STRING_LITERAL(TMP4232, ", \"nil\"", 7);
STRING_LITERAL(TMP4233, ", $1? ($1)->data:\"nil\"", 22);
STRING_LITERAL(TMP4234, "printf($1$2);$n", 15);
STRING_LITERAL(TMP4235, "%s", 2);
STRING_LITERAL(TMP4236, "fflush(stdout);$n", 17);
STRING_LITERAL(TMP4299, "#genericDeepCopy((void*)$1, (void*)$2, $3);$n", 45);
STRING_LITERAL(TMP4300, "#genericSeqDeepCopy($1, $2, $3);$n", 34);
STRING_LITERAL(TMP4301, "#genericDeepCopyOpenArray((void*)$1, (void*)$2, $1Len0, $3);$n", 62);
STRING_LITERAL(TMP4302, "genDeepCopy: ", 13);
STRING_LITERAL(TMP4303, "genMagicExpr: ", 14);
STRING_LITERAL(TMP4304, "static NIM_CONST $1 $2 = $3;$n", 30);
STRING_LITERAL(TMP4305, "memset($1, 0, sizeof($1));$n", 28);
STRING_LITERAL(TMP4306, "for ($1 = $3; $1 <= $4; $1++) $n$2[(NU)($1)>>3] |=(1U<<((NU)($1"
")&7U));$n", 72);
STRING_LITERAL(TMP4307, "$1[(NU)($2)>>3] |=(1U<<((NU)($2)&7U));$n", 40);
STRING_LITERAL(TMP4308, "for ($1 = $3; $1 <= $4; $1++) $n$2 |=((", 39);
STRING_LITERAL(TMP4309, ")(1)<<(($1)%(sizeof(", 20);
STRING_LITERAL(TMP4310, "$1 |=((", 7);
STRING_LITERAL(TMP4311, ")(1)<<(($2)%(sizeof(", 20);
STRING_LITERAL(TMP4312, "genCheckedRecordField", 21);
STRING_LITERAL(TMP4313, "genObjConstr", 12);
STRING_LITERAL(TMP4314, "if ($1) #raiseFieldError(((#NimStringDesc*) &$2));$n", 52);
STRING_LITERAL(TMP4315, "if (!($1)) #raiseFieldError(((#NimStringDesc*) &$2));$n", 55);
STRING_LITERAL(TMP4316, "LOC$1.source", 12);
STRING_LITERAL(TMP4317, "union { $1 source; $2 dest; } LOC$3;$n", 38);
STRING_LITERAL(TMP4318, "LOC$#.dest", 10);
STRING_LITERAL(TMP4319, "if ((NU)($1) > (NU)($2)) #raiseIndexError();$n", 46);
STRING_LITERAL(TMP4320, "if ($1 < $2 || $1 > $3) #raiseIndexError();$n", 45);
STRING_LITERAL(TMP4321, "$1[($2)- $3]", 12);
STRING_LITERAL(TMP4322, "if ((NU)($1) >= (NU)($2Len0)) #raiseIndexError();$n", 51);
STRING_LITERAL(TMP4323, "if ((NU)($1) > (NU)($2->$3)) #raiseIndexError();$n", 50);
STRING_LITERAL(TMP4324, "if ((NU)($1) >= (NU)($2->$3)) #raiseIndexError();$n", 51);
STRING_LITERAL(TMP4325, "genTupleElem", 12);
STRING_LITERAL(TMP4326, ".Field$1", 8);
STRING_LITERAL(TMP4327, "expr(nkBracketExpr, ", 20);
STRING_LITERAL(TMP4328, "genDeref ", 9);
STRING_LITERAL(TMP4329, "genRecordFieldAux", 17);
STRING_LITERAL(TMP4330, "genRecordField 3", 16);
STRING_LITERAL(TMP4331, ".$1", 3);
STRING_LITERAL(TMP4332, "} $1: ;$n", 9);
STRING_LITERAL(TMP4333, "FR.len-=$1;$n", 13);
STRING_LITERAL(TMP4334, "FR.len+=$1;$n", 13);
STRING_LITERAL(TMP4335, "if (!$1) goto $2;$n", 19);
STRING_LITERAL(TMP4336, "goto $1;$n", 10);
STRING_LITERAL(TMP4337, "genIf()", 7);
STRING_LITERAL(TMP4338, "->Sup", 5);
STRING_LITERAL(TMP4339, "$1 = &$2;$n", 11);
STRING_LITERAL(TMP4340, "if ($1) #chckObj($2.m_type, $3);$n", 34);
STRING_LITERAL(TMP4341, "#chckObj($1.m_type, $2);$n", 26);
STRING_LITERAL(TMP4342, "(($1)#$5($2, $3, $4))", 21);
STRING_LITERAL(TMP4343, "chckRangeF", 10);
STRING_LITERAL(TMP4344, "chckRange64", 11);
STRING_LITERAL(TMP4345, "chckRange", 9);
STRING_LITERAL(TMP4346, "CNSTCLOSURE", 11);
STRING_LITERAL(TMP4347, "closure to closure created", 26);
STRING_LITERAL(TMP4348, "$1.ClPrc = $2; $1.ClEnv = $3;$n", 31);
STRING_LITERAL(TMP4349, "while (1) {$n", 13);
STRING_LITERAL(TMP4350, "case statement must be exhaustive for computed goto", 51);
STRING_LITERAL(TMP4351, "case statement has too many cases for computed goto", 51);
STRING_LITERAL(TMP4352, "case statement has to start at 0 for computed goto", 50);
STRING_LITERAL(TMP4353, "no case statement found for computed goto", 41);
STRING_LITERAL(TMP4354, "static void* $#[$#] = {", 23);
STRING_LITERAL(TMP4355, "&&TMP$#, ", 9);
STRING_LITERAL(TMP4356, "&&TMP$#};$n", 11);
STRING_LITERAL(TMP4357, "goto *$#[$#];$n", 15);
STRING_LITERAL(TMP4358, "range notation not available for computed goto", 46);
STRING_LITERAL(TMP4359, "TMP$#:$n", 8);
STRING_LITERAL(TMP4360, "#nimProfile();$n", 16);
STRING_LITERAL(TMP4361, "\'goto\' target must be a literal value", 37);
STRING_LITERAL(TMP4362, "goto NIMSTATE_$#;$n", 19);
STRING_LITERAL(TMP4363, "static void* $1;$n", 18);
STRING_LITERAL(TMP4364, "||", 2);
STRING_LITERAL(TMP4365, "($1 = #nimLoadLibrary((#NimStringDesc*) &$2))$n", 47);
STRING_LITERAL(TMP4366, "if (!($1)) #nimLoadLibraryError((#NimStringDesc*) &$2);$n", 57);
STRING_LITERAL(TMP4367, "if (!($1 = #nimLoadLibrary($2))) #nimLoadLibraryError($2);$n", 60);
STRING_LITERAL(TMP4368, "loadDynamicLib", 14);
STRING_LITERAL(TMP4369, "$1 = ($2*) #nimGetProcAddr($3, $4);$n", 37);
STRING_LITERAL(TMP4370, "$2* $1;$n", 9);
STRING_LITERAL(TMP4371, "#dbgRegisterGlobal($1, &$2, $3);$n", 34);
STRING_LITERAL(TMP4372, "#nimGCvisit((void*)$1, 0);$n", 28);
STRING_LITERAL(TMP4373, "N_NIMCALL(void, $1)()", 21);
STRING_LITERAL(TMP4374, "#nimRegisterGlobalMarker($1);$n", 31);
STRING_LITERAL(TMP4375, "$#($#);$n", 9);
STRING_LITERAL(TMP4376, "$# = $#;$n", 10);
STRING_LITERAL(TMP4377, "genVarTuple", 11);
STRING_LITERAL(TMP4378, "genConstStmt", 12);
STRING_LITERAL(TMP4379, "for statement not eliminated", 28);
STRING_LITERAL(TMP4380, "if (#eqStrings($1, $2)) goto $3;$n", 34);
STRING_LITERAL(TMP4381, "switch (#hashString($1) & $2) {$n", 33);
STRING_LITERAL(TMP4382, "case $1: $n$2break;$n", 21);
STRING_LITERAL(TMP4383, "goto LA$1;$n", 12);
STRING_LITERAL(TMP4384, "LA$1: ;$n", 9);
STRING_LITERAL(TMP4385, "if ($1 >= $2 && $1 <= $3) goto $4;$n", 36);
STRING_LITERAL(TMP4386, "if ($1 == $2) goto $3;$n", 24);
STRING_LITERAL(TMP4387, "NIMSTATE_$#:$n", 14);
STRING_LITERAL(TMP4388, "switch ($1) {$n", 15);
STRING_LITERAL(TMP4389, "default: __assume(0);$n", 23);
STRING_LITERAL(TMP4390, "#popSafePoint();$n", 18);
STRING_LITERAL(TMP4391, "#popCurrentException();$n", 25);
STRING_LITERAL(TMP4392, "if ($1.status != 0) #popCurrentException();$n", 45);
STRING_LITERAL(TMP4393, "goto BeforeRet;$n", 17);
STRING_LITERAL(TMP4394, "no loop to break", 16);
STRING_LITERAL(TMP4395, "extern $1", 9);
STRING_LITERAL(TMP4396, "#FieldDiscriminantCheck((NI)(NU)($1), (NI)(NU)($2), $3, $4);$n", 62);
STRING_LITERAL(TMP4397, "genAsmOrEmitStmt()", 18);
STRING_LITERAL(TMP4398, "\"", 1);
STRING_LITERAL(TMP4399, "\\n\"\012", 4);
STRING_LITERAL(TMP4400, "Exception", 9);
STRING_LITERAL(TMP4401, "E_Base", 6);
STRING_LITERAL(TMP4402, "try {$n", 7);
STRING_LITERAL(TMP4403, "} catch (NimException& $1) {$n", 30);
STRING_LITERAL(TMP4404, "#setFrame((TFrame*)&FR);$n", 26);
STRING_LITERAL(TMP4405, "else ", 5);
STRING_LITERAL(TMP4406, "#isObj($1.exp->m_type, $2)", 26);
STRING_LITERAL(TMP4407, "if ($1) ", 8);
STRING_LITERAL(TMP4408, "throw;$n", 8);
STRING_LITERAL(TMP4409, "<setjmp.h>", 10);
STRING_LITERAL(TMP4410, "#TSafePoint $1;$n", 17);
STRING_LITERAL(TMP4411, "#pushSafePoint(&$1);$n", 22);
STRING_LITERAL(TMP4412, "nimStdSetjmp", 12);
STRING_LITERAL(TMP4413, "$1.status = setjmp($1.context);$n", 33);
STRING_LITERAL(TMP4414, "nimSigSetjmp", 12);
STRING_LITERAL(TMP4415, "$1.status = sigsetjmp($1.context, 0);$n", 39);
STRING_LITERAL(TMP4416, "nimRawSetjmp", 12);
STRING_LITERAL(TMP4417, "$1.status = _setjmp($1.context);$n", 34);
STRING_LITERAL(TMP4418, "if ($1.status == 0) {$n", 23);
STRING_LITERAL(TMP4419, "else {$n", 8);
STRING_LITERAL(TMP4420, "else", 4);
STRING_LITERAL(TMP4421, "$1.status = 0;$n", 16);
STRING_LITERAL(TMP4422, "#isObj(#getCurrentException()->Sup.m_type, $1)", 46);
STRING_LITERAL(TMP4423, "if ($1) {$n", 11);
STRING_LITERAL(TMP4424, "if ($1.status != 0) #reraiseException();$n", 42);
STRING_LITERAL(TMP4425, "#raiseException((#Exception*)$1, $2);$n", 39);
STRING_LITERAL(TMP4426, "#reraiseException();$n", 22);
STRING_LITERAL(TMP4427, "/*TYPESECTION*/", 15);
STRING_LITERAL(TMP4428, "/*VARSECTION*/", 14);
STRING_LITERAL(TMP4429, "/*INCLUDESECTION*/", 18);
STRING_LITERAL(TMP4430, "bp", 2);
STRING_LITERAL(TMP4431, "#dbgRegisterBreakpoint($1, (NCSTRING)$2, (NCSTRING)$3);$n", 57);
STRING_LITERAL(TMP4432, "#dbgRegisterWatchpoint($1, (NCSTRING)$2, $3);$n", 47);
STRING_LITERAL(TMP4433, "#pragma omp parallel for $4$nfor ($1 = $2; $1 <= $3; ++$1)", 58);
STRING_LITERAL(TMP4435, "compiler/ccgstmts.nim", 21);
NIM_CONST TY88687 TMP4434 = {((NimStringDesc*) &TMP4435),
((NI) 145)}
;
STRING_LITERAL(TMP4436, "STATE$1: ;$n", 12);
STRING_LITERAL(TMP4437, "case -1: goto BeforeRet;$n", 26);
STRING_LITERAL(TMP4438, "case $1: goto STATE$1;$n", 24);
STRING_LITERAL(TMP4439, "if (((NI*) $1)[0] < 0) break;$n", 31);
STRING_LITERAL(TMP4440, "if ((((NI*) $1.ClEnv)[0]) < 0) break;$n", 39);
STRING_LITERAL(TMP4441, "); unknown node kind", 20);
NIM_CONST TY88687 TMP4442 = {((NimStringDesc*) &TMP4435),
((NI) 1117)}
;
STRING_LITERAL(TMP4443, "__declspec(naked) ", 18);
STRING_LITERAL(TMP4444, "$N$1 {$n$2$3$4}$N$N", 19);
STRING_LITERAL(TMP4445, "$N$1 {$N", 8);
STRING_LITERAL(TMP4446, "struct {$1} GCFRAME;$n", 22);
STRING_LITERAL(TMP4447, "nimFrame", 8);
STRING_LITERAL(TMP4448, "VarSlot", 7);
STRING_LITERAL(TMP4449, "\011nimfrs($1, $2, $3, $4)$N", 25);
STRING_LITERAL(TMP4450, "\011nimfr($1, $2)$N", 16);
STRING_LITERAL(TMP4451, "\011#nimProfile();$n", 17);
STRING_LITERAL(TMP4452, "\011}BeforeRet: ;$n", 16);
STRING_LITERAL(TMP4453, "if (((NU)&GCFRAME) < 4096) #nimGCFrame(&GCFRAME);$n", 51);
STRING_LITERAL(TMP4454, "\011#popFrame();$n", 15);
STRING_LITERAL(TMP4455, "}$N", 3);
STRING_LITERAL(TMP4456, "\011$1 = ($2) ($3$4));$n", 21);
NIM_CONST TY88687 TMP4457 = {((NimStringDesc*) &TMP3753),
((NI) 561)}
;
STRING_LITERAL(TMP4458, "wrong index: ", 13);
STRING_LITERAL(TMP4459, "\011$1 = ($2) #nimGetProcAddr($3, $4);$n", 37);
STRING_LITERAL(TMP4460, "$2 $1;$n", 8);
STRING_LITERAL(TMP4461, "cgsym: ", 7);
STRING_LITERAL(TMP4462, "added pending module twice: ", 28);
STRING_LITERAL(TMP4463, ".h", 2);
STRING_LITERAL(TMP4473, ".cpp", 4);
STRING_LITERAL(TMP4474, ".m", 2);
STRING_LITERAL(TMP4475, ".c", 2);
STRING_LITERAL(TMP4476, "Init000", 7);
STRING_LITERAL(TMP4477, "DatInit000", 10);
STRING_LITERAL(TMP4478, "NIM_EXTERNC N_NOINLINE(void, $1)(void);$N", 41);
STRING_LITERAL(TMP4479, "\011$1();$N", 8);
STRING_LITERAL(TMP4482, "N_CDECL(void, NimMainInner)(void) {$N$1}$N$NN_CDECL(void, NimMa"
"in)(void) {$N\011void (*volatile inner)();$N\011PreMain();$N\011inner = N"
"imMainInner;$N$2\011(*inner)();$N}$N$N", 162);
STRING_LITERAL(TMP4483, "N_STDCALL(int, WinMain)(HINSTANCE hCurInstance, $N             "
"           HINSTANCE hPrevInstance, $N                        LP"
"STR lpCmdLine, int nCmdShow) {$N\011NimMain();$N\011return nim_program"
"_result;$N}$N$N", 206);
STRING_LITERAL(TMP4484, "N_LIB_EXPORT N_CDECL(void, NimMainInner)(void) {$N$1}$N$NN_CDEC"
"L(void, NimMain)(void) {$N\011void (*volatile inner)();$N\011PreMain()"
";$N\011inner = NimMainInner;$N$2\011(*inner)();$N}$N$N", 175);
STRING_LITERAL(TMP4485, "BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, $N    "
"                LPVOID lpvReserved) {$N\011if(fwdreason == DLL_PROC"
"ESS_ATTACH) {$N\011NimMain();$N}$N\011return 1;$N}$N$N", 175);
STRING_LITERAL(TMP4486, "<windows.h>", 11);
STRING_LITERAL(TMP4487, "void NIM_POSIX_INIT NimMainInit(void) {$N\011NimMain();$N}$N$N", 59);
STRING_LITERAL(TMP4488, "int cmdCount;$Nchar** cmdLine;$Nchar** gEnv;$NN_CDECL(void, Nim"
"MainInner)(void) {$N$1}$N$NN_CDECL(void, NimMain)(void) {$N\011void"
" (*volatile inner)();$N\011PreMain();$N\011inner = NimMainInner;$N$2\011("
"*inner)();$N}$N$N", 208);
STRING_LITERAL(TMP4489, "int main(void) {$N\011NimMain();$N\011return 0;$N}$N$N", 48);
STRING_LITERAL(TMP4490, "int main(int argc, char** args, char** env) {$N\011cmdLine = args;"
"$N\011cmdCount = argc;$N\011gEnv = env;$N\011NimMain();$N\011return nim_prog"
"ram_result;$N}$N$N", 145);
STRING_LITERAL(TMP4491, "dbgRegisterBreakpoint", 21);
STRING_LITERAL(TMP4492, "dbgRegisterFilename", 19);
STRING_LITERAL(TMP4493, "dbgRegisterFilename($1);$N", 26);
STRING_LITERAL(TMP4494, "\011#initStackBottomWith((void *)&inner);$N", 40);
STRING_LITERAL(TMP4495, "void PreMainInner() {$N\011systemInit000();$N$1$2$3}$N$Nvoid PreMa"
"in() {$N\011void (*volatile inner)();$N\011systemDatInit000();$N\011inner"
" = PreMainInner;$N$4$5\011(*inner)();$N}$N$N", 168);
STRING_LITERAL(TMP4496, "\011#initThreadVarsEmulation();$N", 30);
STRING_LITERAL(TMP4539, "still forwarded: ", 17);
STRING_LITERAL(TMP4565, "NIM_EXTERNC N_NOINLINE(void, $1)(void) {$N", 42);
STRING_LITERAL(TMP4566, "static #TNimNode $1[$2];$n", 26);
STRING_LITERAL(TMP4567, "static #TNimType $1[$2];$n", 26);
STRING_LITERAL(TMP4570, "\011TFrame F; FR.len = 0;$N", 24);
STRING_LITERAL(TMP4571, "}$N$N", 5);
STRING_LITERAL(TMP4572, "N_NIMCALL(void, nimLoadProcs$1)(void) {$2}$N$N", 46);
STRING_LITERAL(TMP4573, "/* Generated by Nim Compiler v$1 */$N/*   (c) 2015 Andreas Rump"
"f */$N/* The generated code is subject to the original license. "
"*/$N", 131);
STRING_LITERAL(TMP4574, "0.13.0", 6);
STRING_LITERAL(TMP4575, "/* Generated by Nim Compiler v$1 */$N/*   (c) 2015 Andreas Rump"
"f */$N/* The generated code is subject to the original license. "
"*/$N/* Compiled for: $2, $3, $4 */$N/* Command for C compiler:$n"
"   $5 */$N", 201);
extern NIM_CONST TY167069 Os_167055;
extern NIM_CONST TY167490 Cpu_167476;
STRING_LITERAL(TMP4576, "#define NIM_INTBITS $1", 22);
STRING_LITERAL(TMP4584, "#include \"nimbase.h\"", 20);
STRING_LITERAL(TMP4585, "#include \"$1\"$N", 15);
STRING_LITERAL(TMP4586, "#include $1$N", 13);
STRING_LITERAL(TMP4587, "typedef struct {$1} NimThreadVars;$n", 36);
STRING_LITERAL(TMP4589, "extern \"C\"", 10);
STRING_LITERAL(TMP4590, "$#NI NimThreadVarsSize(){return (NI)sizeof(NimThreadVars);}$n", 61);
STRING_LITERAL(TMP4601, "__$1__", 6);
STRING_LITERAL(TMP4602, "#ifndef $1$n#define $1$n", 24);
STRING_LITERAL(TMP4603, "N_CDECL(void, NimMain)(void);$n", 31);
STRING_LITERAL(TMP4604, "#endif /* $1 */$n", 17);
Tcgen469026* generatedheader_472201;
Ropeobj169006* indent_472655;
extern Gcheap49818 gch_49859;
Ropeobj169006* nimtv_478212;
Ttypeseq214824* nimtvdeps_478230;
extern TNimType NTI214824; /* TTypeSeq */
Intset211035 nimtvdeclared_478231;
extern TNimType NTI211035; /* IntSet */
NI breakpointid_488860;
Ropeobj169006* gbreakpoints_488861;
extern TY469140* gmodules_469157;
extern TNimType NTI469016; /* BModule */
extern TNimType NTI469026; /* TCGen */
extern NU32 goptions_160119;
extern TNimType NTI214792; /* TSymSeq */
extern Ropeobj169006* rnl_169903;
extern NI gforwardedprocscounter_469158;
extern TNimType NTI214241; /* TTypeKind */
extern NU8 gcmd_160123;
extern NI floatsize_167616;
extern NU8 ccompiler_194431;
extern NimStringDesc* tnl_167618;
extern NU8 gselectedgc_160124;
extern NI gbackendid_213004;
extern TNimType NTI214020; /* TNodeKind */
extern TNimType NTI214804; /* TLoc */
extern NU32 gglobaloptions_160121;
extern TNimType NTI214435; /* TSymKind */
extern NI intsize_167615;
extern TNimType NTI214521; /* TMagic */
extern TNimType NTI125202; /* seq[string] */
extern TNimType NTI182350; /* seq[Rope] */
extern TNimType NTI214784; /* TNodeSeq */
extern NimStringDesc* headerfile_160129;
extern NimStringDesc* gprojectfull_160201;
extern NI gerrorcounter_183081;
extern Ropeobj169006* mainmodprocs_469135;
extern Ropeobj169006* maindatinit_469138;
extern Ropeobj169006* mainmodinit_469136;
extern Ropeobj169006* othermodsinit_469137;
extern NU8 targetos_167603;
extern TY182612* fileinfos_182629;
extern NU8 targetcpu_167601;
extern Ropeobj169006* gmapping_469139;

static N_INLINE(Cell47505*, usrtocell_51440)(void* usr) {
	Cell47505* result;
	result = 0;
	result = ((Cell47505*) ((NI)((NU32)(((NI) (usr))) - (NU32)(((NI)sizeof(Cell47505))))));
	return result;
}

static N_INLINE(void, rtladdzct_53001)(Cell47505* c) {
	addzct_51417((&gch_49859.zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		Cell47505* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_51440(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell47505* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_51440((*dest));
		{
			(*c).refcount -= ((NI) 8);
			if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA11;
			rtladdzct_53001(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	Cell47505* c;
	c = usrtocell_51440(p);
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_53001(c);
	}
	LA3: ;
}

N_NIMCALL(Tcgen469026*, getcgenmodule_472226)(Tsym214822* s) {
	Tcgen469026* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((NI) 0) <= (*s).position);
		if (!(LOC3)) goto LA4;
		LOC3 = ((*s).position < (gmodules_469157 ? gmodules_469157->Sup.len : 0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = gmodules_469157->data[(*s).position];
	}
	goto LA1;
	LA5: ;
	{
		result = NIM_NIL;
	}
	LA1: ;
	return result;
}

static N_INLINE(NIM_BOOL, canbecycleroot_51458)(Cell47505* c) {
	NIM_BOOL result;
	result = 0;
	result = !((((*(*c).typ).flags &(1U<<((NU)(((NU8) 1))&7U)))!=0));
	return result;
}

static N_INLINE(void, rtladdcycleroot_52220)(Cell47505* c) {
	{
		if (!!((((NI) ((NI)((*c).refcount & ((NI) 3)))) == ((NI) 3)))) goto LA3;
		(*c).refcount = (NI)((NI)((*c).refcount & ((NI) -4)) | ((NI) 3));
		incl_48247((&gch_49859.cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_53819)(Cell47505* c) {
	(*c).refcount = (NI)((NU32)((*c).refcount) + (NU32)(((NI) 8)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_51458(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_52220(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_53401)(Cell47505* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_53001(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_51458(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_52220(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		Cell47505* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_51440(src);
		incref_53819(LOC5);
	}
	LA3: ;
	{
		Cell47505* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_51440((*dest));
		decref_53401(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

N_NIMCALL(NU32, initprocoptions_503035)(Tcgen469026* m) {
	NU32 result;
	memset((void*)(&result), 0, sizeof(result));
	{
		if (!(((*(*m).module).flags &(1U<<((NU)(((NU8) 13))&31U)))!=0)) goto LA3;
		result = (goptions_160119 & ~ 32768);
	}
	goto LA1;
	LA3: ;
	{
		result = goptions_160119;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tcproc469022*, newpreinitproc_503025)(Tcgen469026* m) {
	Tcproc469022* result;
	result = 0;
	result = newproc_469193(NIM_NIL, m);
	(*result).labels = ((NI) 100000);
	return result;
}

N_NIMCALL(Tcproc469022*, newpostinitproc_503030)(Tcgen469026* m) {
	Tcproc469022* result;
	result = 0;
	result = newproc_469193(NIM_NIL, m);
	(*result).labels = ((NI) 200000);
	return result;
}

static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	memcpy(((NCSTRING) ((&(*dest).data[((*dest).Sup.len)- 0]))), ((NCSTRING) ((*src).data)), (NI)((*src).Sup.len + ((NI) 1)));
	(*dest).Sup.len += (*src).Sup.len;
}

static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c) {
	(*dest).data[((*dest).Sup.len)- 0] = c;
	(*dest).data[((NI)((*dest).Sup.len + ((NI) 1)))- 0] = 0;
	(*dest).Sup.len += ((NI) 1);
}

N_NIMCALL(NIM_BOOL, isactivated_501631)(Tsym214822* prc) {
	NIM_BOOL result;
	result = 0;
	result = !(((*prc).typ == NIM_NIL));
	return result;
}

N_NIMCALL(void, fillloc_472282)(Tloc214804* a, NU8 k, Ttype214828* typ, Ropeobj169006* r, NU8 s) {
	{
		if (!((*a).k == ((NU8) 0))) goto LA3;
		(*a).k = k;
		unsureAsgnRef((void**) (&(*a).t), typ);
		(*a).s = s;
		{
			if (!((*a).r == NIM_NIL)) goto LA7;
			unsureAsgnRef((void**) (&(*a).r), r);
		}
		LA7: ;
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, iskeyword_472960)(Tident189012* w) {
	NIM_BOOL result;
{	result = 0;
	switch ((*w).Sup.id) {
	case ((NI) 197) ... ((NI) 259):
	case ((NI) 4) ... ((NI) 70):
	case ((NI) 136):
	{
		result = NIM_TRUE;
		goto BeforeRet;
	}
	break;
	default:
	{
		result = NIM_FALSE;
		goto BeforeRet;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, manglename_472977)(Tsym214822* s) {
	Ropeobj169006* result;
	result = 0;
	result = (*s).loc.r;
	{
		NIM_BOOL keeporigname;
		NIM_BOOL LOC5;
		NIM_BOOL LOC6;
		NIM_BOOL LOC9;
		if (!(result == NIM_NIL)) goto LA3;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = ((2824 &(1U<<((NU)((*s).kind)&31U)))!=0);
		if (!(LOC6)) goto LA7;
		LOC6 = ((IL64(2149580812) & (*s).flags) == 0);
		LA7: ;
		LOC5 = LOC6;
		if (!(LOC5)) goto LA8;
		LOC9 = 0;
		LOC9 = iskeyword_472960((*s).name);
		LOC5 = !(LOC9);
		LA8: ;
		keeporigname = LOC5;
		{
			NimStringDesc* LOC14;
			if (!keeporigname) goto LA12;
			LOC14 = 0;
			LOC14 = mangle_468847((*(*s).name).s);
			result = rope_169277(LOC14);
		}
		goto LA10;
		LA12: ;
		{
			NimStringDesc* LOC16;
			Ropeobj169006* LOC17;
			TY473064 LOC18;
			Ropeobj169006* LOC19;
			Ropeobj169006* LOC20;
			LOC16 = 0;
			LOC16 = mangle_468847((*(*s).name).s);
			LOC17 = 0;
			LOC17 = rope_169277(LOC16);
			add_169482(&result, LOC17);
			memset((void*)LOC18, 0, sizeof(LOC18));
			LOC19 = 0;
			LOC19 = HEX25_169905(((NimStringDesc*) &TMP3763), LOC18, 0);
			add_169482(&result, LOC19);
			LOC20 = 0;
			LOC20 = rope_169401(((NI64) ((*s).Sup.id)));
			add_169482(&result, LOC20);
		}
		LA10: ;
		asgnRefNoCycle((void**) (&(*s).loc.r), result);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, fillprocloc_478601)(Tsym214822* sym) {
	{
		Ropeobj169006* LOC5;
		if (!((*sym).loc.k == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_472977(sym);
		fillloc_472282((&(*sym).loc), ((NU8) 7), (*sym).typ, LOC5, ((NU8) 2));
	}
	LA3: ;
}

N_NIMCALL(void, addforwardedproc_472203)(Tcgen469026* m, Tsym214822* prc) {
	(*m).forwardedprocs = (Tsymseq214792*) incrSeqV2(&((*m).forwardedprocs)->Sup, sizeof(Tsym214822*));
	asgnRefNoCycle((void**) (&(*m).forwardedprocs->data[(*m).forwardedprocs->Sup.len]), prc);
	++(*m).forwardedprocs->Sup.len;
	gforwardedprocscounter_469158 += ((NI) 1);
}

N_NIMCALL(void, useheader_472349)(Tcgen469026* m, Tsym214822* sym) {
	{
		NimStringDesc* LOC5;
		NIM_BOOL LOC6;
		if (!(((*sym).loc.flags &(1U<<((NU)(((NU8) 6))&15U)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = getstr_219303((*(*sym).annex).path);
		LOC6 = 0;
		LOC6 = includestr_135249((&(*m).headerfiles), LOC5);
	}
	LA3: ;
}

N_NIMCALL(Ropeobj169006*, typename_473065)(Ttype214828* typ) {
	Ropeobj169006* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!!(((*typ).sym == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = mangle_468847((*(*(*typ).sym).name).s);
		result = rope_169277(LOC5);
	}
	goto LA1;
	LA3: ;
	{
		TY473064 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		result = HEX25_169905(((NimStringDesc*) &TMP3768), LOC7, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, gettypename_473086)(Ttype214828* typ) {
	Ropeobj169006* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*typ).sym == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((96 & (*(*typ).sym).flags) == 0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = (*(*typ).sym).loc.r;
	}
	goto LA1;
	LA5: ;
	{
		{
			Ropeobj169006* LOC12;
			Ropeobj169006* LOC13;
			if (!((*typ).loc.r == NIM_NIL)) goto LA10;
			LOC12 = 0;
			LOC12 = typename_473065(typ);
			LOC13 = 0;
			LOC13 = rope_169401(((NI64) ((*typ).Sup.id)));
			asgnRefNoCycle((void**) (&(*typ).loc.r), HEX26_169418(LOC12, LOC13));
		}
		LA10: ;
		result = (*typ).loc.r;
	}
	LA1: ;
	{
		NimStringDesc* LOC18;
		if (!(result == NIM_NIL)) goto LA16;
		LOC18 = 0;
		LOC18 = rawNewString(reprEnum((*typ).kind, (&NTI214241))->Sup.len + 13);
appendString(LOC18, ((NimStringDesc*) &TMP3769));
appendString(LOC18, reprEnum((*typ).kind, (&NTI214241)));
		internalerror_187113(LOC18);
	}
	LA16: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, typenameorliteral_473498)(Ttype214828* t, NimStringDesc* literal) {
	Ropeobj169006* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = !(((*t).sym == NIM_NIL));
		if (!(LOC4)) goto LA5;
		LOC4 = (((*(*t).sym).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0);
		LA5: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA6;
		LOC3 = ((*(*t).sym).magic == ((NU8) 0));
		LA6: ;
		if (!LOC3) goto LA7;
		result = gettypename_473086(t);
	}
	goto LA1;
	LA7: ;
	{
		result = rope_169277(literal);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, getsimpletypedesc_473536)(Tcgen469026* m, Ttype214828* typ) {
	Ropeobj169006* result;
	result = 0;
	switch ((*typ).kind) {
	case ((NU8) 26):
	{
		result = typenameorliteral_473498(typ, ((NimStringDesc*) &TMP3770));
	}
	break;
	case ((NU8) 14):
	{
		{
			NI64 LOC5;
			LOC5 = 0;
			LOC5 = firstord_240001(typ);
			if (!(LOC5 < IL64(0))) goto LA6;
			result = typenameorliteral_473498(typ, ((NimStringDesc*) &TMP3771));
		}
		goto LA3;
		LA6: ;
		{
			NI64 LOC9;
			LOC9 = 0;
			LOC9 = getsize_240124(typ);
			switch (((NI) (LOC9))) {
			case ((NI) 1):
			{
				result = typenameorliteral_473498(typ, ((NimStringDesc*) &TMP3772));
			}
			break;
			case ((NI) 2):
			{
				result = typenameorliteral_473498(typ, ((NimStringDesc*) &TMP3773));
			}
			break;
			case ((NI) 4):
			{
				result = typenameorliteral_473498(typ, ((NimStringDesc*) &TMP3771));
			}
			break;
			case ((NI) 8):
			{
				result = typenameorliteral_473498(typ, ((NimStringDesc*) &TMP3774));
			}
			break;
			default:
			{
				NimStringDesc* LOC15;
				NI64 LOC16;
				NimStringDesc* LOC17;
				LOC15 = 0;
				LOC16 = 0;
				LOC16 = getsize_240124(typ);
				LOC17 = 0;
				LOC17 = nimInt64ToStr(LOC16);
				LOC15 = rawNewString(LOC17->Sup.len + 19);
appendString(LOC15, ((NimStringDesc*) &TMP3775));
appendString(LOC15, LOC17);
				internalerror_187100((*(*typ).sym).info, LOC15);
				result = NIM_NIL;
			}
			break;
			}
		}
		LA3: ;
	}
	break;
	case ((NU8) 28):
	{
		Ropeobj169006* LOC19;
		LOC19 = 0;
		LOC19 = cgsym_472403(m, ((NimStringDesc*) &TMP3776));
		result = typenameorliteral_473498(typ, ((NimStringDesc*) &TMP3777));
	}
	break;
	case ((NU8) 29):
	{
		result = typenameorliteral_473498(typ, ((NimStringDesc*) &TMP3778));
	}
	break;
	case ((NU8) 1):
	{
		result = typenameorliteral_473498(typ, ((NimStringDesc*) &TMP3779));
	}
	break;
	case ((NU8) 2):
	{
		result = typenameorliteral_473498(typ, ((NimStringDesc*) &TMP3780));
	}
	break;
	case ((NU8) 5):
	{
		result = typenameorliteral_473498(typ, ((NimStringDesc*) &TMP3781));
	}
	break;
	case ((NU8) 31) ... ((NU8) 44):
	{
		result = typenameorliteral_473498(typ, Numericaltypetostr_473541[((*typ).kind)- 31]);
	}
	break;
	case ((NU8) 13):
	case ((NU8) 20):
	case ((NU8) 15):
	{
		result = getsimpletypedesc_473536(m, (*typ).sons->data[((NI) 0)]);
	}
	break;
	default:
	{
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(Ropeobj169006*, cachegettype_473361)(Tidtable214840 tab, Ttype214828* key) {
	Ropeobj169006* result;
	Tidobj189006* LOC1;
	TNimObject* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = &key->Sup;
	LOC2 = 0;
	LOC2 = idtableget_221107(tab, LOC1);
	result = ((Ropeobj169006*) (LOC2));
	return result;
}

N_NIMCALL(Ropeobj169006*, gettypepre_473561)(Tcgen469026* m, Ttype214828* typ) {
	Ropeobj169006* result;
	result = 0;
	{
		if (!(typ == NIM_NIL)) goto LA3;
		result = rope_169277(((NimStringDesc*) &TMP3767));
	}
	goto LA1;
	LA3: ;
	{
		result = getsimpletypedesc_473536(m, typ);
		{
			if (!(result == NIM_NIL)) goto LA8;
			result = cachegettype_473361((*m).typecache, typ);
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isimportedcpptype_473246)(Ttype214828* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = !(((*t).sym == NIM_NIL));
	if (!(LOC1)) goto LA2;
	LOC1 = (((*(*t).sym).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NIM_BOOL, isimportedtype_473219)(Ttype214828* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = !(((*t).sym == NIM_NIL));
	if (!(LOC1)) goto LA2;
	LOC1 = (((*(*t).sym).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NimStringDesc*, getforwardstructformat_473604)(Tcgen469026* m) {
	NimStringDesc* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_160123 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*m).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		result = copyString(((NimStringDesc*) &TMP3795));
	}
	goto LA1;
	LA5: ;
	{
		result = copyString(((NimStringDesc*) &TMP3796));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, structorunion_473590)(Ttype214828* t) {
	Ropeobj169006* result;
	result = 0;
	{
		if (!(((*t).flags &(1U<<((NU)(((NU8) 1))&31U)))!=0)) goto LA3;
		result = rope_169277(((NimStringDesc*) &TMP3797));
	}
	goto LA1;
	LA3: ;
	{
		result = rope_169277(((NimStringDesc*) &TMP3798));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, gettypeforward_473628)(Tcgen469026* m, Ttype214828* typ) {
	Ropeobj169006* result;
{	result = 0;
	result = cachegettype_473361((*m).forwtypecache, typ);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = gettypepre_473561(m, typ);
	{
		if (!!((result == NIM_NIL))) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	switch ((*typ).kind) {
	case ((NU8) 24):
	case ((NU8) 18):
	case ((NU8) 17):
	{
		Tidobj189006* LOC17;
		TNimObject* LOC18;
		result = gettypename_473086(typ);
		{
			NIM_BOOL LOC12;
			NimStringDesc* LOC15;
			TY501032 LOC16;
			LOC12 = 0;
			LOC12 = isimportedtype_473219(typ);
			if (!!(LOC12)) goto LA13;
			LOC15 = 0;
			LOC15 = getforwardstructformat_473604(m);
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = structorunion_473590(typ);
			LOC16[1] = result;
			addf_170205(&(*m).s[(((NU8) 2))- 0], LOC15, LOC16, 2);
		}
		LA13: ;
		LOC17 = 0;
		LOC17 = &typ->Sup;
		LOC18 = 0;
		LOC18 = &result->Sup;
		idtableput_221115((&(*m).forwtypecache), LOC17, LOC18);
	}
	break;
	default:
	{
		NimStringDesc* LOC20;
		LOC20 = 0;
		LOC20 = rawNewString(reprEnum((*typ).kind, (&NTI214241))->Sup.len + 16);
appendString(LOC20, ((NimStringDesc*) &TMP3799));
appendString(LOC20, reprEnum((*typ).kind, (&NTI214241)));
appendChar(LOC20, 41);
		internalerror_187113(LOC20);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, pushtype_473547)(Tcgen469026* m, Ttype214828* typ) {
	(*m).typestack = (Ttypeseq214824*) incrSeqV2(&((*m).typestack)->Sup, sizeof(Ttype214828*));
	asgnRefNoCycle((void**) (&(*m).typestack->data[(*m).typestack->Sup.len]), typ);
	++(*m).typestack->Sup.len;
}

N_NIMCALL(NU8, mapsettype_473162)(Ttype214828* typ) {
	NU8 result;
	NI64 LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getsize_240124(typ);
	switch (((NI) (LOC1))) {
	case ((NI) 1):
	{
		result = ((NU8) 4);
	}
	break;
	case ((NI) 2):
	{
		result = ((NU8) 5);
	}
	break;
	case ((NI) 4):
	{
		result = ((NU8) 6);
	}
	break;
	case ((NI) 8):
	{
		result = ((NU8) 7);
	}
	break;
	default:
	{
		result = ((NU8) 17);
	}
	break;
	}
	return result;
}

N_NIMCALL(NU8, maptype_473166)(Ttype214828* typ) {
	NU8 result;
	result = 0;
	switch ((*typ).kind) {
	case ((NU8) 0):
	case ((NU8) 7):
	{
		result = ((NU8) 0);
	}
	break;
	case ((NU8) 1):
	{
		result = ((NU8) 2);
	}
	break;
	case ((NU8) 2):
	{
		result = ((NU8) 1);
	}
	break;
	case ((NU8) 19):
	{
		result = mapsettype_473162(typ);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 4):
	case ((NU8) 16):
	case ((NU8) 48):
	{
		result = ((NU8) 17);
	}
	break;
	case ((NU8) 17):
	case ((NU8) 18):
	{
		result = ((NU8) 19);
	}
	break;
	case ((NU8) 10):
	case ((NU8) 11):
	case ((NU8) 12):
	case ((NU8) 13):
	case ((NU8) 15):
	case ((NU8) 46):
	case ((NU8) 47):
	case ((NU8) 49):
	case ((NU8) 8):
	{
		Ttype214828* LOC8;
		LOC8 = 0;
		LOC8 = lastson_217377(typ);
		result = maptype_473166(LOC8);
	}
	break;
	case ((NU8) 14):
	{
		{
			NI64 LOC12;
			LOC12 = 0;
			LOC12 = firstord_240001(typ);
			if (!(LOC12 < IL64(0))) goto LA13;
			result = ((NU8) 6);
		}
		goto LA10;
		LA13: ;
		{
			NI64 LOC16;
			LOC16 = 0;
			LOC16 = getsize_240124(typ);
			switch (((NI) (LOC16))) {
			case ((NI) 1):
			{
				result = ((NU8) 13);
			}
			break;
			case ((NI) 2):
			{
				result = ((NU8) 14);
			}
			break;
			case ((NI) 4):
			{
				result = ((NU8) 6);
			}
			break;
			case ((NI) 8):
			{
				result = ((NU8) 7);
			}
			break;
			default:
			{
				internalerror_187113(((NimStringDesc*) &TMP3800));
			}
			break;
			}
		}
		LA10: ;
	}
	break;
	case ((NU8) 20):
	{
		result = maptype_473166((*typ).sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 21):
	case ((NU8) 23):
	case ((NU8) 22):
	{
		Ttype214828* base;
		Ttype214828* LOC24;
		LOC24 = 0;
		LOC24 = lastson_217377(typ);
		base = skiptypes_218113(LOC24, IL64(211106232576256));
		switch ((*base).kind) {
		case ((NU8) 27):
		case ((NU8) 4):
		case ((NU8) 16):
		case ((NU8) 48):
		{
			result = ((NU8) 18);
		}
		break;
		default:
		{
			result = ((NU8) 20);
		}
		break;
		}
	}
	break;
	case ((NU8) 26):
	{
		result = ((NU8) 20);
	}
	break;
	case ((NU8) 24):
	{
		result = ((NU8) 22);
	}
	break;
	case ((NU8) 25):
	{
		{
			if (!!(((*typ).callconv == ((NU8) 8)))) goto LA32;
			result = ((NU8) 23);
		}
		goto LA30;
		LA32: ;
		{
			result = ((NU8) 19);
		}
		LA30: ;
	}
	break;
	case ((NU8) 28):
	{
		result = ((NU8) 21);
	}
	break;
	case ((NU8) 29):
	{
		result = ((NU8) 24);
	}
	break;
	case ((NU8) 31) ... ((NU8) 44):
	{
		result = ((NU8) ((NI)(((NI) ((NI)(((NI) ((*typ).kind)) - ((NI) 31)))) + ((NI) 3))));
	}
	break;
	default:
	{
		internalerror_187113(((NimStringDesc*) &TMP3800));
	}
	break;
	}
	return result;
}

N_NIMCALL(NIM_BOOL, needscomplexassignment_473279)(Ttype214828* typ) {
	NIM_BOOL result;
	result = 0;
	result = containsgarbagecollectedref_240106(typ);
	return result;
}

static N_INLINE(NIM_BOOL, isobjlackingtypefield_473283)(Ttype214828* typ) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	NIM_BOOL LOC4;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*typ).kind == ((NU8) 17));
	if (!(LOC1)) goto LA2;
	LOC3 = 0;
	LOC4 = 0;
	LOC4 = (((*typ).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0);
	if (!(LOC4)) goto LA5;
	LOC4 = ((*typ).sons->data[((NI) 0)] == NIM_NIL);
	LA5: ;
	LOC3 = LOC4;
	if (LOC3) goto LA6;
	LOC3 = ispureobject_240127(typ);
	LA6: ;
	LOC1 = LOC3;
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NIM_BOOL, isinvalidreturntype_473318)(Ttype214828* rettype) {
	NIM_BOOL result;
{	result = 0;
	{
		if (!(rettype == NIM_NIL)) goto LA3;
		result = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		NU8 LOC6;
		LOC6 = 0;
		LOC6 = maptype_473166(rettype);
		switch (LOC6) {
		case ((NU8) 17):
		{
			Ttype214828* LOC8;
			LOC8 = 0;
			LOC8 = skiptypes_218113(rettype, IL64(211106232576256));
			result = !(((*LOC8).kind == ((NU8) 23) || (*LOC8).kind == ((NU8) 22) || (*LOC8).kind == ((NU8) 21)));
		}
		break;
		case ((NU8) 19):
		{
			Ttype214828* t;
			NIM_BOOL LOC16;
			NIM_BOOL LOC18;
			NIM_BOOL LOC20;
			t = skiptypes_218113(rettype, IL64(211106232576256));
			{
				NIM_BOOL LOC12;
				LOC12 = 0;
				LOC12 = isimportedcpptype_473246(rettype);
				if (LOC12) goto LA13;
				LOC12 = isimportedcpptype_473246(t);
				LA13: ;
				if (!LOC12) goto LA14;
				result = NIM_FALSE;
				goto BeforeRet;
			}
			LA14: ;
			LOC16 = 0;
			LOC16 = needscomplexassignment_473279(t);
			if (LOC16) goto LA17;
			LOC18 = 0;
			LOC18 = ((*t).kind == ((NU8) 17));
			if (!(LOC18)) goto LA19;
			LOC20 = 0;
			LOC20 = isobjlackingtypefield_473283(t);
			LOC18 = !(LOC20);
			LA19: ;
			LOC16 = LOC18;
			LA17: ;
			result = LOC16;
		}
		break;
		default:
		{
			result = NIM_FALSE;
		}
		break;
		}
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, iscompiletimeonly_248906)(Ttype214828* t) {
	NIM_BOOL result;
	result = 0;
	result = ((*t).kind == ((NU8) 8) || (*t).kind == ((NU8) 59));
	return result;
}

N_NIMCALL(NU8, paramstorageloc_473687)(Tsym214822* param) {
	NU8 result;
	result = 0;
	{
		Ttype214828* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_218113((*param).typ, 8388864);
		if (!!(((*LOC3).kind == ((NU8) 16) || (*LOC3).kind == ((NU8) 27)))) goto LA4;
		result = ((NU8) 2);
	}
	goto LA1;
	LA4: ;
	{
		result = ((NU8) 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, ccgintroducedptr_473376)(Tsym214822* s) {
	NIM_BOOL result;
	Ttype214828* pt;
{	result = 0;
	pt = skiptypes_218113((*s).typ, IL64(211106232576256));
	{
		if (!(((*pt).flags &(1U<<((NU)(((NU8) 13))&31U)))!=0)) goto LA3;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	goto LA1;
	LA3: ;
	{
		if (!(((*pt).flags &(1U<<((NU)(((NU8) 12))&31U)))!=0)) goto LA6;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	goto LA1;
	LA6: ;
	LA1: ;
	switch ((*pt).kind) {
	case ((NU8) 17):
	{
		{
			NIM_BOOL LOC11;
			NI64 LOC13;
			LOC11 = 0;
			LOC11 = (((*s).options &(1U<<((NU)(((NU8) 18))&31U)))!=0);
			if (LOC11) goto LA12;
			LOC13 = 0;
			LOC13 = getsize_240124(pt);
			LOC11 = (((NI64) ((NI)(floatsize_167616 * ((NI) 2)))) < LOC13);
			LA12: ;
			if (!LOC11) goto LA14;
			result = NIM_TRUE;
		}
		goto LA9;
		LA14: ;
		{
			NIM_BOOL LOC17;
			LOC17 = 0;
			LOC17 = (((*pt).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0);
			if (!(LOC17)) goto LA18;
			LOC17 = ((*pt).sons->data[((NI) 0)] == NIM_NIL);
			LA18: ;
			if (!LOC17) goto LA19;
			result = NIM_FALSE;
		}
		goto LA9;
		LA19: ;
		{
			result = NIM_TRUE;
		}
		LA9: ;
	}
	break;
	case ((NU8) 18):
	{
		NIM_BOOL LOC23;
		NI64 LOC24;
		LOC23 = 0;
		LOC24 = 0;
		LOC24 = getsize_240124(pt);
		LOC23 = (((NI64) ((NI)(floatsize_167616 * ((NI) 2)))) < LOC24);
		if (LOC23) goto LA25;
		LOC23 = (((*s).options &(1U<<((NU)(((NU8) 18))&31U)))!=0);
		LA25: ;
		result = LOC23;
	}
	break;
	default:
	{
		result = NIM_FALSE;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, gettypedescweak_473668)(Tcgen469026* m, Ttype214828* t, Intset211035* check) {
	Ropeobj169006* result;
	Ttype214828* etb;
	result = 0;
	etb = skiptypes_218113(t, IL64(211106232576256));
	switch ((*etb).kind) {
	case ((NU8) 17):
	case ((NU8) 18):
	{
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = isimportedcpptype_473246(etb);
			if (!(LOC4)) goto LA5;
			LOC4 = ((*t).kind == ((NU8) 11));
			LA5: ;
			if (!LOC4) goto LA6;
			result = gettypedescaux_473273(m, t, check);
		}
		goto LA2;
		LA6: ;
		{
			Ttype214828* x;
			x = getuniquetype_468640(etb);
			result = gettypeforward_473628(m, x);
			pushtype_473547(m, x);
		}
		LA2: ;
	}
	break;
	case ((NU8) 24):
	{
		Ttype214828* x;
		Ropeobj169006* LOC10;
		x = getuniquetype_468640(etb);
		LOC10 = 0;
		LOC10 = gettypeforward_473628(m, x);
		result = HEX26_169447(LOC10, ((NimStringDesc*) &TMP3794));
		pushtype_473547(m, x);
	}
	break;
	default:
	{
		result = gettypedescaux_473273(m, t, check);
	}
	break;
	}
	return result;
}

N_NIMCALL(NU8, mapreturntype_473206)(Ttype214828* typ) {
	NU8 result;
	result = 0;
	{
		Ttype214828* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_218113(typ, IL64(211106232576256));
		if (!((*LOC3).kind == ((NU8) 16))) goto LA4;
		result = ((NU8) 20);
	}
	goto LA1;
	LA4: ;
	{
		result = maptype_473166(typ);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genprocparams_473704)(Tcgen469026* m, Ttype214828* t, Ropeobj169006** rettype, Ropeobj169006** params, Intset211035* check, NIM_BOOL declareenvironment, NIM_BOOL weakdep) {
	unsureAsgnRef((void**) (&(*params)), NIM_NIL);
	{
		NIM_BOOL LOC3;
		TY473064 LOC7;
		LOC3 = 0;
		LOC3 = ((*t).sons->data[((NI) 0)] == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = isinvalidreturntype_473318((*t).sons->data[((NI) 0)]);
		LA4: ;
		if (!LOC3) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		unsureAsgnRef((void**) (&(*rettype)), HEX25_169905(((NimStringDesc*) &TMP3767), LOC7, 0));
	}
	goto LA1;
	LA5: ;
	{
		unsureAsgnRef((void**) (&(*rettype)), gettypedescaux_473273(m, (*t).sons->data[((NI) 0)], check));
	}
	LA1: ;
	{
		NI i_473741;
		NI HEX3Atmp_473942;
		NI LOC10;
		NI res_473945;
		i_473741 = 0;
		HEX3Atmp_473942 = 0;
		LOC10 = 0;
		LOC10 = sonslen_217351((*t).n);
		HEX3Atmp_473942 = (NI)(LOC10 - ((NI) 1));
		res_473945 = ((NI) 1);
		{
			while (1) {
				if (!(res_473945 <= HEX3Atmp_473942)) goto LA12;
				i_473741 = res_473945;
				{
					Tsym214822* param;
					Ropeobj169006* LOC29;
					NU8 LOC30;
					TY473064 LOC45;
					Ropeobj169006* LOC46;
					Ttype214828* arr;
					NI j;
					{
						if (!!(((*(*(*t).n).kindU.S6.sons->data[i_473741]).kind == ((NU8) 3)))) goto LA16;
						internalerror_187100((*(*t).n).info, ((NimStringDesc*) &TMP3801));
					}
					LA16: ;
					param = (*(*(*t).n).kindU.S6.sons->data[i_473741]).kindU.S4.sym;
					{
						NIM_BOOL LOC20;
						LOC20 = 0;
						LOC20 = iscompiletimeonly_248906((*param).typ);
						if (!LOC20) goto LA21;
						goto LA13;
					}
					LA21: ;
					{
						TY473064 LOC27;
						Ropeobj169006* LOC28;
						if (!!(((*params) == NIM_NIL))) goto LA25;
						memset((void*)LOC27, 0, sizeof(LOC27));
						LOC28 = 0;
						LOC28 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC27, 0);
						add_169482(params, LOC28);
					}
					LA25: ;
					LOC29 = 0;
					LOC29 = manglename_472977(param);
					LOC30 = 0;
					LOC30 = paramstorageloc_473687(param);
					fillloc_472282((&(*param).loc), ((NU8) 4), (*param).typ, LOC29, LOC30);
					{
						NIM_BOOL LOC33;
						Ropeobj169006* LOC36;
						TY473064 LOC37;
						Ropeobj169006* LOC38;
						LOC33 = 0;
						LOC33 = ccgintroducedptr_473376(param);
						if (!LOC33) goto LA34;
						LOC36 = 0;
						LOC36 = gettypedescweak_473668(m, (*param).typ, check);
						add_169482(params, LOC36);
						memset((void*)LOC37, 0, sizeof(LOC37));
						LOC38 = 0;
						LOC38 = HEX25_169905(((NimStringDesc*) &TMP3794), LOC37, 0);
						add_169482(params, LOC38);
						(*param).loc.flags |= ((NU16)1)<<((((NU8) 0))%(sizeof(NU16)*8));
						(*param).loc.s = ((NU8) 0);
					}
					goto LA31;
					LA34: ;
					{
						Ropeobj169006* LOC42;
						if (!weakdep) goto LA40;
						LOC42 = 0;
						LOC42 = gettypedescweak_473668(m, (*param).typ, check);
						add_169482(params, LOC42);
					}
					goto LA31;
					LA40: ;
					{
						Ropeobj169006* LOC44;
						LOC44 = 0;
						LOC44 = gettypedescaux_473273(m, (*param).typ, check);
						add_169482(params, LOC44);
					}
					LA31: ;
					memset((void*)LOC45, 0, sizeof(LOC45));
					LOC46 = 0;
					LOC46 = HEX25_169905(((NimStringDesc*) &TMP3803), LOC45, 0);
					add_169482(params, LOC46);
					add_169482(params, (*param).loc.r);
					arr = (*param).typ;
					{
						if (!((*arr).kind == ((NU8) 23))) goto LA49;
						arr = (*arr).sons->data[((NI) 0)];
					}
					LA49: ;
					j = ((NI) 0);
					{
						while (1) {
							TY501032 LOC57;
							if (!((*arr).kind == ((NU8) 27) || (*arr).kind == ((NU8) 48))) goto LA52;
							{
								if (!((*(*param).typ).kind == ((NU8) 23))) goto LA55;
								(*param).loc.s = ((NU8) 0);
							}
							LA55: ;
							memset((void*)LOC57, 0, sizeof(LOC57));
							LOC57[0] = (*param).loc.r;
							LOC57[1] = rope_169401(((NI64) (j)));
							addf_170205(params, ((NimStringDesc*) &TMP3804), LOC57, 2);
							j += ((NI) 1);
							arr = (*arr).sons->data[((NI) 0)];
						} LA52: ;
					}
				} LA13: ;
				res_473945 += ((NI) 1);
			} LA12: ;
		}
	}
	{
		NIM_BOOL LOC60;
		Ttype214828* arr;
		TY473064 LOC76;
		LOC60 = 0;
		LOC60 = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
		if (!(LOC60)) goto LA61;
		LOC60 = isinvalidreturntype_473318((*t).sons->data[((NI) 0)]);
		LA61: ;
		if (!LOC60) goto LA62;
		arr = (*t).sons->data[((NI) 0)];
		{
			if (!!(((*params) == NIM_NIL))) goto LA66;
			add_169487(params, ((NimStringDesc*) &TMP3802));
		}
		LA66: ;
		{
			NU8 LOC70;
			Ropeobj169006* LOC73;
			LOC70 = 0;
			LOC70 = mapreturntype_473206((*t).sons->data[((NI) 0)]);
			if (!!((LOC70 == ((NU8) 17)))) goto LA71;
			LOC73 = 0;
			LOC73 = gettypedescweak_473668(m, arr, check);
			add_169482(params, LOC73);
			add_169487(params, ((NimStringDesc*) &TMP3794));
		}
		goto LA68;
		LA71: ;
		{
			Ropeobj169006* LOC75;
			LOC75 = 0;
			LOC75 = gettypedescaux_473273(m, arr, check);
			add_169482(params, LOC75);
		}
		LA68: ;
		memset((void*)LOC76, 0, sizeof(LOC76));
		addf_170205(params, ((NimStringDesc*) &TMP3805), LOC76, 0);
	}
	LA62: ;
	{
		NIM_BOOL LOC79;
		LOC79 = 0;
		LOC79 = ((*t).callconv == ((NU8) 8));
		if (!(LOC79)) goto LA80;
		LOC79 = declareenvironment;
		LA80: ;
		if (!LOC79) goto LA81;
		{
			if (!!(((*params) == NIM_NIL))) goto LA85;
			add_169487(params, ((NimStringDesc*) &TMP3802));
		}
		LA85: ;
		add_169487(params, ((NimStringDesc*) &TMP3806));
	}
	LA81: ;
	{
		if (!(((*t).flags &(1U<<((NU)(((NU8) 0))&31U)))!=0)) goto LA89;
		{
			if (!!(((*params) == NIM_NIL))) goto LA93;
			add_169487(params, ((NimStringDesc*) &TMP3802));
		}
		LA93: ;
		add_169487(params, ((NimStringDesc*) &TMP3807));
	}
	LA89: ;
	{
		if (!((*params) == NIM_NIL)) goto LA97;
		add_169487(params, ((NimStringDesc*) &TMP3808));
	}
	goto LA95;
	LA97: ;
	{
		add_169487(params, ((NimStringDesc*) &TMP3809));
	}
	LA95: ;
	unsureAsgnRef((void**) (&(*params)), HEX26_169452(((NimStringDesc*) &TMP3810), (*params)));
}

N_NIMCALL(void, appcg_472632)(Tcgen469026* m, Ropeobj169006** c, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0) {
	Ropeobj169006* LOC1;
	LOC1 = 0;
	LOC1 = ropecg_472407(m, frmt, args, argsLen0);
	add_169482(c, LOC1);
}

N_NIMCALL(NIM_BOOL, scancppgenericslot_474416)(NimStringDesc* pat, NI* cursor, NI* outidx, NI* outstars) {
	NIM_BOOL result;
	NI begin;
{	result = 0;
	(*cursor) += ((NI) 1);
	begin = (*cursor);
	{
		while (1) {
			if (!((NU8)(pat->data[(*cursor)]) == (NU8)(42))) goto LA2;
			(*cursor) += ((NI) 1);
		} LA2: ;
	}
	{
		if (!(((NU8)(pat->data[(*cursor)])) >= ((NU8)(48)) && ((NU8)(pat->data[(*cursor)])) <= ((NU8)(57)))) goto LA5;
		(*outidx) = ((NI) ((NI)(((NI) (((NU8)(pat->data[(*cursor)])))) - ((NI) 48))));
		(*outstars) = (NI)((*cursor) - begin);
		(*cursor) += ((NI) 1);
		result = NIM_TRUE;
		goto BeforeRet;
	}
	goto LA3;
	LA5: ;
	{
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype214828*, resolvestarsincpptype_474480)(Ttype214828* typ, NI idx, NI stars) {
	Ttype214828* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_217339(typ);
		if (!(LOC3 <= idx)) goto LA4;
		internalerror_187113(((NimStringDesc*) &TMP3828));
	}
	LA4: ;
	result = (*typ).sons->data[idx];
	{
		NI i_474495;
		NI res_474520;
		i_474495 = 0;
		res_474520 = ((NI) 1);
		{
			while (1) {
				if (!(res_474520 <= stars)) goto LA8;
				i_474495 = res_474520;
				{
					NIM_BOOL LOC11;
					NI LOC13;
					LOC11 = 0;
					LOC11 = !((result == NIM_NIL));
					if (!(LOC11)) goto LA12;
					LOC13 = 0;
					LOC13 = len_217339(result);
					LOC11 = (((NI) 0) < LOC13);
					LA12: ;
					if (!LOC11) goto LA14;
					{
						if (!((*result).kind == ((NU8) 11))) goto LA18;
						result = (*result).sons->data[((NI) 1)];
					}
					goto LA16;
					LA18: ;
					{
						result = elemtype_240383(result);
					}
					LA16: ;
				}
				LA14: ;
				res_474520 += ((NI) 1);
			} LA8: ;
		}
	}
	return result;
}

N_NIMCALL(NimStringDesc*, manglefield_472973)(Tident189012* name) {
	NimStringDesc* result;
	result = 0;
	result = mangle_468847((*name).s);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = iskeyword_472960(name);
		if (!LOC3) goto LA4;
		result->data[((NI) 0)] = nsuToUpperChar(result->data[((NI) 0)]);
	}
	LA4: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, manglerecfieldname_473950)(Tsym214822* field, Ttype214828* rectype) {
	Ropeobj169006* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*rectype).sym == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((96 & (*(*rectype).sym).flags) == 0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = (*field).loc.r;
	}
	goto LA1;
	LA5: ;
	{
		NimStringDesc* LOC8;
		LOC8 = 0;
		LOC8 = manglefield_472973((*field).name);
		result = rope_169277(LOC8);
	}
	LA1: ;
	{
		if (!(result == NIM_NIL)) goto LA11;
		internalerror_187100((*field).info, ((NimStringDesc*) &TMP3842));
	}
	LA11: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, genrecordfieldsaux_474010)(Tcgen469026* m, Tnode214790* n, Ropeobj169006* accessexpr, Ttype214828* rectype, Intset211035* check) {
	Ropeobj169006* result;
	Ropeobj169006* ae;
	Ropeobj169006* uname;
	Ropeobj169006* sname;
	Ropeobj169006* a;
	Tnode214790* k;
	Tsym214822* field;
{	result = 0;
	ae = 0;
	uname = 0;
	sname = 0;
	a = 0;
	k = 0;
	field = 0;
	result = NIM_NIL;
	switch ((*n).kind) {
	case ((NU8) 138):
	{
		{
			NI i_474036;
			NI HEX3Atmp_474209;
			NI LOC3;
			NI res_474212;
			i_474036 = 0;
			HEX3Atmp_474209 = 0;
			LOC3 = 0;
			LOC3 = sonslen_217351(n);
			HEX3Atmp_474209 = (NI)(LOC3 - ((NI) 1));
			res_474212 = ((NI) 0);
			{
				while (1) {
					Ropeobj169006* LOC6;
					if (!(res_474212 <= HEX3Atmp_474209)) goto LA5;
					i_474036 = res_474212;
					LOC6 = 0;
					LOC6 = genrecordfieldsaux_474010(m, (*n).kindU.S6.sons->data[i_474036], accessexpr, rectype, check);
					add_169482(&result, LOC6);
					res_474212 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 139):
	{
		Ropeobj169006* LOC12;
		NimStringDesc* LOC13;
		NimStringDesc* LOC14;
		Ropeobj169006* unionbody;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA10;
			internalerror_187100((*n).info, ((NimStringDesc*) &TMP3835));
		}
		LA10: ;
		LOC12 = 0;
		LOC12 = genrecordfieldsaux_474010(m, (*n).kindU.S6.sons->data[((NI) 0)], accessexpr, rectype, check);
		add_169482(&result, LOC12);
		LOC13 = 0;
		LOC14 = 0;
		LOC14 = mangle_468847((*(*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
		LOC13 = rawNewString(LOC14->Sup.len + 1);
appendString(LOC13, LOC14);
appendChar(LOC13, 85);
		uname = rope_169277(LOC13);
		{
			TY501032 LOC19;
			if (!!((accessexpr == NIM_NIL))) goto LA17;
			memset((void*)LOC19, 0, sizeof(LOC19));
			LOC19[0] = accessexpr;
			LOC19[1] = uname;
			ae = HEX25_169905(((NimStringDesc*) &TMP3836), LOC19, 2);
		}
		goto LA15;
		LA17: ;
		{
			ae = uname;
		}
		LA15: ;
		unionbody = NIM_NIL;
		{
			NI i_474080;
			NI HEX3Atmp_474218;
			NI LOC22;
			NI res_474221;
			i_474080 = 0;
			HEX3Atmp_474218 = 0;
			LOC22 = 0;
			LOC22 = sonslen_217351(n);
			HEX3Atmp_474218 = (NI)(LOC22 - ((NI) 1));
			res_474221 = ((NI) 1);
			{
				while (1) {
					if (!(res_474221 <= HEX3Atmp_474218)) goto LA24;
					i_474080 = res_474221;
					switch ((*(*n).kindU.S6.sons->data[i_474080]).kind) {
					case ((NU8) 85):
					case ((NU8) 88):
					{
						k = lastson_217364((*n).kindU.S6.sons->data[i_474080]);
						{
							Ropeobj169006* LOC30;
							TY501032 LOC31;
							Ropeobj169006* LOC32;
							if (!!(((*k).kind == ((NU8) 3)))) goto LA28;
							LOC30 = 0;
							LOC30 = rope_169401(((NI64) (i_474080)));
							sname = HEX26_169452(((NimStringDesc*) &TMP3837), LOC30);
							memset((void*)LOC31, 0, sizeof(LOC31));
							LOC31[0] = ae;
							LOC31[1] = sname;
							LOC32 = 0;
							LOC32 = HEX25_169905(((NimStringDesc*) &TMP3836), LOC31, 2);
							a = genrecordfieldsaux_474010(m, k, LOC32, rectype, check);
							{
								TY169507 LOC37;
								if (!!((a == NIM_NIL))) goto LA35;
								add_169487(&unionbody, ((NimStringDesc*) &TMP3838));
								add_169482(&unionbody, a);
								memset((void*)LOC37, 0, sizeof(LOC37));
								LOC37[0] = sname;
								addf_170205(&unionbody, ((NimStringDesc*) &TMP3839), LOC37, 1);
							}
							LA35: ;
						}
						goto LA26;
						LA28: ;
						{
							Ropeobj169006* LOC39;
							LOC39 = 0;
							LOC39 = genrecordfieldsaux_474010(m, k, ae, rectype, check);
							add_169482(&unionbody, LOC39);
						}
						LA26: ;
					}
					break;
					default:
					{
						internalerror_187113(((NimStringDesc*) &TMP3840));
					}
					break;
					}
					res_474221 += ((NI) 1);
				} LA24: ;
			}
		}
		{
			TY501032 LOC45;
			if (!!((unionbody == NIM_NIL))) goto LA43;
			memset((void*)LOC45, 0, sizeof(LOC45));
			LOC45[0] = unionbody;
			LOC45[1] = uname;
			addf_170205(&result, ((NimStringDesc*) &TMP3841), LOC45, 2);
		}
		LA43: ;
	}
	break;
	case ((NU8) 3):
	{
		field = (*n).kindU.S4.sym;
		{
			if (!((*(*field).typ).kind == ((NU8) 3))) goto LA49;
			goto BeforeRet;
		}
		LA49: ;
		sname = manglerecfieldname_473950(field, rectype);
		{
			TY501032 LOC55;
			if (!!((accessexpr == NIM_NIL))) goto LA53;
			memset((void*)LOC55, 0, sizeof(LOC55));
			LOC55[0] = accessexpr;
			LOC55[1] = sname;
			ae = HEX25_169905(((NimStringDesc*) &TMP3836), LOC55, 2);
		}
		goto LA51;
		LA53: ;
		{
			ae = sname;
		}
		LA51: ;
		fillloc_472282((&(*field).loc), ((NU8) 5), (*field).typ, ae, ((NU8) 0));
		{
			NIM_BOOL LOC59;
			Ttype214828* fieldtype;
			LOC59 = 0;
			LOC59 = isimportedcpptype_473246(rectype);
			if (!!(LOC59)) goto LA60;
			fieldtype = skiptypes_218113((*field).loc.t, IL64(211106232576256));
			{
				NIM_BOOL LOC64;
				TY501032 LOC68;
				Ttype214828* LOC69;
				LOC64 = 0;
				LOC64 = ((*fieldtype).kind == ((NU8) 16));
				if (!(LOC64)) goto LA65;
				LOC64 = (((*fieldtype).flags &(1U<<((NU)(((NU8) 0))&31U)))!=0);
				LA65: ;
				if (!LOC64) goto LA66;
				memset((void*)LOC68, 0, sizeof(LOC68));
				LOC69 = 0;
				LOC69 = elemtype_240383(fieldtype);
				LOC68[0] = gettypedescaux_473273(m, LOC69, check);
				LOC68[1] = sname;
				addf_170205(&result, ((NimStringDesc*) &TMP3843), LOC68, 2);
			}
			goto LA62;
			LA66: ;
			{
				TY501032 LOC73;
				if (!((*fieldtype).kind == ((NU8) 24))) goto LA71;
				memset((void*)LOC73, 0, sizeof(LOC73));
				LOC73[0] = gettypedescweak_473668(m, (*field).loc.t, check);
				LOC73[1] = sname;
				addf_170205(&result, ((NimStringDesc*) &TMP3795), LOC73, 2);
			}
			goto LA62;
			LA71: ;
			{
				TY474655 LOC77;
				NimStringDesc* LOC78;
				if (!!(((*field).kindU.S4.bitsize == ((NI) 0)))) goto LA75;
				memset((void*)LOC77, 0, sizeof(LOC77));
				LOC77[0] = gettypedescaux_473273(m, (*field).loc.t, check);
				LOC77[1] = sname;
				LOC78 = 0;
				LOC78 = nimIntToStr((*field).kindU.S4.bitsize);
				LOC77[2] = rope_169277(LOC78);
				addf_170205(&result, ((NimStringDesc*) &TMP3844), LOC77, 3);
			}
			goto LA62;
			LA75: ;
			{
				TY501032 LOC80;
				memset((void*)LOC80, 0, sizeof(LOC80));
				LOC80[0] = gettypedescaux_473273(m, (*field).loc.t, check);
				LOC80[1] = sname;
				addf_170205(&result, ((NimStringDesc*) &TMP3795), LOC80, 2);
			}
			LA62: ;
		}
		LA60: ;
	}
	break;
	default:
	{
		internalerror_187100((*n).info, ((NimStringDesc*) &TMP3845));
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, getrecordfields_474225)(Tcgen469026* m, Ttype214828* typ, Intset211035* check) {
	Ropeobj169006* result;
	result = 0;
	result = genrecordfieldsaux_474010(m, (*typ).n, NIM_NIL, typ, check);
	return result;
}

N_NIMCALL(Ropeobj169006*, getrecorddesc_474232)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name, Intset211035* check) {
	Ropeobj169006* result;
	NIM_BOOL hasfield;
	Ropeobj169006* attribute;
	TY474655 LOC6;
	Ropeobj169006* desc;
	NimStringDesc* LOC44;
	result = 0;
	hasfield = NIM_FALSE;
	{
		if (!(((*typ).flags &(1U<<((NU)(((NU8) 21))&31U)))!=0)) goto LA3;
		attribute = rope_169277(Cc_194413[(ccompiler_194431)- 1].Field19);
	}
	goto LA1;
	LA3: ;
	{
		attribute = NIM_NIL;
	}
	LA1: ;
	memset((void*)LOC6, 0, sizeof(LOC6));
	LOC6[0] = structorunion_473590(typ);
	LOC6[1] = name;
	LOC6[2] = attribute;
	result = ropecg_472407(m, Cc_194413[(ccompiler_194431)- 1].Field18, LOC6, 3);
	{
		if (!((*typ).kind == ((NU8) 17))) goto LA9;
		{
			if (!((*typ).sons->data[((NI) 0)] == NIM_NIL)) goto LA13;
			{
				NIM_BOOL LOC17;
				NIM_BOOL LOC18;
				TY473064 LOC23;
				LOC17 = 0;
				LOC18 = 0;
				LOC18 = !(((*typ).sym == NIM_NIL));
				if (!(LOC18)) goto LA19;
				LOC18 = (((*(*typ).sym).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0);
				LA19: ;
				LOC17 = LOC18;
				if (LOC17) goto LA20;
				LOC17 = (((*typ).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0);
				LA20: ;
				if (!LOC17) goto LA21;
				memset((void*)LOC23, 0, sizeof(LOC23));
				appcg_472632(m, &result, ((NimStringDesc*) &TMP3831), LOC23, 0);
			}
			goto LA15;
			LA21: ;
			{
				TY501032 LOC25;
				memset((void*)LOC25, 0, sizeof(LOC25));
				LOC25[0] = name;
				LOC25[1] = attribute;
				appcg_472632(m, &result, ((NimStringDesc*) &TMP3832), LOC25, 2);
				hasfield = NIM_TRUE;
			}
			LA15: ;
		}
		goto LA11;
		LA13: ;
		{
			NIM_BOOL LOC27;
			TY169507 LOC31;
			LOC27 = 0;
			LOC27 = (gcmd_160123 == ((NU8) 2));
			if (LOC27) goto LA28;
			LOC27 = (((*(*m).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
			LA28: ;
			if (!LOC27) goto LA29;
			memset((void*)LOC31, 0, sizeof(LOC31));
			LOC31[0] = gettypedescaux_473273(m, (*typ).sons->data[((NI) 0)], check);
			appcg_472632(m, &result, ((NimStringDesc*) &TMP3833), LOC31, 1);
			hasfield = NIM_TRUE;
		}
		goto LA11;
		LA29: ;
		{
			TY169507 LOC33;
			memset((void*)LOC33, 0, sizeof(LOC33));
			LOC33[0] = gettypedescaux_473273(m, (*typ).sons->data[((NI) 0)], check);
			appcg_472632(m, &result, ((NimStringDesc*) &TMP3834), LOC33, 1);
			hasfield = NIM_TRUE;
		}
		LA11: ;
	}
	goto LA7;
	LA9: ;
	{
		TY169507 LOC35;
		memset((void*)LOC35, 0, sizeof(LOC35));
		LOC35[0] = name;
		addf_170205(&result, ((NimStringDesc*) &TMP3831), LOC35, 1);
	}
	LA7: ;
	desc = getrecordfields_474225(m, typ, check);
	{
		NIM_BOOL LOC38;
		TY473064 LOC42;
		LOC38 = 0;
		LOC38 = (desc == NIM_NIL);
		if (!(LOC38)) goto LA39;
		LOC38 = !(hasfield);
		LA39: ;
		if (!LOC38) goto LA40;
		memset((void*)LOC42, 0, sizeof(LOC42));
		addf_170205(&result, ((NimStringDesc*) &TMP3846), LOC42, 0);
	}
	goto LA36;
	LA40: ;
	{
		add_169482(&result, desc);
	}
	LA36: ;
	LOC44 = 0;
	LOC44 = rawNewString(tnl_167618->Sup.len + 2);
appendString(LOC44, ((NimStringDesc*) &TMP3847));
appendString(LOC44, tnl_167618);
	add_169487(&result, LOC44);
	return result;
}

N_NIMCALL(Ropeobj169006*, gettupledesc_474366)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name, Intset211035* check) {
	Ropeobj169006* result;
	TY501032 LOC1;
	Ropeobj169006* desc;
	NimStringDesc* LOC13;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = structorunion_473590(typ);
	LOC1[1] = name;
	result = HEX25_169905(((NimStringDesc*) &TMP3848), LOC1, 2);
	desc = NIM_NIL;
	{
		NI i_474388;
		NI HEX3Atmp_474409;
		NI LOC3;
		NI res_474412;
		i_474388 = 0;
		HEX3Atmp_474409 = 0;
		LOC3 = 0;
		LOC3 = sonslen_217327(typ);
		HEX3Atmp_474409 = (NI)(LOC3 - ((NI) 1));
		res_474412 = ((NI) 0);
		{
			while (1) {
				TY501032 LOC6;
				if (!(res_474412 <= HEX3Atmp_474409)) goto LA5;
				i_474388 = res_474412;
				memset((void*)LOC6, 0, sizeof(LOC6));
				LOC6[0] = gettypedescaux_473273(m, (*typ).sons->data[i_474388], check);
				LOC6[1] = rope_169401(((NI64) (i_474388)));
				addf_170205(&desc, ((NimStringDesc*) &TMP3849), LOC6, 2);
				res_474412 += ((NI) 1);
			} LA5: ;
		}
	}
	{
		NimStringDesc* LOC11;
		if (!(desc == NIM_NIL)) goto LA9;
		LOC11 = 0;
		LOC11 = rawNewString(tnl_167618->Sup.len + 11);
appendString(LOC11, ((NimStringDesc*) &TMP3850));
appendString(LOC11, tnl_167618);
		add_169487(&result, LOC11);
	}
	goto LA7;
	LA9: ;
	{
		add_169482(&result, desc);
	}
	LA7: ;
	LOC13 = 0;
	LOC13 = rawNewString(tnl_167618->Sup.len + 2);
appendString(LOC13, ((NimStringDesc*) &TMP3847));
appendString(LOC13, tnl_167618);
	add_169487(&result, LOC13);
	return result;
}

N_NIMCALL(Ropeobj169006*, gettypedescaux_473273)(Tcgen469026* m, Ttype214828* typ, Intset211035* check) {
	Ropeobj169006* result;
	Ttype214828* t;
{	result = 0;
	t = getuniquetype_468640(typ);
	{
		if (!(t == NIM_NIL)) goto LA3;
		internalerror_187113(((NimStringDesc*) &TMP3766));
	}
	LA3: ;
	{
		if (!!(((*t).sym == NIM_NIL))) goto LA7;
		useheader_472349(m, (*t).sym);
	}
	LA7: ;
	result = gettypepre_473561(m, t);
	{
		if (!!((result == NIM_NIL))) goto LA11;
		goto BeforeRet;
	}
	LA11: ;
	{
		NIM_BOOL LOC15;
		NimStringDesc* LOC24;
		NimStringDesc* LOC25;
		LOC15 = 0;
		LOC15 = containsorincl_211862(check, (*t).Sup.id);
		if (!LOC15) goto LA16;
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = isimportedcpptype_473246(typ);
			if (LOC20) goto LA21;
			LOC20 = isimportedcpptype_473246(t);
			LA21: ;
			if (!LOC20) goto LA22;
			goto BeforeRet;
		}
		LA22: ;
		LOC24 = 0;
		LOC25 = 0;
		LOC25 = typetostring_240017(typ, ((NU8) 0));
		LOC24 = rawNewString(LOC25->Sup.len + 28);
appendString(LOC24, ((NimStringDesc*) &TMP3792));
appendString(LOC24, LOC25);
		internalerror_187113(LOC24);
	}
	LA16: ;
	switch ((*t).kind) {
	case ((NU8) 22):
	case ((NU8) 21):
	case ((NU8) 23):
	{
		NimStringDesc* star;
		Ttype214828* et;
		Ttype214828* etb;
		{
			NIM_BOOL LOC29;
			NIM_BOOL LOC30;
			NIM_BOOL LOC33;
			LOC29 = 0;
			LOC30 = 0;
			LOC30 = ((*t).kind == ((NU8) 23));
			if (!(LOC30)) goto LA31;
			LOC30 = !((((*typ).flags &(1U<<((NU)(((NU8) 18))&31U)))!=0));
			LA31: ;
			LOC29 = LOC30;
			if (!(LOC29)) goto LA32;
			LOC33 = 0;
			LOC33 = (gcmd_160123 == ((NU8) 2));
			if (LOC33) goto LA34;
			LOC33 = (((*(*m).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
			LA34: ;
			LOC29 = LOC33;
			LA32: ;
			if (!LOC29) goto LA35;
			star = copyString(((NimStringDesc*) &TMP3793));
		}
		goto LA27;
		LA35: ;
		{
			star = copyString(((NimStringDesc*) &TMP3794));
		}
		LA27: ;
		et = lastson_217377(t);
		etb = skiptypes_218113(et, IL64(211106232576256));
		{
			if (!((*etb).kind == ((NU8) 4) || (*etb).kind == ((NU8) 16) || (*etb).kind == ((NU8) 27) || (*etb).kind == ((NU8) 48))) goto LA40;
			et = elemtype_240383(etb);
			etb = skiptypes_218113(et, IL64(211106232576256));
			star->data[((NI) 0)] = 42;
		}
		LA40: ;
		switch ((*etb).kind) {
		case ((NU8) 17):
		case ((NU8) 18):
		{
			{
				NIM_BOOL LOC45;
				Ropeobj169006* LOC49;
				LOC45 = 0;
				LOC45 = isimportedcpptype_473246(etb);
				if (!(LOC45)) goto LA46;
				LOC45 = ((*et).kind == ((NU8) 11));
				LA46: ;
				if (!LOC45) goto LA47;
				LOC49 = 0;
				LOC49 = gettypedescaux_473273(m, et, check);
				result = HEX26_169447(LOC49, star);
			}
			goto LA43;
			LA47: ;
			{
				Ttype214828* x;
				Ropeobj169006* name;
				Tidobj189006* LOC51;
				TNimObject* LOC52;
				x = getuniquetype_468640(etb);
				name = gettypeforward_473628(m, x);
				result = HEX26_169447(name, star);
				LOC51 = 0;
				LOC51 = &t->Sup;
				LOC52 = 0;
				LOC52 = &result->Sup;
				idtableput_221115((&(*m).typecache), LOC51, LOC52);
				pushtype_473547(m, x);
			}
			LA43: ;
		}
		break;
		case ((NU8) 24):
		{
			Ttype214828* x;
			Ropeobj169006* name;
			Ropeobj169006* LOC54;
			Tidobj189006* LOC55;
			TNimObject* LOC56;
			x = getuniquetype_468640(etb);
			name = gettypeforward_473628(m, x);
			LOC54 = 0;
			LOC54 = HEX26_169447(name, ((NimStringDesc*) &TMP3794));
			result = HEX26_169447(LOC54, star);
			LOC55 = 0;
			LOC55 = &t->Sup;
			LOC56 = 0;
			LOC56 = &result->Sup;
			idtableput_221115((&(*m).typecache), LOC55, LOC56);
			pushtype_473547(m, x);
		}
		break;
		default:
		{
			Ropeobj169006* LOC58;
			Tidobj189006* LOC59;
			TNimObject* LOC60;
			LOC58 = 0;
			LOC58 = gettypedescaux_473273(m, et, check);
			result = HEX26_169447(LOC58, star);
			LOC59 = 0;
			LOC59 = &t->Sup;
			LOC60 = 0;
			LOC60 = &result->Sup;
			idtableput_221115((&(*m).typecache), LOC59, LOC60);
		}
		break;
		}
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		Ropeobj169006* LOC62;
		Tidobj189006* LOC63;
		TNimObject* LOC64;
		LOC62 = 0;
		LOC62 = gettypedescaux_473273(m, (*t).sons->data[((NI) 0)], check);
		result = HEX26_169447(LOC62, ((NimStringDesc*) &TMP3794));
		LOC63 = 0;
		LOC63 = &t->Sup;
		LOC64 = 0;
		LOC64 = &result->Sup;
		idtableput_221115((&(*m).typecache), LOC63, LOC64);
	}
	break;
	case ((NU8) 25):
	{
		Tidobj189006* LOC66;
		TNimObject* LOC67;
		Ropeobj169006* rettype;
		Ropeobj169006* desc;
		result = gettypename_473086(t);
		LOC66 = 0;
		LOC66 = &t->Sup;
		LOC67 = 0;
		LOC67 = &result->Sup;
		idtableput_221115((&(*m).typecache), LOC66, LOC67);
		rettype = 0;
		desc = 0;
		genprocparams_473704(m, t, &rettype, &desc, check, NIM_TRUE, NIM_TRUE);
		{
			NIM_BOOL LOC70;
			LOC70 = 0;
			LOC70 = isimportedtype_473219(t);
			if (!!(LOC70)) goto LA71;
			{
				TY474652 LOC77;
				if (!!(((*t).callconv == ((NU8) 8)))) goto LA75;
				memset((void*)LOC77, 0, sizeof(LOC77));
				LOC77[0] = rope_169277(Callingconvtostr_473355[((*t).callconv)- 0]);
				LOC77[1] = rettype;
				LOC77[2] = result;
				LOC77[3] = desc;
				addf_170205(&(*m).s[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3811), LOC77, 4);
			}
			goto LA73;
			LA75: ;
			{
				TY474655 LOC79;
				memset((void*)LOC79, 0, sizeof(LOC79));
				LOC79[0] = result;
				LOC79[1] = rettype;
				LOC79[2] = desc;
				addf_170205(&(*m).s[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3822), LOC79, 3);
			}
			LA73: ;
		}
		LA71: ;
	}
	break;
	case ((NU8) 24):
	{
		Tidobj189006* LOC94;
		Ropeobj169006* LOC95;
		TNimObject* LOC96;
		result = cachegettype_473361((*m).forwtypecache, t);
		{
			Tidobj189006* LOC92;
			TNimObject* LOC93;
			if (!(result == NIM_NIL)) goto LA83;
			result = gettypename_473086(t);
			{
				NIM_BOOL LOC87;
				NimStringDesc* LOC90;
				TY501032 LOC91;
				LOC87 = 0;
				LOC87 = isimportedtype_473219(t);
				if (!!(LOC87)) goto LA88;
				LOC90 = 0;
				LOC90 = getforwardstructformat_473604(m);
				memset((void*)LOC91, 0, sizeof(LOC91));
				LOC91[0] = structorunion_473590(t);
				LOC91[1] = result;
				addf_170205(&(*m).s[(((NU8) 2))- 0], LOC90, LOC91, 2);
			}
			LA88: ;
			LOC92 = 0;
			LOC92 = &t->Sup;
			LOC93 = 0;
			LOC93 = &result->Sup;
			idtableput_221115((&(*m).forwtypecache), LOC92, LOC93);
		}
		LA83: ;
		LOC94 = 0;
		LOC94 = &t->Sup;
		LOC95 = 0;
		LOC95 = HEX26_169447(result, ((NimStringDesc*) &TMP3794));
		LOC96 = 0;
		LOC96 = &LOC95->Sup;
		idtableput_221115((&(*m).typecache), LOC94, LOC96);
		{
			NIM_BOOL LOC99;
			LOC99 = 0;
			LOC99 = isimportedtype_473219(t);
			if (!!(LOC99)) goto LA100;
			{
				Ttype214828* LOC104;
				NimStringDesc* LOC107;
				NimStringDesc* LOC108;
				TY501032 LOC116;
				LOC104 = 0;
				LOC104 = skiptypes_218113((*t).sons->data[((NI) 0)], IL64(211106232576256));
				if (!!(((*LOC104).kind == ((NU8) 3)))) goto LA105;
				LOC107 = 0;
				LOC108 = 0;
				{
					NIM_BOOL LOC111;
					LOC111 = 0;
					LOC111 = (gcmd_160123 == ((NU8) 2));
					if (LOC111) goto LA112;
					LOC111 = (((*(*m).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
					LA112: ;
					if (!LOC111) goto LA113;
					LOC108 = copyString(((NimStringDesc*) &TMP3823));
				}
				goto LA109;
				LA113: ;
				{
					LOC108 = copyString(((NimStringDesc*) &TMP3824));
				}
				LA109: ;
				LOC107 = rawNewString(LOC108->Sup.len + 31);
appendString(LOC107, LOC108);
appendString(LOC107, ((NimStringDesc*) &TMP3825));
				memset((void*)LOC116, 0, sizeof(LOC116));
				LOC116[0] = gettypedescaux_473273(m, (*t).sons->data[((NI) 0)], check);
				LOC116[1] = result;
				appcg_472632(m, &(*m).s[(((NU8) 4))- 0], LOC107, LOC116, 2);
			}
			goto LA102;
			LA105: ;
			{
				result = rope_169277(((NimStringDesc*) &TMP3826));
			}
			LA102: ;
		}
		LA100: ;
		add_169487(&result, ((NimStringDesc*) &TMP3794));
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		NI64 n;
		Tidobj189006* LOC123;
		TNimObject* LOC124;
		n = lengthord_240007(t);
		{
			if (!(n <= IL64(0))) goto LA121;
			n = IL64(1);
		}
		LA121: ;
		result = gettypename_473086(t);
		LOC123 = 0;
		LOC123 = &t->Sup;
		LOC124 = 0;
		LOC124 = &result->Sup;
		idtableput_221115((&(*m).typecache), LOC123, LOC124);
		{
			NIM_BOOL LOC127;
			Ropeobj169006* foo;
			TY474655 LOC130;
			LOC127 = 0;
			LOC127 = isimportedtype_473219(t);
			if (!!(LOC127)) goto LA128;
			foo = gettypedescaux_473273(m, (*t).sons->data[((NI) 1)], check);
			memset((void*)LOC130, 0, sizeof(LOC130));
			LOC130[0] = foo;
			LOC130[1] = result;
			LOC130[2] = rope_169401(n);
			addf_170205(&(*m).s[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3827), LOC130, 3);
		}
		LA128: ;
	}
	break;
	case ((NU8) 17):
	case ((NU8) 18):
	{
		{
			NIM_BOOL LOC134;
			Ropeobj169006* cppname;
			NI i;
			NI chunkstart;
			Ropeobj169006* LOC176;
			LOC134 = 0;
			LOC134 = isimportedcpptype_473246(t);
			if (!(LOC134)) goto LA135;
			LOC134 = ((*typ).kind == ((NU8) 11));
			LA135: ;
			if (!LOC134) goto LA136;
			cppname = gettypename_473086(t);
			i = ((NI) 0);
			chunkstart = ((NI) 0);
			{
				while (1) {
					if (!(i < ((*cppname).data ? (*cppname).data->Sup.len : 0))) goto LA139;
					{
						NI chunkend;
						NI idx;
						NI stars;
						if (!((NU8)((*cppname).data->data[i]) == (NU8)(39))) goto LA142;
						chunkend = (i - 1);
						idx = 0;
						stars = 0;
						{
							NIM_BOOL LOC146;
							NimStringDesc* LOC149;
							Ttype214828* typeinslot;
							LOC146 = 0;
							LOC146 = scancppgenericslot_474416((*cppname).data, (&i), (&idx), (&stars));
							if (!LOC146) goto LA147;
							LOC149 = 0;
							LOC149 = copyStrLast((*cppname).data, chunkstart, chunkend);
							add_169487(&result, LOC149);
							chunkstart = i;
							typeinslot = resolvestarsincpptype_474480(typ, (NI)(idx + ((NI) 1)), stars);
							{
								NIM_BOOL LOC152;
								TY473064 LOC156;
								Ropeobj169006* LOC157;
								LOC152 = 0;
								LOC152 = (typeinslot == NIM_NIL);
								if (LOC152) goto LA153;
								LOC152 = ((*typeinslot).kind == ((NU8) 3));
								LA153: ;
								if (!LOC152) goto LA154;
								memset((void*)LOC156, 0, sizeof(LOC156));
								LOC157 = 0;
								LOC157 = HEX25_169905(((NimStringDesc*) &TMP3767), LOC156, 0);
								add_169482(&result, LOC157);
							}
							goto LA150;
							LA154: ;
							{
								Ropeobj169006* LOC159;
								LOC159 = 0;
								LOC159 = gettypedescaux_473273(m, typeinslot, check);
								add_169482(&result, LOC159);
							}
							LA150: ;
						}
						LA147: ;
					}
					goto LA140;
					LA142: ;
					{
						i += ((NI) 1);
					}
					LA140: ;
				} LA139: ;
			}
			{
				NimStringDesc* LOC165;
				if (!!((chunkstart == ((NI) 0)))) goto LA163;
				LOC165 = 0;
				LOC165 = copyStr((*cppname).data, chunkstart);
				add_169487(&result, LOC165);
			}
			goto LA161;
			LA163: ;
			{
				result = HEX26_169447(cppname, ((NimStringDesc*) &TMP3829));
				{
					NI i_474916;
					NI HEX3Atmp_475048;
					NI LOC168;
					NI res_475051;
					i_474916 = 0;
					HEX3Atmp_475048 = 0;
					LOC168 = 0;
					LOC168 = len_217339(typ);
					HEX3Atmp_475048 = (NI)(LOC168 - ((NI) 2));
					res_475051 = ((NI) 1);
					{
						while (1) {
							Ropeobj169006* LOC175;
							if (!(res_475051 <= HEX3Atmp_475048)) goto LA170;
							i_474916 = res_475051;
							{
								if (!(((NI) 1) < i_474916)) goto LA173;
								add_169487(&result, ((NimStringDesc*) &TMP3802));
							}
							LA173: ;
							LOC175 = 0;
							LOC175 = gettypedescaux_473273(m, (*typ).sons->data[i_474916], check);
							add_169482(&result, LOC175);
							res_475051 += ((NI) 1);
						} LA170: ;
					}
				}
				add_169487(&result, ((NimStringDesc*) &TMP3830));
			}
			LA161: ;
			LOC176 = 0;
			LOC176 = getrecorddesc_474232(m, t, result, check);
		}
		goto LA132;
		LA136: ;
		{
			Tidobj189006* LOC191;
			TNimObject* LOC192;
			Ropeobj169006* recdesc;
			result = cachegettype_473361((*m).forwtypecache, t);
			{
				Tidobj189006* LOC189;
				TNimObject* LOC190;
				if (!(result == NIM_NIL)) goto LA180;
				result = gettypename_473086(t);
				{
					NIM_BOOL LOC184;
					NimStringDesc* LOC187;
					TY501032 LOC188;
					LOC184 = 0;
					LOC184 = isimportedtype_473219(t);
					if (!!(LOC184)) goto LA185;
					LOC187 = 0;
					LOC187 = getforwardstructformat_473604(m);
					memset((void*)LOC188, 0, sizeof(LOC188));
					LOC188[0] = structorunion_473590(t);
					LOC188[1] = result;
					addf_170205(&(*m).s[(((NU8) 2))- 0], LOC187, LOC188, 2);
				}
				LA185: ;
				LOC189 = 0;
				LOC189 = &t->Sup;
				LOC190 = 0;
				LOC190 = &result->Sup;
				idtableput_221115((&(*m).forwtypecache), LOC189, LOC190);
			}
			LA180: ;
			LOC191 = 0;
			LOC191 = &t->Sup;
			LOC192 = 0;
			LOC192 = &result->Sup;
			idtableput_221115((&(*m).typecache), LOC191, LOC192);
			{
				if (!!(((*t).kind == ((NU8) 18)))) goto LA195;
				recdesc = getrecorddesc_474232(m, t, result, check);
			}
			goto LA193;
			LA195: ;
			{
				recdesc = gettupledesc_474366(m, t, result, check);
			}
			LA193: ;
			{
				NIM_BOOL LOC200;
				LOC200 = 0;
				LOC200 = isimportedtype_473219(t);
				if (!!(LOC200)) goto LA201;
				add_169482(&(*m).s[(((NU8) 3))- 0], recdesc);
			}
			LA201: ;
		}
		LA132: ;
	}
	break;
	case ((NU8) 19):
	{
		NI64 LOC204;
		LOC204 = 0;
		LOC204 = getsize_240124(t);
		switch (((NI) (LOC204))) {
		case ((NI) 1):
		{
			result = rope_169277(((NimStringDesc*) &TMP3772));
		}
		break;
		case ((NI) 2):
		{
			result = rope_169277(((NimStringDesc*) &TMP3773));
		}
		break;
		case ((NI) 4):
		{
			result = rope_169277(((NimStringDesc*) &TMP3790));
		}
		break;
		case ((NI) 8):
		{
			result = rope_169277(((NimStringDesc*) &TMP3791));
		}
		break;
		default:
		{
			Tidobj189006* LOC210;
			TNimObject* LOC211;
			result = gettypename_473086(t);
			LOC210 = 0;
			LOC210 = &t->Sup;
			LOC211 = 0;
			LOC211 = &result->Sup;
			idtableput_221115((&(*m).typecache), LOC210, LOC211);
			{
				NIM_BOOL LOC214;
				TY501032 LOC217;
				NI64 LOC218;
				LOC214 = 0;
				LOC214 = isimportedtype_473219(t);
				if (!!(LOC214)) goto LA215;
				memset((void*)LOC217, 0, sizeof(LOC217));
				LOC217[0] = result;
				LOC218 = 0;
				LOC218 = getsize_240124(t);
				LOC217[1] = rope_169401(LOC218);
				addf_170205(&(*m).s[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3851), LOC217, 2);
			}
			LA215: ;
		}
		break;
		}
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	case ((NU8) 15):
	case ((NU8) 46):
	case ((NU8) 47):
	case ((NU8) 49):
	case ((NU8) 8):
	{
		Ttype214828* LOC220;
		LOC220 = 0;
		LOC220 = lastson_217377(t);
		result = gettypedescaux_473273(m, LOC220, check);
	}
	break;
	default:
	{
		NimStringDesc* LOC222;
		LOC222 = 0;
		LOC222 = rawNewString(reprEnum((*t).kind, (&NTI214241))->Sup.len + 16);
appendString(LOC222, ((NimStringDesc*) &TMP3852));
appendString(LOC222, reprEnum((*t).kind, (&NTI214241)));
appendChar(LOC222, 41);
		internalerror_187113(LOC222);
		result = NIM_NIL;
	}
	break;
	}
	excl_211841(check, (*t).Sup.id);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, gettypedesc_475055)(Tcgen469026* m, Ttype214828* typ) {
	Ropeobj169006* result;
	Intset211035 check;
	result = 0;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_211885((&check));
	result = gettypedescaux_473273(m, typ, (&check));
	return result;
}

N_NIMCALL(Ropeobj169006*, mangledynlibproc_478362)(Tsym214822* sym) {
	Ropeobj169006* result;
	result = 0;
	{
		if (!(((*sym).flags &(1U<<((NU)(((NU8) 16))&31U)))!=0)) goto LA3;
		result = rope_169277((*(*sym).name).s);
	}
	goto LA1;
	LA3: ;
	{
		TY169507 LOC6;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = rope_169401(((NI64) ((*sym).Sup.id)));
		result = HEX25_169905(((NimStringDesc*) &TMP3853), LOC6, 1);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genclinedir_472733)(Ropeobj169006** r, NimStringDesc* filename, NI line) {
	{
		TY501032 LOC5;
		NimStringDesc* LOC6;
		if (!((goptions_160119 &(1U<<((NU)(((NU8) 10))&31U)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC6 = 0;
		LOC6 = makesinglelinecstring_468835(filename);
		LOC5[0] = rope_169277(LOC6);
		LOC5[1] = rope_169401(((NI64) (line)));
		addf_170205(r, ((NimStringDesc*) &TMP3854), LOC5, 2);
	}
	LA3: ;
}

static N_INLINE(NI, tolinenumber_183415)(Tlineinfo182337 info) {
	NI result;
	result = 0;
	result = ((NI) (info.line));
	return result;
}

N_NIMCALL(NI, safelinenm_472729)(Tlineinfo182337 info) {
	NI result;
	result = 0;
	result = tolinenumber_183415(info);
	{
		if (!(result < ((NI) 0))) goto LA3;
		result = ((NI) 0);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, genclinedir_472813)(Ropeobj169006** r, Tlineinfo182337 info) {
	NimStringDesc* LOC1;
	NI LOC2;
	LOC1 = 0;
	LOC1 = tofullpath_183269(info.fileindex);
	LOC2 = 0;
	LOC2 = safelinenm_472729(info);
	genclinedir_472733(r, LOC1, LOC2);
}

N_NIMCALL(Ropeobj169006*, genprocheader_475286)(Tcgen469026* m, Tsym214822* prc) {
	Ropeobj169006* result;
	Ropeobj169006* rettype;
	Ropeobj169006* params;
	Intset211035 check;
	Ropeobj169006* LOC13;
	result = 0;
	rettype = 0;
	params = 0;
	genclinedir_472813(&result, (*prc).info);
	{
		if (!(((*prc).loc.flags &(1U<<((NU)(((NU8) 5))&15U)))!=0)) goto LA3;
		{
			if (!(*m).isheaderfile) goto LA7;
			add_169487(&result, ((NimStringDesc*) &TMP3856));
		}
		goto LA5;
		LA7: ;
		{
			add_169487(&result, ((NimStringDesc*) &TMP3857));
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		if (!((*(*prc).typ).callconv == ((NU8) 5))) goto LA11;
		add_169487(&result, ((NimStringDesc*) &TMP3858));
	}
	goto LA1;
	LA11: ;
	LA1: ;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_211885((&check));
	LOC13 = 0;
	LOC13 = manglename_472977(prc);
	fillloc_472282((&(*prc).loc), ((NU8) 7), (*prc).typ, LOC13, ((NU8) 0));
	genprocparams_473704(m, (*prc).typ, &rettype, &params, (&check), NIM_TRUE, NIM_FALSE);
	{
		TY474652 LOC18;
		if (!(*prc).constraint == 0) goto LA16;
		memset((void*)LOC18, 0, sizeof(LOC18));
		LOC18[0] = rope_169277(Callingconvtostr_473355[((*(*prc).typ).callconv)- 0]);
		LOC18[1] = rettype;
		LOC18[2] = (*prc).loc.r;
		LOC18[3] = params;
		addf_170205(&result, ((NimStringDesc*) &TMP3859), LOC18, 4);
	}
	goto LA14;
	LA16: ;
	{
		TY474655 LOC20;
		memset((void*)LOC20, 0, sizeof(LOC20));
		LOC20[0] = rettype;
		LOC20[1] = (*prc).loc.r;
		LOC20[2] = params;
		result = HEX25_169905((*(*prc).constraint).kindU.S3.strval, LOC20, 3);
	}
	LA14: ;
	return result;
}

static N_INLINE(NIM_BOOL, crossescppboundary_500964)(Tcgen469026* m, Tsym214822* sym) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	Tsym214822* LOC4;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = (((*(*m).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
	if (!(LOC2)) goto LA3;
	LOC4 = 0;
	LOC4 = getmodule_221144(sym);
	LOC2 = !((((*LOC4).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA5;
	LOC1 = !((gcmd_160123 == ((NU8) 2)));
	LA5: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genprocprototype_478654)(Tcgen469026* m, Tsym214822* sym) {
{	useheader_472349(m, sym);
	{
		if (!(((*sym).loc.flags &(1U<<((NU)(((NU8) 3))&15U)))!=0)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(((*sym).loc.flags &(1U<<((NU)(((NU8) 4))&15U)))!=0)) goto LA7;
		{
			NIM_BOOL LOC11;
			Tsym214822* LOC12;
			NIM_BOOL LOC14;
			TY501032 LOC17;
			Ropeobj169006* LOC18;
			LOC11 = 0;
			LOC12 = 0;
			LOC12 = getmodule_221144(sym);
			LOC11 = !(((*LOC12).Sup.id == (*(*m).module).Sup.id));
			if (!(LOC11)) goto LA13;
			LOC14 = 0;
			LOC14 = containsorincl_211862((&(*m).declaredthings), (*sym).Sup.id);
			LOC11 = !(LOC14);
			LA13: ;
			if (!LOC11) goto LA15;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = gettypedesc_475055(m, (*sym).loc.t);
			LOC17[1] = mangledynlibproc_478362(sym);
			LOC18 = 0;
			LOC18 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3764), LOC17, 2);
			add_169482(&(*m).s[(((NU8) 9))- 0], LOC18);
		}
		LA15: ;
	}
	goto LA5;
	LA7: ;
	{
		NIM_BOOL LOC20;
		Ropeobj169006* header;
		TY169507 LOC47;
		Ropeobj169006* LOC48;
		LOC20 = 0;
		LOC20 = containsorincl_211862((&(*m).declaredprotos), (*sym).Sup.id);
		if (!!(LOC20)) goto LA21;
		header = genprocheader_475286(m, sym);
		{
			NIM_BOOL LOC25;
			LOC25 = 0;
			LOC25 = (((*sym).flags &(1U<<((NU)(((NU8) 14))&31U)))!=0);
			if (!(LOC25)) goto LA26;
			LOC25 = ((Cc_194413[(ccompiler_194431)- 1].Field20 &(1U<<((NU)(((NU8) 6))&7U)))!=0);
			LA26: ;
			if (!LOC25) goto LA27;
			header = HEX26_169452(((NimStringDesc*) &TMP3860), header);
		}
		LA27: ;
		{
			NIM_BOOL LOC31;
			LOC31 = 0;
			LOC31 = !(((*(*sym).typ).callconv == ((NU8) 5)));
			if (!(LOC31)) goto LA32;
			LOC31 = crossescppboundary_500964(m, sym);
			LA32: ;
			if (!LOC31) goto LA33;
			header = HEX26_169452(((NimStringDesc*) &TMP3861), header);
		}
		LA33: ;
		{
			NIM_BOOL LOC37;
			LOC37 = 0;
			LOC37 = (((*sym).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0);
			if (!(LOC37)) goto LA38;
			LOC37 = ((Cc_194413[(ccompiler_194431)- 1].Field20 &(1U<<((NU)(((NU8) 7))&7U)))!=0);
			LA38: ;
			if (!LOC37) goto LA39;
			add_169487(&header, ((NimStringDesc*) &TMP3862));
		}
		LA39: ;
		{
			NIM_BOOL LOC43;
			LOC43 = 0;
			LOC43 = (((*sym).flags &(1U<<((NU)(((NU8) 14))&31U)))!=0);
			if (!(LOC43)) goto LA44;
			LOC43 = ((Cc_194413[(ccompiler_194431)- 1].Field20 &(1U<<((NU)(((NU8) 7))&7U)))!=0);
			LA44: ;
			if (!LOC43) goto LA45;
			add_169487(&header, ((NimStringDesc*) &TMP3863));
		}
		LA45: ;
		memset((void*)LOC47, 0, sizeof(LOC47));
		LOC47[0] = header;
		LOC48 = 0;
		LOC48 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3864), LOC47, 1);
		add_169482(&(*m).s[(((NU8) 7))- 0], LOC48);
	}
	goto LA5;
	LA21: ;
	LA5: ;
	}BeforeRet: ;
}

static N_INLINE(NI, len_215059)(Tnode214790* n) {
	NI result;
	result = 0;
	{
		if (!(*n).kindU.S6.sons == 0) goto LA3;
		result = ((NI) 0);
	}
	goto LA1;
	LA3: ;
	{
		result = ((*n).kindU.S6.sons ? (*n).kindU.S6.sons->Sup.len : 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, localvardecl_478098)(Tcproc469022* p, Tsym214822* s) {
	Ropeobj169006* result;
	result = 0;
	{
		Ropeobj169006* LOC5;
		if (!((*s).loc.k == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_472977(s);
		fillloc_472282((&(*s).loc), ((NU8) 2), (*s).typ, LOC5, ((NU8) 2));
		{
			if (!((*s).kind == ((NU8) 9))) goto LA8;
			(*s).loc.flags |= ((NU16)1)<<((((NU8) 2))%(sizeof(NU16)*8));
		}
		LA8: ;
	}
	LA3: ;
	result = gettypedesc_475055((*p).module, (*s).loc.t);
	{
		if (!(*s).constraint == 0) goto LA12;
		{
			if (!(((*s).flags &(1U<<((NU)(((NU8) 8))&31U)))!=0)) goto LA16;
			add_169487(&result, ((NimStringDesc*) &TMP3866));
		}
		LA16: ;
		{
			if (!(((*s).flags &(1U<<((NU)(((NU8) 7))&31U)))!=0)) goto LA20;
			add_169487(&result, ((NimStringDesc*) &TMP3867));
		}
		LA20: ;
		add_169487(&result, ((NimStringDesc*) &TMP3803));
		add_169482(&result, (*s).loc.r);
	}
	goto LA10;
	LA12: ;
	{
		TY501032 LOC23;
		memset((void*)LOC23, 0, sizeof(LOC23));
		LOC23[0] = result;
		LOC23[1] = (*s).loc.r;
		result = HEX25_169905((*(*s).constraint).kindU.S3.strval, LOC23, 2);
	}
	LA10: ;
	return result;
}

static N_INLINE(Ropeobj169006**, s_469166)(Tcproc469022* p, NU8 s) {
	Ropeobj169006** result;
	result = 0;
	result = &(*p).blocks->data[(NI)(((*p).blocks ? (*p).blocks->Sup.len : 0) - ((NI) 1))].sections[(s)- 0];
	return result;
}

N_NIMCALL(Ropeobj169006*, indentline_472656)(Tcproc469022* p, Ropeobj169006* r) {
	Ropeobj169006* result;
	result = 0;
	result = r;
	{
		NI i_472680;
		NI HEX3Atmp_472683;
		NI res_472686;
		i_472680 = 0;
		HEX3Atmp_472683 = 0;
		HEX3Atmp_472683 = (NI)(((*p).blocks ? (*p).blocks->Sup.len : 0) - ((NI) 1));
		res_472686 = ((NI) 0);
		{
			while (1) {
				if (!(res_472686 <= HEX3Atmp_472683)) goto LA3;
				i_472680 = res_472686;
				prepend_169893(&result, indent_472655);
				res_472686 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(void, line_472690)(Tcproc469022* p, NU8 s, Ropeobj169006* r) {
	Ropeobj169006** LOC1;
	Ropeobj169006* LOC2;
	LOC1 = 0;
	LOC1 = s_469166(p, s);
	LOC2 = 0;
	LOC2 = indentline_472656(p, r);
	add_169482(LOC1, LOC2);
}

N_NIMCALL(void, linef_472700)(Tcproc469022* p, NU8 s, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0) {
	Ropeobj169006** LOC1;
	Ropeobj169006* LOC2;
	Ropeobj169006* LOC3;
	LOC1 = 0;
	LOC1 = s_469166(p, s);
	LOC2 = 0;
	LOC2 = HEX25_169905(frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_472656(p, LOC2);
	add_169482(LOC1, LOC3);
}

N_NIMCALL(void, gentypeinfoauxbase_475369)(Tcgen469026* m, Ttype214828* typ, Ttype214828* origtype, Ropeobj169006* name, Ropeobj169006* base) {
	NI nimtypekind;
	Ropeobj169006* size;
	TY474652 LOC17;
	NI flags;
	Ropeobj169006* LOC33;
	TY501032 LOC34;
	NimStringDesc* LOC35;
	nimtypekind = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isobjlackingtypefield_473283(typ);
		if (!LOC3) goto LA4;
		nimtypekind = ((NI) 18);
	}
	goto LA1;
	LA4: ;
	{
		nimtypekind = ((NI) ((*typ).kind));
	}
	LA1: ;
	size = 0;
	{
		if (!(((*typ).flags &(1U<<((NU)(((NU8) 0))&31U)))!=0)) goto LA9;
		size = rope_169277(((NimStringDesc*) &TMP3876));
	}
	goto LA7;
	LA9: ;
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = (gcmd_160123 == ((NU8) 2));
		if (LOC12) goto LA13;
		LOC12 = (((*(*m).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA13: ;
		if (!LOC12) goto LA14;
		size = gettypedesc_475055(m, origtype);
	}
	goto LA7;
	LA14: ;
	{
		size = gettypedesc_475055(m, typ);
	}
	LA7: ;
	memset((void*)LOC17, 0, sizeof(LOC17));
	LOC17[0] = name;
	LOC17[1] = size;
	LOC17[2] = rope_169401(((NI64) (nimtypekind)));
	LOC17[3] = base;
	addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3877), LOC17, 4);
	flags = ((NI) 0);
	{
		NIM_BOOL LOC20;
		LOC20 = 0;
		LOC20 = containsgarbagecollectedref_240106(typ);
		if (!!(LOC20)) goto LA21;
		flags = (NI)(flags | ((NI) 1));
	}
	LA21: ;
	{
		NIM_BOOL LOC25;
		LOC25 = 0;
		LOC25 = canformacycle_240112(typ);
		if (!!(LOC25)) goto LA26;
		flags = (NI)(flags | ((NI) 2));
	}
	LA26: ;
	{
		TY501032 LOC32;
		if (!!((flags == ((NI) 0)))) goto LA30;
		memset((void*)LOC32, 0, sizeof(LOC32));
		LOC32[0] = name;
		LOC32[1] = rope_169401(((NI64) (flags)));
		addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3878), LOC32, 2);
	}
	LA30: ;
	LOC33 = 0;
	LOC33 = cgsym_472403(m, ((NimStringDesc*) &TMP3872));
	memset((void*)LOC34, 0, sizeof(LOC34));
	LOC34[0] = name;
	LOC35 = 0;
	LOC35 = typetostring_240017(typ, ((NU8) 0));
	LOC34[1] = rope_169277(LOC35);
	addf_170205(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3879), LOC34, 2);
}

N_NIMCALL(Ropeobj169006*, getnimnode_475354)(Tcgen469026* m) {
	Ropeobj169006* result;
	TY501032 LOC1;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = (*m).typenodesname;
	LOC1[1] = rope_169401(((NI64) ((*m).typenodes)));
	result = HEX25_169905(((NimStringDesc*) &TMP3880), LOC1, 2);
	(*m).typenodes += ((NI) 1);
	return result;
}

N_NIMCALL(void, gentupleinfo_475948)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name) {
	Ropeobj169006* LOC1;
	Ropeobj169006* expr;
	NI length;
	TY501032 LOC15;
	LOC1 = 0;
	LOC1 = rope_169277(((NimStringDesc*) &TMP3781));
	gentypeinfoauxbase_475369(m, typ, typ, name, LOC1);
	expr = getnimnode_475354(m);
	length = sonslen_217327(typ);
	{
		Ropeobj169006* tmp;
		TY501032 LOC6;
		TY474655 LOC12;
		if (!(((NI) 0) < length)) goto LA4;
		tmp = gettempname_473366();
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = tmp;
		LOC6[1] = rope_169401(((NI64) (length)));
		addf_170205(&(*m).s[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3881), LOC6, 2);
		{
			NI i_475970;
			NI HEX3Atmp_475989;
			NI res_475992;
			i_475970 = 0;
			HEX3Atmp_475989 = 0;
			HEX3Atmp_475989 = (NI)(length - ((NI) 1));
			res_475992 = ((NI) 0);
			{
				while (1) {
					Ttype214828* a;
					Ropeobj169006* tmp2;
					TY474655 LOC10;
					TY474652 LOC11;
					if (!(res_475992 <= HEX3Atmp_475989)) goto LA9;
					i_475970 = res_475992;
					a = (*typ).sons->data[i_475970];
					tmp2 = getnimnode_475354(m);
					memset((void*)LOC10, 0, sizeof(LOC10));
					LOC10[0] = tmp;
					LOC10[1] = rope_169401(((NI64) (i_475970)));
					LOC10[2] = tmp2;
					addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3882), LOC10, 3);
					memset((void*)LOC11, 0, sizeof(LOC11));
					LOC11[0] = tmp2;
					LOC11[1] = gettypedesc_475055(m, typ);
					LOC11[2] = rope_169401(((NI64) (i_475970)));
					LOC11[3] = gentypeinfo_475350(m, a);
					addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3883), LOC11, 4);
					res_475992 += ((NI) 1);
				} LA9: ;
			}
		}
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = expr;
		LOC12[1] = rope_169401(((NI64) (length)));
		LOC12[2] = tmp;
		addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3884), LOC12, 3);
	}
	goto LA2;
	LA4: ;
	{
		TY501032 LOC14;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = expr;
		LOC14[1] = rope_169401(((NI64) (length)));
		addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3885), LOC14, 2);
	}
	LA2: ;
	memset((void*)LOC15, 0, sizeof(LOC15));
	LOC15[0] = name;
	LOC15[1] = expr;
	addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3886), LOC15, 2);
}

N_NIMCALL(Ttype214828*, fakeclosuretype_476410)(Tsym214822* owner) {
	Ttype214828* result;
	Ttype214828* LOC1;
	Ttype214828* r;
	Ttype214828* LOC2;
	result = 0;
	result = newtype_217107(((NU8) 18), owner);
	LOC1 = 0;
	LOC1 = newtype_217107(((NU8) 26), owner);
	rawaddson_218408(result, LOC1);
	r = newtype_217107(((NU8) 22), owner);
	LOC2 = 0;
	LOC2 = newtype_217107(((NU8) 18), owner);
	rawaddson_218408(r, LOC2);
	rawaddson_218408(result, r);
	return result;
}

N_NIMCALL(void, gentypeinfoaux_475436)(Tcgen469026* m, Ttype214828* typ, Ttype214828* origtype, Ropeobj169006* name) {
	Ropeobj169006* base;
	base = 0;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_217327(typ);
		LOC3 = (((NI) 0) < LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = !(((*typ).sons->data[((NI) 0)] == NIM_NIL));
		LA5: ;
		if (!LOC3) goto LA6;
		base = gentypeinfo_475350(m, (*typ).sons->data[((NI) 0)]);
	}
	goto LA1;
	LA6: ;
	{
		base = rope_169277(((NimStringDesc*) &TMP3781));
	}
	LA1: ;
	gentypeinfoauxbase_475369(m, typ, origtype, name, base);
}

static N_INLINE(NI, backendid_213413)(void) {
	NI result;
	result = 0;
	result = gbackendid_213004;
	gbackendid_213004 += ((NI) 1);
	return result;
}

N_NIMCALL(Ropeobj169006*, getglobaltempname_473371)(void) {
	Ropeobj169006* result;
	TY169507 LOC1;
	NI LOC2;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = backendid_213413();
	LOC1[0] = rope_169401(((NI64) (LOC2)));
	result = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3887), LOC1, 1);
	return result;
}

N_NIMCALL(void, linefmt_472714)(Tcproc469022* p, NU8 s, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0) {
	Ropeobj169006** LOC1;
	Ropeobj169006* LOC2;
	Ropeobj169006* LOC3;
	LOC1 = 0;
	LOC1 = s_469166(p, s);
	LOC2 = 0;
	LOC2 = ropecg_472407((*p).module, frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_472656(p, LOC2);
	add_169482(LOC1, LOC3);
}

static N_INLINE(NIM_BOOL, iscomplexvaluetype_477699)(Ttype214828* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 16) || (*t).kind == ((NU8) 4) || (*t).kind == ((NU8) 19) || (*t).kind == ((NU8) 18) || (*t).kind == ((NU8) 17));
	if (LOC1) goto LA2;
	LOC3 = 0;
	LOC3 = ((*t).kind == ((NU8) 25));
	if (!(LOC3)) goto LA4;
	LOC3 = ((*t).callconv == ((NU8) 8));
	LA4: ;
	LOC1 = LOC3;
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Ropeobj169006*, rdloc_477569)(Tloc214804 a) {
	Ropeobj169006* result;
	result = 0;
	result = a.r;
	{
		TY169507 LOC5;
		if (!((a.flags &(1U<<((NU)(((NU8) 0))&15U)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = result;
		result = HEX25_169905(((NimStringDesc*) &TMP3894), LOC5, 1);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, usestringh_472345)(Tcgen469026* m) {
	{
		NIM_BOOL LOC5;
		if (!!((*m).includesstringh)) goto LA3;
		(*m).includesstringh = NIM_TRUE;
		LOC5 = 0;
		LOC5 = includestr_135249((&(*m).headerfiles), ((NimStringDesc*) &TMP3895));
	}
	LA3: ;
}

N_NIMCALL(Ropeobj169006*, addrloc_477585)(Tloc214804 a) {
	Ropeobj169006* result;
	result = 0;
	result = a.r;
	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		Ropeobj169006* LOC8;
		LOC3 = 0;
		LOC3 = !(((a.flags &(1U<<((NU)(((NU8) 0))&15U)))!=0));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = maptype_473166(a.t);
		LOC3 = !((LOC5 == ((NU8) 17)));
		LA4: ;
		if (!LOC3) goto LA6;
		LOC8 = 0;
		LOC8 = HEX26_169452(((NimStringDesc*) &TMP3871), result);
		result = HEX26_169447(LOC8, ((NimStringDesc*) &TMP3809));
	}
	LA6: ;
	return result;
}

N_NIMCALL(void, genobjectinit_477623)(Tcproc469022* p, NU8 section, Ttype214828* t, Tloc214804 a, NIM_BOOL takeaddr) {
	NU8 LOC1;
	LOC1 = 0;
	LOC1 = analyseobjectwithtypefield_240138(t);
	switch (LOC1) {
	case ((NU8) 0):
	{
	}
	break;
	case ((NU8) 1):
	{
		Ropeobj169006* r;
		Ttype214828* s;
		TY501032 LOC19;
		r = rdloc_477569(a);
		{
			TY169507 LOC8;
			if (!!(takeaddr)) goto LA6;
			memset((void*)LOC8, 0, sizeof(LOC8));
			LOC8[0] = r;
			r = HEX25_169905(((NimStringDesc*) &TMP3894), LOC8, 1);
		}
		LA6: ;
		s = skiptypes_218113(t, IL64(211106232576256));
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = (gcmd_160123 == ((NU8) 2));
			if (LOC11) goto LA12;
			LOC11 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
			LA12: ;
			if (!!(LOC11)) goto LA13;
			{
				while (1) {
					NIM_BOOL LOC17;
					LOC17 = 0;
					LOC17 = ((*s).kind == ((NU8) 17));
					if (!(LOC17)) goto LA18;
					LOC17 = !(((*s).sons->data[((NI) 0)] == NIM_NIL));
					LA18: ;
					if (!LOC17) goto LA16;
					add_169487(&r, ((NimStringDesc*) &TMP3897));
					s = skiptypes_218113((*s).sons->data[((NI) 0)], IL64(211106232576256));
				} LA16: ;
			}
		}
		LA13: ;
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = r;
		LOC19[1] = gentypeinfo_475350((*p).module, t);
		linefmt_472714(p, section, ((NimStringDesc*) &TMP3898), LOC19, 2);
	}
	break;
	case ((NU8) 2):
	{
		Ropeobj169006* r;
		TY501032 LOC26;
		{
			if (!takeaddr) goto LA23;
			r = addrloc_477585(a);
		}
		goto LA21;
		LA23: ;
		{
			r = rdloc_477569(a);
		}
		LA21: ;
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = r;
		LOC26[1] = gentypeinfo_475350((*p).module, t);
		linefmt_472714(p, section, ((NimStringDesc*) &TMP3899), LOC26, 2);
	}
	break;
	}
}

N_NIMCALL(void, constructloc_477770)(Tcproc469022* p, Tloc214804 loc, NIM_BOOL istemp) {
	Ttype214828* typ;
	typ = skiptypes_218113(loc.t, IL64(211106233624832));
	{
		NIM_BOOL LOC3;
		TY169507 LOC6;
		LOC3 = 0;
		LOC3 = iscomplexvaluetype_477699(typ);
		if (!!(LOC3)) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = rdloc_477569(loc);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3893), LOC6, 1);
	}
	goto LA1;
	LA4: ;
	{
		{
			NIM_BOOL LOC10;
			LOC10 = 0;
			LOC10 = !(istemp);
			if (LOC10) goto LA11;
			LOC10 = containsgarbagecollectedref_240106(loc.t);
			LA11: ;
			if (!LOC10) goto LA12;
			{
				NIM_BOOL LOC16;
				TY501032 LOC19;
				LOC16 = 0;
				LOC16 = isimportedcpptype_473246(typ);
				if (!!(LOC16)) goto LA17;
				usestringh_472345((*p).module);
				memset((void*)LOC19, 0, sizeof(LOC19));
				LOC19[0] = addrloc_477585(loc);
				LOC19[1] = rdloc_477569(loc);
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3896), LOC19, 2);
			}
			LA17: ;
		}
		LA12: ;
		genobjectinit_477623(p, ((NU8) 2), loc.t, loc, NIM_TRUE);
	}
	LA1: ;
}

N_NIMCALL(void, gettemp_476435)(Tcproc469022* p, Ttype214828* t, Tloc214804* result, NIM_BOOL needsinit) {
	Ropeobj169006* LOC1;
	TY501032 LOC2;
	(*p).labels += ((NI) 1);
	LOC1 = 0;
	LOC1 = rope_169401(((NI64) ((*p).labels)));
	unsureAsgnRef((void**) (&(*result).r), HEX26_169452(((NimStringDesc*) &TMP3892), LOC1));
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = gettypedesc_475055((*p).module, t);
	LOC2[1] = (*result).r;
	linefmt_472714(p, ((NU8) 0), ((NimStringDesc*) &TMP3795), LOC2, 2);
	(*result).k = ((NU8) 1);
	unsureAsgnRef((void**) (&(*result).t), getuniquetype_468640(t));
	(*result).s = ((NU8) 2);
	(*result).flags = 0;
	constructloc_477770(p, (*result), !(needsinit));
}

static N_INLINE(Ropeobj169006*, parentobj_476657)(Ropeobj169006* accessor, Tcgen469026* m) {
	Ropeobj169006* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		TY169507 LOC7;
		LOC3 = 0;
		LOC3 = (gcmd_160123 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*m).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA4: ;
		if (!!(LOC3)) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = accessor;
		result = HEX25_169905(((NimStringDesc*) &TMP3905), LOC7, 1);
	}
	goto LA1;
	LA5: ;
	{
		result = accessor;
	}
	LA1: ;
	return result;
}

static N_INLINE(Tnode214790*, HEX5BHEX5D_215238)(Tnode214790* n, NI i) {
	Tnode214790* result;
	result = 0;
	result = (*n).kindU.S6.sons->data[i];
	return result;
}

N_NIMCALL(Ropeobj169006*, intliteral_478670)(NI64 i) {
	Ropeobj169006* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (IL64(-2147483648) < i);
		if (!(LOC3)) goto LA4;
		LOC3 = (i <= IL64(2147483647));
		LA4: ;
		if (!LOC3) goto LA5;
		result = rope_169401(i);
	}
	goto LA1;
	LA5: ;
	{
		TY473064 LOC10;
		if (!(i == IL64(-2147483648))) goto LA8;
		memset((void*)LOC10, 0, sizeof(LOC10));
		result = HEX25_169905(((NimStringDesc*) &TMP3910), LOC10, 0);
	}
	goto LA1;
	LA8: ;
	{
		TY169507 LOC14;
		if (!((IL64(-9223372036854775807) - IL64(1)) < i)) goto LA12;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = rope_169401(i);
		result = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3911), LOC14, 1);
	}
	goto LA1;
	LA12: ;
	{
		TY473064 LOC16;
		memset((void*)LOC16, 0, sizeof(LOC16));
		result = HEX25_169905(((NimStringDesc*) &TMP3912), LOC16, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, int64literal_489430)(NI64 i) {
	Ropeobj169006* result;
	result = 0;
	{
		TY169507 LOC5;
		if (!((IL64(-9223372036854775807) - IL64(1)) < i)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rope_169401(i);
		result = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3911), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY473064 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		result = HEX25_169905(((NimStringDesc*) &TMP3912), LOC7, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, uint64literal_489442)(NU64 i) {
	Ropeobj169006* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = HEX24_7801(i);
	LOC1 = rawNewString(LOC2->Sup.len + 3);
appendString(LOC1, LOC2);
appendString(LOC1, ((NimStringDesc*) &TMP3915));
	result = rope_169277(LOC1);
	return result;
}

N_NIMCALL(Ropeobj169006*, getstrlit_489495)(Tcgen469026* m, NimStringDesc* s) {
	Ropeobj169006* result;
	Ropeobj169006* LOC1;
	NI LOC2;
	Ropeobj169006* LOC3;
	TY474655 LOC4;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_472403(m, ((NimStringDesc*) &TMP3826));
	LOC2 = 0;
	LOC2 = backendid_213413();
	LOC3 = 0;
	LOC3 = rope_169401(((NI64) (LOC2)));
	result = HEX26_169452(((NimStringDesc*) &TMP3917), LOC3);
	memset((void*)LOC4, 0, sizeof(LOC4));
	LOC4[0] = result;
	LOC4[1] = makecstring_182637(s);
	LOC4[2] = rope_169401(((NI64) ((s ? s->Sup.len : 0))));
	addf_170205(&(*m).s[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3922), LOC4, 3);
	return result;
}

N_NIMCALL(Ropeobj169006*, genliteral_489503)(Tcproc469022* p, Tnode214790* n, Ttype214828* ty) {
	Ropeobj169006* result;
	result = 0;
	{
		if (!(ty == NIM_NIL)) goto LA3;
		internalerror_187100((*n).info, ((NimStringDesc*) &TMP3909));
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 5) ... ((NU8) 15):
	{
		Ttype214828* LOC6;
		LOC6 = 0;
		LOC6 = skiptypes_218113(ty, IL64(211106242013440));
		switch ((*LOC6).kind) {
		case ((NU8) 2):
		case ((NU8) 5):
		{
			result = intliteral_478670((*n).kindU.S1.intval);
		}
		break;
		case ((NU8) 1):
		{
			{
				TY473064 LOC13;
				if (!!(((*n).kindU.S1.intval == IL64(0)))) goto LA11;
				memset((void*)LOC13, 0, sizeof(LOC13));
				result = HEX25_169905(((NimStringDesc*) &TMP3913), LOC13, 0);
			}
			goto LA9;
			LA11: ;
			{
				TY473064 LOC15;
				memset((void*)LOC15, 0, sizeof(LOC15));
				result = HEX25_169905(((NimStringDesc*) &TMP3914), LOC15, 0);
			}
			LA9: ;
		}
		break;
		case ((NU8) 35):
		{
			result = int64literal_489430((*n).kindU.S1.intval);
		}
		break;
		case ((NU8) 44):
		{
			result = uint64literal_489442(((NU64) ((*n).kindU.S1.intval)));
		}
		break;
		default:
		{
			TY501032 LOC19;
			Ttype214828* LOC20;
			memset((void*)LOC19, 0, sizeof(LOC19));
			LOC20 = 0;
			LOC20 = skiptypes_218113(ty, IL64(211106242013440));
			LOC19[0] = gettypedesc_475055((*p).module, LOC20);
			LOC19[1] = intliteral_478670((*n).kindU.S1.intval);
			result = HEX25_169905(((NimStringDesc*) &TMP3916), LOC19, 2);
		}
		break;
		}
	}
	break;
	case ((NU8) 23):
	{
		Ttype214828* t;
		t = skiptypes_218113(ty, IL64(211106242013440));
		{
			NIM_BOOL LOC24;
			NI id;
			Ropeobj169006* LOC28;
			LOC24 = 0;
			LOC24 = ((*t).kind == ((NU8) 25));
			if (!(LOC24)) goto LA25;
			LOC24 = ((*t).callconv == ((NU8) 8));
			LA25: ;
			if (!LOC24) goto LA26;
			id = nodetabletestorset_262682((&(*(*p).module).datacache), n, gbackendid_213004);
			LOC28 = 0;
			LOC28 = rope_169401(((NI64) (id)));
			result = HEX26_169452(((NimStringDesc*) &TMP3917), LOC28);
			{
				TY501032 LOC33;
				if (!(id == gbackendid_213004)) goto LA31;
				gbackendid_213004 += ((NI) 1);
				memset((void*)LOC33, 0, sizeof(LOC33));
				LOC33[0] = gettypedesc_475055((*p).module, t);
				LOC33[1] = result;
				addf_170205(&(*(*p).module).s[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3918), LOC33, 2);
			}
			LA31: ;
		}
		goto LA22;
		LA26: ;
		{
			result = rope_169277(((NimStringDesc*) &TMP3919));
		}
		LA22: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		{
			TY473064 LOC40;
			if (!(*n).kindU.S3.strval == 0) goto LA38;
			memset((void*)LOC40, 0, sizeof(LOC40));
			result = ropecg_472407((*p).module, ((NimStringDesc*) &TMP3920), LOC40, 0);
		}
		goto LA36;
		LA38: ;
		{
			Ttype214828* LOC42;
			NI id;
			LOC42 = 0;
			LOC42 = skiptypes_218113(ty, IL64(211106242013440));
			if (!((*LOC42).kind == ((NU8) 28))) goto LA43;
			id = nodetabletestorset_262682((&(*(*p).module).datacache), n, gbackendid_213004);
			{
				TY169507 LOC49;
				if (!(id == gbackendid_213004)) goto LA47;
				memset((void*)LOC49, 0, sizeof(LOC49));
				LOC49[0] = getstrlit_489495((*p).module, (*n).kindU.S3.strval);
				result = ropecg_472407((*p).module, ((NimStringDesc*) &TMP3921), LOC49, 1);
			}
			goto LA45;
			LA47: ;
			{
				TY169507 LOC51;
				memset((void*)LOC51, 0, sizeof(LOC51));
				LOC51[0] = rope_169401(((NI64) (id)));
				result = ropecg_472407((*p).module, ((NimStringDesc*) &TMP3923), LOC51, 1);
			}
			LA45: ;
		}
		goto LA36;
		LA43: ;
		{
			result = makecstring_182637((*n).kindU.S3.strval);
		}
		LA36: ;
	}
	break;
	case ((NU8) 16) ... ((NU8) 18):
	{
		NimStringDesc* LOC54;
		LOC54 = 0;
		LOC54 = tostrmaxprecision_220009((*n).kindU.S2.floatval);
		result = rope_169277(LOC54);
	}
	break;
	default:
	{
		NimStringDesc* LOC56;
		LOC56 = 0;
		LOC56 = rawNewString(reprEnum((*n).kind, (&NTI214020))->Sup.len + 12);
appendString(LOC56, ((NimStringDesc*) &TMP3928));
appendString(LOC56, reprEnum((*n).kind, (&NTI214020)));
appendChar(LOC56, 41);
		internalerror_187100((*n).info, LOC56);
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(Ropeobj169006*, genliteral_478673)(Tcproc469022* p, Tnode214790* n) {
	Ropeobj169006* result;
	result = 0;
	result = genliteral_489503(p, n, (*n).typ);
	return result;
}

N_NIMCALL(void, gencaserange_476431)(Tcproc469022* p, Tnode214790* branch) {
	NI length;
	length = len_215059(branch);
	{
		NI j_487476;
		NI HEX3Atmp_487517;
		NI res_487520;
		j_487476 = 0;
		HEX3Atmp_487517 = 0;
		HEX3Atmp_487517 = (NI)(length - ((NI) 2));
		res_487520 = ((NI) 0);
		{
			while (1) {
				if (!(res_487520 <= HEX3Atmp_487517)) goto LA3;
				j_487476 = res_487520;
				{
					Tnode214790* LOC6;
					LOC6 = 0;
					LOC6 = HEX5BHEX5D_215238(branch, j_487476);
					if (!((*LOC6).kind == ((NU8) 44))) goto LA7;
					{
						TY501032 LOC13;
						Tnode214790* LOC14;
						Tnode214790* LOC15;
						Tnode214790* LOC16;
						Tnode214790* LOC17;
						if (!((Cc_194413[(ccompiler_194431)- 1].Field20 &(1U<<((NU)(((NU8) 0))&7U)))!=0)) goto LA11;
						memset((void*)LOC13, 0, sizeof(LOC13));
						LOC14 = 0;
						LOC14 = HEX5BHEX5D_215238(branch, j_487476);
						LOC15 = 0;
						LOC15 = HEX5BHEX5D_215238(LOC14, ((NI) 0));
						LOC13[0] = genliteral_478673(p, LOC15);
						LOC16 = 0;
						LOC16 = HEX5BHEX5D_215238(branch, j_487476);
						LOC17 = 0;
						LOC17 = HEX5BHEX5D_215238(LOC16, ((NI) 1));
						LOC13[1] = genliteral_478673(p, LOC17);
						linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3908), LOC13, 2);
					}
					goto LA9;
					LA11: ;
					{
						Tnode214790* v;
						Tnode214790* LOC19;
						Tnode214790* LOC20;
						LOC19 = 0;
						LOC19 = HEX5BHEX5D_215238(branch, j_487476);
						LOC20 = 0;
						LOC20 = HEX5BHEX5D_215238(LOC19, ((NI) 0));
						v = copynode_218542(LOC20);
						{
							while (1) {
								Tnode214790* LOC23;
								Tnode214790* LOC24;
								TY169507 LOC25;
								LOC23 = 0;
								LOC23 = HEX5BHEX5D_215238(branch, j_487476);
								LOC24 = 0;
								LOC24 = HEX5BHEX5D_215238(LOC23, ((NI) 1));
								if (!((*v).kindU.S1.intval <= (*LOC24).kindU.S1.intval)) goto LA22;
								memset((void*)LOC25, 0, sizeof(LOC25));
								LOC25[0] = genliteral_478673(p, v);
								linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3929), LOC25, 1);
								(*v).kindU.S1.intval += ((NI) 1);
							} LA22: ;
						}
					}
					LA9: ;
				}
				goto LA4;
				LA7: ;
				{
					TY169507 LOC27;
					Tnode214790* LOC28;
					memset((void*)LOC27, 0, sizeof(LOC27));
					LOC28 = 0;
					LOC28 = HEX5BHEX5D_215238(branch, j_487476);
					LOC27[0] = genliteral_478673(p, LOC28);
					linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3929), LOC27, 1);
				}
				LA4: ;
				res_487520 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(void, gentraverseproc_476442)(Ttraversalclosure476422* c, Ropeobj169006* accessor, Tnode214790* n) {
{	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 138):
	{
		{
			NI i_476471;
			NI HEX3Atmp_476639;
			NI LOC7;
			NI res_476642;
			i_476471 = 0;
			HEX3Atmp_476639 = 0;
			LOC7 = 0;
			LOC7 = sonslen_217351(n);
			HEX3Atmp_476639 = (NI)(LOC7 - ((NI) 1));
			res_476642 = ((NI) 0);
			{
				while (1) {
					if (!(res_476642 <= HEX3Atmp_476639)) goto LA9;
					i_476471 = res_476642;
					gentraverseproc_476442(c, accessor, (*n).kindU.S6.sons->data[i_476471]);
					res_476642 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	break;
	case ((NU8) 139):
	{
		Tcproc469022* p;
		Tsym214822* disc;
		TY501032 LOC15;
		TY473064 LOC28;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA13;
			internalerror_187100((*n).info, ((NimStringDesc*) &TMP3906));
		}
		LA13: ;
		p = (*c).p;
		disc = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = accessor;
		LOC15[1] = (*disc).loc.r;
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3907), LOC15, 2);
		{
			NI i_476501;
			NI HEX3Atmp_476649;
			NI LOC17;
			NI res_476652;
			i_476501 = 0;
			HEX3Atmp_476649 = 0;
			LOC17 = 0;
			LOC17 = sonslen_217351(n);
			HEX3Atmp_476649 = (NI)(LOC17 - ((NI) 1));
			res_476652 = ((NI) 1);
			{
				while (1) {
					Tnode214790* branch;
					Tnode214790* LOC26;
					TY473064 LOC27;
					if (!(res_476652 <= HEX3Atmp_476649)) goto LA19;
					i_476501 = res_476652;
					branch = (*n).kindU.S6.sons->data[i_476501];
					{
						if (!((*branch).kind == ((NU8) 85))) goto LA22;
						gencaserange_476431((*c).p, branch);
					}
					goto LA20;
					LA22: ;
					{
						TY473064 LOC25;
						memset((void*)LOC25, 0, sizeof(LOC25));
						linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3930), LOC25, 0);
					}
					LA20: ;
					LOC26 = 0;
					LOC26 = lastson_217364(branch);
					gentraverseproc_476442(c, accessor, LOC26);
					memset((void*)LOC27, 0, sizeof(LOC27));
					linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3931), LOC27, 0);
					res_476652 += ((NI) 1);
				} LA19: ;
			}
		}
		memset((void*)LOC28, 0, sizeof(LOC28));
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3932), LOC28, 0);
	}
	break;
	case ((NU8) 3):
	{
		Tsym214822* field;
		TY501032 LOC34;
		Ropeobj169006* LOC35;
		field = (*n).kindU.S4.sym;
		{
			if (!((*field).loc.t == NIM_NIL)) goto LA32;
			internalerror_187100((*n).info, ((NimStringDesc*) &TMP3933));
		}
		LA32: ;
		memset((void*)LOC34, 0, sizeof(LOC34));
		LOC34[0] = accessor;
		LOC34[1] = (*field).loc.r;
		LOC35 = 0;
		LOC35 = HEX25_169905(((NimStringDesc*) &TMP3836), LOC34, 2);
		gentraverseproc_476425(c, LOC35, (*field).loc.t);
	}
	break;
	default:
	{
		internalerror_187100((*n).info, ((NimStringDesc*) &TMP3933));
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(void, linecg_472707)(Tcproc469022* p, NU8 s, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0) {
	Ropeobj169006** LOC1;
	Ropeobj169006* LOC2;
	Ropeobj169006* LOC3;
	LOC1 = 0;
	LOC1 = s_469166(p, s);
	LOC2 = 0;
	LOC2 = ropecg_472407((*p).module, frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_472656(p, LOC2);
	add_169482(LOC1, LOC3);
}

N_NIMCALL(void, gentraverseproc_476425)(Ttraversalclosure476422* c, Ropeobj169006* accessor, Ttype214828* typ_476430) {
	Tcproc469022* p;
{	{
		if (!(typ_476430 == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	p = (*c).p;
	switch ((*typ_476430).kind) {
	case ((NU8) 11):
	case ((NU8) 10):
	case ((NU8) 8):
	{
		Ttype214828* LOC6;
		LOC6 = 0;
		LOC6 = lastson_217377(typ_476430);
		gentraverseproc_476425(c, accessor, LOC6);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		NI64 arraysize;
		Tloc214804 i;
		Ttype214828* LOC8;
		TY501032 LOC9;
		TY501032 LOC10;
		Ropeobj169006* LOC11;
		TY473064 LOC12;
		arraysize = lengthord_240007((*typ_476430).sons->data[((NI) 0)]);
		memset((void*)(&i), 0, sizeof(i));
		LOC8 = 0;
		LOC8 = getsystype_258130(((NU8) 31));
		gettemp_476435(p, LOC8, (&i), NIM_FALSE);
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = i.r;
		LOC9[1] = rope_169401(arraysize);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3903), LOC9, 2);
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC10[0] = accessor;
		LOC10[1] = i.r;
		LOC11 = 0;
		LOC11 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3880), LOC10, 2);
		gentraverseproc_476425(c, LOC11, (*typ_476430).sons->data[((NI) 1)]);
		memset((void*)LOC12, 0, sizeof(LOC12));
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3904), LOC12, 0);
	}
	break;
	case ((NU8) 17):
	{
		{
			NI i_476724;
			NI HEX3Atmp_476770;
			NI LOC15;
			NI res_476773;
			i_476724 = 0;
			HEX3Atmp_476770 = 0;
			LOC15 = 0;
			LOC15 = sonslen_217327(typ_476430);
			HEX3Atmp_476770 = (NI)(LOC15 - ((NI) 1));
			res_476773 = ((NI) 0);
			{
				while (1) {
					Ropeobj169006* LOC18;
					if (!(res_476773 <= HEX3Atmp_476770)) goto LA17;
					i_476724 = res_476773;
					LOC18 = 0;
					LOC18 = parentobj_476657(accessor, (*(*c).p).module);
					gentraverseproc_476425(c, LOC18, (*typ_476430).sons->data[i_476724]);
					res_476773 += ((NI) 1);
				} LA17: ;
			}
		}
		{
			if (!!(((*typ_476430).n == NIM_NIL))) goto LA21;
			gentraverseproc_476442(c, accessor, (*typ_476430).n);
		}
		LA21: ;
	}
	break;
	case ((NU8) 18):
	{
		Ttype214828* typ;
		typ = getuniquetype_468640(typ_476430);
		{
			NI i_476749;
			NI HEX3Atmp_476778;
			NI LOC25;
			NI res_476781;
			i_476749 = 0;
			HEX3Atmp_476778 = 0;
			LOC25 = 0;
			LOC25 = sonslen_217327(typ);
			HEX3Atmp_476778 = (NI)(LOC25 - ((NI) 1));
			res_476781 = ((NI) 0);
			{
				while (1) {
					TY501032 LOC28;
					Ropeobj169006* LOC29;
					if (!(res_476781 <= HEX3Atmp_476778)) goto LA27;
					i_476749 = res_476781;
					memset((void*)LOC28, 0, sizeof(LOC28));
					LOC28[0] = accessor;
					LOC28[1] = rope_169401(((NI64) (i_476749)));
					LOC29 = 0;
					LOC29 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3934), LOC28, 2);
					gentraverseproc_476425(c, LOC29, (*typ).sons->data[i_476749]);
					res_476781 += ((NI) 1);
				} LA27: ;
			}
		}
	}
	break;
	case ((NU8) 22):
	case ((NU8) 28):
	case ((NU8) 24):
	{
		TY169507 LOC31;
		memset((void*)LOC31, 0, sizeof(LOC31));
		LOC31[0] = accessor;
		linecg_472707(p, ((NU8) 2), (*c).visitorfrmt, LOC31, 1);
	}
	break;
	case ((NU8) 25):
	{
		{
			TY169507 LOC37;
			TY169507 LOC38;
			if (!((*typ_476430).callconv == ((NU8) 8))) goto LA35;
			memset((void*)LOC37, 0, sizeof(LOC37));
			memset((void*)LOC38, 0, sizeof(LOC38));
			LOC38[0] = accessor;
			LOC37[0] = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3935), LOC38, 1);
			linecg_472707(p, ((NU8) 2), (*c).visitorfrmt, LOC37, 1);
		}
		LA35: ;
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(void, gentraverseprocseq_476785)(Ttraversalclosure476422* c, Ropeobj169006* accessor, Ttype214828* typ) {
	Tcproc469022* p;
	Tloc214804 i;
	Ttype214828* LOC1;
	TY474655 LOC2;
	NimStringDesc* LOC3;
	TY501032 LOC11;
	Ropeobj169006* LOC12;
	TY473064 LOC13;
	p = (*c).p;
	memset((void*)(&i), 0, sizeof(i));
	LOC1 = 0;
	LOC1 = getsystype_258130(((NU8) 31));
	gettemp_476435(p, LOC1, (&i), NIM_FALSE);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = i.r;
	LOC2[1] = accessor;
	LOC3 = 0;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = (gcmd_160123 == ((NU8) 2));
		if (LOC6) goto LA7;
		LOC6 = (((*(*(*(*c).p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA7: ;
		if (!LOC6) goto LA8;
		LOC3 = copyString(((NimStringDesc*) &TMP3901));
	}
	goto LA4;
	LA8: ;
	{
		LOC3 = copyString(((NimStringDesc*) &TMP3902));
	}
	LA4: ;
	LOC2[2] = rope_169277(LOC3);
	linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3900), LOC2, 3);
	memset((void*)LOC11, 0, sizeof(LOC11));
	LOC11[0] = accessor;
	LOC11[1] = i.r;
	LOC12 = 0;
	LOC12 = HEX25_169905(((NimStringDesc*) &TMP3936), LOC11, 2);
	gentraverseproc_476425(c, LOC12, (*typ).sons->data[((NI) 0)]);
	memset((void*)LOC13, 0, sizeof(LOC13));
	linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3904), LOC13, 0);
}

N_NIMCALL(Ropeobj169006*, gentraverseproc_477032)(Tcgen469026* m, Ttype214828* typ, NU8 reason) {
	Ropeobj169006* result;
	Ttraversalclosure476422 c;
	Tcproc469022* p;
	Ropeobj169006* header;
	TY169507 LOC3;
	Ropeobj169006* t;
	TY169507 LOC4;
	TY169507 LOC5;
	Ropeobj169006* generatedproc;
	TY474652 LOC20;
	Ropeobj169006** LOC21;
	Ropeobj169006** LOC22;
	Ropeobj169006** LOC23;
	TY169507 LOC24;
	result = 0;
	memset((void*)(&c), 0, sizeof(c));
	p = newproc_469193(NIM_NIL, m);
	result = getglobaltempname_473371();
	switch (reason) {
	case ((NU8) 0):
	{
		c.visitorfrmt = copyString(((NimStringDesc*) &TMP3888));
	}
	break;
	default:
	{
	}
	break;
	}
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = result;
	header = HEX25_169905(((NimStringDesc*) &TMP3889), LOC3, 1);
	t = gettypedesc_475055(m, typ);
	memset((void*)LOC4, 0, sizeof(LOC4));
	LOC4[0] = t;
	linef_472700(p, ((NU8) 0), ((NimStringDesc*) &TMP3890), LOC4, 1);
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = t;
	linef_472700(p, ((NU8) 1), ((NimStringDesc*) &TMP3891), LOC5, 1);
	c.p = p;
	{
		Ropeobj169006* LOC10;
		if (!((*typ).kind == ((NU8) 24))) goto LA8;
		LOC10 = 0;
		LOC10 = rope_169277(((NimStringDesc*) &TMP3937));
		gentraverseprocseq_476785((&c), LOC10, typ);
	}
	goto LA6;
	LA8: ;
	{
		{
			Ttype214828* LOC14;
			Ropeobj169006* LOC17;
			LOC14 = 0;
			LOC14 = skiptypes_218113((*typ).sons->data[((NI) 0)], IL64(211106232576256));
			if (!((*LOC14).kind == ((NU8) 4) || (*LOC14).kind == ((NU8) 16))) goto LA15;
			LOC17 = 0;
			LOC17 = rope_169277(((NimStringDesc*) &TMP3937));
			gentraverseproc_476425((&c), LOC17, (*typ).sons->data[((NI) 0)]);
		}
		goto LA12;
		LA15: ;
		{
			Ropeobj169006* LOC19;
			LOC19 = 0;
			LOC19 = rope_169277(((NimStringDesc*) &TMP3938));
			gentraverseproc_476425((&c), LOC19, (*typ).sons->data[((NI) 0)]);
		}
		LA12: ;
	}
	LA6: ;
	memset((void*)LOC20, 0, sizeof(LOC20));
	LOC20[0] = header;
	LOC21 = 0;
	LOC21 = s_469166(p, ((NU8) 0));
	LOC20[1] = (*LOC21);
	LOC22 = 0;
	LOC22 = s_469166(p, ((NU8) 1));
	LOC20[2] = (*LOC22);
	LOC23 = 0;
	LOC23 = s_469166(p, ((NU8) 2));
	LOC20[3] = (*LOC23);
	generatedproc = HEX25_169905(((NimStringDesc*) &TMP3939), LOC20, 4);
	memset((void*)LOC24, 0, sizeof(LOC24));
	LOC24[0] = header;
	addf_170205(&(*m).s[(((NU8) 7))- 0], ((NimStringDesc*) &TMP3864), LOC24, 1);
	add_169482(&(*m).s[(((NU8) 10))- 0], generatedproc);
	return result;
}

N_NIMCALL(void, genarrayinfo_476405)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name) {
	Ropeobj169006* LOC1;
	LOC1 = 0;
	LOC1 = gentypeinfo_475350(m, (*typ).sons->data[((NI) 1)]);
	gentypeinfoauxbase_475369(m, typ, typ, name, LOC1);
}

N_NIMCALL(void, gensetinfo_476267)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name) {
	Ropeobj169006* tmp;
	TY474655 LOC1;
	NI64 LOC2;
	gentypeinfoaux_475436(m, typ, typ, name);
	tmp = getnimnode_475354(m);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = tmp;
	LOC2 = 0;
	LOC2 = firstord_240001(typ);
	LOC1[1] = rope_169401(LOC2);
	LOC1[2] = name;
	addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3941), LOC1, 3);
}

N_NIMCALL(void, genenuminfo_475996)(Tcgen469026* m, Ttype214828* typ, Ropeobj169006* name) {
	Ropeobj169006* nodeptrs;
	NI length;
	TY501032 LOC1;
	Ropeobj169006* enumnames;
	Ropeobj169006* specialcases;
	NI firstnimnode;
	NIM_BOOL hasholes;
	Ropeobj169006* enumarray;
	Ropeobj169006* counter;
	TY169507 LOC24;
	TY474655 LOC25;
	TY476247 LOC26;
	TY474652 LOC27;
	gentypeinfoaux_475436(m, typ, typ, name);
	nodeptrs = gettempname_473366();
	length = sonslen_217351((*typ).n);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = nodeptrs;
	LOC1[1] = rope_169401(((NI64) (length)));
	addf_170205(&(*m).s[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3881), LOC1, 2);
	enumnames = 0;
	specialcases = 0;
	firstnimnode = (*m).typenodes;
	hasholes = NIM_FALSE;
	{
		NI i_476021;
		NI HEX3Atmp_476260;
		NI res_476263;
		i_476021 = 0;
		HEX3Atmp_476260 = 0;
		HEX3Atmp_476260 = (NI)(length - ((NI) 1));
		res_476263 = ((NI) 0);
		{
			while (1) {
				Tsym214822* field;
				Ropeobj169006* elemnode;
				if (!(res_476263 <= HEX3Atmp_476260)) goto LA4;
				i_476021 = res_476263;
				field = (*(*(*typ).n).kindU.S6.sons->data[i_476021]).kindU.S4.sym;
				elemnode = getnimnode_475354(m);
				{
					Ropeobj169006* LOC9;
					if (!((*field).ast == NIM_NIL)) goto LA7;
					LOC9 = 0;
					LOC9 = makecstring_182637((*(*field).name).s);
					add_169482(&enumnames, LOC9);
				}
				goto LA5;
				LA7: ;
				{
					Ropeobj169006* LOC11;
					LOC11 = 0;
					LOC11 = makecstring_182637((*(*field).ast).kindU.S3.strval);
					add_169482(&enumnames, LOC11);
				}
				LA5: ;
				{
					NimStringDesc* LOC16;
					if (!(i_476021 < (NI)(length - ((NI) 1)))) goto LA14;
					LOC16 = 0;
					LOC16 = rawNewString(tnl_167618->Sup.len + 2);
appendString(LOC16, ((NimStringDesc*) &TMP3802));
appendString(LOC16, tnl_167618);
					add_169487(&enumnames, LOC16);
				}
				LA14: ;
				{
					NIM_BOOL LOC19;
					TY501032 LOC23;
					LOC19 = 0;
					LOC19 = !(((*field).position == i_476021));
					if (LOC19) goto LA20;
					LOC19 = (((*typ).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0);
					LA20: ;
					if (!LOC19) goto LA21;
					memset((void*)LOC23, 0, sizeof(LOC23));
					LOC23[0] = elemnode;
					LOC23[1] = rope_169401(((NI64) ((*field).position)));
					addf_170205(&specialcases, ((NimStringDesc*) &TMP3942), LOC23, 2);
					hasholes = NIM_TRUE;
				}
				LA21: ;
				res_476263 += ((NI) 1);
			} LA4: ;
		}
	}
	enumarray = gettempname_473366();
	counter = gettempname_473366();
	memset((void*)LOC24, 0, sizeof(LOC24));
	LOC24[0] = counter;
	addf_170205(&(*m).s[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3943), LOC24, 1);
	memset((void*)LOC25, 0, sizeof(LOC25));
	LOC25[0] = enumarray;
	LOC25[1] = rope_169401(((NI64) (length)));
	LOC25[2] = enumnames;
	addf_170205(&(*m).s[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3944), LOC25, 3);
	memset((void*)LOC26, 0, sizeof(LOC26));
	LOC26[0] = counter;
	LOC26[1] = rope_169401(((NI64) (length)));
	LOC26[2] = (*m).typenodesname;
	LOC26[3] = rope_169401(((NI64) (firstnimnode)));
	LOC26[4] = enumarray;
	LOC26[5] = nodeptrs;
	addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3945), LOC26, 6);
	add_169482(&(*m).s[(((NU8) 14))- 0], specialcases);
	memset((void*)LOC27, 0, sizeof(LOC27));
	LOC27[0] = getnimnode_475354(m);
	LOC27[1] = rope_169401(((NI64) (length)));
	LOC27[2] = nodeptrs;
	LOC27[3] = name;
	addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3946), LOC27, 4);
	{
		TY169507 LOC32;
		if (!hasholes) goto LA30;
		memset((void*)LOC32, 0, sizeof(LOC32));
		LOC32[0] = name;
		addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3947), LOC32, 1);
	}
	LA30: ;
}

N_NIMCALL(Ropeobj169006*, discriminatortablename_475456)(Tcgen469026* m, Ttype214828* objtype_475459, Tsym214822* d) {
	Ropeobj169006* result;
	Ttype214828* objtype;
	TY501032 LOC8;
	NimStringDesc* LOC9;
	result = 0;
	objtype = objtype_475459;
	{
		while (1) {
			Tsym214822* LOC3;
			LOC3 = 0;
			LOC3 = lookupinrecord_221140((*objtype).n, (*d).name);
			if (!(LOC3 == NIM_NIL)) goto LA2;
			objtype = (*objtype).sons->data[((NI) 0)];
		} LA2: ;
	}
	{
		if (!((*objtype).sym == NIM_NIL)) goto LA6;
		internalerror_187100((*d).info, ((NimStringDesc*) &TMP3948));
	}
	LA6: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rope_169401(((NI64) ((*objtype).Sup.id)));
	LOC9 = 0;
	LOC9 = mangle_468847((*(*d).name).s);
	LOC8[1] = rope_169277(LOC9);
	result = HEX25_169905(((NimStringDesc*) &TMP3949), LOC8, 2);
	return result;
}

N_NIMCALL(void, genobjectfields_475503)(Tcgen469026* m, Ttype214828* typ, Tnode214790* n, Ropeobj169006* expr) {
	switch ((*n).kind) {
	case ((NU8) 138):
	{
		NI L;
		L = sonslen_217351(n);
		{
			if (!(L == ((NI) 1))) goto LA4;
			genobjectfields_475503(m, typ, (*n).kindU.S6.sons->data[((NI) 0)], expr);
		}
		goto LA2;
		LA4: ;
		{
			Ropeobj169006* tmp;
			TY501032 LOC9;
			TY474655 LOC14;
			if (!(((NI) 0) < L)) goto LA7;
			tmp = gettempname_473366();
			memset((void*)LOC9, 0, sizeof(LOC9));
			LOC9[0] = tmp;
			LOC9[1] = rope_169401(((NI64) (L)));
			addf_170205(&(*m).s[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3881), LOC9, 2);
			{
				NI i_475526;
				NI HEX3Atmp_475881;
				NI res_475884;
				i_475526 = 0;
				HEX3Atmp_475881 = 0;
				HEX3Atmp_475881 = (NI)(L - ((NI) 1));
				res_475884 = ((NI) 0);
				{
					while (1) {
						Ropeobj169006* tmp2;
						TY474655 LOC13;
						if (!(res_475884 <= HEX3Atmp_475881)) goto LA12;
						i_475526 = res_475884;
						tmp2 = getnimnode_475354(m);
						memset((void*)LOC13, 0, sizeof(LOC13));
						LOC13[0] = tmp;
						LOC13[1] = rope_169401(((NI64) (i_475526)));
						LOC13[2] = tmp2;
						addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3882), LOC13, 3);
						genobjectfields_475503(m, typ, (*n).kindU.S6.sons->data[i_475526], tmp2);
						res_475884 += ((NI) 1);
					} LA12: ;
				}
			}
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = expr;
			LOC14[1] = rope_169401(((NI64) (L)));
			LOC14[2] = tmp;
			addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3884), LOC14, 3);
		}
		goto LA2;
		LA7: ;
		{
			TY501032 LOC16;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = expr;
			LOC16[1] = rope_169401(((NI64) (L)));
			addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3885), LOC16, 2);
		}
		LA2: ;
	}
	break;
	case ((NU8) 139):
	{
		Tsym214822* field;
		Ropeobj169006* tmp;
		NI64 L;
		TY475801 LOC18;
		TY501032 LOC19;
		field = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		tmp = discriminatortablename_475456(m, typ, field);
		L = lengthord_240007((*field).typ);
		memset((void*)LOC18, 0, sizeof(LOC18));
		LOC18[0] = expr;
		LOC18[1] = gettypedesc_475055(m, typ);
		LOC18[2] = (*field).loc.r;
		LOC18[3] = gentypeinfo_475350(m, (*field).typ);
		LOC18[4] = makecstring_182637((*(*field).name).s);
		LOC18[5] = tmp;
		LOC18[6] = rope_169401(L);
		addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3950), LOC18, 7);
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = tmp;
		LOC19[1] = rope_169401((NI64)(L + IL64(1)));
		addf_170205(&(*m).s[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3951), LOC19, 2);
		{
			NI i_475821;
			NI HEX3Atmp_475898;
			NI LOC21;
			NI res_475901;
			i_475821 = 0;
			HEX3Atmp_475898 = 0;
			LOC21 = 0;
			LOC21 = sonslen_217351(n);
			HEX3Atmp_475898 = (NI)(LOC21 - ((NI) 1));
			res_475901 = ((NI) 1);
			{
				while (1) {
					Tnode214790* b;
					Ropeobj169006* tmp2;
					Tnode214790* LOC24;
					if (!(res_475901 <= HEX3Atmp_475898)) goto LA23;
					i_475821 = res_475901;
					b = (*n).kindU.S6.sons->data[i_475821];
					tmp2 = getnimnode_475354(m);
					LOC24 = 0;
					LOC24 = lastson_217364(b);
					genobjectfields_475503(m, typ, LOC24, tmp2);
					switch ((*b).kind) {
					case ((NU8) 85):
					{
						{
							NI LOC28;
							LOC28 = 0;
							LOC28 = sonslen_217351(b);
							if (!(LOC28 < ((NI) 2))) goto LA29;
							internalerror_187100((*b).info, ((NimStringDesc*) &TMP3952));
						}
						LA29: ;
						{
							NI j_475836;
							NI HEX3Atmp_475891;
							NI LOC32;
							NI res_475894;
							j_475836 = 0;
							HEX3Atmp_475891 = 0;
							LOC32 = 0;
							LOC32 = sonslen_217351(b);
							HEX3Atmp_475891 = (NI)(LOC32 - ((NI) 2));
							res_475894 = ((NI) 0);
							{
								while (1) {
									if (!(res_475894 <= HEX3Atmp_475891)) goto LA34;
									j_475836 = res_475894;
									{
										NI x;
										NI64 LOC39;
										NI y;
										NI64 LOC40;
										if (!((*(*b).kindU.S6.sons->data[j_475836]).kind == ((NU8) 44))) goto LA37;
										LOC39 = 0;
										LOC39 = getordvalue_240118((*(*b).kindU.S6.sons->data[j_475836]).kindU.S6.sons->data[((NI) 0)]);
										x = ((NI) (LOC39));
										LOC40 = 0;
										LOC40 = getordvalue_240118((*(*b).kindU.S6.sons->data[j_475836]).kindU.S6.sons->data[((NI) 1)]);
										y = ((NI) (LOC40));
										{
											while (1) {
												TY474655 LOC43;
												if (!(x <= y)) goto LA42;
												memset((void*)LOC43, 0, sizeof(LOC43));
												LOC43[0] = tmp;
												LOC43[1] = rope_169401(((NI64) (x)));
												LOC43[2] = tmp2;
												addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3882), LOC43, 3);
												x += ((NI) 1);
											} LA42: ;
										}
									}
									goto LA35;
									LA37: ;
									{
										TY474655 LOC45;
										NI64 LOC46;
										memset((void*)LOC45, 0, sizeof(LOC45));
										LOC45[0] = tmp;
										LOC46 = 0;
										LOC46 = getordvalue_240118((*b).kindU.S6.sons->data[j_475836]);
										LOC45[1] = rope_169401(LOC46);
										LOC45[2] = tmp2;
										addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3882), LOC45, 3);
									}
									LA35: ;
									res_475894 += ((NI) 1);
								} LA34: ;
							}
						}
					}
					break;
					case ((NU8) 88):
					{
						TY474655 LOC48;
						memset((void*)LOC48, 0, sizeof(LOC48));
						LOC48[0] = tmp;
						LOC48[1] = rope_169401(L);
						LOC48[2] = tmp2;
						addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3882), LOC48, 3);
					}
					break;
					default:
					{
						internalerror_187100((*n).info, ((NimStringDesc*) &TMP3953));
					}
					break;
					}
					res_475901 += ((NI) 1);
				} LA23: ;
			}
		}
	}
	break;
	case ((NU8) 3):
	{
		Tsym214822* field;
		TY475874 LOC51;
		field = (*n).kindU.S4.sym;
		memset((void*)LOC51, 0, sizeof(LOC51));
		LOC51[0] = expr;
		LOC51[1] = gettypedesc_475055(m, typ);
		LOC51[2] = (*field).loc.r;
		LOC51[3] = gentypeinfo_475350(m, (*field).typ);
		LOC51[4] = makecstring_182637((*(*field).name).s);
		addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3954), LOC51, 5);
	}
	break;
	default:
	{
		internalerror_187100((*n).info, ((NimStringDesc*) &TMP3955));
	}
	break;
	}
}

N_NIMCALL(void, genobjectinfo_475905)(Tcgen469026* m, Ttype214828* typ, Ttype214828* origtype, Ropeobj169006* name) {
	Ropeobj169006* tmp;
	TY501032 LOC12;
	Ttype214828* t;
	{
		if (!((*typ).kind == ((NU8) 17))) goto LA3;
		gentypeinfoaux_475436(m, typ, origtype, name);
	}
	goto LA1;
	LA3: ;
	{
		Ropeobj169006* LOC6;
		LOC6 = 0;
		LOC6 = rope_169277(((NimStringDesc*) &TMP3781));
		gentypeinfoauxbase_475369(m, typ, origtype, name, LOC6);
	}
	LA1: ;
	tmp = getnimnode_475354(m);
	{
		NIM_BOOL LOC9;
		LOC9 = 0;
		LOC9 = isimportedcpptype_473246(typ);
		if (!!(LOC9)) goto LA10;
		genobjectfields_475503(m, typ, (*typ).n, tmp);
	}
	LA10: ;
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = name;
	LOC12[1] = tmp;
	addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3886), LOC12, 2);
	t = (*typ).sons->data[((NI) 0)];
	{
		while (1) {
			if (!!((t == NIM_NIL))) goto LA14;
			t = skiptypes_218113(t, IL64(211106232576256));
			(*t).flags |= ((NU32)1)<<((((NU8) 5))%(sizeof(NU32)*8));
			t = (*t).sons->data[((NI) 0)];
		} LA14: ;
	}
}

N_NIMCALL(void, gendeepcopyproc_477466)(Tcgen469026* m, Tsym214822* s, Ropeobj169006* result) {
	TY501032 LOC1;
	genproc_472951(m, s);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = result;
	LOC1[1] = (*s).loc.r;
	addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3957), LOC1, 2);
}

N_NIMCALL(Ropeobj169006*, gentypeinfo_475350)(Tcgen469026* m, Ttype214828* t_475353) {
	Ropeobj169006* result;
	Ttype214828* origtype;
	Ttype214828* t;
	TY169507 LOC1;
	Tsym214822* owner;
	Ttype214828* LOC12;
	Ropeobj169006* LOC58;
	Ropeobj169006* LOC59;
	Ropeobj169006* LOC60;
{	result = 0;
	origtype = t_475353;
	t = getuniquetype_468640(t_475353);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rope_169401(((NI64) ((*t).Sup.id)));
	result = HEX25_169905(((NimStringDesc*) &TMP3870), LOC1, 1);
	{
		NIM_BOOL LOC4;
		Ropeobj169006* LOC7;
		Ropeobj169006* LOC8;
		Ropeobj169006* LOC9;
		LOC4 = 0;
		LOC4 = containsorincl_211862((&(*m).typeinfomarker), (*t).Sup.id);
		if (!LOC4) goto LA5;
		LOC7 = 0;
		LOC7 = rope_169277(((NimStringDesc*) &TMP3871));
		LOC8 = 0;
		LOC8 = HEX26_169418(LOC7, result);
		LOC9 = 0;
		LOC9 = rope_169277(((NimStringDesc*) &TMP3809));
		result = HEX26_169418(LOC8, LOC9);
		goto BeforeRet;
	}
	LA5: ;
	{
		while (1) {
			if (!((*t).kind == ((NU8) 13))) goto LA11;
			t = lastson_217377(t);
		} LA11: ;
	}
	LOC12 = 0;
	LOC12 = skiptypes_218113(t, IL64(211106247256320));
	owner = getmodule_221144((*LOC12).owner);
	{
		Tcgen469026* LOC17;
		Ropeobj169006* LOC18;
		Ropeobj169006* LOC19;
		Ropeobj169006* LOC20;
		TY501032 LOC21;
		NimStringDesc* LOC22;
		Ropeobj169006* LOC23;
		Ropeobj169006* LOC24;
		Ropeobj169006* LOC25;
		if (!!((owner == (*m).module))) goto LA15;
		LOC17 = 0;
		LOC17 = bmod_469188(owner);
		LOC18 = 0;
		LOC18 = gentypeinfo_475350(LOC17, t);
		LOC19 = 0;
		LOC19 = cgsym_472403(m, ((NimStringDesc*) &TMP3872));
		LOC20 = 0;
		LOC20 = cgsym_472403(m, ((NimStringDesc*) &TMP3873));
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = result;
		LOC22 = 0;
		LOC22 = typetostring_240017(t, ((NU8) 0));
		LOC21[1] = rope_169277(LOC22);
		addf_170205(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3874), LOC21, 2);
		LOC23 = 0;
		LOC23 = rope_169277(((NimStringDesc*) &TMP3871));
		LOC24 = 0;
		LOC24 = HEX26_169418(LOC23, result);
		LOC25 = 0;
		LOC25 = rope_169277(((NimStringDesc*) &TMP3809));
		result = HEX26_169418(LOC24, LOC25);
		goto BeforeRet;
	}
	LA15: ;
	switch ((*t).kind) {
	case ((NU8) 3):
	{
		result = rope_169277(((NimStringDesc*) &TMP3875));
	}
	break;
	case ((NU8) 26):
	case ((NU8) 1):
	case ((NU8) 2):
	case ((NU8) 29):
	case ((NU8) 28):
	case ((NU8) 31) ... ((NU8) 44):
	case ((NU8) 23):
	{
		Ropeobj169006* LOC28;
		LOC28 = 0;
		LOC28 = rope_169277(((NimStringDesc*) &TMP3875));
		gentypeinfoauxbase_475369(m, t, t, result, LOC28);
	}
	break;
	case ((NU8) 25):
	{
		{
			Ropeobj169006* LOC34;
			if (!!(((*t).callconv == ((NU8) 8)))) goto LA32;
			LOC34 = 0;
			LOC34 = rope_169277(((NimStringDesc*) &TMP3875));
			gentypeinfoauxbase_475369(m, t, t, result, LOC34);
		}
		goto LA30;
		LA32: ;
		{
			Ttype214828* LOC36;
			LOC36 = 0;
			LOC36 = fakeclosuretype_476410((*t).owner);
			gentupleinfo_475948(m, LOC36, result);
		}
		LA30: ;
	}
	break;
	case ((NU8) 24):
	case ((NU8) 22):
	{
		gentypeinfoaux_475436(m, t, t, result);
		{
			Ropeobj169006* markerproc;
			TY501032 LOC42;
			if (!(((NU8) 3) <= gselectedgc_160124)) goto LA40;
			markerproc = gentraverseproc_477032(m, t, ((NU8) 0));
			memset((void*)LOC42, 0, sizeof(LOC42));
			LOC42[0] = result;
			LOC42[1] = markerproc;
			addf_170205(&(*m).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3940), LOC42, 2);
		}
		LA40: ;
	}
	break;
	case ((NU8) 21):
	case ((NU8) 20):
	{
		gentypeinfoaux_475436(m, t, t, result);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		genarrayinfo_476405(m, t, result);
	}
	break;
	case ((NU8) 19):
	{
		gensetinfo_476267(m, t, result);
	}
	break;
	case ((NU8) 14):
	{
		genenuminfo_475996(m, t, result);
	}
	break;
	case ((NU8) 17):
	{
		genobjectinfo_475905(m, t, origtype, result);
	}
	break;
	case ((NU8) 18):
	{
		gentupleinfo_475948(m, t, result);
	}
	break;
	default:
	{
		NimStringDesc* LOC50;
		LOC50 = 0;
		LOC50 = rawNewString(reprEnum((*t).kind, (&NTI214241))->Sup.len + 13);
appendString(LOC50, ((NimStringDesc*) &TMP3956));
appendString(LOC50, reprEnum((*t).kind, (&NTI214241)));
appendChar(LOC50, 41);
		internalerror_187113(LOC50);
	}
	break;
	}
	{
		if (!!(((*t).deepcopy == NIM_NIL))) goto LA53;
		gendeepcopyproc_477466(m, (*t).deepcopy, result);
	}
	goto LA51;
	LA53: ;
	{
		if (!!(((*origtype).deepcopy == NIM_NIL))) goto LA56;
		gendeepcopyproc_477466(m, (*origtype).deepcopy, result);
	}
	goto LA51;
	LA56: ;
	LA51: ;
	LOC58 = 0;
	LOC58 = rope_169277(((NimStringDesc*) &TMP3871));
	LOC59 = 0;
	LOC59 = HEX26_169418(LOC58, result);
	LOC60 = 0;
	LOC60 = rope_169277(((NimStringDesc*) &TMP3809));
	result = HEX26_169418(LOC59, LOC60);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, localdebuginfo_478015)(Tcproc469022* p, Tsym214822* s) {
	Ropeobj169006* a;
	TY474652 LOC16;
	NimStringDesc* LOC17;
{	{
		if (!!(((163840 & (*p).options) == 163840))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		Ttype214828* LOC7;
		LOC7 = 0;
		LOC7 = skiptypes_218113((*s).typ, IL64(211106240964864));
		if (!((*LOC7).kind == ((NU8) 27) || (*LOC7).kind == ((NU8) 48))) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	a = HEX26_169452(((NimStringDesc*) &TMP3793), (*s).loc.r);
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = ((*s).kind == ((NU8) 3));
		if (!(LOC12)) goto LA13;
		LOC12 = ccgintroducedptr_473376(s);
		LA13: ;
		if (!LOC12) goto LA14;
		a = (*s).loc.r;
	}
	LA14: ;
	memset((void*)LOC16, 0, sizeof(LOC16));
	LOC16[0] = rope_169401(((NI64) ((*p).maxframelen)));
	LOC17 = 0;
	LOC17 = nsuNormalize((*(*s).name).s);
	LOC16[1] = makecstring_182637(LOC17);
	LOC16[2] = a;
	LOC16[3] = gentypeinfo_475350((*p).module, (*s).loc.t);
	linef_472700(p, ((NU8) 1), ((NimStringDesc*) &TMP3869), LOC16, 4);
	(*p).maxframelen += ((NI) 1);
	(*p).blocks->data[(NI)(((*p).blocks ? (*p).blocks->Sup.len : 0) - ((NI) 1))].framelen += ((NI) 1);
	}BeforeRet: ;
}

N_NIMCALL(void, assignlocalvar_478180)(Tcproc469022* p, Tsym214822* s) {
	Ropeobj169006* decl;
	Ropeobj169006* LOC1;
	Ropeobj169006* LOC2;
	LOC1 = 0;
	LOC1 = localvardecl_478098(p, s);
	LOC2 = 0;
	LOC2 = HEX26_169447(LOC1, ((NimStringDesc*) &TMP3868));
	decl = HEX26_169447(LOC2, tnl_167618);
	line_472690(p, ((NU8) 0), decl);
	localdebuginfo_478015(p, s);
}

N_NIMCALL(void, initlocalvar_477780)(Tcproc469022* p, Tsym214822* v, NIM_BOOL immediateasgn) {
	{
		if (!!((((*v).flags &(1U<<((NU)(((NU8) 12))&31U)))!=0))) goto LA3;
		{
			if (!!(immediateasgn)) goto LA7;
			constructloc_477770(p, (*v).loc, NIM_FALSE);
		}
		LA7: ;
	}
	LA3: ;
}

N_NIMCALL(void, fillresult_473465)(Tsym214822* param) {
	TY473064 LOC1;
	Ropeobj169006* LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = HEX25_169905(((NimStringDesc*) &TMP3959), LOC1, 0);
	fillloc_472282((&(*param).loc), ((NU8) 4), (*param).typ, LOC2, ((NU8) 2));
	{
		NIM_BOOL LOC5;
		NU8 LOC6;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = mapreturntype_473206((*param).typ);
		LOC5 = !((LOC6 == ((NU8) 17)));
		if (!(LOC5)) goto LA7;
		LOC5 = isinvalidreturntype_473318((*param).typ);
		LA7: ;
		if (!LOC5) goto LA8;
		(*param).loc.flags |= ((NU16)1)<<((((NU8) 0))%(sizeof(NU16)*8));
		(*param).loc.s = ((NU8) 0);
	}
	LA8: ;
}

N_NIMCALL(void, assignparam_478540)(Tcproc469022* p, Tsym214822* s) {
	localdebuginfo_478015(p, s);
}

N_NIMCALL(void, closuresetup_500376)(Tcproc469022* p, Tsym214822* prc) {
	Tnode214790* ls;
	Tnode214790* LOC5;
	Tsym214822* env;
	TY501032 LOC10;
{	{
		if (!!((((*(*prc).typ).flags &(1U<<((NU)(((NU8) 11))&31U)))!=0))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = HEX5BHEX5D_215238((*prc).ast, ((NI) 3));
	ls = lastson_217364(LOC5);
	{
		if (!!(((*ls).kind == ((NU8) 3)))) goto LA8;
		internalerror_187100((*prc).info, ((NimStringDesc*) &TMP3960));
	}
	LA8: ;
	env = (*ls).kindU.S4.sym;
	assignlocalvar_478180(p, env);
	memset((void*)LOC10, 0, sizeof(LOC10));
	LOC10[0] = rdloc_477569((*env).loc);
	LOC10[1] = gettypedesc_475055((*p).module, (*env).typ);
	linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3961), LOC10, 2);
	}BeforeRet: ;
}

static N_INLINE(NIM_BOOL, usesnativegc_160168)(void) {
	NIM_BOOL result;
	result = 0;
	result = (((NU8) 4) <= gselectedgc_160124);
	return result;
}

N_NIMCALL(void, keepalive_477817)(Tcproc469022* p, Tloc214804 tokeepalive) {
}

N_NIMCALL(void, genrefassign_477693)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src, NU8 flags) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		TY501032 LOC8;
		LOC3 = 0;
		LOC3 = (dest.s == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = usesnativegc_160168();
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_477569(dest);
		LOC8[1] = rdloc_477569(src);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC8, 2);
		{
			if (!((flags &(1U<<((NU)(((NU8) 6))&7U)))!=0)) goto LA11;
			keepalive_477817(p, dest);
		}
		LA11: ;
	}
	goto LA1;
	LA6: ;
	{
		if (!(dest.s == ((NU8) 3))) goto LA14;
		{
			NIM_BOOL LOC18;
			TY501032 LOC21;
			LOC18 = 0;
			LOC18 = canformacycle_240112(dest.t);
			if (!LOC18) goto LA19;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = addrloc_477585(dest);
			LOC21[1] = rdloc_477569(src);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3963), LOC21, 2);
		}
		goto LA16;
		LA19: ;
		{
			TY501032 LOC23;
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = addrloc_477585(dest);
			LOC23[1] = rdloc_477569(src);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3964), LOC23, 2);
		}
		LA16: ;
	}
	goto LA1;
	LA14: ;
	{
		TY501032 LOC25;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = addrloc_477585(dest);
		LOC25[1] = rdloc_477569(src);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3965), LOC25, 2);
		{
			if (!((flags &(1U<<((NU)(((NU8) 6))&7U)))!=0)) goto LA28;
			keepalive_477817(p, dest);
		}
		LA28: ;
	}
	LA1: ;
}

N_NIMCALL(void, optasgnloc_490008)(Tloc214804 a, Ttype214828* t, Ropeobj169006* field, Tloc214804* Result) {
	Ropeobj169006* LOC1;
	Ropeobj169006* LOC2;
	(*Result).k = ((NU8) 5);
	(*Result).s = a.s;
	unsureAsgnRef((void**) (&(*Result).t), t);
	LOC1 = 0;
	LOC1 = rdloc_477569(a);
	LOC2 = 0;
	LOC2 = HEX26_169447(LOC1, ((NimStringDesc*) &TMP3971));
	unsureAsgnRef((void**) (&(*Result).r), HEX26_169418(LOC2, field));
	unsureAsgnRef((void**) (&(*Result).heaproot), a.heaproot);
}

N_NIMCALL(void, genoptasgntuple_490201)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src, NU8 flags) {
	NU8 newflags;
	Ttype214828* t_490253;
	Ttype214828* LOC9;
	{
		if (!(src.s == ((NU8) 1))) goto LA3;
		newflags = (flags | 1);
	}
	goto LA1;
	LA3: ;
	{
		if (!(((*dest.t).flags &(1U<<((NU)(((NU8) 6))&31U)))!=0)) goto LA6;
		newflags = (flags & ~ 1);
	}
	goto LA1;
	LA6: ;
	{
		newflags = flags;
	}
	LA1: ;
	LOC9 = 0;
	LOC9 = skiptypes_218113(dest.t, IL64(211106232576256));
	t_490253 = getuniquetype_468640(LOC9);
	{
		NI i_490271;
		NI HEX3Atmp_490277;
		NI LOC11;
		NI res_490280;
		i_490271 = 0;
		HEX3Atmp_490277 = 0;
		LOC11 = 0;
		LOC11 = len_217339(t_490253);
		HEX3Atmp_490277 = (LOC11 - 1);
		res_490280 = ((NI) 0);
		{
			while (1) {
				Ttype214828* t;
				Ropeobj169006* field;
				TY169507 LOC14;
				Tloc214804 LOC15;
				Tloc214804 LOC16;
				if (!(res_490280 <= HEX3Atmp_490277)) goto LA13;
				i_490271 = res_490280;
				t = (*t_490253).sons->data[i_490271];
				memset((void*)LOC14, 0, sizeof(LOC14));
				LOC14[0] = rope_169401(((NI64) (i_490271)));
				field = HEX25_169905(((NimStringDesc*) &TMP3974), LOC14, 1);
				memset((void*)(&LOC15), 0, sizeof(LOC15));
				optasgnloc_490008(dest, t, field, (&LOC15));
				memset((void*)(&LOC16), 0, sizeof(LOC16));
				optasgnloc_490008(src, t, field, (&LOC16));
				genassignment_478664(p, LOC15, LOC16, newflags);
				res_490280 += ((NI) 1);
			} LA13: ;
		}
	}
}

N_NIMCALL(void, gengenericasgn_490367)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src, NU8 flags) {
	{
		NIM_BOOL LOC3;
		Ttype214828* LOC5;
		LOC3 = 0;
		LOC3 = !(((flags &(1U<<((NU)(((NU8) 0))&7U)))!=0));
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = skiptypes_218113(dest.t, IL64(211106242013440));
		LOC3 = (((*LOC5).flags &(1U<<((NU)(((NU8) 6))&31U)))!=0);
		LA4: ;
		if (!LOC3) goto LA6;
		{
			NIM_BOOL LOC10;
			NIM_BOOL LOC12;
			TY474655 LOC15;
			LOC10 = 0;
			LOC10 = (dest.s == ((NU8) 2));
			if (LOC10) goto LA11;
			LOC12 = 0;
			LOC12 = usesnativegc_160168();
			LOC10 = !(LOC12);
			LA11: ;
			if (!LOC10) goto LA13;
			usestringh_472345((*p).module);
			memset((void*)LOC15, 0, sizeof(LOC15));
			LOC15[0] = addrloc_477585(dest);
			LOC15[1] = addrloc_477585(src);
			LOC15[2] = rdloc_477569(dest);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3975), LOC15, 3);
			{
				if (!((flags &(1U<<((NU)(((NU8) 6))&7U)))!=0)) goto LA18;
				keepalive_477817(p, dest);
			}
			LA18: ;
		}
		goto LA8;
		LA13: ;
		{
			TY474655 LOC21;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = addrloc_477585(dest);
			LOC21[1] = addrloc_477585(src);
			LOC21[2] = gentypeinfo_475350((*p).module, dest.t);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3976), LOC21, 3);
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	{
		TY474655 LOC23;
		memset((void*)LOC23, 0, sizeof(LOC23));
		LOC23[0] = addrloc_477585(dest);
		LOC23[1] = addrloc_477585(src);
		LOC23[2] = gentypeinfo_475350((*p).module, dest.t);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3977), LOC23, 3);
	}
	LA1: ;
}

N_NIMCALL(NI, asgncomplexity_489970)(Tnode214790* n) {
	NI result;
	result = 0;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		switch ((*n).kind) {
		case ((NU8) 3):
		{
			result = ((NI) 1);
		}
		break;
		case ((NU8) 139):
		{
			result = ((NI) 100);
		}
		break;
		case ((NU8) 138):
		{
			{
				Tnode214790* t_489987;
				t_489987 = 0;
				{
					NI i_490001;
					NI HEX3Atmp_490003;
					NI LOC10;
					NI res_490005;
					i_490001 = 0;
					HEX3Atmp_490003 = 0;
					LOC10 = 0;
					LOC10 = len_215059(n);
					HEX3Atmp_490003 = (LOC10 - 1);
					res_490005 = ((NI) 0);
					{
						while (1) {
							NI LOC13;
							if (!(res_490005 <= HEX3Atmp_490003)) goto LA12;
							i_490001 = res_490005;
							t_489987 = (*n).kindU.S6.sons->data[i_490001];
							LOC13 = 0;
							LOC13 = asgncomplexity_489970(t_489987);
							result += LOC13;
							res_490005 += ((NI) 1);
						} LA12: ;
					}
				}
			}
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, genoptasgnobject_490284)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src, NU8 flags, Tnode214790* t) {
	NU8 newflags;
{	{
		if (!(t == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(src.s == ((NU8) 1))) goto LA7;
		newflags = (flags | 1);
	}
	goto LA5;
	LA7: ;
	{
		if (!(((*dest.t).flags &(1U<<((NU)(((NU8) 6))&31U)))!=0)) goto LA10;
		newflags = (flags & ~ 1);
	}
	goto LA5;
	LA10: ;
	{
		newflags = flags;
	}
	LA5: ;
	switch ((*t).kind) {
	case ((NU8) 3):
	{
		Tsym214822* field;
		Tloc214804 LOC14;
		Tloc214804 LOC15;
		field = (*t).kindU.S4.sym;
		memset((void*)(&LOC14), 0, sizeof(LOC14));
		optasgnloc_490008(dest, (*field).typ, (*field).loc.r, (&LOC14));
		memset((void*)(&LOC15), 0, sizeof(LOC15));
		optasgnloc_490008(src, (*field).typ, (*field).loc.r, (&LOC15));
		genassignment_478664(p, LOC14, LOC15, newflags);
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode214790* child_490355;
			child_490355 = 0;
			{
				NI i_490360;
				NI HEX3Atmp_490362;
				NI LOC19;
				NI res_490364;
				i_490360 = 0;
				HEX3Atmp_490362 = 0;
				LOC19 = 0;
				LOC19 = len_215059(t);
				HEX3Atmp_490362 = (LOC19 - 1);
				res_490364 = ((NI) 0);
				{
					while (1) {
						if (!(res_490364 <= HEX3Atmp_490362)) goto LA21;
						i_490360 = res_490364;
						child_490355 = (*t).kindU.S6.sons->data[i_490360];
						genoptasgnobject_490284(p, dest, src, newflags, child_490355);
						res_490364 += ((NI) 1);
					} LA21: ;
				}
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(void, genassignment_478664)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src, NU8 flags) {
	Ttype214828* ty;
{	{
		NIM_BOOL LOC3;
		TY501032 LOC7;
		LOC3 = 0;
		LOC3 = !((src.t == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*src.t).kind == ((NU8) 21));
		LA4: ;
		if (!LOC3) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_477569(dest);
		LOC7[1] = rdloc_477569(src);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC7, 2);
		goto BeforeRet;
	}
	LA5: ;
	ty = skiptypes_218113(dest.t, IL64(211106233624832));
	switch ((*ty).kind) {
	case ((NU8) 22):
	{
		genrefassign_477693(p, dest, src, flags);
	}
	break;
	case ((NU8) 24):
	{
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = !(((flags &(1U<<((NU)(((NU8) 0))&7U)))!=0));
			if (!(LOC12)) goto LA13;
			LOC12 = !((src.s == ((NU8) 1)));
			LA13: ;
			if (!LOC12) goto LA14;
			genrefassign_477693(p, dest, src, flags);
		}
		goto LA10;
		LA14: ;
		{
			TY474655 LOC17;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = addrloc_477585(dest);
			LOC17[1] = rdloc_477569(src);
			LOC17[2] = gentypeinfo_475350((*p).module, dest.t);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3966), LOC17, 3);
		}
		LA10: ;
	}
	break;
	case ((NU8) 28):
	{
		{
			NIM_BOOL LOC21;
			LOC21 = 0;
			LOC21 = !(((flags &(1U<<((NU)(((NU8) 0))&7U)))!=0));
			if (!(LOC21)) goto LA22;
			LOC21 = !((src.s == ((NU8) 1)));
			LA22: ;
			if (!LOC21) goto LA23;
			genrefassign_477693(p, dest, src, flags);
		}
		goto LA19;
		LA23: ;
		{
			{
				NIM_BOOL LOC28;
				NIM_BOOL LOC30;
				TY501032 LOC33;
				LOC28 = 0;
				LOC28 = (dest.s == ((NU8) 2));
				if (LOC28) goto LA29;
				LOC30 = 0;
				LOC30 = usesnativegc_160168();
				LOC28 = !(LOC30);
				LA29: ;
				if (!LOC28) goto LA31;
				memset((void*)LOC33, 0, sizeof(LOC33));
				LOC33[0] = rdloc_477569(dest);
				LOC33[1] = rdloc_477569(src);
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3967), LOC33, 2);
				{
					if (!((flags &(1U<<((NU)(((NU8) 6))&7U)))!=0)) goto LA36;
					keepalive_477817(p, dest);
				}
				LA36: ;
			}
			goto LA26;
			LA31: ;
			{
				Tloc214804 tmp;
				TY474655 LOC41;
				TY169507 LOC42;
				if (!(dest.s == ((NU8) 3))) goto LA39;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_476435(p, ty, (&tmp), NIM_FALSE);
				memset((void*)LOC41, 0, sizeof(LOC41));
				LOC41[0] = rdloc_477569(dest);
				LOC41[1] = rdloc_477569(src);
				LOC41[2] = rdloc_477569(tmp);
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3968), LOC41, 3);
				memset((void*)LOC42, 0, sizeof(LOC42));
				LOC42[0] = rdloc_477569(tmp);
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3969), LOC42, 1);
			}
			goto LA26;
			LA39: ;
			{
				TY501032 LOC44;
				memset((void*)LOC44, 0, sizeof(LOC44));
				LOC44[0] = addrloc_477585(dest);
				LOC44[1] = rdloc_477569(src);
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3970), LOC44, 2);
				{
					if (!((flags &(1U<<((NU)(((NU8) 6))&7U)))!=0)) goto LA47;
					keepalive_477817(p, dest);
				}
				LA47: ;
			}
			LA26: ;
		}
		LA19: ;
	}
	break;
	case ((NU8) 25):
	{
		{
			NIM_BOOL LOC52;
			Tloc214804 a;
			Ropeobj169006* LOC55;
			Tloc214804 LOC56;
			Tloc214804 b;
			Ropeobj169006* LOC57;
			Tloc214804 LOC58;
			TY501032 LOC59;
			LOC52 = 0;
			LOC52 = needscomplexassignment_473279(dest.t);
			if (!LOC52) goto LA53;
			memset((void*)(&a), 0, sizeof(a));
			LOC55 = 0;
			LOC55 = rope_169277(((NimStringDesc*) &TMP3972));
			memset((void*)(&LOC56), 0, sizeof(LOC56));
			optasgnloc_490008(dest, dest.t, LOC55, (&LOC56));
			memcpy((void*)(&a), (NIM_CONST void*)(&LOC56), sizeof(a));
			memset((void*)(&b), 0, sizeof(b));
			LOC57 = 0;
			LOC57 = rope_169277(((NimStringDesc*) &TMP3972));
			memset((void*)(&LOC58), 0, sizeof(LOC58));
			optasgnloc_490008(src, dest.t, LOC57, (&LOC58));
			memcpy((void*)(&b), (NIM_CONST void*)(&LOC58), sizeof(b));
			genrefassign_477693(p, a, b, flags);
			memset((void*)LOC59, 0, sizeof(LOC59));
			LOC59[0] = rdloc_477569(dest);
			LOC59[1] = rdloc_477569(src);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3973), LOC59, 2);
		}
		goto LA50;
		LA53: ;
		{
			TY501032 LOC61;
			memset((void*)LOC61, 0, sizeof(LOC61));
			LOC61[0] = rdloc_477569(dest);
			LOC61[1] = rdloc_477569(src);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC61, 2);
		}
		LA50: ;
	}
	break;
	case ((NU8) 18):
	{
		{
			NIM_BOOL LOC65;
			LOC65 = 0;
			LOC65 = needscomplexassignment_473279(dest.t);
			if (!LOC65) goto LA66;
			{
				NI LOC70;
				LOC70 = 0;
				LOC70 = len_217339(dest.t);
				if (!(LOC70 <= ((NI) 4))) goto LA71;
				genoptasgntuple_490201(p, dest, src, flags);
			}
			goto LA68;
			LA71: ;
			{
				gengenericasgn_490367(p, dest, src, flags);
			}
			LA68: ;
		}
		goto LA63;
		LA66: ;
		{
			TY501032 LOC75;
			memset((void*)LOC75, 0, sizeof(LOC75));
			LOC75[0] = rdloc_477569(dest);
			LOC75[1] = rdloc_477569(src);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC75, 2);
		}
		LA63: ;
	}
	break;
	case ((NU8) 17):
	{
		{
			NIM_BOOL LOC79;
			TY501032 LOC82;
			LOC79 = 0;
			LOC79 = isimportedcpptype_473246(ty);
			if (!LOC79) goto LA80;
			memset((void*)LOC82, 0, sizeof(LOC82));
			LOC82[0] = rdloc_477569(dest);
			LOC82[1] = rdloc_477569(src);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC82, 2);
		}
		goto LA77;
		LA80: ;
		{
			NIM_BOOL LOC84;
			LOC84 = 0;
			LOC84 = isobjlackingtypefield_473283(ty);
			if (!!(LOC84)) goto LA85;
			gengenericasgn_490367(p, dest, src, flags);
		}
		goto LA77;
		LA85: ;
		{
			NIM_BOOL LOC88;
			LOC88 = 0;
			LOC88 = needscomplexassignment_473279(ty);
			if (!LOC88) goto LA89;
			{
				NIM_BOOL LOC93;
				NI LOC95;
				Ropeobj169006* LOC98;
				LOC93 = 0;
				LOC93 = (*ty).sons->data[((NI) 0)] == 0;
				if (!(LOC93)) goto LA94;
				LOC95 = 0;
				LOC95 = asgncomplexity_489970((*ty).n);
				LOC93 = (LOC95 <= ((NI) 4));
				LA94: ;
				if (!LOC93) goto LA96;
				LOC98 = 0;
				LOC98 = gettypedesc_475055((*p).module, ty);
				ty = getuniquetype_468640(ty);
				{
					NimStringDesc* LOC103;
					if (!!(!(((*ty).n == NIM_NIL)))) goto LA101;
					LOC103 = 0;
					LOC103 = HEX24_187183(TMP3978);
					internalerror_187113(LOC103);
				}
				LA101: ;
				genoptasgnobject_490284(p, dest, src, flags, (*ty).n);
			}
			goto LA91;
			LA96: ;
			{
				gengenericasgn_490367(p, dest, src, flags);
			}
			LA91: ;
		}
		goto LA77;
		LA89: ;
		{
			TY501032 LOC106;
			memset((void*)LOC106, 0, sizeof(LOC106));
			LOC106[0] = rdloc_477569(dest);
			LOC106[1] = rdloc_477569(src);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC106, 2);
		}
		LA77: ;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		{
			NIM_BOOL LOC110;
			LOC110 = 0;
			LOC110 = needscomplexassignment_473279(dest.t);
			if (!LOC110) goto LA111;
			gengenericasgn_490367(p, dest, src, flags);
		}
		goto LA108;
		LA111: ;
		{
			TY474655 LOC114;
			usestringh_472345((*p).module);
			memset((void*)LOC114, 0, sizeof(LOC114));
			LOC114[0] = rdloc_477569(dest);
			LOC114[1] = rdloc_477569(src);
			LOC114[2] = gettypedesc_475055((*p).module, ty);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3975), LOC114, 3);
		}
		LA108: ;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			NIM_BOOL LOC118;
			TY474655 LOC121;
			LOC118 = 0;
			LOC118 = needscomplexassignment_473279(dest.t);
			if (!LOC118) goto LA119;
			memset((void*)LOC121, 0, sizeof(LOC121));
			LOC121[0] = addrloc_477585(dest);
			LOC121[1] = addrloc_477585(src);
			LOC121[2] = gentypeinfo_475350((*p).module, dest.t);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3980), LOC121, 3);
		}
		goto LA116;
		LA119: ;
		{
			TY501032 LOC123;
			usestringh_472345((*p).module);
			memset((void*)LOC123, 0, sizeof(LOC123));
			LOC123[0] = rdloc_477569(dest);
			LOC123[1] = rdloc_477569(src);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3981), LOC123, 2);
		}
		LA116: ;
	}
	break;
	case ((NU8) 19):
	{
		{
			NU8 LOC127;
			TY474655 LOC130;
			NI64 LOC131;
			LOC127 = 0;
			LOC127 = maptype_473166(ty);
			if (!(LOC127 == ((NU8) 17))) goto LA128;
			usestringh_472345((*p).module);
			memset((void*)LOC130, 0, sizeof(LOC130));
			LOC130[0] = rdloc_477569(dest);
			LOC130[1] = rdloc_477569(src);
			LOC131 = 0;
			LOC131 = getsize_240124(dest.t);
			LOC130[2] = rope_169401(LOC131);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3982), LOC130, 3);
		}
		goto LA125;
		LA128: ;
		{
			TY501032 LOC133;
			memset((void*)LOC133, 0, sizeof(LOC133));
			LOC133[0] = rdloc_477569(dest);
			LOC133[1] = rdloc_477569(src);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC133, 2);
		}
		LA125: ;
	}
	break;
	case ((NU8) 21):
	case ((NU8) 26):
	case ((NU8) 2):
	case ((NU8) 1):
	case ((NU8) 14):
	case ((NU8) 29):
	case ((NU8) 31) ... ((NU8) 44):
	case ((NU8) 20):
	case ((NU8) 23):
	{
		TY501032 LOC135;
		memset((void*)LOC135, 0, sizeof(LOC135));
		LOC135[0] = rdloc_477569(dest);
		LOC135[1] = rdloc_477569(src);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC135, 2);
	}
	break;
	default:
	{
		NimStringDesc* LOC137;
		LOC137 = 0;
		LOC137 = rawNewString(reprEnum((*ty).kind, (&NTI214241))->Sup.len + 15);
appendString(LOC137, ((NimStringDesc*) &TMP3983));
appendString(LOC137, reprEnum((*ty).kind, (&NTI214241)));
		internalerror_187113(LOC137);
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(void, putlocintodest_478658)(Tcproc469022* p, Tloc214804* d, Tloc214804 s) {
	{
		if (!!(((*d).k == ((NU8) 0)))) goto LA3;
		{
			if (!(((*d).flags &(1U<<((NU)(((NU8) 2))&15U)))!=0)) goto LA7;
			genassignment_478664(p, (*d), s, 0);
		}
		goto LA5;
		LA7: ;
		{
			genassignment_478664(p, (*d), s, 1);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		genericAssign((void*)(&(*d)), (void*)(&s), (&NTI214804));
	}
	LA1: ;
}

static N_INLINE(NIM_BOOL, emulatedthreadvars_472949)(void) {
	NIM_BOOL result;
	result = 0;
	result = ((71303168 & ~ gglobaloptions_160121)==0);
	return result;
}

N_NIMCALL(void, declarethreadvar_478232)(Tcgen469026* m, Tsym214822* s, NIM_BOOL isextern) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = emulatedthreadvars_472949();
		if (!LOC3) goto LA4;
		{
			NIM_BOOL LOC8;
			TY501032 LOC11;
			LOC8 = 0;
			LOC8 = containsorincl_211862((&nimtvdeclared_478231), (*s).Sup.id);
			if (!!(LOC8)) goto LA9;
			nimtvdeps_478230 = (Ttypeseq214824*) incrSeqV2(&(nimtvdeps_478230)->Sup, sizeof(Ttype214828*));
			asgnRefNoCycle((void**) (&nimtvdeps_478230->data[nimtvdeps_478230->Sup.len]), (*s).loc.t);
			++nimtvdeps_478230->Sup.len;
			memset((void*)LOC11, 0, sizeof(LOC11));
			LOC11[0] = gettypedesc_475055(m, (*s).loc.t);
			LOC11[1] = (*s).loc.r;
			addf_170205(&nimtv_478212, ((NimStringDesc*) &TMP3795), LOC11, 2);
		}
		LA9: ;
	}
	goto LA1;
	LA4: ;
	{
		Ropeobj169006* LOC21;
		TY169507 LOC22;
		{
			if (!isextern) goto LA15;
			add_169487(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3986));
		}
		LA15: ;
		{
			if (!((gglobaloptions_160121 &(1U<<((NU)(((NU8) 22))&31U)))!=0)) goto LA19;
			add_169487(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3987));
		}
		LA19: ;
		LOC21 = 0;
		LOC21 = gettypedesc_475055(m, (*s).loc.t);
		add_169482(&(*m).s[(((NU8) 9))- 0], LOC21);
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = (*s).loc.r;
		addf_170205(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3988), LOC22, 1);
	}
	LA1: ;
}

N_NIMCALL(void, genvarprototypeaux_484054)(Tcgen469026* m, Tsym214822* sym) {
	Ropeobj169006* LOC1;
{	useheader_472349(m, sym);
	LOC1 = 0;
	LOC1 = manglename_472977(sym);
	fillloc_472282((&(*sym).loc), ((NU8) 3), (*sym).typ, LOC1, ((NU8) 3));
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = (((*sym).loc.flags &(1U<<((NU)(((NU8) 3))&15U)))!=0);
		if (LOC4) goto LA5;
		LOC4 = containsorincl_211862((&(*m).declaredthings), (*sym).Sup.id);
		LA5: ;
		if (!LOC4) goto LA6;
		goto BeforeRet;
	}
	LA6: ;
	{
		if (!!(((*(*sym).owner).Sup.id == (*(*m).module).Sup.id))) goto LA10;
		{
			if (!(((*sym).flags &(1U<<((NU)(((NU8) 22))&31U)))!=0)) goto LA14;
			declarethreadvar_478232(m, sym, NIM_TRUE);
		}
		goto LA12;
		LA14: ;
		{
			Ropeobj169006* LOC17;
			TY169507 LOC30;
			add_169487(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3986));
			LOC17 = 0;
			LOC17 = gettypedesc_475055(m, (*sym).loc.t);
			add_169482(&(*m).s[(((NU8) 9))- 0], LOC17);
			{
				if (!(((*sym).loc.flags &(1U<<((NU)(((NU8) 4))&15U)))!=0)) goto LA20;
				add_169487(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3794));
			}
			LA20: ;
			{
				if (!(((*sym).flags &(1U<<((NU)(((NU8) 8))&31U)))!=0)) goto LA24;
				add_169487(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3866));
			}
			LA24: ;
			{
				if (!(((*sym).flags &(1U<<((NU)(((NU8) 7))&31U)))!=0)) goto LA28;
				add_169487(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3867));
			}
			LA28: ;
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = (*sym).loc.r;
			addf_170205(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3988), LOC30, 1);
		}
		LA12: ;
	}
	LA10: ;
	}BeforeRet: ;
}

N_NIMCALL(void, genvarprototype_478636)(Tcgen469026* m, Tsym214822* sym) {
	genvarprototypeaux_484054(m, sym);
}

N_NIMCALL(NIM_BOOL, issimpleconst_472311)(Ttype214828* typ) {
	NIM_BOOL result;
	Ttype214828* t;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	result = 0;
	t = skiptypes_218113(typ, IL64(211106240964864));
	LOC1 = 0;
	LOC1 = !(((*t).kind == ((NU8) 18) || (*t).kind == ((NU8) 17) || (*t).kind == ((NU8) 16) || (*t).kind == ((NU8) 4) || (*t).kind == ((NU8) 19) || (*t).kind == ((NU8) 24)));
	if (!(LOC1)) goto LA2;
	LOC3 = 0;
	LOC3 = ((*t).kind == ((NU8) 25));
	if (!(LOC3)) goto LA4;
	LOC3 = ((*t).callconv == ((NU8) 8));
	LA4: ;
	LOC1 = !(LOC3);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, initloc_472273)(Tloc214804* result, NU8 k, Ttype214828* typ, NU8 s) {
	(*result).k = k;
	(*result).s = s;
	unsureAsgnRef((void**) (&(*result).t), typ);
	unsureAsgnRef((void**) (&(*result).r), NIM_NIL);
	(*result).flags = 0;
}

N_NIMCALL(void, putintodest_490713)(Tcproc469022* p, Tloc214804* d, Ttype214828* t, Ropeobj169006* r, NU8 s) {
	Tloc214804 a;
	memset((void*)(&a), 0, sizeof(a));
	{
		if (!!(((*d).k == ((NU8) 0)))) goto LA3;
		initloc_472273((&a), ((NU8) 6), t, s);
		a.r = r;
		{
			if (!(((*d).flags &(1U<<((NU)(((NU8) 2))&15U)))!=0)) goto LA7;
			genassignment_478664(p, (*d), a, 0);
		}
		goto LA5;
		LA7: ;
		{
			genassignment_478664(p, (*d), a, 1);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		(*d).k = ((NU8) 6);
		unsureAsgnRef((void**) (&(*d).t), t);
		unsureAsgnRef((void**) (&(*d).r), r);
	}
	LA1: ;
}

N_NIMCALL(Tcgen469026*, findpendingmodule_472241)(Tcgen469026* m, Tsym214822* s) {
	Tcgen469026* result;
	Tsym214822* ms;
	result = 0;
	ms = getmodule_221144(s);
	result = gmodules_469157->data[(*ms).position];
	return result;
}

N_NIMCALL(NI64, bitsettoword_489605)(Tbitset259006* s, NI size) {
	NI64 result;
	result = 0;
	result = IL64(0);
	{
		NI j_489812;
		NI HEX3Atmp_489822;
		NI res_489825;
		j_489812 = 0;
		HEX3Atmp_489822 = 0;
		HEX3Atmp_489822 = (NI)(size - ((NI) 1));
		res_489825 = ((NI) 0);
		{
			while (1) {
				if (!(res_489825 <= HEX3Atmp_489822)) goto LA3;
				j_489812 = res_489825;
				{
					if (!(j_489812 < (s ? s->Sup.len : 0))) goto LA6;
					result = (NI64)(result | (NI64)((NU64)(((NI64)(NU64)(NU8)(s->data[j_489812]))) << (NU64)(((NI64) ((NI)(j_489812 * ((NI) 8)))))));
				}
				LA6: ;
				res_489825 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(Ropeobj169006*, genrawsetdata_489829)(Tbitset259006* cs, NI size) {
	Ropeobj169006* result;
	NimStringDesc* frmt;
	result = 0;
	frmt = 0;
	{
		TY473064 LOC5;
		if (!(((NI) 8) < size)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		result = HEX25_169905(((NimStringDesc*) &TMP3990), LOC5, 0);
		{
			NI i_489849;
			NI HEX3Atmp_489857;
			NI res_489860;
			i_489849 = 0;
			HEX3Atmp_489857 = 0;
			HEX3Atmp_489857 = (NI)(size - ((NI) 1));
			res_489860 = ((NI) 0);
			{
				while (1) {
					TY169507 LOC19;
					NimStringDesc* LOC20;
					if (!(res_489860 <= HEX3Atmp_489857)) goto LA8;
					i_489849 = res_489860;
					{
						if (!(i_489849 < (NI)(size - ((NI) 1)))) goto LA11;
						{
							if (!(((NI) ((NI)((NI)(i_489849 + ((NI) 1)) % ((NI) 8)))) == ((NI) 0))) goto LA15;
							frmt = copyString(((NimStringDesc*) &TMP3991));
						}
						goto LA13;
						LA15: ;
						{
							frmt = copyString(((NimStringDesc*) &TMP3992));
						}
						LA13: ;
					}
					goto LA9;
					LA11: ;
					{
						frmt = copyString(((NimStringDesc*) &TMP3993));
					}
					LA9: ;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC20 = 0;
					LOC20 = nsuToHex(((NI64)(NU64)(NU8)(cs->data[i_489849])), ((NI) 2));
					LOC19[0] = rope_169277(LOC20);
					addf_170205(&result, frmt, LOC19, 1);
					res_489860 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	goto LA1;
	LA3: ;
	{
		NI64 LOC22;
		LOC22 = 0;
		LOC22 = bitsettoword_489605(cs, size);
		result = intliteral_478670(LOC22);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, appcg_472640)(Tcgen469026* m, NU8 s, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0) {
	Ropeobj169006* LOC1;
	LOC1 = 0;
	LOC1 = ropecg_472407(m, frmt, args, argsLen0);
	add_169482(&(*m).s[(s)- 0], LOC1);
}

N_NIMCALL(Ropeobj169006*, genconstseq_499519)(Tcproc469022* p, Tnode214790* n, Ttype214828* t) {
	Ropeobj169006* result;
	Ropeobj169006* data;
	TY169507 LOC1;
	NI LOC2;
	Ropeobj169006* LOC18;
	TY474652 LOC19;
	NI LOC20;
	TY501032 LOC21;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = len_215059(n);
	LOC1[0] = rope_169401(((NI64) (LOC2)));
	data = HEX25_169905(((NimStringDesc*) &TMP3994), LOC1, 1);
	{
		NI LOC5;
		LOC5 = 0;
		LOC5 = len_215059(n);
		if (!(((NI) 0) < LOC5)) goto LA6;
		add_169487(&data, ((NimStringDesc*) &TMP3995));
		{
			NI i_499543;
			NI HEX3Atmp_499568;
			NI LOC9;
			NI res_499571;
			i_499543 = 0;
			HEX3Atmp_499568 = 0;
			LOC9 = 0;
			LOC9 = len_215059(n);
			HEX3Atmp_499568 = (NI)(LOC9 - ((NI) 1));
			res_499571 = ((NI) 0);
			{
				while (1) {
					Ropeobj169006* LOC17;
					if (!(res_499571 <= HEX3Atmp_499568)) goto LA11;
					i_499543 = res_499571;
					{
						TY473064 LOC16;
						if (!(((NI) 0) < i_499543)) goto LA14;
						memset((void*)LOC16, 0, sizeof(LOC16));
						addf_170205(&data, ((NimStringDesc*) &TMP3996), LOC16, 0);
					}
					LA14: ;
					LOC17 = 0;
					LOC17 = genconstexpr_497898(p, (*n).kindU.S6.sons->data[i_499543]);
					add_169482(&data, LOC17);
					res_499571 += ((NI) 1);
				} LA11: ;
			}
		}
		add_169487(&data, ((NimStringDesc*) &TMP3997));
	}
	LA6: ;
	add_169487(&data, ((NimStringDesc*) &TMP3997));
	gbackendid_213004 += ((NI) 1);
	LOC18 = 0;
	LOC18 = rope_169401(((NI64) (gbackendid_213004)));
	result = HEX26_169452(((NimStringDesc*) &TMP3998), LOC18);
	memset((void*)LOC19, 0, sizeof(LOC19));
	LOC19[0] = gettypedesc_475055((*p).module, (*t).sons->data[((NI) 0)]);
	LOC20 = 0;
	LOC20 = len_215059(n);
	LOC19[1] = rope_169401(((NI64) (LOC20)));
	LOC19[2] = result;
	LOC19[3] = data;
	appcg_472640((*p).module, ((NU8) 8), ((NimStringDesc*) &TMP3999), LOC19, 4);
	memset((void*)LOC21, 0, sizeof(LOC21));
	LOC21[0] = gettypedesc_475055((*p).module, t);
	LOC21[1] = result;
	result = HEX25_169905(((NimStringDesc*) &TMP4000), LOC21, 2);
	return result;
}

N_NIMCALL(Ropeobj169006*, gennamedconstexpr_499449)(Tcproc469022* p, Tnode214790* n) {
	Ropeobj169006* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 34))) goto LA3;
		result = genconstexpr_497898(p, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	goto LA1;
	LA3: ;
	{
		result = genconstexpr_497898(p, n);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, genconstsimplelist_499464)(Tcproc469022* p, Tnode214790* n) {
	Ropeobj169006* result;
	NI length;
	TY473064 LOC10;
	result = 0;
	length = sonslen_217351(n);
	result = rope_169277(((NimStringDesc*) &TMP4001));
	{
		NI i_499498;
		NI HEX3Atmp_499510;
		NI HEX3Atmp_499511;
		NI res_499514;
		i_499498 = 0;
		HEX3Atmp_499510 = 0;
		HEX3Atmp_499511 = 0;
		HEX3Atmp_499510 = ((*n).kind == ((NU8) 38));
		HEX3Atmp_499511 = (NI)(length - ((NI) 2));
		res_499514 = ((NI) (HEX3Atmp_499510));
		{
			while (1) {
				TY169507 LOC4;
				if (!(res_499514 <= HEX3Atmp_499511)) goto LA3;
				i_499498 = res_499514;
				memset((void*)LOC4, 0, sizeof(LOC4));
				LOC4[0] = gennamedconstexpr_499449(p, (*n).kindU.S6.sons->data[i_499498]);
				addf_170205(&result, ((NimStringDesc*) &TMP4002), LOC4, 1);
				res_499514 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		Ropeobj169006* LOC9;
		if (!(((NI) 0) < length)) goto LA7;
		LOC9 = 0;
		LOC9 = gennamedconstexpr_499449(p, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]);
		add_169482(&result, LOC9);
	}
	LA7: ;
	memset((void*)LOC10, 0, sizeof(LOC10));
	addf_170205(&result, ((NimStringDesc*) &TMP3904), LOC10, 0);
	return result;
}

N_NIMCALL(void, initlocexpr_478683)(Tcproc469022* p, Tnode214790* e, Tloc214804* result) {
	initloc_472273(result, ((NU8) 0), (*e).typ, ((NU8) 0));
	expr_478648(p, e, result);
}

N_NIMCALL(Ropeobj169006*, genconstexpr_497898)(Tcproc469022* p, Tnode214790* n) {
	Ropeobj169006* result;
	result = 0;
	switch ((*n).kind) {
	case ((NU8) 58):
	case ((NU8) 59):
	{
		result = genconstexpr_497898(p, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 39):
	{
		Tbitset259006* cs;
		NI64 LOC3;
		cs = 0;
		tobitset_260001(n, (&cs));
		LOC3 = 0;
		LOC3 = getsize_240124((*n).typ);
		result = genrawsetdata_489829(cs, ((NI) (LOC3)));
	}
	break;
	case ((NU8) 41):
	case ((NU8) 37):
	case ((NU8) 155):
	case ((NU8) 38):
	{
		Ttype214828* t;
		t = skiptypes_218113((*n).typ, IL64(211106232576256));
		{
			if (!((*t).kind == ((NU8) 24))) goto LA7;
			result = genconstseq_499519(p, n, t);
		}
		goto LA5;
		LA7: ;
		{
			result = genconstsimplelist_499464(p, n);
		}
		LA5: ;
	}
	break;
	default:
	{
		Tloc214804 d;
		memset((void*)(&d), 0, sizeof(d));
		initlocexpr_478683(p, n, (&d));
		result = rdloc_477569(d);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, requestconstimpl_478640)(Tcproc469022* p, Tsym214822* sym) {
	Tcgen469026* m;
	Tcgen469026* q;
{	m = (*p).module;
	useheader_472349(m, sym);
	{
		Ropeobj169006* LOC5;
		if (!((*sym).loc.k == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_472977(sym);
		fillloc_472282((&(*sym).loc), ((NU8) 8), (*sym).typ, LOC5, ((NU8) 1));
	}
	LA3: ;
	{
		if (!(((*sym).loc.flags &(1U<<((NU)(((NU8) 3))&15U)))!=0)) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	q = findpendingmodule_472241(m, sym);
	{
		NIM_BOOL LOC12;
		NIM_BOOL LOC14;
		TY474655 LOC17;
		LOC12 = 0;
		LOC12 = !((q == NIM_NIL));
		if (!(LOC12)) goto LA13;
		LOC14 = 0;
		LOC14 = containsorincl_211862((&(*q).declaredthings), (*sym).Sup.id);
		LOC12 = !(LOC14);
		LA13: ;
		if (!LOC12) goto LA15;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = gettypedesc_475055(q, (*sym).typ);
		LOC17[1] = (*sym).loc.r;
		LOC17[2] = genconstexpr_497898((*q).initproc, (*sym).ast);
		addf_170205(&(*q).s[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3989), LOC17, 3);
	}
	LA15: ;
	{
		NIM_BOOL LOC20;
		NIM_BOOL LOC22;
		Ropeobj169006* headerdecl;
		TY501032 LOC25;
		LOC20 = 0;
		LOC20 = !((q == m));
		if (!(LOC20)) goto LA21;
		LOC22 = 0;
		LOC22 = containsorincl_211862((&(*m).declaredthings), (*sym).Sup.id);
		LOC20 = !(LOC22);
		LA21: ;
		if (!LOC20) goto LA23;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = gettypedesc_475055(m, (*sym).loc.t);
		LOC25[1] = (*sym).loc.r;
		headerdecl = HEX25_169905(((NimStringDesc*) &TMP4003), LOC25, 2);
		add_169482(&(*m).s[(((NU8) 8))- 0], headerdecl);
		{
			NIM_BOOL LOC28;
			LOC28 = 0;
			LOC28 = (((*sym).flags &(1U<<((NU)(((NU8) 6))&31U)))!=0);
			if (!(LOC28)) goto LA29;
			LOC28 = !((generatedheader_472201 == NIM_NIL));
			LA29: ;
			if (!LOC28) goto LA30;
			add_169482(&(*generatedheader_472201).s[(((NU8) 8))- 0], headerdecl);
		}
		LA30: ;
	}
	LA23: ;
	}BeforeRet: ;
}

N_NIMCALL(void, gencomplexconst_498480)(Tcproc469022* p, Tsym214822* sym, Tloc214804* d) {
	requestconstimpl_478640(p, sym);
	putlocintodest_478658(p, d, (*sym).loc);
}

static N_INLINE(Ropeobj169006**, procsec_469181)(Tcproc469022* p, NU8 s) {
	Ropeobj169006** result;
	result = 0;
	result = &(*p).blocks->data[((NI) 0)].sections[(s)- 0];
	return result;
}

N_NIMCALL(void, accessthreadlocalvar_472945)(Tcproc469022* p, Tsym214822* s) {
	{
		NIM_BOOL LOC3;
		Ropeobj169006** LOC7;
		TY473064 LOC8;
		Ropeobj169006** LOC9;
		TY473064 LOC10;
		Ropeobj169006* LOC11;
		LOC3 = 0;
		LOC3 = emulatedthreadvars_472949();
		if (!(LOC3)) goto LA4;
		LOC3 = !((*p).threadvaraccessed);
		LA4: ;
		if (!LOC3) goto LA5;
		(*p).threadvaraccessed = NIM_TRUE;
		(*(*p).module).usesthreadvars = NIM_TRUE;
		LOC7 = 0;
		LOC7 = procsec_469181(p, ((NU8) 0));
		memset((void*)LOC8, 0, sizeof(LOC8));
		addf_170205(LOC7, ((NimStringDesc*) &TMP4005), LOC8, 0);
		LOC9 = 0;
		LOC9 = procsec_469181(p, ((NU8) 1));
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC11 = 0;
		LOC11 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4006), LOC10, 0);
		add_169482(LOC9, LOC11);
	}
	LA5: ;
}

static N_INLINE(NIM_BOOL, isemptytype_219513)(Ttype214828* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = (t == NIM_NIL);
	if (LOC1) goto LA2;
	LOC1 = ((*t).kind == ((NU8) 3) || (*t).kind == ((NU8) 7));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, putdataintodest_490681)(Tcproc469022* p, Tloc214804* d, Ttype214828* t, Ropeobj169006* r) {
	Tloc214804 a;
	memset((void*)(&a), 0, sizeof(a));
	{
		if (!!(((*d).k == ((NU8) 0)))) goto LA3;
		initloc_472273((&a), ((NU8) 8), t, ((NU8) 1));
		a.r = r;
		{
			if (!(((*d).flags &(1U<<((NU)(((NU8) 2))&15U)))!=0)) goto LA7;
			genassignment_478664(p, (*d), a, 0);
		}
		goto LA5;
		LA7: ;
		{
			genassignment_478664(p, (*d), a, 1);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		(*d).k = ((NU8) 8);
		unsureAsgnRef((void**) (&(*d).t), t);
		unsureAsgnRef((void**) (&(*d).r), r);
	}
	LA1: ;
}

N_NIMCALL(NIM_BOOL, freshlineinfo_472818)(Tcproc469022* p, Tlineinfo182337 info) {
	NIM_BOOL result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*p).lastlineinfo.line == info.line));
		if (LOC3) goto LA4;
		LOC3 = !(((*p).lastlineinfo.fileindex == info.fileindex));
		LA4: ;
		if (!LOC3) goto LA5;
		(*p).lastlineinfo.line = info.line;
		(*p).lastlineinfo.fileindex = info.fileindex;
		result = NIM_TRUE;
	}
	LA5: ;
	return result;
}

N_NIMCALL(void, genlinedir_472823)(Tcproc469022* p, Tnode214790* t) {
	NI line;
	Ropeobj169006** LOC11;
	NimStringDesc* LOC12;
	line = safelinenm_472729((*t).info);
	{
		Ropeobj169006** LOC5;
		TY473064 LOC6;
		Ropeobj169006* LOC7;
		Ropeobj169006* LOC8;
		Ropeobj169006* LOC9;
		Ropeobj169006* LOC10;
		if (!((gglobaloptions_160121 &(1U<<((NU)(((NU8) 28))&31U)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = s_469166(p, ((NU8) 2));
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC7 = 0;
		LOC7 = HEX25_169905(((NimStringDesc*) &TMP4012), LOC6, 0);
		LOC8 = 0;
		LOC8 = sourceline_183077((*t).info);
		LOC9 = 0;
		LOC9 = HEX26_169418(LOC7, LOC8);
		LOC10 = 0;
		LOC10 = HEX26_169418(LOC9, rnl_169903);
		add_169482(LOC5, LOC10);
	}
	LA3: ;
	LOC11 = 0;
	LOC11 = s_469166(p, ((NU8) 2));
	LOC12 = 0;
	LOC12 = tofullpath_183269((*t).info.fileindex);
	genclinedir_472733(LOC11, LOC12, line);
	{
		NIM_BOOL LOC15;
		NIM_BOOL LOC17;
		LOC15 = 0;
		LOC15 = ((163840 & (*p).options) == 163840);
		if (!(LOC15)) goto LA16;
		LOC17 = 0;
		LOC17 = ((*p).prc == NIM_NIL);
		if (LOC17) goto LA18;
		LOC17 = !((((*(*p).prc).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0));
		LA18: ;
		LOC15 = LOC17;
		LA16: ;
		if (!LOC15) goto LA19;
		{
			NIM_BOOL LOC23;
			TY501032 LOC26;
			NimStringDesc* LOC27;
			LOC23 = 0;
			LOC23 = freshlineinfo_472818(p, (*t).info);
			if (!LOC23) goto LA24;
			memset((void*)LOC26, 0, sizeof(LOC26));
			LOC26[0] = rope_169401(((NI64) (line)));
			LOC27 = 0;
			LOC27 = tofilename_183265((*t).info.fileindex);
			LOC26[1] = makecstring_182637(LOC27);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4013), LOC26, 2);
		}
		LA24: ;
	}
	goto LA13;
	LA19: ;
	{
		NIM_BOOL LOC29;
		NIM_BOOL LOC30;
		NIM_BOOL LOC32;
		LOC29 = 0;
		LOC30 = 0;
		LOC30 = ((98304 & (*p).options) == 98304);
		if (!(LOC30)) goto LA31;
		LOC32 = 0;
		LOC32 = ((*p).prc == NIM_NIL);
		if (LOC32) goto LA33;
		LOC32 = !((((*(*p).prc).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0));
		LA33: ;
		LOC30 = LOC32;
		LA31: ;
		LOC29 = LOC30;
		if (!(LOC29)) goto LA34;
		LOC29 = (((NI32) 0) <= (*t).info.fileindex);
		LA34: ;
		if (!LOC29) goto LA35;
		{
			NIM_BOOL LOC39;
			TY501032 LOC42;
			LOC39 = 0;
			LOC39 = freshlineinfo_472818(p, (*t).info);
			if (!LOC39) goto LA40;
			memset((void*)LOC42, 0, sizeof(LOC42));
			LOC42[0] = rope_169401(((NI64) (line)));
			LOC42[1] = quotedfilename_187418((*t).info);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4014), LOC42, 2);
		}
		LA40: ;
	}
	goto LA13;
	LA35: ;
	LA13: ;
}

N_NIMCALL(Ropeobj169006*, getlabel_478617)(Tcproc469022* p) {
	Ropeobj169006* result;
	Ropeobj169006* LOC1;
	result = 0;
	(*p).labels += ((NI) 1);
	LOC1 = 0;
	LOC1 = rope_169401(((NI64) ((*p).labels)));
	result = HEX26_169452(((NimStringDesc*) &TMP4016), LOC1);
	return result;
}

N_NIMCALL(void, fixlabel_478630)(Tcproc469022* p, Ropeobj169006* labl) {
	TY169507 LOC1;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = labl;
	linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4019), LOC1, 1);
}

N_NIMCALL(void, genandor_494735)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 m) {
	Ropeobj169006* L;
	Tloc214804 tmp;
	L = 0;
	memset((void*)(&tmp), 0, sizeof(tmp));
	gettemp_476435(p, (*e).typ, (&tmp), NIM_FALSE);
	(*p).splitdecls += ((NI) 1);
	expr_478648(p, (*e).kindU.S6.sons->data[((NI) 1)], (&tmp));
	L = getlabel_478617(p);
	{
		TY501032 LOC5;
		if (!(m == ((NU8) 126))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_477569(tmp);
		LOC5[1] = L;
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4017), LOC5, 2);
	}
	goto LA1;
	LA3: ;
	{
		TY501032 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_477569(tmp);
		LOC7[1] = L;
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4018), LOC7, 2);
	}
	LA1: ;
	expr_478648(p, (*e).kindU.S6.sons->data[((NI) 2)], (&tmp));
	fixlabel_478630(p, L);
	{
		if (!((*d).k == ((NU8) 0))) goto LA10;
		genericAssign((void*)(&(*d)), (void*)(&tmp), (&NTI214804));
	}
	goto LA8;
	LA10: ;
	{
		genassignment_478664(p, (*d), tmp, 0);
	}
	LA8: ;
	(*p).splitdecls -= ((NI) 1);
}

N_NIMCALL(void, unaryarith_493046)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 op) {
	Tloc214804 a;
	Ttype214828* t;
	TY474655 LOC1;
	NI64 LOC2;
	Ropeobj169006* LOC3;
	memset((void*)(&a), 0, sizeof(a));
	t = 0;
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	t = skiptypes_218113((*e).typ, IL64(211106233624832));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_477569(a);
	LOC2 = 0;
	LOC2 = getsize_240124(t);
	LOC1[1] = rope_169401((NI64)(LOC2 * IL64(8)));
	LOC1[2] = getsimpletypedesc_473536((*p).module, (*e).typ);
	LOC3 = 0;
	LOC3 = HEX25_169905(unarithtab_493053[(op)- 98], LOC1, 3);
	putintodest_490713(p, d, (*e).typ, LOC3, ((NU8) 0));
}

N_NIMCALL(void, unaryarithoverflow_492033)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 m) {
	Tloc214804 a;
	Ttype214828* t;
	TY501032 LOC7;
	NI64 LOC8;
	Ropeobj169006* LOC9;
	memset((void*)(&a), 0, sizeof(a));
	t = 0;
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	t = skiptypes_218113((*e).typ, IL64(211106233624832));
	{
		TY501032 LOC5;
		NI64 LOC6;
		if (!(((*p).options &(1U<<((NU)(((NU8) 5))&31U)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_477569(a);
		LOC6 = 0;
		LOC6 = firstord_240001(t);
		LOC5[1] = intliteral_478670(LOC6);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4037), LOC5, 2);
	}
	LA3: ;
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = rdloc_477569(a);
	LOC8 = 0;
	LOC8 = getsize_240124(t);
	LOC7[1] = rope_169401((NI64)(LOC8 * IL64(8)));
	LOC9 = 0;
	LOC9 = HEX25_169905(opr_492040[(m)- 95], LOC7, 2);
	putintodest_490713(p, d, (*e).typ, LOC9, ((NU8) 0));
}

N_NIMCALL(void, binaryarith_492219)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 op) {
	Tloc214804 a;
	Tloc214804 b;
	NI64 s;
	NI64 LOC1;
	NI64 LOC2;
	TY474652 LOC3;
	Ropeobj169006* LOC4;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	s = 0;
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
	LOC1 = 0;
	LOC1 = getsize_240124(a.t);
	LOC2 = 0;
	LOC2 = getsize_240124(b.t);
	s = (NI64)(((LOC1 >= LOC2) ? LOC1 : LOC2) * IL64(8));
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = rdloc_477569(a);
	LOC3[1] = rdloc_477569(b);
	LOC3[2] = rope_169401(s);
	LOC3[3] = getsimpletypedesc_473536((*p).module, (*e).typ);
	LOC4 = 0;
	LOC4 = HEX25_169905(binarithtab_492226[(op)- 51], LOC3, 4);
	putintodest_490713(p, d, (*e).typ, LOC4, ((NU8) 0));
}

N_NIMCALL(void, binaryfloatarith_497128)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 m) {
	{
		Tloc214804 a;
		Tloc214804 b;
		TY474652 LOC5;
		Tnode214790* LOC6;
		Ropeobj169006* LOC7;
		if (!!(((384 & (*p).options) == 0))) goto LA3;
		memset((void*)(&a), 0, sizeof(a));
		memset((void*)(&b), 0, sizeof(b));
		initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
		initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rope_169277(opr_497162[(m)- 51]);
		LOC5[1] = rdloc_477569(a);
		LOC5[2] = rdloc_477569(b);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_215238(e, ((NI) 1));
		LOC5[3] = getsimpletypedesc_473536((*p).module, (*LOC6).typ);
		LOC7 = 0;
		LOC7 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP4039), LOC5, 4);
		putintodest_490713(p, d, (*e).typ, LOC7, ((NU8) 0));
		{
			TY169507 LOC12;
			if (!(((*p).options &(1U<<((NU)(((NU8) 7))&31U)))!=0)) goto LA10;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_477569((*d));
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4043), LOC12, 1);
		}
		LA10: ;
		{
			TY169507 LOC17;
			if (!(((*p).options &(1U<<((NU)(((NU8) 8))&31U)))!=0)) goto LA15;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = rdloc_477569((*d));
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4044), LOC17, 1);
		}
		LA15: ;
	}
	goto LA1;
	LA3: ;
	{
		binaryarith_492219(p, e, d, m);
	}
	LA1: ;
}

N_NIMCALL(void, geneqproc_492614)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 a;
	Tloc214804 b;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
	{
		TY501032 LOC5;
		Ropeobj169006* LOC6;
		if (!((*a.t).callconv == ((NU8) 8))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_477569(a);
		LOC5[1] = rdloc_477569(b);
		LOC6 = 0;
		LOC6 = HEX25_169905(((NimStringDesc*) &TMP4072), LOC5, 2);
		putintodest_490713(p, d, (*e).typ, LOC6, ((NU8) 0));
	}
	goto LA1;
	LA3: ;
	{
		TY501032 LOC8;
		Ropeobj169006* LOC9;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_477569(a);
		LOC8[1] = rdloc_477569(b);
		LOC9 = 0;
		LOC9 = HEX25_169905(((NimStringDesc*) &TMP4061), LOC8, 2);
		putintodest_490713(p, d, (*e).typ, LOC9, ((NU8) 0));
	}
	LA1: ;
}

N_NIMCALL(Ropeobj169006*, rdcharloc_477608)(Tloc214804 a) {
	Ropeobj169006* result;
	result = 0;
	result = rdloc_477569(a);
	{
		Ttype214828* LOC3;
		TY169507 LOC6;
		LOC3 = 0;
		LOC3 = skiptypes_218113(a.t, IL64(211106233624832));
		if (!((*LOC3).kind == ((NU8) 2))) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = result;
		result = HEX25_169905(((NimStringDesc*) &TMP4078), LOC6, 1);
	}
	LA4: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, binaryarithoverflowraw_491635)(Tcproc469022* p, Ttype214828* t, Tloc214804 a, Tloc214804 b, NimStringDesc* frmt) {
	Ropeobj169006* result;
	NI64 size;
	Ropeobj169006* storage;
	TY501032 LOC6;
	TY474655 LOC7;
	result = 0;
	size = getsize_240124(t);
	{
		if (!(size < ((NI64) (intsize_167615)))) goto LA3;
		storage = rope_169277(((NimStringDesc*) &TMP3782));
	}
	goto LA1;
	LA3: ;
	{
		storage = gettypedesc_475055((*p).module, t);
	}
	LA1: ;
	result = gettempname_473366();
	memset((void*)LOC6, 0, sizeof(LOC6));
	LOC6[0] = storage;
	LOC6[1] = result;
	linefmt_472714(p, ((NU8) 0), ((NimStringDesc*) &TMP3795), LOC6, 2);
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = result;
	LOC7[1] = rdcharloc_477608(a);
	LOC7[2] = rdcharloc_477608(b);
	linecg_472707(p, ((NU8) 2), frmt, LOC7, 3);
	{
		NIM_BOOL LOC10;
		TY474655 LOC14;
		NI64 LOC15;
		NI64 LOC16;
		LOC10 = 0;
		LOC10 = (size < ((NI64) (intsize_167615)));
		if (LOC10) goto LA11;
		LOC10 = ((*t).kind == ((NU8) 20) || (*t).kind == ((NU8) 14));
		LA11: ;
		if (!LOC10) goto LA12;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = result;
		LOC15 = 0;
		LOC15 = firstord_240001(t);
		LOC14[1] = intliteral_478670(LOC15);
		LOC16 = 0;
		LOC16 = lastord_240004(t);
		LOC14[2] = intliteral_478670(LOC16);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4079), LOC14, 3);
	}
	LA12: ;
	return result;
}

N_NIMCALL(void, binaryarithoverflow_491662)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 m) {
	Tloc214804 a;
	Tloc214804 b;
	Ttype214828* t;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
	t = skiptypes_218113((*e).typ, IL64(211106233624832));
	{
		Ropeobj169006* res;
		TY474655 LOC5;
		if (!!((((*p).options &(1U<<((NU)(((NU8) 5))&31U)))!=0))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = gettypedesc_475055((*p).module, t);
		LOC5[1] = rdloc_477569(a);
		LOC5[2] = rdloc_477569(b);
		res = HEX25_169905(opr_491679[(m)- 44], LOC5, 3);
		putintodest_490713(p, d, (*e).typ, res, ((NU8) 0));
	}
	goto LA1;
	LA3: ;
	{
		Ropeobj169006* res;
		NimStringDesc* LOC7;
		TY501032 LOC13;
		Ropeobj169006* LOC14;
		LOC7 = 0;
		{
			if (!((*t).kind == ((NU8) 35))) goto LA10;
			LOC7 = copyString(prc64_491674[(m)- 44]);
		}
		goto LA8;
		LA10: ;
		{
			LOC7 = copyString(prc_491669[(m)- 44]);
		}
		LA8: ;
		res = binaryarithoverflowraw_491635(p, t, a, b, LOC7);
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = gettypedesc_475055((*p).module, t);
		LOC13[1] = res;
		LOC14 = 0;
		LOC14 = HEX25_169905(((NimStringDesc*) &TMP4090), LOC13, 2);
		putintodest_490713(p, d, (*e).typ, LOC14, ((NU8) 0));
	}
	LA1: ;
}

N_NIMCALL(Ropeobj169006*, lenfield_478705)(Tcproc469022* p) {
	Ropeobj169006* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = (gcmd_160123 == ((NU8) 2));
		if (LOC4) goto LA5;
		LOC4 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA5: ;
		if (!LOC4) goto LA6;
		LOC1 = copyString(((NimStringDesc*) &TMP3901));
	}
	goto LA2;
	LA6: ;
	{
		LOC1 = copyString(((NimStringDesc*) &TMP3902));
	}
	LA2: ;
	result = rope_169277(LOC1);
	return result;
}

N_NIMCALL(void, gcusage_494863)(Tnode214790* n) {
	{
		NimStringDesc* LOC5;
		if (!(gselectedgc_160124 == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_233044(n, 0);
		message_187095((*n).info, ((NU16) 263), LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, genrepr_495739)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 a;
	Ttype214828* t;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	t = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106242013440));
	switch ((*t).kind) {
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 40) ... ((NU8) 44):
	{
		TY169507 LOC2;
		Ropeobj169006* LOC3;
		memset((void*)LOC2, 0, sizeof(LOC2));
		LOC2[0] = rdloc_477569(a);
		LOC3 = 0;
		LOC3 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4091), LOC2, 1);
		putintodest_490713(p, d, (*e).typ, LOC3, a.s);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		TY169507 LOC5;
		Ropeobj169006* LOC6;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_477569(a);
		LOC6 = 0;
		LOC6 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4092), LOC5, 1);
		putintodest_490713(p, d, (*e).typ, LOC6, a.s);
	}
	break;
	case ((NU8) 1):
	{
		TY169507 LOC8;
		Ropeobj169006* LOC9;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_477569(a);
		LOC9 = 0;
		LOC9 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4093), LOC8, 1);
		putintodest_490713(p, d, (*e).typ, LOC9, a.s);
	}
	break;
	case ((NU8) 2):
	{
		TY169507 LOC11;
		Ropeobj169006* LOC12;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = rdloc_477569(a);
		LOC12 = 0;
		LOC12 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4094), LOC11, 1);
		putintodest_490713(p, d, (*e).typ, LOC12, a.s);
	}
	break;
	case ((NU8) 14):
	case ((NU8) 15):
	{
		TY501032 LOC14;
		Ropeobj169006* LOC15;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = rdloc_477569(a);
		LOC14[1] = gentypeinfo_475350((*p).module, t);
		LOC15 = 0;
		LOC15 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4095), LOC14, 2);
		putintodest_490713(p, d, (*e).typ, LOC15, a.s);
	}
	break;
	case ((NU8) 28):
	{
		TY169507 LOC17;
		Ropeobj169006* LOC18;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = rdloc_477569(a);
		LOC18 = 0;
		LOC18 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4096), LOC17, 1);
		putintodest_490713(p, d, (*e).typ, LOC18, a.s);
	}
	break;
	case ((NU8) 19):
	{
		TY501032 LOC20;
		Ropeobj169006* LOC21;
		memset((void*)LOC20, 0, sizeof(LOC20));
		LOC20[0] = addrloc_477585(a);
		LOC20[1] = gentypeinfo_475350((*p).module, t);
		LOC21 = 0;
		LOC21 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4097), LOC20, 2);
		putintodest_490713(p, d, (*e).typ, LOC21, a.s);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		Tloc214804 b;
		TY501032 LOC34;
		Ttype214828* LOC35;
		Ropeobj169006* LOC36;
		memset((void*)(&b), 0, sizeof(b));
		switch ((*a.t).kind) {
		case ((NU8) 27):
		case ((NU8) 48):
		{
			TY169507 LOC24;
			Ropeobj169006* LOC25;
			memset((void*)LOC24, 0, sizeof(LOC24));
			LOC24[0] = rdloc_477569(a);
			LOC25 = 0;
			LOC25 = HEX25_169905(((NimStringDesc*) &TMP4098), LOC24, 1);
			putintodest_490713(p, (&b), (*e).typ, LOC25, a.s);
		}
		break;
		case ((NU8) 28):
		case ((NU8) 24):
		{
			TY501032 LOC27;
			Ropeobj169006* LOC28;
			memset((void*)LOC27, 0, sizeof(LOC27));
			LOC27[0] = rdloc_477569(a);
			LOC27[1] = lenfield_478705(p);
			LOC28 = 0;
			LOC28 = HEX25_169905(((NimStringDesc*) &TMP4099), LOC27, 2);
			putintodest_490713(p, (&b), (*e).typ, LOC28, a.s);
		}
		break;
		case ((NU8) 16):
		case ((NU8) 4):
		{
			TY501032 LOC30;
			NI64 LOC31;
			Ropeobj169006* LOC32;
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = rdloc_477569(a);
			LOC31 = 0;
			LOC31 = lengthord_240007(a.t);
			LOC30[1] = rope_169401(LOC31);
			LOC32 = 0;
			LOC32 = HEX25_169905(((NimStringDesc*) &TMP4100), LOC30, 2);
			putintodest_490713(p, (&b), (*e).typ, LOC32, a.s);
		}
		break;
		default:
		{
			internalerror_187100((*(*e).kindU.S6.sons->data[((NI) 0)]).info, ((NimStringDesc*) &TMP4101));
		}
		break;
		}
		memset((void*)LOC34, 0, sizeof(LOC34));
		LOC34[0] = rdloc_477569(b);
		LOC35 = 0;
		LOC35 = elemtype_240383(t);
		LOC34[1] = gentypeinfo_475350((*p).module, LOC35);
		LOC36 = 0;
		LOC36 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4102), LOC34, 2);
		putintodest_490713(p, d, (*e).typ, LOC36, a.s);
	}
	break;
	case ((NU8) 29):
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 22):
	case ((NU8) 21):
	case ((NU8) 26):
	case ((NU8) 5):
	case ((NU8) 24):
	{
		TY501032 LOC38;
		Ropeobj169006* LOC39;
		memset((void*)LOC38, 0, sizeof(LOC38));
		LOC38[0] = rdloc_477569(a);
		LOC38[1] = gentypeinfo_475350((*p).module, t);
		LOC39 = 0;
		LOC39 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4103), LOC38, 2);
		putintodest_490713(p, d, (*e).typ, LOC39, a.s);
	}
	break;
	case ((NU8) 3):
	{
		localerror_187085((*e).info, ((NimStringDesc*) &TMP4104));
	}
	break;
	default:
	{
		TY501032 LOC42;
		Ropeobj169006* LOC43;
		memset((void*)LOC42, 0, sizeof(LOC42));
		LOC42[0] = addrloc_477585(a);
		LOC42[1] = gentypeinfo_475350((*p).module, t);
		LOC43 = 0;
		LOC43 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4103), LOC42, 2);
		putintodest_490713(p, d, (*e).typ, LOC43, a.s);
	}
	break;
	}
	gcusage_494863(e);
}

N_NIMCALL(void, gengettypeinfo_495783)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Ttype214828* t;
	Ropeobj169006* LOC1;
	t = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106242013440));
	LOC1 = 0;
	LOC1 = gentypeinfo_475350((*p).module, t);
	putintodest_490713(p, d, (*e).typ, LOC1, ((NU8) 0));
}

N_NIMCALL(void, genswap_496038)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 a;
	Tloc214804 b;
	Tloc214804 tmp;
	Ttype214828* LOC1;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&tmp), 0, sizeof(tmp));
	LOC1 = 0;
	LOC1 = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106240964864));
	gettemp_476435(p, LOC1, (&tmp), NIM_FALSE);
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
	genassignment_478664(p, tmp, a, 0);
	genassignment_478664(p, a, b, 0);
	genassignment_478664(p, b, tmp, 0);
}

N_NIMCALL(void, unaryexpr_491609)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt) {
	Tloc214804 a;
	TY169507 LOC1;
	Ropeobj169006* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_477569(a);
	LOC2 = 0;
	LOC2 = ropecg_472407((*p).module, frmt, LOC1, 1);
	putintodest_490713(p, d, (*e).typ, LOC2, ((NU8) 0));
}

N_NIMCALL(void, binarystmt_490746)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt) {
	Tloc214804 a;
	Tloc214804 b;
	TY501032 LOC5;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	{
		if (!!(((*d).k == ((NU8) 0)))) goto LA3;
		internalerror_187100((*e).info, ((NimStringDesc*) &TMP4107));
	}
	LA3: ;
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = rdloc_477569(a);
	LOC5[1] = rdloc_477569(b);
	linecg_472707(p, ((NU8) 2), frmt, LOC5, 2);
}

N_NIMCALL(void, genstrconcat_494876)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 a;
	Tloc214804 tmp;
	NI L;
	Ropeobj169006* appends;
	Ropeobj169006* lens;
	TY474655 LOC21;
	Ropeobj169006** LOC22;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&tmp), 0, sizeof(tmp));
	gettemp_476435(p, (*e).typ, (&tmp), NIM_FALSE);
	L = ((NI) 0);
	appends = NIM_NIL;
	lens = NIM_NIL;
	{
		NI i_494899;
		NI HEX3Atmp_494970;
		NI LOC2;
		NI res_494973;
		i_494899 = 0;
		HEX3Atmp_494970 = 0;
		LOC2 = 0;
		LOC2 = sonslen_217351(e);
		HEX3Atmp_494970 = (NI)(LOC2 - ((NI) 2));
		res_494973 = ((NI) 0);
		{
			while (1) {
				if (!(res_494973 <= HEX3Atmp_494970)) goto LA4;
				i_494899 = res_494973;
				initlocexpr_478683(p, (*e).kindU.S6.sons->data[(NI)(i_494899 + ((NI) 1))], (&a));
				{
					Ttype214828* LOC7;
					TY501032 LOC10;
					Ropeobj169006* LOC11;
					LOC7 = 0;
					LOC7 = skiptypes_218113((*(*e).kindU.S6.sons->data[(NI)(i_494899 + ((NI) 1))]).typ, IL64(211106242013440));
					if (!((*LOC7).kind == ((NU8) 2))) goto LA8;
					L += ((NI) 1);
					memset((void*)LOC10, 0, sizeof(LOC10));
					LOC10[0] = tmp.r;
					LOC10[1] = rdloc_477569(a);
					LOC11 = 0;
					LOC11 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4110), LOC10, 2);
					add_169482(&appends, LOC11);
				}
				goto LA5;
				LA8: ;
				{
					TY501032 LOC19;
					Ropeobj169006* LOC20;
					{
						if (!((*(*e).kindU.S6.sons->data[(NI)(i_494899 + ((NI) 1))]).kind >= ((NU8) 20) && (*(*e).kindU.S6.sons->data[(NI)(i_494899 + ((NI) 1))]).kind <= ((NU8) 22))) goto LA15;
						L += ((*(*e).kindU.S6.sons->data[(NI)(i_494899 + ((NI) 1))]).kindU.S3.strval ? (*(*e).kindU.S6.sons->data[(NI)(i_494899 + ((NI) 1))]).kindU.S3.strval->Sup.len : 0);
					}
					goto LA13;
					LA15: ;
					{
						TY501032 LOC18;
						memset((void*)LOC18, 0, sizeof(LOC18));
						LOC18[0] = rdloc_477569(a);
						LOC18[1] = lenfield_478705(p);
						addf_170205(&lens, ((NimStringDesc*) &TMP4111), LOC18, 2);
					}
					LA13: ;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = tmp.r;
					LOC19[1] = rdloc_477569(a);
					LOC20 = 0;
					LOC20 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4112), LOC19, 2);
					add_169482(&appends, LOC20);
				}
				LA5: ;
				res_494973 += ((NI) 1);
			} LA4: ;
		}
	}
	memset((void*)LOC21, 0, sizeof(LOC21));
	LOC21[0] = tmp.r;
	LOC21[1] = lens;
	LOC21[2] = rope_169401(((NI64) (L)));
	linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4113), LOC21, 3);
	LOC22 = 0;
	LOC22 = s_469166(p, ((NU8) 2));
	add_169482(LOC22, appends);
	{
		if (!((*d).k == ((NU8) 0))) goto LA25;
		genericAssign((void*)(&(*d)), (void*)(&tmp), (&NTI214804));
		keepalive_477817(p, tmp);
	}
	goto LA23;
	LA25: ;
	{
		genassignment_478664(p, (*d), tmp, 64);
	}
	LA23: ;
	gcusage_494863(e);
}

N_NIMCALL(void, genstrappend_494977)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 a;
	Tloc214804 dest;
	Ropeobj169006* appends;
	Ropeobj169006* lens;
	NI L;
	TY474655 LOC21;
	Ropeobj169006** LOC22;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&dest), 0, sizeof(dest));
	appends = 0;
	lens = 0;
	L = ((NI) 0);
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&dest));
	{
		NI i_495015;
		NI HEX3Atmp_495076;
		NI LOC2;
		NI res_495079;
		i_495015 = 0;
		HEX3Atmp_495076 = 0;
		LOC2 = 0;
		LOC2 = sonslen_217351(e);
		HEX3Atmp_495076 = (NI)(LOC2 - ((NI) 3));
		res_495079 = ((NI) 0);
		{
			while (1) {
				if (!(res_495079 <= HEX3Atmp_495076)) goto LA4;
				i_495015 = res_495079;
				initlocexpr_478683(p, (*e).kindU.S6.sons->data[(NI)(i_495015 + ((NI) 2))], (&a));
				{
					Ttype214828* LOC7;
					TY501032 LOC10;
					Ropeobj169006* LOC11;
					LOC7 = 0;
					LOC7 = skiptypes_218113((*(*e).kindU.S6.sons->data[(NI)(i_495015 + ((NI) 2))]).typ, IL64(211106242013440));
					if (!((*LOC7).kind == ((NU8) 2))) goto LA8;
					L += ((NI) 1);
					memset((void*)LOC10, 0, sizeof(LOC10));
					LOC10[0] = rdloc_477569(dest);
					LOC10[1] = rdloc_477569(a);
					LOC11 = 0;
					LOC11 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4110), LOC10, 2);
					add_169482(&appends, LOC11);
				}
				goto LA5;
				LA8: ;
				{
					TY501032 LOC19;
					Ropeobj169006* LOC20;
					{
						if (!((*(*e).kindU.S6.sons->data[(NI)(i_495015 + ((NI) 2))]).kind >= ((NU8) 20) && (*(*e).kindU.S6.sons->data[(NI)(i_495015 + ((NI) 2))]).kind <= ((NU8) 22))) goto LA15;
						L += ((*(*e).kindU.S6.sons->data[(NI)(i_495015 + ((NI) 2))]).kindU.S3.strval ? (*(*e).kindU.S6.sons->data[(NI)(i_495015 + ((NI) 2))]).kindU.S3.strval->Sup.len : 0);
					}
					goto LA13;
					LA15: ;
					{
						TY501032 LOC18;
						memset((void*)LOC18, 0, sizeof(LOC18));
						LOC18[0] = rdloc_477569(a);
						LOC18[1] = lenfield_478705(p);
						addf_170205(&lens, ((NimStringDesc*) &TMP4111), LOC18, 2);
					}
					LA13: ;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = rdloc_477569(dest);
					LOC19[1] = rdloc_477569(a);
					LOC20 = 0;
					LOC20 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4112), LOC19, 2);
					add_169482(&appends, LOC20);
				}
				LA5: ;
				res_495079 += ((NI) 1);
			} LA4: ;
		}
	}
	memset((void*)LOC21, 0, sizeof(LOC21));
	LOC21[0] = rdloc_477569(dest);
	LOC21[1] = lens;
	LOC21[2] = rope_169401(((NI64) (L)));
	linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4115), LOC21, 3);
	keepalive_477817(p, dest);
	LOC22 = 0;
	LOC22 = s_469166(p, ((NU8) 2));
	add_169482(LOC22, appends);
	gcusage_494863(e);
}

N_NIMCALL(void, genseqelemappend_495083)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	NimStringDesc* seqappendpattern;
	Tloc214804 a;
	Tloc214804 b;
	Tloc214804 dest;
	TY474655 LOC8;
	Ttype214828* LOC9;
	Ttype214828* LOC10;
	TY501032 LOC11;
	TY501032 LOC12;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_160123 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA4: ;
		if (!!(LOC3)) goto LA5;
		seqappendpattern = copyString(((NimStringDesc*) &TMP4116));
	}
	goto LA1;
	LA5: ;
	{
		seqappendpattern = copyString(((NimStringDesc*) &TMP4117));
	}
	LA1: ;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&dest), 0, sizeof(dest));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rdloc_477569(a);
	LOC9 = 0;
	LOC9 = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106240964864));
	LOC8[1] = gettypedesc_475055((*p).module, LOC9);
	LOC10 = 0;
	LOC10 = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 2)]).typ, IL64(211106240964864));
	LOC8[2] = gettypedesc_475055((*p).module, LOC10);
	linecg_472707(p, ((NU8) 2), seqappendpattern, LOC8, 3);
	keepalive_477817(p, a);
	initloc_472273((&dest), ((NU8) 6), b.t, ((NU8) 3));
	memset((void*)LOC11, 0, sizeof(LOC11));
	LOC11[0] = rdloc_477569(a);
	LOC11[1] = lenfield_478705(p);
	dest.r = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP4118), LOC11, 2);
	genassignment_478664(p, dest, b, 5);
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = rdloc_477569(a);
	LOC12[1] = lenfield_478705(p);
	linecg_472707(p, ((NU8) 2), ((NimStringDesc*) &TMP4119), LOC12, 2);
	gcusage_494863(e);
}

N_NIMCALL(void, binaryexpr_490820)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt) {
	Tloc214804 a;
	Tloc214804 b;
	TY501032 LOC1;
	Ropeobj169006* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_477569(a);
	LOC1[1] = rdloc_477569(b);
	LOC2 = 0;
	LOC2 = ropecg_472407((*p).module, frmt, LOC1, 2);
	putintodest_490713(p, d, (*e).typ, LOC2, ((NU8) 0));
}

N_NIMCALL(void, genstrequals_497066)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 x;
	Tnode214790* a;
	Tnode214790* b;
	memset((void*)(&x), 0, sizeof(x));
	a = (*e).kindU.S6.sons->data[((NI) 1)];
	b = (*e).kindU.S6.sons->data[((NI) 2)];
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*a).kind == ((NU8) 23));
		if (LOC3) goto LA4;
		LOC3 = ((*b).kind == ((NU8) 23));
		LA4: ;
		if (!LOC3) goto LA5;
		binaryexpr_490820(p, e, d, ((NimStringDesc*) &TMP4061));
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC8;
		TY501032 LOC12;
		Ropeobj169006* LOC13;
		LOC8 = 0;
		LOC8 = ((*a).kind >= ((NU8) 20) && (*a).kind <= ((NU8) 22));
		if (!(LOC8)) goto LA9;
		LOC8 = (((*a).kindU.S3.strval) && ((*a).kindU.S3.strval)->Sup.len == 0);
		LA9: ;
		if (!LOC8) goto LA10;
		initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&x));
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = rdloc_477569(x);
		LOC12[1] = lenfield_478705(p);
		LOC13 = 0;
		LOC13 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP4120), LOC12, 2);
		putintodest_490713(p, d, (*e).typ, LOC13, ((NU8) 0));
	}
	goto LA1;
	LA10: ;
	{
		NIM_BOOL LOC15;
		TY501032 LOC19;
		Ropeobj169006* LOC20;
		LOC15 = 0;
		LOC15 = ((*b).kind >= ((NU8) 20) && (*b).kind <= ((NU8) 22));
		if (!(LOC15)) goto LA16;
		LOC15 = (((*b).kindU.S3.strval) && ((*b).kindU.S3.strval)->Sup.len == 0);
		LA16: ;
		if (!LOC15) goto LA17;
		initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&x));
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = rdloc_477569(x);
		LOC19[1] = lenfield_478705(p);
		LOC20 = 0;
		LOC20 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP4120), LOC19, 2);
		putintodest_490713(p, d, (*e).typ, LOC20, ((NU8) 0));
	}
	goto LA1;
	LA17: ;
	{
		binaryexpr_490820(p, e, d, ((NimStringDesc*) &TMP4121));
	}
	LA1: ;
}

N_NIMCALL(void, genisnil_493020)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Ttype214828* t;
	t = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106233624832));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*t).kind == ((NU8) 25));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*t).callconv == ((NU8) 8));
		LA4: ;
		if (!LOC3) goto LA5;
		unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4124));
	}
	goto LA1;
	LA5: ;
	{
		unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4125));
	}
	LA1: ;
}

N_NIMCALL(void, gendollar_495791)(Tcproc469022* p, Tnode214790* n, Tloc214804* d, NimStringDesc* frmt) {
	Tloc214804 a;
	TY169507 LOC1;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 1)], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_477569(a);
	a.r = ropecg_472407((*p).module, frmt, LOC1, 1);
	{
		if (!((*d).k == ((NU8) 0))) goto LA4;
		gettemp_476435(p, (*n).typ, d, NIM_FALSE);
	}
	LA4: ;
	genassignment_478664(p, (*d), a, 64);
	gcusage_494863(n);
}

N_NIMCALL(Ropeobj169006*, genofhelper_495470)(Tcproc469022* p, Ttype214828* dest, Ropeobj169006* a) {
	Ropeobj169006* result;
	Ropeobj169006* ti;
	result = 0;
	ti = gentypeinfo_475350((*p).module, dest);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		TY501032 LOC9;
		LOC3 = 0;
		LOC3 = (((*dest).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0);
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = (*(*p).module).objhaskidsvalid;
		if (!(LOC5)) goto LA6;
		LOC5 = !((((*dest).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0));
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA7;
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = a;
		LOC9[1] = ti;
		result = HEX25_169905(((NimStringDesc*) &TMP4134), LOC9, 2);
	}
	goto LA1;
	LA7: ;
	{
		Ropeobj169006* LOC11;
		Ropeobj169006* cache;
		Ropeobj169006* LOC12;
		TY169507 LOC13;
		TY474655 LOC14;
		LOC11 = 0;
		LOC11 = cgsym_472403((*p).module, ((NimStringDesc*) &TMP3872));
		(*(*p).module).labels += ((NI) 1);
		LOC12 = 0;
		LOC12 = rope_169401(((NI64) ((*(*p).module).labels)));
		cache = HEX26_169452(((NimStringDesc*) &TMP4135), LOC12);
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = cache;
		addf_170205(&(*(*p).module).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP4136), LOC13, 1);
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = a;
		LOC14[1] = ti;
		LOC14[2] = cache;
		result = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4137), LOC14, 3);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genof_495601)(Tcproc469022* p, Tnode214790* x, Ttype214828* typ, Tloc214804* d) {
	Tloc214804 a;
	Ttype214828* dest;
	Ropeobj169006* r;
	Ropeobj169006* nilcheck;
	Ttype214828* t;
	Ttype214828* LOC41;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, x, (&a));
	dest = skiptypes_218113(typ, IL64(211106247256320));
	r = rdloc_477569(a);
	nilcheck = NIM_NIL;
	t = skiptypes_218113(a.t, IL64(211106232576256));
	{
		while (1) {
			Ttype214828* LOC16;
			if (!((*t).kind == ((NU8) 23) || (*t).kind == ((NU8) 21) || (*t).kind == ((NU8) 22))) goto LA2;
			{
				if (!!(((*t).kind == ((NU8) 23)))) goto LA5;
				nilcheck = r;
			}
			LA5: ;
			{
				NIM_BOOL LOC9;
				NIM_BOOL LOC11;
				TY169507 LOC15;
				LOC9 = 0;
				LOC9 = !(((*t).kind == ((NU8) 23)));
				if (LOC9) goto LA10;
				LOC11 = 0;
				LOC11 = (gcmd_160123 == ((NU8) 2));
				if (LOC11) goto LA12;
				LOC11 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
				LA12: ;
				LOC9 = !(LOC11);
				LA10: ;
				if (!LOC9) goto LA13;
				memset((void*)LOC15, 0, sizeof(LOC15));
				LOC15[0] = r;
				r = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3894), LOC15, 1);
			}
			LA13: ;
			LOC16 = 0;
			LOC16 = lastson_217377(t);
			t = skiptypes_218113(LOC16, IL64(211106232576256));
		} LA2: ;
	}
	{
		NIM_BOOL LOC19;
		LOC19 = 0;
		LOC19 = (gcmd_160123 == ((NU8) 2));
		if (LOC19) goto LA20;
		LOC19 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA20: ;
		if (!!(LOC19)) goto LA21;
		{
			while (1) {
				NIM_BOOL LOC25;
				TY473064 LOC27;
				Ropeobj169006* LOC28;
				LOC25 = 0;
				LOC25 = ((*t).kind == ((NU8) 17));
				if (!(LOC25)) goto LA26;
				LOC25 = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
				LA26: ;
				if (!LOC25) goto LA24;
				memset((void*)LOC27, 0, sizeof(LOC27));
				LOC28 = 0;
				LOC28 = HEX25_169905(((NimStringDesc*) &TMP3897), LOC27, 0);
				add_169482(&r, LOC28);
				t = skiptypes_218113((*t).sons->data[((NI) 0)], IL64(211106232576256));
			} LA24: ;
		}
	}
	LA21: ;
	{
		NIM_BOOL LOC31;
		LOC31 = 0;
		LOC31 = isobjlackingtypefield_473283(t);
		if (!LOC31) goto LA32;
		globalerror_187071((*x).info, ((NU16) 4), ((NimStringDesc*) &TMP4132));
	}
	LA32: ;
	{
		TY501032 LOC38;
		if (!!((nilcheck == NIM_NIL))) goto LA36;
		memset((void*)LOC38, 0, sizeof(LOC38));
		LOC38[0] = nilcheck;
		LOC38[1] = genofhelper_495470(p, dest, r);
		r = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4133), LOC38, 2);
	}
	goto LA34;
	LA36: ;
	{
		TY169507 LOC40;
		memset((void*)LOC40, 0, sizeof(LOC40));
		LOC40[0] = genofhelper_495470(p, dest, r);
		r = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4138), LOC40, 1);
	}
	LA34: ;
	LOC41 = 0;
	LOC41 = getsystype_258130(((NU8) 1));
	putintodest_490713(p, d, LOC41, r, a.s);
}

N_NIMCALL(void, genof_495731)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	genof_495601(p, (*n).kindU.S6.sons->data[((NI) 1)], (*(*n).kindU.S6.sons->data[((NI) 2)]).typ, d);
}

N_NIMCALL(void, rawgennew_495140)(Tcproc469022* p, Tloc214804 a, Ropeobj169006* sizeexpr_495144) {
	Ropeobj169006* sizeexpr;
	Ttype214828* reftype;
	Tloc214804 b;
	TY474655 args;
	Ttype214828* bt;
	sizeexpr = sizeexpr_495144;
	reftype = skiptypes_218113(a.t, IL64(211106242013440));
	memset((void*)(&b), 0, sizeof(b));
	initloc_472273((&b), ((NU8) 6), a.t, ((NU8) 3));
	{
		TY169507 LOC5;
		Ttype214828* LOC6;
		if (!sizeexpr == 0) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC6 = 0;
		LOC6 = skiptypes_218113((*reftype).sons->data[((NI) 0)], IL64(211106233624832));
		LOC5[0] = gettypedesc_475055((*p).module, LOC6);
		sizeexpr = HEX25_169905(((NimStringDesc*) &TMP4139), LOC5, 1);
	}
	LA3: ;
	memset((void*)args, 0, sizeof(args));
	args[0] = gettypedesc_475055((*p).module, reftype);
	args[1] = gentypeinfo_475350((*p).module, reftype);
	args[2] = sizeexpr;
	{
		NIM_BOOL LOC9;
		TY501032 LOC21;
		LOC9 = 0;
		LOC9 = (a.s == ((NU8) 3));
		if (!(LOC9)) goto LA10;
		LOC9 = usesnativegc_160168();
		LA10: ;
		if (!LOC9) goto LA11;
		{
			NIM_BOOL LOC15;
			TY169507 LOC18;
			LOC15 = 0;
			LOC15 = canformacycle_240112(a.t);
			if (!LOC15) goto LA16;
			memset((void*)LOC18, 0, sizeof(LOC18));
			LOC18[0] = rdloc_477569(a);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4140), LOC18, 1);
		}
		goto LA13;
		LA16: ;
		{
			TY169507 LOC20;
			memset((void*)LOC20, 0, sizeof(LOC20));
			LOC20[0] = rdloc_477569(a);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3969), LOC20, 1);
		}
		LA13: ;
		b.r = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4141), args, 3);
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = rdloc_477569(a);
		LOC21[1] = rdloc_477569(b);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC21, 2);
	}
	goto LA7;
	LA11: ;
	{
		b.r = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4142), args, 3);
		genassignment_478664(p, a, b, 64);
	}
	LA7: ;
	bt = skiptypes_218113((*reftype).sons->data[((NI) 0)], IL64(211106233624832));
	genobjectinit_477623(p, ((NU8) 2), bt, a, NIM_FALSE);
}

N_NIMCALL(void, gennew_495180)(Tcproc469022* p, Tnode214790* e) {
	Tloc214804 a;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	{
		NI LOC3;
		Tloc214804 se;
		Ropeobj169006* LOC6;
		LOC3 = 0;
		LOC3 = len_215059(e);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		memset((void*)(&se), 0, sizeof(se));
		initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&se));
		LOC6 = 0;
		LOC6 = rdloc_477569(se);
		rawgennew_495140(p, a, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		rawgennew_495140(p, a, NIM_NIL);
	}
	LA1: ;
	gcusage_494863(e);
}

N_NIMCALL(void, gennewfinalize_495440)(Tcproc469022* p, Tnode214790* e) {
	Tloc214804 a;
	Tloc214804 b;
	Tloc214804 f;
	Ttype214828* reftype;
	Ttype214828* bt;
	Ropeobj169006* ti;
	Tcgen469026* oldmodule;
	TY501032 LOC1;
	TY474655 LOC2;
	Ttype214828* LOC3;
	Ttype214828* LOC4;
	Ttype214828* LOC5;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&f), 0, sizeof(f));
	reftype = 0;
	bt = 0;
	ti = 0;
	oldmodule = 0;
	reftype = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106242013440));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&f));
	initloc_472273((&b), ((NU8) 6), a.t, ((NU8) 3));
	ti = gentypeinfo_475350((*p).module, reftype);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = ti;
	LOC1[1] = rdloc_477569(f);
	addf_170205(&(*(*p).module).s[(((NU8) 14))- 0], ((NimStringDesc*) &TMP4143), LOC1, 2);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = gettypedesc_475055((*p).module, reftype);
	LOC2[1] = ti;
	LOC3 = 0;
	LOC3 = lastson_217377(reftype);
	LOC4 = 0;
	LOC4 = skiptypes_218113(LOC3, IL64(211106233624832));
	LOC2[2] = gettypedesc_475055((*p).module, LOC4);
	b.r = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4144), LOC2, 3);
	genassignment_478664(p, a, b, 64);
	LOC5 = 0;
	LOC5 = lastson_217377(reftype);
	bt = skiptypes_218113(LOC5, IL64(211106233624832));
	genobjectinit_477623(p, ((NU8) 2), bt, a, NIM_FALSE);
	gcusage_494863(e);
}

N_NIMCALL(void, gennewseqaux_495193)(Tcproc469022* p, Tloc214804 dest, Ropeobj169006* length) {
	Ttype214828* seqtype;
	TY474655 args;
	Tloc214804 call;
	seqtype = skiptypes_218113(dest.t, IL64(211106242013440));
	memset((void*)args, 0, sizeof(args));
	args[0] = gettypedesc_475055((*p).module, seqtype);
	args[1] = gentypeinfo_475350((*p).module, seqtype);
	args[2] = length;
	memset((void*)(&call), 0, sizeof(call));
	initloc_472273((&call), ((NU8) 6), dest.t, ((NU8) 3));
	{
		NIM_BOOL LOC3;
		TY501032 LOC15;
		LOC3 = 0;
		LOC3 = (dest.s == ((NU8) 3));
		if (!(LOC3)) goto LA4;
		LOC3 = usesnativegc_160168();
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NIM_BOOL LOC9;
			TY169507 LOC12;
			LOC9 = 0;
			LOC9 = canformacycle_240112(dest.t);
			if (!LOC9) goto LA10;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_477569(dest);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4140), LOC12, 1);
		}
		goto LA7;
		LA10: ;
		{
			TY169507 LOC14;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = rdloc_477569(dest);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3969), LOC14, 1);
		}
		LA7: ;
		call.r = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4145), args, 3);
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = rdloc_477569(dest);
		LOC15[1] = rdloc_477569(call);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC15, 2);
	}
	goto LA1;
	LA5: ;
	{
		call.r = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4146), args, 3);
		genassignment_478664(p, dest, call, 64);
	}
	LA1: ;
}

N_NIMCALL(void, gennewseq_495221)(Tcproc469022* p, Tnode214790* e) {
	Tloc214804 a;
	Tloc214804 b;
	Ropeobj169006* LOC1;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
	LOC1 = 0;
	LOC1 = rdloc_477569(b);
	gennewseqaux_495193(p, a, LOC1);
	gcusage_494863(e);
}

N_NIMCALL(Ropeobj169006*, getclosuretype_475067)(Tcgen469026* m, Ttype214828* t, NU8 kind) {
	Ropeobj169006* result;
	Intset211035 check;
	Ropeobj169006* rettype;
	Ropeobj169006* desc;
	result = 0;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_211885((&check));
	result = gettempname_473366();
	rettype = 0;
	desc = 0;
	genprocparams_473704(m, t, &rettype, &desc, (&check), !((kind == ((NU8) 0))), NIM_FALSE);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isimportedtype_473219(t);
		if (!!(LOC3)) goto LA4;
		{
			NIM_BOOL LOC8;
			TY474652 LOC12;
			LOC8 = 0;
			LOC8 = !(((*t).callconv == ((NU8) 8)));
			if (LOC8) goto LA9;
			LOC8 = !((kind == ((NU8) 2)));
			LA9: ;
			if (!LOC8) goto LA10;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rope_169277(Callingconvtostr_473355[((*t).callconv)- 0]);
			LOC12[1] = rettype;
			LOC12[2] = result;
			LOC12[3] = desc;
			addf_170205(&(*m).s[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3811), LOC12, 4);
		}
		goto LA6;
		LA10: ;
		{
			TY474655 LOC14;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = result;
			LOC14[1] = rettype;
			LOC14[2] = desc;
			addf_170205(&(*m).s[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3822), LOC14, 3);
		}
		LA6: ;
	}
	LA4: ;
	return result;
}

N_NIMCALL(void, gensomecast_496880)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 a;
	Ttype214828* etyp;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	etyp = skiptypes_218113((*e).typ, IL64(211106233624832));
	{
		NIM_BOOL LOC3;
		TY501032 LOC7;
		Ropeobj169006* LOC8;
		LOC3 = 0;
		LOC3 = ((*etyp).kind == ((NU8) 18) || (*etyp).kind == ((NU8) 17) || (*etyp).kind == ((NU8) 16) || (*etyp).kind == ((NU8) 27) || (*etyp).kind == ((NU8) 48) || (*etyp).kind == ((NU8) 4));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((a.flags &(1U<<((NU)(((NU8) 0))&15U)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_475055((*p).module, (*e).typ);
		LOC7[1] = addrloc_477585(a);
		LOC8 = 0;
		LOC8 = HEX25_169905(((NimStringDesc*) &TMP4148), LOC7, 2);
		putintodest_490713(p, d, (*e).typ, LOC8, a.s);
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC10;
		TY501032 LOC14;
		Ropeobj169006* LOC15;
		LOC10 = 0;
		LOC10 = ((*etyp).kind == ((NU8) 25));
		if (!(LOC10)) goto LA11;
		LOC10 = ((*etyp).callconv == ((NU8) 8));
		LA11: ;
		if (!LOC10) goto LA12;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = getclosuretype_475067((*p).module, etyp, ((NU8) 1));
		LOC14[1] = rdcharloc_477608(a);
		LOC15 = 0;
		LOC15 = HEX25_169905(((NimStringDesc*) &TMP4149), LOC14, 2);
		putintodest_490713(p, d, (*e).typ, LOC15, a.s);
	}
	goto LA1;
	LA12: ;
	{
		TY501032 LOC17;
		Ropeobj169006* LOC18;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = gettypedesc_475055((*p).module, (*e).typ);
		LOC17[1] = rdcharloc_477608(a);
		LOC18 = 0;
		LOC18 = HEX25_169905(((NimStringDesc*) &TMP4149), LOC17, 2);
		putintodest_490713(p, d, (*e).typ, LOC18, a.s);
	}
	LA1: ;
}

N_NIMCALL(void, unaryexprchar_491622)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt) {
	Tloc214804 a;
	TY169507 LOC1;
	Ropeobj169006* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdcharloc_477608(a);
	LOC2 = 0;
	LOC2 = ropecg_472407((*p).module, frmt, LOC1, 1);
	putintodest_490713(p, d, (*e).typ, LOC2, ((NU8) 0));
}

N_NIMCALL(void, genord_496874)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	unaryexprchar_491622(p, e, d, ((NimStringDesc*) &TMP4021));
}

N_NIMCALL(void, genarraylen_495814)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 op) {
	Tnode214790* a;
	Ttype214828* typ;
	a = (*e).kindU.S6.sons->data[((NI) 1)];
	{
		if (!((*a).kind == ((NU8) 64))) goto LA3;
		a = (*a).kindU.S6.sons->data[((NI) 0)];
	}
	LA3: ;
	typ = skiptypes_218113((*a).typ, IL64(211106240964864));
	switch ((*typ).kind) {
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			if (!(op == ((NU8) 8))) goto LA8;
			unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4150));
		}
		goto LA6;
		LA8: ;
		{
			unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4151));
		}
		LA6: ;
	}
	break;
	case ((NU8) 29):
	{
		usestringh_472345((*p).module);
		{
			if (!(op == ((NU8) 8))) goto LA14;
			unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4152));
		}
		goto LA12;
		LA14: ;
		{
			unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4153));
		}
		LA12: ;
	}
	break;
	case ((NU8) 28):
	case ((NU8) 24):
	{
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = (gcmd_160123 == ((NU8) 2));
			if (LOC20) goto LA21;
			LOC20 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
			LA21: ;
			if (!!(LOC20)) goto LA22;
			{
				if (!(op == ((NU8) 8))) goto LA26;
				unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4154));
			}
			goto LA24;
			LA26: ;
			{
				unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4155));
			}
			LA24: ;
		}
		goto LA18;
		LA22: ;
		{
			{
				if (!(op == ((NU8) 8))) goto LA32;
				unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4156));
			}
			goto LA30;
			LA32: ;
			{
				unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4157));
			}
			LA30: ;
		}
		LA18: ;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		{
			NI64 LOC40;
			Ropeobj169006* LOC41;
			if (!(op == ((NU8) 8))) goto LA38;
			LOC40 = 0;
			LOC40 = lastord_240004(typ);
			LOC41 = 0;
			LOC41 = rope_169401(LOC40);
			putintodest_490713(p, d, (*e).typ, LOC41, ((NU8) 0));
		}
		goto LA36;
		LA38: ;
		{
			NI64 LOC43;
			Ropeobj169006* LOC44;
			LOC43 = 0;
			LOC43 = lengthord_240007(typ);
			LOC44 = 0;
			LOC44 = rope_169401(LOC43);
			putintodest_490713(p, d, (*e).typ, LOC44, ((NU8) 0));
		}
		LA36: ;
	}
	break;
	default:
	{
		internalerror_187100((*e).info, ((NimStringDesc*) &TMP4158));
	}
	break;
	}
}

N_NIMCALL(void, unarystmt_490772)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt) {
	Tloc214804 a;
	TY169507 LOC5;
	memset((void*)(&a), 0, sizeof(a));
	{
		if (!!(((*d).k == ((NU8) 0)))) goto LA3;
		internalerror_187100((*e).info, ((NimStringDesc*) &TMP4161));
	}
	LA3: ;
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = rdloc_477569(a);
	linecg_472707(p, ((NU8) 2), frmt, LOC5, 1);
}

N_NIMCALL(void, gensetlengthstr_496032)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	binarystmt_490746(p, e, d, ((NimStringDesc*) &TMP4164));
	keepalive_477817(p, (*d));
	gcusage_494863(e);
}

N_NIMCALL(void, gensetlengthseq_495899)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 a;
	Tloc214804 b;
	Ttype214828* t;
	NimStringDesc* setlenpattern;
	TY474652 LOC8;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
	t = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106240964864));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_160123 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA4: ;
		if (!!(LOC3)) goto LA5;
		setlenpattern = copyString(((NimStringDesc*) &TMP4165));
	}
	goto LA1;
	LA5: ;
	{
		setlenpattern = copyString(((NimStringDesc*) &TMP4166));
	}
	LA1: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rdloc_477569(a);
	LOC8[1] = rdloc_477569(b);
	LOC8[2] = gettypedesc_475055((*p).module, t);
	LOC8[3] = gettypedesc_475055((*p).module, (*t).sons->data[((NI) 0)]);
	linecg_472707(p, ((NU8) 2), setlenpattern, LOC8, 4);
	keepalive_477817(p, a);
	gcusage_494863(e);
}

N_NIMCALL(Ropeobj169006*, rdsetelemloc_496062)(Tloc214804 a, Ttype214828* settype) {
	Ropeobj169006* result;
	result = 0;
	result = rdcharloc_477608(a);
	{
		NI64 LOC3;
		TY501032 LOC6;
		NI64 LOC7;
		LOC3 = 0;
		LOC3 = firstord_240001(settype);
		if (!!((LOC3 == IL64(0)))) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = result;
		LOC7 = 0;
		LOC7 = firstord_240001(settype);
		LOC6[1] = rope_169401(LOC7);
		result = HEX25_169905(((NimStringDesc*) &TMP4167), LOC6, 2);
	}
	LA4: ;
	return result;
}

N_NIMCALL(void, binarystmtinexcl_496257)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt) {
	Tloc214804 a;
	Tloc214804 b;
	TY501032 LOC1;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_477569(a);
	LOC1[1] = rdsetelemloc_496062(b, a.t);
	linef_472700(p, ((NU8) 2), frmt, LOC1, 2);
}

N_NIMCALL(void, binaryexprchar_491209)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NimStringDesc* frmt) {
	Tloc214804 a;
	Tloc214804 b;
	TY501032 LOC1;
	Ropeobj169006* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdcharloc_477608(a);
	LOC1[1] = rdcharloc_477608(b);
	LOC2 = 0;
	LOC2 = ropecg_472407((*p).module, frmt, LOC1, 2);
	putintodest_490713(p, d, (*e).typ, LOC2, ((NU8) 0));
}

N_NIMCALL(NIM_BOOL, fewcmps_496203)(Tnode214790* s) {
	NIM_BOOL result;
	result = 0;
	{
		if (!!(((*s).kind == ((NU8) 39)))) goto LA3;
		internalerror_187100((*s).info, ((NimStringDesc*) &TMP4182));
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		NI64 LOC8;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = getsize_240124((*s).typ);
		LOC7 = (LOC8 <= ((NI64) (intsize_167615)));
		if (!(LOC7)) goto LA9;
		LOC7 = (((*s).flags &(1U<<((NU)(((NU8) 4))&15U)))!=0);
		LA9: ;
		if (!LOC7) goto LA10;
		result = NIM_FALSE;
	}
	goto LA5;
	LA10: ;
	{
		Ttype214828* LOC13;
		LOC13 = 0;
		LOC13 = elemtype_240383((*s).typ);
		if (!((*LOC13).kind == ((NU8) 31) || (*LOC13).kind >= ((NU8) 33) && (*LOC13).kind <= ((NU8) 35))) goto LA14;
		result = NIM_TRUE;
	}
	goto LA5;
	LA14: ;
	{
		NI LOC17;
		LOC17 = 0;
		LOC17 = sonslen_217351(s);
		result = (LOC17 <= ((NI) 8));
	}
	LA5: ;
	return result;
}

N_NIMCALL(void, binaryexprin_496237)(Tcproc469022* p, Tnode214790* e, Tloc214804* a, Tloc214804* b, Tloc214804* d, NimStringDesc* frmt) {
	TY501032 LOC1;
	Ropeobj169006* LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_477569((*a));
	LOC1[1] = rdsetelemloc_496062((*b), (*a).t);
	LOC2 = 0;
	LOC2 = HEX25_169905(frmt, LOC1, 2);
	putintodest_490713(p, d, (*e).typ, LOC2, ((NU8) 0));
}

N_NIMCALL(void, geninexpraux_493896)(Tcproc469022* p, Tnode214790* e, Tloc214804* a, Tloc214804* b, Tloc214804* d) {
	Ttype214828* LOC1;
	NI64 LOC2;
	LOC1 = 0;
	LOC1 = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106240964864));
	LOC2 = 0;
	LOC2 = getsize_240124(LOC1);
	switch (((NI) (LOC2))) {
	case ((NI) 1):
	{
		binaryexprin_496237(p, e, a, b, d, ((NimStringDesc*) &TMP4186));
	}
	break;
	case ((NI) 2):
	{
		binaryexprin_496237(p, e, a, b, d, ((NimStringDesc*) &TMP4187));
	}
	break;
	case ((NI) 4):
	{
		binaryexprin_496237(p, e, a, b, d, ((NimStringDesc*) &TMP4188));
	}
	break;
	case ((NI) 8):
	{
		binaryexprin_496237(p, e, a, b, d, ((NimStringDesc*) &TMP4189));
	}
	break;
	default:
	{
		binaryexprin_496237(p, e, a, b, d, ((NimStringDesc*) &TMP4190));
	}
	break;
	}
}

N_NIMCALL(void, geninop_496409)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 a;
	Tloc214804 b;
	Tloc214804 x;
	Tloc214804 y;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&x), 0, sizeof(x));
	memset((void*)(&y), 0, sizeof(y));
	{
		NIM_BOOL LOC3;
		Tnode214790* ea;
		NI length;
		LOC3 = 0;
		LOC3 = ((*(*e).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 39));
		if (!(LOC3)) goto LA4;
		LOC3 = fewcmps_496203((*e).kindU.S6.sons->data[((NI) 1)]);
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!((*(*e).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 70) || (*(*e).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 69))) goto LA9;
			ea = (*(*e).kindU.S6.sons->data[((NI) 2)]).kindU.S6.sons->data[((NI) 0)];
		}
		goto LA7;
		LA9: ;
		{
			ea = (*e).kindU.S6.sons->data[((NI) 2)];
		}
		LA7: ;
		initlocexpr_478683(p, ea, (&a));
		initloc_472273((&b), ((NU8) 6), (*e).typ, ((NU8) 0));
		b.r = rope_169277(((NimStringDesc*) &TMP3810));
		length = sonslen_217351((*e).kindU.S6.sons->data[((NI) 1)]);
		{
			NI i_496461;
			NI HEX3Atmp_496812;
			NI res_496815;
			i_496461 = 0;
			HEX3Atmp_496812 = 0;
			HEX3Atmp_496812 = (NI)(length - ((NI) 1));
			res_496815 = ((NI) 0);
			{
				while (1) {
					if (!(res_496815 <= HEX3Atmp_496812)) goto LA14;
					i_496461 = res_496815;
					{
						TY474655 LOC19;
						if (!((*(*(*e).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[i_496461]).kind == ((NU8) 44))) goto LA17;
						initlocexpr_478683(p, (*(*(*e).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[i_496461]).kindU.S6.sons->data[((NI) 0)], (&x));
						initlocexpr_478683(p, (*(*(*e).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[i_496461]).kindU.S6.sons->data[((NI) 1)], (&y));
						memset((void*)LOC19, 0, sizeof(LOC19));
						LOC19[0] = rdcharloc_477608(a);
						LOC19[1] = rdcharloc_477608(x);
						LOC19[2] = rdcharloc_477608(y);
						addf_170205(&b.r, ((NimStringDesc*) &TMP4183), LOC19, 3);
					}
					goto LA15;
					LA17: ;
					{
						TY501032 LOC21;
						initlocexpr_478683(p, (*(*e).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[i_496461], (&x));
						memset((void*)LOC21, 0, sizeof(LOC21));
						LOC21[0] = rdcharloc_477608(a);
						LOC21[1] = rdcharloc_477608(x);
						addf_170205(&b.r, ((NimStringDesc*) &TMP4184), LOC21, 2);
					}
					LA15: ;
					{
						if (!(i_496461 < (NI)(length - ((NI) 1)))) goto LA24;
						add_169487(&b.r, ((NimStringDesc*) &TMP4185));
					}
					LA24: ;
					res_496815 += ((NI) 1);
				} LA14: ;
			}
		}
		add_169487(&b.r, ((NimStringDesc*) &TMP3809));
		putintodest_490713(p, d, (*e).typ, b.r, ((NU8) 0));
	}
	goto LA1;
	LA5: ;
	{
		initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
		initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
		geninexpraux_493896(p, e, (&a), (&b), d);
	}
	LA1: ;
}

N_NIMCALL(void, gensetop_496819)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 op) {
	Tloc214804 a;
	Tloc214804 b;
	Tloc214804 i;
	Ttype214828* settype;
	NI size;
	NI64 LOC1;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&i), 0, sizeof(i));
	settype = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106240964864));
	LOC1 = 0;
	LOC1 = getsize_240124(settype);
	size = ((NI) (LOC1));
	switch (size) {
	case ((NI) 1):
	case ((NI) 2):
	case ((NI) 4):
	case ((NI) 8):
	{
		switch (op) {
		case ((NU8) 38):
		{
			NimStringDesc* ts;
			NimStringDesc* LOC4;
			NimStringDesc* LOC5;
			NimStringDesc* LOC6;
			LOC4 = 0;
			LOC5 = 0;
			LOC5 = nimIntToStr((NI)(size * ((NI) 8)));
			LOC4 = rawNewString(LOC5->Sup.len + 2);
appendString(LOC4, ((NimStringDesc*) &TMP3789));
appendString(LOC4, LOC5);
			ts = LOC4;
			LOC6 = 0;
			LOC6 = rawNewString(ts->Sup.len + ts->Sup.len + 35);
appendString(LOC6, ((NimStringDesc*) &TMP4168));
appendString(LOC6, ts);
appendString(LOC6, ((NimStringDesc*) &TMP4169));
appendString(LOC6, ts);
appendString(LOC6, ((NimStringDesc*) &TMP4170));
			binarystmtinexcl_496257(p, e, d, LOC6);
		}
		break;
		case ((NU8) 39):
		{
			NimStringDesc* ts;
			NimStringDesc* LOC8;
			NimStringDesc* LOC9;
			NimStringDesc* LOC10;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = nimIntToStr((NI)(size * ((NI) 8)));
			LOC8 = rawNewString(LOC9->Sup.len + 2);
appendString(LOC8, ((NimStringDesc*) &TMP3789));
appendString(LOC8, LOC9);
			ts = LOC8;
			LOC10 = 0;
			LOC10 = rawNewString(ts->Sup.len + ts->Sup.len + 42);
appendString(LOC10, ((NimStringDesc*) &TMP4171));
appendString(LOC10, ts);
appendString(LOC10, ((NimStringDesc*) &TMP4172));
appendString(LOC10, ts);
appendString(LOC10, ((NimStringDesc*) &TMP4173));
			binarystmtinexcl_496257(p, e, d, LOC10);
		}
		break;
		case ((NU8) 40):
		{
			{
				if (!(size <= ((NI) 4))) goto LA14;
				unaryexprchar_491622(p, e, d, ((NimStringDesc*) &TMP4174));
			}
			goto LA12;
			LA14: ;
			{
				unaryexprchar_491622(p, e, d, ((NimStringDesc*) &TMP4175));
			}
			LA12: ;
		}
		break;
		case ((NU8) 132):
		{
			binaryexprchar_491209(p, e, d, ((NimStringDesc*) &TMP4176));
		}
		break;
		case ((NU8) 131):
		{
			binaryexprchar_491209(p, e, d, ((NimStringDesc*) &TMP4177));
		}
		break;
		case ((NU8) 130):
		{
			binaryexpr_490820(p, e, d, ((NimStringDesc*) &TMP4061));
		}
		break;
		case ((NU8) 133):
		{
			binaryexpr_490820(p, e, d, ((NimStringDesc*) &TMP4178));
		}
		break;
		case ((NU8) 134):
		{
			binaryexpr_490820(p, e, d, ((NimStringDesc*) &TMP4179));
		}
		break;
		case ((NU8) 135):
		{
			binaryexpr_490820(p, e, d, ((NimStringDesc*) &TMP4180));
		}
		break;
		case ((NU8) 136):
		{
			binaryexpr_490820(p, e, d, ((NimStringDesc*) &TMP4181));
		}
		break;
		case ((NU8) 147):
		{
			geninop_496409(p, e, d);
		}
		break;
		default:
		{
			internalerror_187100((*e).info, ((NimStringDesc*) &TMP4191));
		}
		break;
		}
	}
	break;
	default:
	{
		switch (op) {
		case ((NU8) 38):
		{
			binarystmtinexcl_496257(p, e, d, ((NimStringDesc*) &TMP4192));
		}
		break;
		case ((NU8) 39):
		{
			binarystmtinexcl_496257(p, e, d, ((NimStringDesc*) &TMP4193));
		}
		break;
		case ((NU8) 40):
		{
			NimStringDesc* LOC30;
			NimStringDesc* LOC31;
			LOC30 = 0;
			LOC31 = 0;
			LOC31 = nimIntToStr(size);
			LOC30 = rawNewString(LOC31->Sup.len + 14);
appendString(LOC30, ((NimStringDesc*) &TMP4194));
appendString(LOC30, LOC31);
appendChar(LOC30, 41);
			unaryexprchar_491622(p, e, d, LOC30);
		}
		break;
		case ((NU8) 132):
		case ((NU8) 131):
		{
			Ttype214828* LOC33;
			TY475874 LOC39;
			LOC33 = 0;
			LOC33 = getsystype_258130(((NU8) 31));
			gettemp_476435(p, LOC33, (&i), NIM_FALSE);
			initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
			initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
			{
				Ttype214828* LOC38;
				if (!((*d).k == ((NU8) 0))) goto LA36;
				LOC38 = 0;
				LOC38 = getsystype_258130(((NU8) 1));
				gettemp_476435(p, LOC38, d, NIM_FALSE);
			}
			LA36: ;
			memset((void*)LOC39, 0, sizeof(LOC39));
			LOC39[0] = rdloc_477569(i);
			LOC39[1] = rope_169401(((NI64) (size)));
			LOC39[2] = rdloc_477569((*d));
			LOC39[3] = rdloc_477569(a);
			LOC39[4] = rdloc_477569(b);
			linef_472700(p, ((NU8) 2), lookupopr_496826[(op)- 131], LOC39, 5);
		}
		break;
		case ((NU8) 130):
		{
			NimStringDesc* LOC41;
			NimStringDesc* LOC42;
			usestringh_472345((*p).module);
			LOC41 = 0;
			LOC42 = 0;
			LOC42 = nimIntToStr(size);
			LOC41 = rawNewString(LOC42->Sup.len + 21);
appendString(LOC41, ((NimStringDesc*) &TMP4200));
appendString(LOC41, LOC42);
appendString(LOC41, ((NimStringDesc*) &TMP4201));
			binaryexprchar_491209(p, e, d, LOC41);
		}
		break;
		case ((NU8) 133):
		case ((NU8) 134):
		case ((NU8) 135):
		case ((NU8) 136):
		{
			Ttype214828* LOC44;
			TY476247 LOC49;
			LOC44 = 0;
			LOC44 = getsystype_258130(((NU8) 31));
			gettemp_476435(p, LOC44, (&i), NIM_FALSE);
			initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
			initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
			{
				if (!((*d).k == ((NU8) 0))) goto LA47;
				gettemp_476435(p, a.t, d, NIM_FALSE);
			}
			LA47: ;
			memset((void*)LOC49, 0, sizeof(LOC49));
			LOC49[0] = rdloc_477569(i);
			LOC49[1] = rope_169401(((NI64) (size)));
			LOC49[2] = rdloc_477569((*d));
			LOC49[3] = rdloc_477569(a);
			LOC49[4] = rdloc_477569(b);
			LOC49[5] = rope_169277(lookupopr_496826[(op)- 131]);
			linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4202), LOC49, 6);
		}
		break;
		case ((NU8) 147):
		{
			geninop_496409(p, e, d);
		}
		break;
		default:
		{
			internalerror_187100((*e).info, ((NimStringDesc*) &TMP4203));
		}
		break;
		}
	}
	break;
	}
}

static N_INLINE(Ropeobj169006*, genargstringtocstring_479176)(Tcproc469022* p, Tnode214790* n) {
	Ropeobj169006* result;
	Tloc214804 a;
	TY169507 LOC1;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 0)], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_477569(a);
	result = HEX25_169905(((NimStringDesc*) &TMP4204), LOC1, 1);
	return result;
}

N_NIMCALL(Ropeobj169006*, openarrayloc_479065)(Tcproc469022* p, Tnode214790* n) {
	Ropeobj169006* result;
	Tloc214804 a;
	Tnode214790* q;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	q = skipconv_249082(n);
	{
		NU8 LOC3;
		Tloc214804 b;
		Tloc214804 c;
		Tnode214790* LOC6;
		Tnode214790* LOC7;
		Tnode214790* LOC8;
		NimStringDesc* fmt;
		Ttype214828* LOC9;
		TY474655 LOC25;
		LOC3 = 0;
		LOC3 = getmagic_239323(q);
		if (!(LOC3 == ((NU8) 138))) goto LA4;
		memset((void*)(&b), 0, sizeof(b));
		memset((void*)(&c), 0, sizeof(c));
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_215238(q, ((NI) 1));
		initlocexpr_478683(p, LOC6, (&a));
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_215238(q, ((NI) 2));
		initlocexpr_478683(p, LOC7, (&b));
		LOC8 = 0;
		LOC8 = HEX5BHEX5D_215238(q, ((NI) 3));
		initlocexpr_478683(p, LOC8, (&c));
		LOC9 = 0;
		LOC9 = skiptypes_218113(a.t, IL64(211106243062016));
		switch ((*LOC9).kind) {
		case ((NU8) 27):
		case ((NU8) 48):
		case ((NU8) 16):
		case ((NU8) 4):
		{
			fmt = copyString(((NimStringDesc*) &TMP4205));
		}
		break;
		case ((NU8) 28):
		case ((NU8) 24):
		{
			{
				NIM_BOOL LOC14;
				Ttype214828* LOC15;
				NIM_BOOL LOC17;
				LOC14 = 0;
				LOC15 = 0;
				LOC15 = skiptypes_218113((*n).typ, IL64(211106232576256));
				LOC14 = ((*LOC15).kind == ((NU8) 23));
				if (!(LOC14)) goto LA16;
				LOC17 = 0;
				LOC17 = (gcmd_160123 == ((NU8) 2));
				if (LOC17) goto LA18;
				LOC17 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
				LA18: ;
				LOC14 = !(LOC17);
				LA16: ;
				if (!LOC14) goto LA19;
				fmt = copyString(((NimStringDesc*) &TMP4206));
			}
			goto LA12;
			LA19: ;
			{
				fmt = copyString(((NimStringDesc*) &TMP4207));
			}
			LA12: ;
		}
		break;
		default:
		{
			NimStringDesc* LOC23;
			NimStringDesc* LOC24;
			LOC23 = 0;
			LOC24 = 0;
			LOC24 = typetostring_240017(a.t, ((NU8) 0));
			LOC23 = rawNewString(LOC24->Sup.len + 14);
appendString(LOC23, ((NimStringDesc*) &TMP4208));
appendString(LOC23, LOC24);
			internalerror_187113(LOC23);
			fmt = copyString(((NimStringDesc*) &TMP4209));
		}
		break;
		}
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = rdloc_477569(a);
		LOC25[1] = rdloc_477569(b);
		LOC25[2] = rdloc_477569(c);
		result = HEX25_169905(fmt, LOC25, 3);
	}
	goto LA1;
	LA4: ;
	{
		Ttype214828* LOC27;
		initlocexpr_478683(p, n, (&a));
		LOC27 = 0;
		LOC27 = skiptypes_218113(a.t, IL64(211106240964864));
		switch ((*LOC27).kind) {
		case ((NU8) 27):
		case ((NU8) 48):
		{
			TY169507 LOC29;
			memset((void*)LOC29, 0, sizeof(LOC29));
			LOC29[0] = rdloc_477569(a);
			result = HEX25_169905(((NimStringDesc*) &TMP4098), LOC29, 1);
		}
		break;
		case ((NU8) 28):
		case ((NU8) 24):
		{
			{
				NIM_BOOL LOC33;
				Ttype214828* LOC34;
				NIM_BOOL LOC36;
				TY501032 LOC40;
				LOC33 = 0;
				LOC34 = 0;
				LOC34 = skiptypes_218113((*n).typ, IL64(211106232576256));
				LOC33 = ((*LOC34).kind == ((NU8) 23));
				if (!(LOC33)) goto LA35;
				LOC36 = 0;
				LOC36 = (gcmd_160123 == ((NU8) 2));
				if (LOC36) goto LA37;
				LOC36 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
				LA37: ;
				LOC33 = !(LOC36);
				LA35: ;
				if (!LOC33) goto LA38;
				memset((void*)LOC40, 0, sizeof(LOC40));
				LOC40[0] = rdloc_477569(a);
				LOC40[1] = lenfield_478705(p);
				result = HEX25_169905(((NimStringDesc*) &TMP4210), LOC40, 2);
			}
			goto LA31;
			LA38: ;
			{
				TY501032 LOC42;
				memset((void*)LOC42, 0, sizeof(LOC42));
				LOC42[0] = rdloc_477569(a);
				LOC42[1] = lenfield_478705(p);
				result = HEX25_169905(((NimStringDesc*) &TMP4099), LOC42, 2);
			}
			LA31: ;
		}
		break;
		case ((NU8) 16):
		case ((NU8) 4):
		{
			TY501032 LOC44;
			NI64 LOC45;
			memset((void*)LOC44, 0, sizeof(LOC44));
			LOC44[0] = rdloc_477569(a);
			LOC45 = 0;
			LOC45 = lengthord_240007(a.t);
			LOC44[1] = rope_169401(LOC45);
			result = HEX25_169905(((NimStringDesc*) &TMP4100), LOC44, 2);
		}
		break;
		case ((NU8) 21):
		case ((NU8) 22):
		{
			Ttype214828* LOC47;
			LOC47 = 0;
			LOC47 = lastson_217377(a.t);
			switch ((*LOC47).kind) {
			case ((NU8) 28):
			case ((NU8) 24):
			{
				TY501032 LOC49;
				memset((void*)LOC49, 0, sizeof(LOC49));
				LOC49[0] = rdloc_477569(a);
				LOC49[1] = lenfield_478705(p);
				result = HEX25_169905(((NimStringDesc*) &TMP4210), LOC49, 2);
			}
			break;
			case ((NU8) 16):
			case ((NU8) 4):
			{
				TY501032 LOC51;
				Ttype214828* LOC52;
				NI64 LOC53;
				memset((void*)LOC51, 0, sizeof(LOC51));
				LOC51[0] = rdloc_477569(a);
				LOC52 = 0;
				LOC52 = lastson_217377(a.t);
				LOC53 = 0;
				LOC53 = lengthord_240007(LOC52);
				LOC51[1] = rope_169401(LOC53);
				result = HEX25_169905(((NimStringDesc*) &TMP4100), LOC51, 2);
			}
			break;
			default:
			{
				NimStringDesc* LOC55;
				NimStringDesc* LOC56;
				LOC55 = 0;
				LOC56 = 0;
				LOC56 = typetostring_240017(a.t, ((NU8) 0));
				LOC55 = rawNewString(LOC56->Sup.len + 14);
appendString(LOC55, ((NimStringDesc*) &TMP4208));
appendString(LOC55, LOC56);
				internalerror_187113(LOC55);
			}
			break;
			}
		}
		break;
		default:
		{
			NimStringDesc* LOC58;
			NimStringDesc* LOC59;
			LOC58 = 0;
			LOC59 = 0;
			LOC59 = typetostring_240017(a.t, ((NU8) 0));
			LOC58 = rawNewString(LOC59->Sup.len + 14);
appendString(LOC58, ((NimStringDesc*) &TMP4208));
appendString(LOC58, LOC59);
			internalerror_187113(LOC58);
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, initlocexprsingleuse_478689)(Tcproc469022* p, Tnode214790* e, Tloc214804* result) {
	initloc_472273(result, ((NU8) 0), (*e).typ, ((NU8) 0));
	(*result).flags |= ((NU16)1)<<((((NU8) 8))%(sizeof(NU16)*8));
	expr_478648(p, e, result);
}

N_NIMCALL(Ropeobj169006*, genarg_479187)(Tcproc469022* p, Tnode214790* n_479190, Tsym214822* param, Tnode214790* call) {
	Ropeobj169006* result;
	Tloc214804 a;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	{
		if (!((*n_479190).kind == ((NU8) 71))) goto LA3;
		result = genargstringtocstring_479176(p, n_479190);
	}
	goto LA1;
	LA3: ;
	{
		Ttype214828* LOC6;
		Tnode214790* n;
		LOC6 = 0;
		LOC6 = skiptypes_218113((*param).typ, IL64(211106240964864));
		if (!((*LOC6).kind == ((NU8) 27) || (*LOC6).kind == ((NU8) 48))) goto LA7;
		{
			if (!!(((*n_479190).kind == ((NU8) 64)))) goto LA11;
			n = n_479190;
		}
		goto LA9;
		LA11: ;
		{
			n = (*n_479190).kindU.S6.sons->data[((NI) 0)];
		}
		LA9: ;
		result = openarrayloc_479065(p, n);
	}
	goto LA1;
	LA7: ;
	{
		NIM_BOOL LOC15;
		LOC15 = 0;
		LOC15 = ccgintroducedptr_473376(param);
		if (!LOC15) goto LA16;
		initlocexpr_478683(p, n_479190, (&a));
		result = addrloc_477585(a);
	}
	goto LA1;
	LA16: ;
	{
		NIM_BOOL LOC19;
		NIM_BOOL LOC20;
		NIM_BOOL LOC21;
		Tnode214790* callee;
		LOC19 = 0;
		LOC20 = 0;
		LOC21 = 0;
		LOC21 = (gcmd_160123 == ((NU8) 2));
		if (LOC21) goto LA22;
		LOC21 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA22: ;
		LOC20 = LOC21;
		if (!(LOC20)) goto LA23;
		LOC20 = ((*(*param).typ).kind == ((NU8) 23));
		LA23: ;
		LOC19 = LOC20;
		if (!(LOC19)) goto LA24;
		LOC19 = ((*n_479190).kind == ((NU8) 64));
		LA24: ;
		if (!LOC19) goto LA25;
		initlocexprsingleuse_478689(p, (*n_479190).kindU.S6.sons->data[((NI) 0)], (&a));
		callee = (*call).kindU.S6.sons->data[((NI) 0)];
		{
			NIM_BOOL LOC29;
			NIM_BOOL LOC30;
			LOC29 = 0;
			LOC30 = 0;
			LOC30 = ((*callee).kind == ((NU8) 3));
			if (!(LOC30)) goto LA31;
			LOC30 = ((134283296 & (*(*callee).kindU.S4.sym).flags) == 32);
			LA31: ;
			LOC29 = LOC30;
			if (!(LOC29)) goto LA32;
			LOC29 = !(((72 & (*(*callee).kindU.S4.sym).loc.flags) == 0));
			LA32: ;
			if (!LOC29) goto LA33;
			result = addrloc_477585(a);
		}
		goto LA27;
		LA33: ;
		{
			result = rdloc_477569(a);
		}
		LA27: ;
	}
	goto LA1;
	LA25: ;
	{
		initlocexprsingleuse_478689(p, n_479190, (&a));
		result = rdloc_477569(a);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, genargnoparam_479338)(Tcproc469022* p, Tnode214790* n) {
	Ropeobj169006* result;
	Tloc214804 a;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	{
		if (!((*n).kind == ((NU8) 71))) goto LA3;
		result = genargstringtocstring_479176(p, n);
	}
	goto LA1;
	LA3: ;
	{
		initlocexprsingleuse_478689(p, n, (&a));
		result = rdloc_477569(a);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, getrawproctype_479859)(Tcproc469022* p, Ttype214828* t) {
	Ropeobj169006* result;
	result = 0;
	result = getclosuretype_475067((*p).module, t, ((NU8) 0));
	return result;
}

N_NIMCALL(NIM_BOOL, leftappearsonrightside_478729)(Tnode214790* le, Tnode214790* ri) {
	NIM_BOOL result;
{	result = 0;
	{
		if (!!((le == NIM_NIL))) goto LA3;
		{
			NI i_478764;
			NI HEX3Atmp_478776;
			NI LOC6;
			NI res_478779;
			i_478764 = 0;
			HEX3Atmp_478776 = 0;
			LOC6 = 0;
			LOC6 = len_215059(ri);
			HEX3Atmp_478776 = (LOC6 - 1);
			res_478779 = ((NI) 1);
			{
				while (1) {
					Tnode214790* r;
					if (!(res_478779 <= HEX3Atmp_478776)) goto LA8;
					i_478764 = res_478779;
					r = HEX5BHEX5D_215238(ri, i_478764);
					{
						NU8 LOC11;
						LOC11 = 0;
						LOC11 = ispartof_415328(le, r);
						if (!!((LOC11 == ((NU8) 0)))) goto LA12;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA12: ;
					res_478779 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, hasnoinit_478783)(Tnode214790* call) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*(*call).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
	if (!(LOC1)) goto LA2;
	LOC1 = (((*(*(*call).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 12))&31U)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, resetloc_477732)(Tcproc469022* p, Tloc214804* loc) {
	NIM_BOOL containsgcref;
	Ttype214828* typ;
{	containsgcref = containsgarbagecollectedref_240106((*loc).t);
	typ = skiptypes_218113((*loc).t, IL64(211106242013440));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isimportedcpptype_473246(typ);
		if (!LOC3) goto LA4;
		goto BeforeRet;
	}
	LA4: ;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = iscomplexvaluetype_477699(typ);
		if (!!(LOC8)) goto LA9;
		{
			Tloc214804 nilloc;
			if (!containsgcref) goto LA13;
			memset((void*)(&nilloc), 0, sizeof(nilloc));
			initloc_472273((&nilloc), ((NU8) 1), (*loc).t, ((NU8) 2));
			nilloc.r = rope_169277(((NimStringDesc*) &TMP3919));
			genrefassign_477693(p, (*loc), nilloc, 16);
		}
		goto LA11;
		LA13: ;
		{
			TY169507 LOC16;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_477569((*loc));
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3893), LOC16, 1);
		}
		LA11: ;
	}
	goto LA6;
	LA9: ;
	{
		{
			TY169507 LOC22;
			if (!(((*p).options &(1U<<((NU)(((NU8) 6))&31U)))!=0)) goto LA20;
			memset((void*)LOC22, 0, sizeof(LOC22));
			LOC22[0] = addrloc_477585((*loc));
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4213), LOC22, 1);
		}
		LA20: ;
		{
			TY501032 LOC27;
			if (!!(((*loc).s == ((NU8) 2)))) goto LA25;
			memset((void*)LOC27, 0, sizeof(LOC27));
			LOC27[0] = addrloc_477585((*loc));
			LOC27[1] = gentypeinfo_475350((*p).module, (*loc).t);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4214), LOC27, 2);
			genobjectinit_477623(p, ((NU8) 2), (*loc).t, (*loc), NIM_TRUE);
		}
		goto LA23;
		LA25: ;
		{
			TY501032 LOC29;
			usestringh_472345((*p).module);
			memset((void*)LOC29, 0, sizeof(LOC29));
			LOC29[0] = addrloc_477585((*loc));
			LOC29[1] = rdloc_477569((*loc));
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3896), LOC29, 2);
			genobjectinit_477623(p, ((NU8) 2), (*loc).t, (*loc), NIM_TRUE);
		}
		LA23: ;
	}
	LA6: ;
	}BeforeRet: ;
}

N_NIMCALL(Ropeobj169006*, addcomma_479864)(Ropeobj169006* r) {
	Ropeobj169006* result;
	result = 0;
	{
		if (!(r == NIM_NIL)) goto LA3;
		result = r;
	}
	goto LA1;
	LA3: ;
	{
		TY473064 LOC6;
		Ropeobj169006* LOC7;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC7 = 0;
		LOC7 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC6, 0);
		result = HEX26_169418(r, LOC7);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genclosurecall_479852)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* d) {
	Tloc214804 op;
	Ropeobj169006* pl;
	Ttype214828* typ;
	NI length;
	Ropeobj169006* rawproc;
	NimStringDesc* callpattern;
	memset((void*)(&op), 0, sizeof(op));
	initlocexpr_478683(p, (*ri).kindU.S6.sons->data[((NI) 0)], (&op));
	pl = 0;
	typ = skiptypes_218113((*(*ri).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576256));
	length = sonslen_217351(ri);
	{
		NI i_480013;
		NI HEX3Atmp_480614;
		NI res_480617;
		i_480013 = 0;
		HEX3Atmp_480614 = 0;
		HEX3Atmp_480614 = (NI)(length - ((NI) 1));
		res_480617 = ((NI) 1);
		{
			while (1) {
				if (!(res_480617 <= HEX3Atmp_480614)) goto LA3;
				i_480013 = res_480617;
				{
					NI LOC6;
					Tnode214790* paramtype;
					LOC6 = 0;
					LOC6 = sonslen_217327(typ);
					if (!(i_480013 < LOC6)) goto LA7;
					paramtype = (*(*typ).n).kindU.S6.sons->data[i_480013];
					{
						NIM_BOOL LOC11;
						Ropeobj169006* LOC20;
						LOC11 = 0;
						LOC11 = iscompiletimeonly_248906((*paramtype).typ);
						if (!!(LOC11)) goto LA12;
						{
							TY473064 LOC18;
							Ropeobj169006* LOC19;
							if (!!((pl == NIM_NIL))) goto LA16;
							memset((void*)LOC18, 0, sizeof(LOC18));
							LOC19 = 0;
							LOC19 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC18, 0);
							add_169482(&pl, LOC19);
						}
						LA16: ;
						LOC20 = 0;
						LOC20 = genarg_479187(p, (*ri).kindU.S6.sons->data[i_480013], (*paramtype).kindU.S4.sym, ri);
						add_169482(&pl, LOC20);
					}
					LA12: ;
				}
				goto LA4;
				LA7: ;
				{
					Ropeobj169006* LOC28;
					{
						TY473064 LOC26;
						Ropeobj169006* LOC27;
						if (!!((pl == NIM_NIL))) goto LA24;
						memset((void*)LOC26, 0, sizeof(LOC26));
						LOC27 = 0;
						LOC27 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC26, 0);
						add_169482(&pl, LOC27);
					}
					LA24: ;
					LOC28 = 0;
					LOC28 = genargnoparam_479338(p, (*ri).kindU.S6.sons->data[i_480013]);
					add_169482(&pl, LOC28);
				}
				LA4: ;
				res_480617 += ((NI) 1);
			} LA3: ;
		}
	}
	rawproc = getrawproctype_479859(p, typ);
	{
		if (!(((*typ).flags &(1U<<((NU)(((NU8) 14))&31U)))!=0)) goto LA31;
		callpattern = copyString(((NimStringDesc*) &TMP4211));
	}
	goto LA29;
	LA31: ;
	{
		callpattern = copyString(((NimStringDesc*) &TMP4212));
	}
	LA29: ;
	{
		if (!!(((*typ).sons->data[((NI) 0)] == NIM_NIL))) goto LA36;
		{
			NIM_BOOL LOC40;
			LOC40 = 0;
			LOC40 = isinvalidreturntype_473318((*typ).sons->data[((NI) 0)]);
			if (!LOC40) goto LA41;
			{
				NI LOC45;
				TY473064 LOC48;
				Ropeobj169006* LOC49;
				LOC45 = 0;
				LOC45 = sonslen_217351(ri);
				if (!(((NI) 1) < LOC45)) goto LA46;
				memset((void*)LOC48, 0, sizeof(LOC48));
				LOC49 = 0;
				LOC49 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC48, 0);
				add_169482(&pl, LOC49);
			}
			LA46: ;
			{
				NIM_BOOL LOC52;
				NIM_BOOL LOC54;
				Ropeobj169006* LOC67;
				NimStringDesc* LOC68;
				TY474652 LOC69;
				LOC52 = 0;
				LOC52 = ((3 &(1U<<((NU)((*d).k)&15U)))!=0);
				if (LOC52) goto LA53;
				LOC54 = 0;
				LOC54 = leftappearsonrightside_478729(le, ri);
				LOC52 = !(LOC54);
				LA53: ;
				if (!LOC52) goto LA55;
				{
					if (!((*d).k == ((NU8) 0))) goto LA59;
					gettemp_476435(p, (*typ).sons->data[((NI) 0)], d, NIM_TRUE);
				}
				goto LA57;
				LA59: ;
				{
					NIM_BOOL LOC62;
					NIM_BOOL LOC64;
					LOC62 = 0;
					LOC62 = !(((66 &(1U<<((NU)((*d).k)&15U)))!=0));
					if (!(LOC62)) goto LA63;
					LOC64 = 0;
					LOC64 = hasnoinit_478783(ri);
					LOC62 = !(LOC64);
					LA63: ;
					if (!LOC62) goto LA65;
					resetloc_477732(p, d);
				}
				goto LA57;
				LA65: ;
				LA57: ;
				LOC67 = 0;
				LOC67 = addrloc_477585((*d));
				add_169482(&pl, LOC67);
				LOC68 = 0;
				LOC68 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC68, callpattern);
appendString(LOC68, ((NimStringDesc*) &TMP4215));
				memset((void*)LOC69, 0, sizeof(LOC69));
				LOC69[0] = op.r;
				LOC69[1] = pl;
				LOC69[2] = addcomma_479864(pl);
				LOC69[3] = rawproc;
				linef_472700(p, ((NU8) 2), LOC68, LOC69, 4);
			}
			goto LA50;
			LA55: ;
			{
				Tloc214804 tmp;
				Ropeobj169006* LOC71;
				NimStringDesc* LOC72;
				TY474652 LOC73;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_476435(p, (*typ).sons->data[((NI) 0)], (&tmp), NIM_TRUE);
				LOC71 = 0;
				LOC71 = addrloc_477585(tmp);
				add_169482(&pl, LOC71);
				LOC72 = 0;
				LOC72 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC72, callpattern);
appendString(LOC72, ((NimStringDesc*) &TMP4215));
				memset((void*)LOC73, 0, sizeof(LOC73));
				LOC73[0] = op.r;
				LOC73[1] = pl;
				LOC73[2] = addcomma_479864(pl);
				LOC73[3] = rawproc;
				linef_472700(p, ((NU8) 2), LOC72, LOC73, 4);
				genassignment_478664(p, (*d), tmp, 0);
			}
			LA50: ;
		}
		goto LA38;
		LA41: ;
		{
			Tloc214804 list;
			TY474652 LOC79;
			{
				if (!((*d).k == ((NU8) 0))) goto LA77;
				gettemp_476435(p, (*typ).sons->data[((NI) 0)], d, NIM_FALSE);
			}
			LA77: ;
			memset((void*)(&list), 0, sizeof(list));
			initloc_472273((&list), ((NU8) 9), (*d).t, ((NU8) 0));
			memset((void*)LOC79, 0, sizeof(LOC79));
			LOC79[0] = op.r;
			LOC79[1] = pl;
			LOC79[2] = addcomma_479864(pl);
			LOC79[3] = rawproc;
			list.r = HEX25_169905(callpattern, LOC79, 4);
			genassignment_478664(p, (*d), list, 0);
		}
		LA38: ;
	}
	goto LA34;
	LA36: ;
	{
		NimStringDesc* LOC81;
		TY474652 LOC82;
		LOC81 = 0;
		LOC81 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC81, callpattern);
appendString(LOC81, ((NimStringDesc*) &TMP4215));
		memset((void*)LOC82, 0, sizeof(LOC82));
		LOC82[0] = op.r;
		LOC82[1] = pl;
		LOC82[2] = addcomma_479864(pl);
		LOC82[3] = rawproc;
		linef_472700(p, ((NU8) 2), LOC81, LOC82, 4);
	}
	LA34: ;
}

N_NIMCALL(Ropeobj169006*, genotherarg_478677)(Tcproc469022* p, Tnode214790* ri, NI i, Ttype214828* typ) {
	Ropeobj169006* result;
	result = 0;
	{
		NI LOC3;
		Tnode214790* paramtype;
		LOC3 = 0;
		LOC3 = sonslen_217327(typ);
		if (!(i < LOC3)) goto LA4;
		paramtype = (*(*typ).n).kindU.S6.sons->data[i];
		{
			NIM_BOOL LOC8;
			LOC8 = 0;
			LOC8 = iscompiletimeonly_248906((*paramtype).typ);
			if (!LOC8) goto LA9;
			result = NIM_NIL;
		}
		goto LA6;
		LA9: ;
		{
			NIM_BOOL LOC12;
			Tnode214790* LOC16;
			LOC12 = 0;
			LOC12 = ((*(*typ).sons->data[i]).kind == ((NU8) 23));
			if (!(LOC12)) goto LA13;
			LOC12 = ((*(*ri).kindU.S6.sons->data[i]).kind == ((NU8) 64));
			LA13: ;
			if (!LOC12) goto LA14;
			LOC16 = 0;
			LOC16 = HEX5BHEX5D_215238((*ri).kindU.S6.sons->data[i], ((NI) 0));
			result = genargnoparam_479338(p, LOC16);
		}
		goto LA6;
		LA14: ;
		{
			result = genargnoparam_479338(p, (*ri).kindU.S6.sons->data[i]);
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		result = genargnoparam_479338(p, (*ri).kindU.S6.sons->data[i]);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode214790*, skipaddrderef_480823)(Tnode214790* node) {
	Tnode214790* result;
	Tnode214790* n;
	NIM_BOOL isaddr;
{	result = 0;
	n = node;
	isaddr = NIM_FALSE;
	switch ((*n).kind) {
	case ((NU8) 63):
	case ((NU8) 64):
	{
		n = (*n).kindU.S6.sons->data[((NI) 0)];
		isaddr = NIM_TRUE;
	}
	break;
	case ((NU8) 47):
	case ((NU8) 65):
	{
		n = (*n).kindU.S6.sons->data[((NI) 0)];
	}
	break;
	default:
	{
		result = n;
		goto BeforeRet;
	}
	break;
	}
	{
		if (!((*n).kind == ((NU8) 66))) goto LA6;
		n = (*n).kindU.S6.sons->data[((NI) 0)];
	}
	LA6: ;
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = isaddr;
		if (!(LOC10)) goto LA11;
		LOC10 = ((*n).kind == ((NU8) 47) || (*n).kind == ((NU8) 65));
		LA11: ;
		if (!LOC10) goto LA12;
		result = (*n).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA8;
	LA12: ;
	{
		if (!((*n).kind == ((NU8) 63) || (*n).kind == ((NU8) 64))) goto LA15;
		result = (*n).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA8;
	LA15: ;
	{
		result = node;
	}
	LA8: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, genthisarg_480865)(Tcproc469022* p, Tnode214790* ri_480868, NI i, Ttype214828* typ) {
	Ropeobj169006* result;
	Tnode214790* ri;
	Ttype214828* t;
	result = 0;
	{
		NI LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_217327(typ);
		if (!!((i < LOC3))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX24_187183(TMP4220);
		internalerror_187113(LOC6);
	}
	LA4: ;
	ri = HEX5BHEX5D_215238(ri_480868, i);
	{
		while (1) {
			if (!((*ri).kind == ((NU8) 66))) goto LA8;
			ri = HEX5BHEX5D_215238(ri, ((NI) 0));
		} LA8: ;
	}
	t = skiptypes_218113((*typ).sons->data[i], 2048);
	{
		Tnode214790* x;
		if (!((*t).kind == ((NU8) 23))) goto LA11;
		{
			if (!((*ri).kind == ((NU8) 64))) goto LA15;
			x = HEX5BHEX5D_215238(ri, ((NI) 0));
		}
		goto LA13;
		LA15: ;
		{
			x = ri;
		}
		LA13: ;
		{
			if (!((*(*x).typ).kind == ((NU8) 21))) goto LA20;
			result = genargnoparam_479338(p, x);
			add_169487(&result, ((NimStringDesc*) &TMP4221));
		}
		goto LA18;
		LA20: ;
		{
			NIM_BOOL LOC23;
			Tnode214790* LOC25;
			Tnode214790* LOC28;
			LOC23 = 0;
			LOC23 = ((*x).kind == ((NU8) 65) || (*x).kind == ((NU8) 47));
			if (!(LOC23)) goto LA24;
			LOC25 = 0;
			LOC25 = HEX5BHEX5D_215238(x, ((NI) 0));
			LOC23 = ((*(*LOC25).typ).kind == ((NU8) 21));
			LA24: ;
			if (!LOC23) goto LA26;
			LOC28 = 0;
			LOC28 = HEX5BHEX5D_215238(x, ((NI) 0));
			result = genargnoparam_479338(p, LOC28);
			add_169487(&result, ((NimStringDesc*) &TMP4221));
		}
		goto LA18;
		LA26: ;
		{
			result = genargnoparam_479338(p, x);
			add_169487(&result, ((NimStringDesc*) &TMP3971));
		}
		LA18: ;
	}
	goto LA9;
	LA11: ;
	{
		if (!((*t).kind == ((NU8) 21))) goto LA31;
		{
			Tnode214790* LOC37;
			if (!((*ri).kind == ((NU8) 63) || (*ri).kind == ((NU8) 64))) goto LA35;
			LOC37 = 0;
			LOC37 = HEX5BHEX5D_215238(ri, ((NI) 0));
			result = genargnoparam_479338(p, LOC37);
			add_169487(&result, ((NimStringDesc*) &TMP3971));
		}
		goto LA33;
		LA35: ;
		{
			result = genargnoparam_479338(p, ri);
			add_169487(&result, ((NimStringDesc*) &TMP4221));
		}
		LA33: ;
	}
	goto LA9;
	LA31: ;
	{
		ri = skipaddrderef_480823(ri);
		{
			if (!((*ri).kind == ((NU8) 63) || (*ri).kind == ((NU8) 64))) goto LA42;
			ri = HEX5BHEX5D_215238(ri, ((NI) 0));
		}
		LA42: ;
		result = genargnoparam_479338(p, ri);
		add_169487(&result, ((NimStringDesc*) &TMP3971));
	}
	LA9: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, genpatterncall_481099)(Tcproc469022* p, Tnode214790* ri_481102, NimStringDesc* pat, Ttype214828* typ_481104) {
	Ropeobj169006* result;
	NI i;
	NI j;
	result = 0;
	i = ((NI) 0);
	j = ((NI) 1);
	{
		while (1) {
			if (!(i < (pat ? pat->Sup.len : 0))) goto LA2;
			switch (((NU8)(pat->data[i]))) {
			case 64:
			{
				{
					NI LOC6;
					Ropeobj169006* LOC9;
					LOC6 = 0;
					LOC6 = len_215059(ri_481102);
					if (!(j < LOC6)) goto LA7;
					LOC9 = 0;
					LOC9 = genotherarg_478677(p, ri_481102, j, typ_481104);
					add_169482(&result, LOC9);
					{
						NI k_481128;
						NI HEX3Atmp_481304;
						NI HEX3Atmp_481305;
						NI LOC11;
						NI res_481308;
						k_481128 = 0;
						HEX3Atmp_481304 = 0;
						HEX3Atmp_481305 = 0;
						HEX3Atmp_481304 = (NI)(j + ((NI) 1));
						LOC11 = 0;
						LOC11 = len_215059(ri_481102);
						HEX3Atmp_481305 = (LOC11 - 1);
						res_481308 = HEX3Atmp_481304;
						{
							while (1) {
								TY473064 LOC14;
								Ropeobj169006* LOC15;
								Ropeobj169006* LOC16;
								if (!(res_481308 <= HEX3Atmp_481305)) goto LA13;
								k_481128 = res_481308;
								memset((void*)LOC14, 0, sizeof(LOC14));
								LOC15 = 0;
								LOC15 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC14, 0);
								add_169482(&result, LOC15);
								LOC16 = 0;
								LOC16 = genotherarg_478677(p, ri_481102, k_481128, typ_481104);
								add_169482(&result, LOC16);
								res_481308 += ((NI) 1);
							} LA13: ;
						}
					}
				}
				LA7: ;
				i += ((NI) 1);
			}
			break;
			case 35:
			{
				{
					Tnode214790* ri;
					if (!(((NU8)(pat->data[(NI)(i + ((NI) 1))])) == ((NU8)(43)) || ((NU8)(pat->data[(NI)(i + ((NI) 1))])) == ((NU8)(64)))) goto LA20;
					ri = HEX5BHEX5D_215238(ri_481102, j);
					{
						Ttype214828* typ;
						TY473064 LOC31;
						Ropeobj169006* LOC32;
						TY473064 LOC46;
						Ropeobj169006* LOC47;
						if (!((*ri).kind == ((NU8) 27) || (*ri).kind == ((NU8) 29) || (*ri).kind == ((NU8) 30) || (*ri).kind == ((NU8) 31) || (*ri).kind == ((NU8) 26) || (*ri).kind == ((NU8) 28) || (*ri).kind == ((NU8) 32))) goto LA24;
						typ = skiptypes_218113((*(*ri).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576256));
						{
							Ropeobj169006* LOC30;
							if (!((NU8)(pat->data[(NI)(i + ((NI) 1))]) == (NU8)(43))) goto LA28;
							LOC30 = 0;
							LOC30 = genargnoparam_479338(p, (*ri).kindU.S6.sons->data[((NI) 0)]);
							add_169482(&result, LOC30);
						}
						LA28: ;
						memset((void*)LOC31, 0, sizeof(LOC31));
						LOC32 = 0;
						LOC32 = HEX25_169905(((NimStringDesc*) &TMP3810), LOC31, 0);
						add_169482(&result, LOC32);
						{
							NI LOC35;
							Ropeobj169006* LOC38;
							LOC35 = 0;
							LOC35 = len_215059(ri);
							if (!(((NI) 1) < LOC35)) goto LA36;
							LOC38 = 0;
							LOC38 = genotherarg_478677(p, ri, ((NI) 1), typ);
							add_169482(&result, LOC38);
						}
						LA36: ;
						{
							NI k_481193;
							NI HEX3Atmp_481315;
							NI HEX3Atmp_481316;
							NI LOC40;
							NI res_481319;
							k_481193 = 0;
							HEX3Atmp_481315 = 0;
							HEX3Atmp_481316 = 0;
							HEX3Atmp_481315 = (NI)(j + ((NI) 1));
							LOC40 = 0;
							LOC40 = len_215059(ri);
							HEX3Atmp_481316 = (LOC40 - 1);
							res_481319 = HEX3Atmp_481315;
							{
								while (1) {
									TY473064 LOC43;
									Ropeobj169006* LOC44;
									Ropeobj169006* LOC45;
									if (!(res_481319 <= HEX3Atmp_481316)) goto LA42;
									k_481193 = res_481319;
									memset((void*)LOC43, 0, sizeof(LOC43));
									LOC44 = 0;
									LOC44 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC43, 0);
									add_169482(&result, LOC44);
									LOC45 = 0;
									LOC45 = genotherarg_478677(p, ri, k_481193, typ);
									add_169482(&result, LOC45);
									res_481319 += ((NI) 1);
								} LA42: ;
							}
						}
						memset((void*)LOC46, 0, sizeof(LOC46));
						LOC47 = 0;
						LOC47 = HEX25_169905(((NimStringDesc*) &TMP3809), LOC46, 0);
						add_169482(&result, LOC47);
					}
					goto LA22;
					LA24: ;
					{
						localerror_187085((*ri).info, ((NimStringDesc*) &TMP4219));
					}
					LA22: ;
					i += ((NI) 1);
				}
				goto LA18;
				LA20: ;
				{
					Ropeobj169006* LOC52;
					if (!((NU8)(pat->data[(NI)(i + ((NI) 1))]) == (NU8)(46))) goto LA50;
					LOC52 = 0;
					LOC52 = genthisarg_480865(p, ri_481102, j, typ_481104);
					add_169482(&result, LOC52);
					i += ((NI) 1);
				}
				goto LA18;
				LA50: ;
				{
					Tnode214790* arg;
					Ropeobj169006* LOC58;
					if (!((NU8)(pat->data[(NI)(i + ((NI) 1))]) == (NU8)(91))) goto LA54;
					arg = skipaddrderef_480823((*ri_481102).kindU.S6.sons->data[j]);
					{
						while (1) {
							if (!((*arg).kind == ((NU8) 63) || (*arg).kind == ((NU8) 64) || (*arg).kind == ((NU8) 66))) goto LA57;
							arg = HEX5BHEX5D_215238(arg, ((NI) 0));
						} LA57: ;
					}
					LOC58 = 0;
					LOC58 = genargnoparam_479338(p, arg);
					add_169482(&result, LOC58);
				}
				goto LA18;
				LA54: ;
				{
					Ropeobj169006* LOC60;
					LOC60 = 0;
					LOC60 = genotherarg_478677(p, ri_481102, j, typ_481104);
					add_169482(&result, LOC60);
				}
				LA18: ;
				j += ((NI) 1);
				i += ((NI) 1);
			}
			break;
			case 39:
			{
				NI idx;
				NI stars;
				idx = 0;
				stars = 0;
				{
					NIM_BOOL LOC64;
					Ttype214828* t;
					LOC64 = 0;
					LOC64 = scancppgenericslot_474416(pat, (&i), (&idx), (&stars));
					if (!LOC64) goto LA65;
					t = resolvestarsincpptype_474480(typ_481104, idx, stars);
					{
						TY473064 LOC71;
						Ropeobj169006* LOC72;
						if (!(t == NIM_NIL)) goto LA69;
						memset((void*)LOC71, 0, sizeof(LOC71));
						LOC72 = 0;
						LOC72 = HEX25_169905(((NimStringDesc*) &TMP3767), LOC71, 0);
						add_169482(&result, LOC72);
					}
					goto LA67;
					LA69: ;
					{
						Ropeobj169006* LOC74;
						LOC74 = 0;
						LOC74 = gettypedesc_475055((*p).module, t);
						add_169482(&result, LOC74);
					}
					LA67: ;
				}
				LA65: ;
			}
			break;
			default:
			{
				NI start;
				start = i;
				{
					while (1) {
						if (!(i < (pat ? pat->Sup.len : 0))) goto LA77;
						{
							if (!!((((NU8)(pat->data[i])) == ((NU8)(64)) || ((NU8)(pat->data[i])) == ((NU8)(35)) || ((NU8)(pat->data[i])) == ((NU8)(39))))) goto LA80;
							i += ((NI) 1);
						}
						goto LA78;
						LA80: ;
						{
							goto LA76;
						}
						LA78: ;
					} LA77: ;
				} LA76: ;
				{
					NimStringDesc* LOC87;
					if (!(start <= (NI)(i - ((NI) 1)))) goto LA85;
					LOC87 = 0;
					LOC87 = copyStrLast(pat, start, (NI)(i - ((NI) 1)));
					add_169487(&result, LOC87);
				}
				LA85: ;
			}
			break;
			}
		} LA2: ;
	}
	return result;
}

N_NIMCALL(void, fixupcall_478810)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* d, Ropeobj169006* callee, Ropeobj169006* params) {
	Ropeobj169006* pl;
	TY473064 LOC1;
	Ropeobj169006* LOC2;
	Ropeobj169006* LOC3;
	Ttype214828* typ;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = HEX25_169905(((NimStringDesc*) &TMP3810), LOC1, 0);
	LOC3 = 0;
	LOC3 = HEX26_169418(callee, LOC2);
	pl = HEX26_169418(LOC3, params);
	typ = skiptypes_218113((*(*ri).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576256));
	{
		if (!!(((*typ).sons->data[((NI) 0)] == NIM_NIL))) goto LA6;
		{
			NIM_BOOL LOC10;
			LOC10 = 0;
			LOC10 = isinvalidreturntype_473318((*typ).sons->data[((NI) 0)]);
			if (!LOC10) goto LA11;
			{
				TY473064 LOC17;
				Ropeobj169006* LOC18;
				if (!!((params == NIM_NIL))) goto LA15;
				memset((void*)LOC17, 0, sizeof(LOC17));
				LOC18 = 0;
				LOC18 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC17, 0);
				add_169482(&pl, LOC18);
			}
			LA15: ;
			{
				NIM_BOOL LOC21;
				NIM_BOOL LOC23;
				Ropeobj169006* LOC36;
				TY473064 LOC37;
				Ropeobj169006* LOC38;
				LOC21 = 0;
				LOC21 = ((3 &(1U<<((NU)((*d).k)&15U)))!=0);
				if (LOC21) goto LA22;
				LOC23 = 0;
				LOC23 = leftappearsonrightside_478729(le, ri);
				LOC21 = !(LOC23);
				LA22: ;
				if (!LOC21) goto LA24;
				{
					if (!((*d).k == ((NU8) 0))) goto LA28;
					gettemp_476435(p, (*typ).sons->data[((NI) 0)], d, NIM_TRUE);
				}
				goto LA26;
				LA28: ;
				{
					NIM_BOOL LOC31;
					NIM_BOOL LOC33;
					LOC31 = 0;
					LOC31 = !(((66 &(1U<<((NU)((*d).k)&15U)))!=0));
					if (!(LOC31)) goto LA32;
					LOC33 = 0;
					LOC33 = hasnoinit_478783(ri);
					LOC31 = !(LOC33);
					LA32: ;
					if (!LOC31) goto LA34;
					resetloc_477732(p, d);
				}
				goto LA26;
				LA34: ;
				LA26: ;
				LOC36 = 0;
				LOC36 = addrloc_477585((*d));
				add_169482(&pl, LOC36);
				memset((void*)LOC37, 0, sizeof(LOC37));
				LOC38 = 0;
				LOC38 = HEX25_169905(((NimStringDesc*) &TMP4222), LOC37, 0);
				add_169482(&pl, LOC38);
				line_472690(p, ((NU8) 2), pl);
			}
			goto LA19;
			LA24: ;
			{
				Tloc214804 tmp;
				Ropeobj169006* LOC40;
				TY473064 LOC41;
				Ropeobj169006* LOC42;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_476435(p, (*typ).sons->data[((NI) 0)], (&tmp), NIM_TRUE);
				LOC40 = 0;
				LOC40 = addrloc_477585(tmp);
				add_169482(&pl, LOC40);
				memset((void*)LOC41, 0, sizeof(LOC41));
				LOC42 = 0;
				LOC42 = HEX25_169905(((NimStringDesc*) &TMP4222), LOC41, 0);
				add_169482(&pl, LOC42);
				line_472690(p, ((NU8) 2), pl);
				genassignment_478664(p, (*d), tmp, 0);
			}
			LA19: ;
		}
		goto LA8;
		LA11: ;
		{
			TY473064 LOC44;
			Ropeobj169006* LOC45;
			memset((void*)LOC44, 0, sizeof(LOC44));
			LOC45 = 0;
			LOC45 = HEX25_169905(((NimStringDesc*) &TMP3809), LOC44, 0);
			add_169482(&pl, LOC45);
			{
				NIM_BOOL LOC48;
				NIM_BOOL LOC49;
				LOC48 = 0;
				LOC49 = 0;
				LOC49 = (gcmd_160123 == ((NU8) 2));
				if (LOC49) goto LA50;
				LOC49 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
				LA50: ;
				LOC48 = LOC49;
				if (!(LOC48)) goto LA51;
				LOC48 = (((*d).flags &(1U<<((NU)(((NU8) 8))&15U)))!=0);
				LA51: ;
				if (!LOC48) goto LA52;
				(*d).k = ((NU8) 9);
				unsureAsgnRef((void**) (&(*d).r), pl);
				(*d).flags &= ~(((NU16)1) << ((((NU8) 8)) % (sizeof(NU16)*8)));
			}
			goto LA46;
			LA52: ;
			{
				Tloc214804 list;
				{
					if (!((*d).k == ((NU8) 0))) goto LA57;
					gettemp_476435(p, (*typ).sons->data[((NI) 0)], d, NIM_FALSE);
				}
				LA57: ;
				memset((void*)(&list), 0, sizeof(list));
				initloc_472273((&list), ((NU8) 9), (*d).t, ((NU8) 0));
				list.r = pl;
				genassignment_478664(p, (*d), list, 0);
			}
			LA46: ;
		}
		LA8: ;
	}
	goto LA4;
	LA6: ;
	{
		TY473064 LOC60;
		Ropeobj169006* LOC61;
		memset((void*)LOC60, 0, sizeof(LOC60));
		LOC61 = 0;
		LOC61 = HEX25_169905(((NimStringDesc*) &TMP4222), LOC60, 0);
		add_169482(&pl, LOC61);
		line_472690(p, ((NU8) 2), pl);
	}
	LA4: ;
}

N_NIMCALL(void, geninfixcall_481329)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* d) {
	Tloc214804 op;
	Tloc214804 a;
	Ttype214828* typ_481341;
	NI length;
	NimStringDesc* pat;
	memset((void*)(&op), 0, sizeof(op));
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*ri).kindU.S6.sons->data[((NI) 0)], (&op));
	typ_481341 = skiptypes_218113((*(*ri).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576256));
	length = sonslen_217351(ri);
	pat = (*(*(*(*ri).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).loc.r).data;
	{
		NimStringDesc* LOC5;
		if (!!(!((pat == NIM_NIL)))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_187183(TMP4216);
		internalerror_187113(LOC5);
	}
	LA3: ;
	{
		NIM_BOOL LOC8;
		Ropeobj169006* pl;
		Ttype214828* typ;
		LOC8 = 0;
		LOC8 = contains_101033(pat, TMP4218);
		if (!LOC8) goto LA9;
		pl = genpatterncall_481099(p, ri, pat, typ_481341);
		typ = skiptypes_218113((*(*ri).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576256));
		{
			if (!!(((*typ).sons->data[((NI) 0)] == NIM_NIL))) goto LA13;
			{
				NIM_BOOL LOC17;
				NIM_BOOL LOC18;
				LOC17 = 0;
				LOC18 = 0;
				LOC18 = (gcmd_160123 == ((NU8) 2));
				if (LOC18) goto LA19;
				LOC18 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
				LA19: ;
				LOC17 = LOC18;
				if (!(LOC17)) goto LA20;
				LOC17 = (((*d).flags &(1U<<((NU)(((NU8) 8))&15U)))!=0);
				LA20: ;
				if (!LOC17) goto LA21;
				(*d).k = ((NU8) 9);
				unsureAsgnRef((void**) (&(*d).r), pl);
				(*d).flags &= ~(((NU16)1) << ((((NU8) 8)) % (sizeof(NU16)*8)));
			}
			goto LA15;
			LA21: ;
			{
				Tloc214804 list;
				{
					if (!((*d).k == ((NU8) 0))) goto LA26;
					gettemp_476435(p, (*typ).sons->data[((NI) 0)], d, NIM_FALSE);
				}
				LA26: ;
				memset((void*)(&list), 0, sizeof(list));
				initloc_472273((&list), ((NU8) 9), (*d).t, ((NU8) 0));
				list.r = pl;
				genassignment_478664(p, (*d), list, 0);
			}
			LA15: ;
		}
		goto LA11;
		LA13: ;
		{
			TY473064 LOC29;
			Ropeobj169006* LOC30;
			memset((void*)LOC29, 0, sizeof(LOC29));
			LOC30 = 0;
			LOC30 = HEX25_169905(((NimStringDesc*) &TMP4215), LOC29, 0);
			add_169482(&pl, LOC30);
			line_472690(p, ((NU8) 2), pl);
		}
		LA11: ;
	}
	goto LA6;
	LA9: ;
	{
		Ropeobj169006* pl;
		Ropeobj169006* params;
		pl = NIM_NIL;
		{
			NI LOC34;
			Ropeobj169006* LOC37;
			LOC34 = 0;
			LOC34 = len_215059(ri);
			if (!(((NI) 1) < LOC34)) goto LA35;
			LOC37 = 0;
			LOC37 = genthisarg_480865(p, ri, ((NI) 1), typ_481341);
			add_169482(&pl, LOC37);
		}
		LA35: ;
		add_169482(&pl, op.r);
		params = 0;
		{
			NI i_481825;
			NI HEX3Atmp_482010;
			NI res_482013;
			i_481825 = 0;
			HEX3Atmp_482010 = 0;
			HEX3Atmp_482010 = (NI)(length - ((NI) 1));
			res_482013 = ((NI) 2);
			{
				while (1) {
					Ropeobj169006* LOC47;
					if (!(res_482013 <= HEX3Atmp_482010)) goto LA40;
					i_481825 = res_482013;
					{
						TY473064 LOC45;
						Ropeobj169006* LOC46;
						if (!!((params == NIM_NIL))) goto LA43;
						memset((void*)LOC45, 0, sizeof(LOC45));
						LOC46 = 0;
						LOC46 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC45, 0);
						add_169482(&params, LOC46);
					}
					LA43: ;
					LOC47 = 0;
					LOC47 = genotherarg_478677(p, ri, i_481825, typ_481341);
					add_169482(&params, LOC47);
					res_482013 += ((NI) 1);
				} LA40: ;
			}
		}
		fixupcall_478810(p, le, ri, d, pl, params);
	}
	LA6: ;
}

N_NIMCALL(void, gennamedparamcall_482017)(Tcproc469022* p, Tnode214790* ri, Tloc214804* d) {
	Tloc214804 op;
	Tloc214804 a;
	Ropeobj169006* pl;
	TY473064 LOC1;
	Ttype214828* typ;
	NI length;
	NimStringDesc* pat;
	NI start;
	memset((void*)(&op), 0, sizeof(op));
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*ri).kindU.S6.sons->data[((NI) 0)], (&op));
	memset((void*)LOC1, 0, sizeof(LOC1));
	pl = HEX25_169905(((NimStringDesc*) &TMP4223), LOC1, 0);
	typ = skiptypes_218113((*(*ri).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576256));
	length = sonslen_217351(ri);
	pat = (*(*(*(*ri).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).loc.r).data;
	{
		NimStringDesc* LOC6;
		if (!!(!((pat == NIM_NIL)))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX24_187183(TMP4224);
		internalerror_187113(LOC6);
	}
	LA4: ;
	start = ((NI) 3);
	{
		NIM_BOOL LOC9;
		LOC9 = 0;
		LOC9 = contains_101023(pat, 32);
		if (!LOC9) goto LA10;
		start = ((NI) 1);
		add_169482(&pl, op.r);
		{
			TY473064 LOC16;
			Ropeobj169006* LOC17;
			Ropeobj169006* LOC18;
			if (!(((NI) 1) < length)) goto LA14;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC17 = 0;
			LOC17 = HEX25_169905(((NimStringDesc*) &TMP4225), LOC16, 0);
			add_169482(&pl, LOC17);
			LOC18 = 0;
			LOC18 = genarg_479187(p, (*ri).kindU.S6.sons->data[((NI) 1)], (*(*(*typ).n).kindU.S6.sons->data[((NI) 1)]).kindU.S4.sym, ri);
			add_169482(&pl, LOC18);
			start = ((NI) 2);
		}
		LA14: ;
	}
	goto LA7;
	LA10: ;
	{
		{
			Ropeobj169006* LOC24;
			TY473064 LOC25;
			Ropeobj169006* LOC26;
			if (!(((NI) 1) < length)) goto LA22;
			LOC24 = 0;
			LOC24 = genarg_479187(p, (*ri).kindU.S6.sons->data[((NI) 1)], (*(*(*typ).n).kindU.S6.sons->data[((NI) 1)]).kindU.S4.sym, ri);
			add_169482(&pl, LOC24);
			memset((void*)LOC25, 0, sizeof(LOC25));
			LOC26 = 0;
			LOC26 = HEX25_169905(((NimStringDesc*) &TMP3803), LOC25, 0);
			add_169482(&pl, LOC26);
		}
		LA22: ;
		add_169482(&pl, op.r);
		{
			TY473064 LOC31;
			Ropeobj169006* LOC32;
			Ropeobj169006* LOC33;
			if (!(((NI) 2) < length)) goto LA29;
			memset((void*)LOC31, 0, sizeof(LOC31));
			LOC32 = 0;
			LOC32 = HEX25_169905(((NimStringDesc*) &TMP4225), LOC31, 0);
			add_169482(&pl, LOC32);
			LOC33 = 0;
			LOC33 = genarg_479187(p, (*ri).kindU.S6.sons->data[((NI) 2)], (*(*(*typ).n).kindU.S6.sons->data[((NI) 2)]).kindU.S4.sym, ri);
			add_169482(&pl, LOC33);
		}
		LA29: ;
	}
	LA7: ;
	{
		NI i_482451;
		NI HEX3Atmp_483018;
		NI res_483021;
		i_482451 = 0;
		HEX3Atmp_483018 = 0;
		HEX3Atmp_483018 = (NI)(length - ((NI) 1));
		res_483021 = start;
		{
			while (1) {
				Tsym214822* param;
				TY473064 LOC42;
				Ropeobj169006* LOC43;
				TY473064 LOC44;
				Ropeobj169006* LOC45;
				Ropeobj169006* LOC46;
				if (!(res_483021 <= HEX3Atmp_483018)) goto LA36;
				i_482451 = res_483021;
				{
					NI LOC39;
					LOC39 = 0;
					LOC39 = sonslen_217327(typ);
					if (!(LOC39 <= i_482451)) goto LA40;
					internalerror_187100((*ri).info, ((NimStringDesc*) &TMP4226));
				}
				LA40: ;
				param = (*(*(*typ).n).kindU.S6.sons->data[i_482451]).kindU.S4.sym;
				memset((void*)LOC42, 0, sizeof(LOC42));
				LOC43 = 0;
				LOC43 = HEX25_169905(((NimStringDesc*) &TMP3803), LOC42, 0);
				add_169482(&pl, LOC43);
				add_169487(&pl, (*(*param).name).s);
				memset((void*)LOC44, 0, sizeof(LOC44));
				LOC45 = 0;
				LOC45 = HEX25_169905(((NimStringDesc*) &TMP4225), LOC44, 0);
				add_169482(&pl, LOC45);
				LOC46 = 0;
				LOC46 = genarg_479187(p, (*ri).kindU.S6.sons->data[i_482451], param, ri);
				add_169482(&pl, LOC46);
				res_483021 += ((NI) 1);
			} LA36: ;
		}
	}
	{
		if (!!(((*typ).sons->data[((NI) 0)] == NIM_NIL))) goto LA49;
		{
			NIM_BOOL LOC53;
			LOC53 = 0;
			LOC53 = isinvalidreturntype_473318((*typ).sons->data[((NI) 0)]);
			if (!LOC53) goto LA54;
			{
				NI LOC58;
				TY473064 LOC61;
				Ropeobj169006* LOC62;
				LOC58 = 0;
				LOC58 = sonslen_217351(ri);
				if (!(((NI) 1) < LOC58)) goto LA59;
				memset((void*)LOC61, 0, sizeof(LOC61));
				LOC62 = 0;
				LOC62 = HEX25_169905(((NimStringDesc*) &TMP3803), LOC61, 0);
				add_169482(&pl, LOC62);
			}
			LA59: ;
			{
				TY473064 LOC71;
				Ropeobj169006* LOC72;
				Ropeobj169006* LOC73;
				TY473064 LOC74;
				Ropeobj169006* LOC75;
				if (!((3 &(1U<<((NU)((*d).k)&15U)))!=0)) goto LA65;
				{
					if (!((*d).k == ((NU8) 0))) goto LA69;
					gettemp_476435(p, (*typ).sons->data[((NI) 0)], d, NIM_TRUE);
				}
				LA69: ;
				memset((void*)LOC71, 0, sizeof(LOC71));
				LOC72 = 0;
				LOC72 = HEX25_169905(((NimStringDesc*) &TMP4227), LOC71, 0);
				add_169482(&pl, LOC72);
				LOC73 = 0;
				LOC73 = addrloc_477585((*d));
				add_169482(&pl, LOC73);
				memset((void*)LOC74, 0, sizeof(LOC74));
				LOC75 = 0;
				LOC75 = HEX25_169905(((NimStringDesc*) &TMP4228), LOC74, 0);
				add_169482(&pl, LOC75);
				line_472690(p, ((NU8) 2), pl);
			}
			goto LA63;
			LA65: ;
			{
				Tloc214804 tmp;
				Ropeobj169006* LOC77;
				TY473064 LOC78;
				Ropeobj169006* LOC79;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_476435(p, (*typ).sons->data[((NI) 0)], (&tmp), NIM_TRUE);
				LOC77 = 0;
				LOC77 = addrloc_477585(tmp);
				add_169482(&pl, LOC77);
				memset((void*)LOC78, 0, sizeof(LOC78));
				LOC79 = 0;
				LOC79 = HEX25_169905(((NimStringDesc*) &TMP4228), LOC78, 0);
				add_169482(&pl, LOC79);
				line_472690(p, ((NU8) 2), pl);
				genassignment_478664(p, (*d), tmp, 0);
			}
			LA63: ;
		}
		goto LA51;
		LA54: ;
		{
			TY473064 LOC81;
			Ropeobj169006* LOC82;
			Tloc214804 list;
			memset((void*)LOC81, 0, sizeof(LOC81));
			LOC82 = 0;
			LOC82 = HEX25_169905(((NimStringDesc*) &TMP4229), LOC81, 0);
			add_169482(&pl, LOC82);
			{
				if (!((*d).k == ((NU8) 0))) goto LA85;
				gettemp_476435(p, (*typ).sons->data[((NI) 0)], d, NIM_FALSE);
			}
			LA85: ;
			memset((void*)(&list), 0, sizeof(list));
			initloc_472273((&list), ((NU8) 9), NIM_NIL, ((NU8) 0));
			list.r = pl;
			genassignment_478664(p, (*d), list, 0);
		}
		LA51: ;
	}
	goto LA47;
	LA49: ;
	{
		TY473064 LOC88;
		Ropeobj169006* LOC89;
		memset((void*)LOC88, 0, sizeof(LOC88));
		LOC89 = 0;
		LOC89 = HEX25_169905(((NimStringDesc*) &TMP4228), LOC88, 0);
		add_169482(&pl, LOC89);
		line_472690(p, ((NU8) 2), pl);
	}
	LA47: ;
}

N_NIMCALL(void, genprefixcall_479360)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* d) {
	Tloc214804 op;
	Ropeobj169006* params;
	Ttype214828* typ;
	NI length;
	memset((void*)(&op), 0, sizeof(op));
	initlocexpr_478683(p, (*ri).kindU.S6.sons->data[((NI) 0)], (&op));
	params = 0;
	typ = skiptypes_218113((*(*ri).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576256));
	length = sonslen_217351(ri);
	{
		NI i_479613;
		NI HEX3Atmp_479845;
		NI res_479848;
		i_479613 = 0;
		HEX3Atmp_479845 = 0;
		HEX3Atmp_479845 = (NI)(length - ((NI) 1));
		res_479848 = ((NI) 1);
		{
			while (1) {
				if (!(res_479848 <= HEX3Atmp_479845)) goto LA3;
				i_479613 = res_479848;
				{
					NI LOC6;
					Tnode214790* paramtype;
					LOC6 = 0;
					LOC6 = sonslen_217327(typ);
					if (!(i_479613 < LOC6)) goto LA7;
					paramtype = (*(*typ).n).kindU.S6.sons->data[i_479613];
					{
						NIM_BOOL LOC11;
						Ropeobj169006* LOC20;
						LOC11 = 0;
						LOC11 = iscompiletimeonly_248906((*paramtype).typ);
						if (!!(LOC11)) goto LA12;
						{
							TY473064 LOC18;
							Ropeobj169006* LOC19;
							if (!!((params == NIM_NIL))) goto LA16;
							memset((void*)LOC18, 0, sizeof(LOC18));
							LOC19 = 0;
							LOC19 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC18, 0);
							add_169482(&params, LOC19);
						}
						LA16: ;
						LOC20 = 0;
						LOC20 = genarg_479187(p, (*ri).kindU.S6.sons->data[i_479613], (*paramtype).kindU.S4.sym, ri);
						add_169482(&params, LOC20);
					}
					LA12: ;
				}
				goto LA4;
				LA7: ;
				{
					Ropeobj169006* LOC28;
					{
						TY473064 LOC26;
						Ropeobj169006* LOC27;
						if (!!((params == NIM_NIL))) goto LA24;
						memset((void*)LOC26, 0, sizeof(LOC26));
						LOC27 = 0;
						LOC27 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC26, 0);
						add_169482(&params, LOC27);
					}
					LA24: ;
					LOC28 = 0;
					LOC28 = genargnoparam_479338(p, (*ri).kindU.S6.sons->data[i_479613]);
					add_169482(&params, LOC28);
				}
				LA4: ;
				res_479848 += ((NI) 1);
			} LA3: ;
		}
	}
	fixupcall_478810(p, le, ri, d, op.r, params);
}

static N_INLINE(void, poststmtactions_472942)(Tcproc469022* p) {
	Ropeobj169006** LOC1;
	LOC1 = 0;
	LOC1 = s_469166(p, ((NU8) 2));
	add_169482(LOC1, (*(*p).module).injectstmt);
}

N_NIMCALL(void, gencall_483033)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	{
		Ttype214828* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 0)]).typ, 2048);
		if (!((*LOC3).callconv == ((NU8) 8))) goto LA4;
		genclosurecall_479852(p, NIM_NIL, e, d);
	}
	goto LA1;
	LA4: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = ((*(*e).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
		if (!(LOC7)) goto LA8;
		LOC7 = (((*(*(*e).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA8: ;
		if (!LOC7) goto LA9;
		geninfixcall_481329(p, NIM_NIL, e, d);
	}
	goto LA1;
	LA9: ;
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = ((*(*e).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
		if (!(LOC12)) goto LA13;
		LOC12 = (((*(*(*e).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 28))&31U)))!=0);
		LA13: ;
		if (!LOC12) goto LA14;
		gennamedparamcall_482017(p, e, d);
	}
	goto LA1;
	LA14: ;
	{
		genprefixcall_479360(p, NIM_NIL, e, d);
	}
	LA1: ;
	poststmtactions_472942(p);
}

N_NIMCALL(void, genreset_495130)(Tcproc469022* p, Tnode214790* n) {
	Tloc214804 a;
	TY501032 LOC1;
	Ttype214828* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 1)], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = addrloc_477585(a);
	LOC2 = 0;
	LOC2 = skiptypes_218113(a.t, IL64(211106242013440));
	LOC1[1] = gentypeinfo_475350((*p).module, LOC2);
	linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4214), LOC1, 2);
}

N_NIMCALL(void, genecho_494793)(Tcproc469022* p, Tnode214790* n) {
	NIM_BOOL LOC6;
	Ropeobj169006* args;
	Tloc214804 a;
	TY501032 LOC18;
	NimStringDesc* LOC19;
	NI LOC20;
	NimStringDesc* LOC21;
	TY473064 LOC22;
	{
		NimStringDesc* LOC5;
		if (!!(((*n).kind == ((NU8) 41)))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_187183(TMP4230);
		internalerror_187113(LOC5);
	}
	LA3: ;
	LOC6 = 0;
	LOC6 = includestr_135249((&(*(*p).module).headerfiles), ((NimStringDesc*) &TMP4231));
	args = NIM_NIL;
	memset((void*)(&a), 0, sizeof(a));
	{
		NI i_494828;
		NI HEX3Atmp_494855;
		NI LOC8;
		NI res_494858;
		i_494828 = 0;
		HEX3Atmp_494855 = 0;
		LOC8 = 0;
		LOC8 = len_215059(n);
		HEX3Atmp_494855 = (NI)(LOC8 - ((NI) 1));
		res_494858 = ((NI) 0);
		{
			while (1) {
				if (!(res_494858 <= HEX3Atmp_494855)) goto LA10;
				i_494828 = res_494858;
				{
					Tnode214790* LOC13;
					LOC13 = 0;
					LOC13 = skipconv_249082((*n).kindU.S6.sons->data[i_494828]);
					if (!((*LOC13).kind == ((NU8) 23))) goto LA14;
					add_169487(&args, ((NimStringDesc*) &TMP4232));
				}
				goto LA11;
				LA14: ;
				{
					TY169507 LOC17;
					initlocexpr_478683(p, (*n).kindU.S6.sons->data[i_494828], (&a));
					memset((void*)LOC17, 0, sizeof(LOC17));
					LOC17[0] = rdloc_477569(a);
					addf_170205(&args, ((NimStringDesc*) &TMP4233), LOC17, 1);
				}
				LA11: ;
				res_494858 += ((NI) 1);
			} LA10: ;
		}
	}
	memset((void*)LOC18, 0, sizeof(LOC18));
	LOC19 = 0;
	LOC20 = 0;
	LOC20 = len_215059(n);
	LOC21 = 0;
	LOC21 = nsuRepeatStr(((NimStringDesc*) &TMP4235), ((NI) (LOC20)));
	LOC19 = rawNewString(LOC21->Sup.len + tnl_167618->Sup.len + 0);
appendString(LOC19, LOC21);
appendString(LOC19, tnl_167618);
	LOC18[0] = makecstring_182637(LOC19);
	LOC18[1] = args;
	linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4234), LOC18, 2);
	memset((void*)LOC22, 0, sizeof(LOC22));
	linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4236), LOC22, 0);
}

N_NIMCALL(void, genseqconstr_495334)(Tcproc469022* p, Tnode214790* t, Tloc214804* d) {
	Tloc214804 arr;
	NI LOC5;
	Ropeobj169006* LOC6;
	memset((void*)(&arr), 0, sizeof(arr));
	{
		if (!((*d).k == ((NU8) 0))) goto LA3;
		gettemp_476435(p, (*t).typ, d, NIM_FALSE);
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = sonslen_217351(t);
	LOC6 = 0;
	LOC6 = intliteral_478670(((NI64) (LOC5)));
	gennewseqaux_495193(p, (*d), LOC6);
	{
		NI i_495361;
		NI HEX3Atmp_495369;
		NI LOC8;
		NI res_495372;
		i_495361 = 0;
		HEX3Atmp_495369 = 0;
		LOC8 = 0;
		LOC8 = sonslen_217351(t);
		HEX3Atmp_495369 = (NI)(LOC8 - ((NI) 1));
		res_495372 = ((NI) 0);
		{
			while (1) {
				Ttype214828* LOC11;
				Ttype214828* LOC12;
				TY501032 LOC13;
				if (!(res_495372 <= HEX3Atmp_495369)) goto LA10;
				i_495361 = res_495372;
				LOC11 = 0;
				LOC11 = skiptypes_218113((*t).typ, IL64(211106232576256));
				LOC12 = 0;
				LOC12 = elemtype_240383(LOC11);
				initloc_472273((&arr), ((NU8) 6), LOC12, ((NU8) 3));
				memset((void*)LOC13, 0, sizeof(LOC13));
				LOC13[0] = rdloc_477569((*d));
				LOC13[1] = intliteral_478670(((NI64) (i_495361)));
				arr.r = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3936), LOC13, 2);
				arr.s = ((NU8) 3);
				expr_478648(p, (*t).kindU.S6.sons->data[i_495361], (&arr));
				res_495372 += ((NI) 1);
			} LA10: ;
		}
	}
	gcusage_494863(t);
}

N_NIMCALL(void, genarrtoseq_495376)(Tcproc469022* p, Tnode214790* t, Tloc214804* d) {
	Tloc214804 elem;
	Tloc214804 a;
	Tloc214804 arr;
	NI L;
	NI64 LOC9;
	Ropeobj169006* LOC10;
{	memset((void*)(&elem), 0, sizeof(elem));
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&arr), 0, sizeof(arr));
	{
		if (!((*t).kind == ((NU8) 41))) goto LA3;
		asgnRefNoCycle((void**) (&(*(*t).kindU.S6.sons->data[((NI) 1)]).typ), (*t).typ);
		genseqconstr_495334(p, (*t).kindU.S6.sons->data[((NI) 1)], d);
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*d).k == ((NU8) 0))) goto LA7;
		gettemp_476435(p, (*t).typ, d, NIM_FALSE);
	}
	LA7: ;
	LOC9 = 0;
	LOC9 = lengthord_240007((*(*t).kindU.S6.sons->data[((NI) 1)]).typ);
	L = ((NI) (LOC9));
	LOC10 = 0;
	LOC10 = intliteral_478670(((NI64) (L)));
	gennewseqaux_495193(p, (*d), LOC10);
	initlocexpr_478683(p, (*t).kindU.S6.sons->data[((NI) 1)], (&a));
	{
		NI i_495420;
		NI HEX3Atmp_495433;
		NI res_495436;
		i_495420 = 0;
		HEX3Atmp_495433 = 0;
		HEX3Atmp_495433 = (NI)(L - ((NI) 1));
		res_495436 = ((NI) 0);
		{
			while (1) {
				Ttype214828* LOC14;
				Ttype214828* LOC15;
				TY501032 LOC16;
				Ttype214828* LOC17;
				Ttype214828* LOC18;
				TY501032 LOC19;
				if (!(res_495436 <= HEX3Atmp_495433)) goto LA13;
				i_495420 = res_495436;
				LOC14 = 0;
				LOC14 = skiptypes_218113((*t).typ, IL64(211106232576256));
				LOC15 = 0;
				LOC15 = elemtype_240383(LOC14);
				initloc_472273((&elem), ((NU8) 6), LOC15, ((NU8) 3));
				memset((void*)LOC16, 0, sizeof(LOC16));
				LOC16[0] = rdloc_477569((*d));
				LOC16[1] = intliteral_478670(((NI64) (i_495420)));
				elem.r = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3936), LOC16, 2);
				elem.s = ((NU8) 3);
				LOC17 = 0;
				LOC17 = skiptypes_218113((*(*t).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106232576256));
				LOC18 = 0;
				LOC18 = elemtype_240383(LOC17);
				initloc_472273((&arr), ((NU8) 6), LOC18, a.s);
				memset((void*)LOC19, 0, sizeof(LOC19));
				LOC19[0] = rdloc_477569(a);
				LOC19[1] = intliteral_478670(((NI64) (i_495420)));
				arr.r = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3880), LOC19, 2);
				genassignment_478664(p, elem, arr, 5);
				res_495436 += ((NI) 1);
			} LA13: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(void, gendeepcopy_490604)(Tcproc469022* p, Tloc214804 dest, Tloc214804 src) {
	Ttype214828* ty;
	ty = skiptypes_218113(dest.t, IL64(211106242013440));
	switch ((*ty).kind) {
	case ((NU8) 21):
	case ((NU8) 22):
	case ((NU8) 25):
	case ((NU8) 18):
	case ((NU8) 17):
	case ((NU8) 16):
	case ((NU8) 4):
	{
		TY474655 LOC2;
		memset((void*)LOC2, 0, sizeof(LOC2));
		LOC2[0] = addrloc_477585(dest);
		LOC2[1] = addrloc_477585(src);
		LOC2[2] = gentypeinfo_475350((*p).module, dest.t);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4299), LOC2, 3);
	}
	break;
	case ((NU8) 24):
	case ((NU8) 28):
	{
		TY474655 LOC4;
		memset((void*)LOC4, 0, sizeof(LOC4));
		LOC4[0] = addrloc_477585(dest);
		LOC4[1] = rdloc_477569(src);
		LOC4[2] = gentypeinfo_475350((*p).module, dest.t);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4300), LOC4, 3);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		TY474655 LOC6;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = addrloc_477585(dest);
		LOC6[1] = addrloc_477585(src);
		LOC6[2] = gentypeinfo_475350((*p).module, dest.t);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4301), LOC6, 3);
	}
	break;
	case ((NU8) 19):
	{
		{
			NU8 LOC10;
			TY474655 LOC13;
			NI64 LOC14;
			LOC10 = 0;
			LOC10 = maptype_473166(ty);
			if (!(LOC10 == ((NU8) 17))) goto LA11;
			usestringh_472345((*p).module);
			memset((void*)LOC13, 0, sizeof(LOC13));
			LOC13[0] = rdloc_477569(dest);
			LOC13[1] = rdloc_477569(src);
			LOC14 = 0;
			LOC14 = getsize_240124(dest.t);
			LOC13[2] = rope_169401(LOC14);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3982), LOC13, 3);
		}
		goto LA8;
		LA11: ;
		{
			TY501032 LOC16;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_477569(dest);
			LOC16[1] = rdloc_477569(src);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC16, 2);
		}
		LA8: ;
	}
	break;
	case ((NU8) 26):
	case ((NU8) 2):
	case ((NU8) 1):
	case ((NU8) 14):
	case ((NU8) 29):
	case ((NU8) 31) ... ((NU8) 44):
	case ((NU8) 20):
	case ((NU8) 23):
	{
		TY501032 LOC18;
		memset((void*)LOC18, 0, sizeof(LOC18));
		LOC18[0] = rdloc_477569(dest);
		LOC18[1] = rdloc_477569(src);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP3962), LOC18, 2);
	}
	break;
	default:
	{
		NimStringDesc* LOC20;
		LOC20 = 0;
		LOC20 = rawNewString(reprEnum((*ty).kind, (&NTI214241))->Sup.len + 13);
appendString(LOC20, ((NimStringDesc*) &TMP4302));
appendString(LOC20, reprEnum((*ty).kind, (&NTI214241)));
		internalerror_187113(LOC20);
	}
	break;
	}
}

N_NIMCALL(void, genmagicexpr_497433)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NU8 op) {
	Ropeobj169006* line;
	Ropeobj169006* filen;
	line = 0;
	filen = 0;
	switch (op) {
	case ((NU8) 126):
	case ((NU8) 125):
	{
		genandor_494735(p, e, d, op);
	}
	break;
	case ((NU8) 98) ... ((NU8) 116):
	{
		unaryarith_493046(p, e, d, op);
	}
	break;
	case ((NU8) 95) ... ((NU8) 97):
	{
		unaryarithoverflow_492033(p, e, d, op);
	}
	break;
	case ((NU8) 51) ... ((NU8) 54):
	{
		binaryfloatarith_497128(p, e, d, op);
	}
	break;
	case ((NU8) 55) ... ((NU8) 93):
	{
		binaryarith_492219(p, e, d, op);
	}
	break;
	case ((NU8) 94):
	{
		geneqproc_492614(p, e, d);
	}
	break;
	case ((NU8) 44) ... ((NU8) 50):
	{
		binaryarithoverflow_491662(p, e, d, op);
	}
	break;
	case ((NU8) 148):
	{
		genrepr_495739(p, e, d);
	}
	break;
	case ((NU8) 252):
	{
		gengettypeinfo_495783(p, e, d);
	}
	break;
	case ((NU8) 155):
	{
		genswap_496038(p, e, d);
	}
	break;
	case ((NU8) 25):
	{
		{
			if (!!((((*p).options &(1U<<((NU)(((NU8) 5))&31U)))!=0))) goto LA14;
			unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4105));
		}
		goto LA12;
		LA14: ;
		{
			unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4106));
		}
		LA12: ;
	}
	break;
	case ((NU8) 26):
	case ((NU8) 27):
	{
		Ttype214828* underlying;
		underlying = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, 9439232);
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = !((((*p).options &(1U<<((NU)(((NU8) 5))&31U)))!=0));
			if (LOC20) goto LA21;
			LOC20 = ((*underlying).kind >= ((NU8) 40) && (*underlying).kind <= ((NU8) 44));
			LA21: ;
			if (!LOC20) goto LA22;
			binarystmt_490746(p, e, d, opr_497452[(op)- 26]);
		}
		goto LA18;
		LA22: ;
		{
			Tloc214804 a;
			Tloc214804 b;
			Ttype214828* ranged;
			Ropeobj169006* res;
			NimStringDesc* LOC25;
			TY501032 LOC31;
			Ropeobj169006* LOC32;
			memset((void*)(&a), 0, sizeof(a));
			memset((void*)(&b), 0, sizeof(b));
			initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 1)], (&a));
			initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
			ranged = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, 8390656);
			LOC25 = 0;
			{
				if (!((*underlying).kind == ((NU8) 35))) goto LA28;
				LOC25 = copyString(fun64_497457[(op)- 26]);
			}
			goto LA26;
			LA28: ;
			{
				LOC25 = copyString(fun_497462[(op)- 26]);
			}
			LA26: ;
			res = binaryarithoverflowraw_491635(p, ranged, a, b, LOC25);
			memset((void*)LOC31, 0, sizeof(LOC31));
			LOC31[0] = gettypedesc_475055((*p).module, ranged);
			LOC31[1] = res;
			LOC32 = 0;
			LOC32 = HEX25_169905(((NimStringDesc*) &TMP4090), LOC31, 2);
			putintodest_490713(p, (&a), ranged, LOC32, ((NU8) 0));
		}
		LA18: ;
	}
	break;
	case ((NU8) 137):
	{
		genstrconcat_494876(p, e, d);
	}
	break;
	case ((NU8) 143):
	{
		binarystmt_490746(p, e, d, ((NimStringDesc*) &TMP4114));
	}
	break;
	case ((NU8) 144):
	{
		genstrappend_494977(p, e, d);
	}
	break;
	case ((NU8) 145):
	{
		genseqelemappend_495083(p, e, d);
	}
	break;
	case ((NU8) 127):
	{
		genstrequals_497066(p, e, d);
	}
	break;
	case ((NU8) 128):
	{
		binaryexpr_490820(p, e, d, ((NimStringDesc*) &TMP4122));
	}
	break;
	case ((NU8) 129):
	{
		binaryexpr_490820(p, e, d, ((NimStringDesc*) &TMP4123));
	}
	break;
	case ((NU8) 156):
	{
		genisnil_493020(p, e, d);
	}
	break;
	case ((NU8) 119):
	{
		gendollar_495791(p, e, d, ((NimStringDesc*) &TMP4126));
	}
	break;
	case ((NU8) 120):
	{
		gendollar_495791(p, e, d, ((NimStringDesc*) &TMP4127));
	}
	break;
	case ((NU8) 118):
	{
		gendollar_495791(p, e, d, ((NimStringDesc*) &TMP4128));
	}
	break;
	case ((NU8) 117):
	{
		gendollar_495791(p, e, d, ((NimStringDesc*) &TMP4129));
	}
	break;
	case ((NU8) 121):
	{
		gendollar_495791(p, e, d, ((NimStringDesc*) &TMP4130));
	}
	break;
	case ((NU8) 122):
	{
		gendollar_495791(p, e, d, ((NimStringDesc*) &TMP4131));
	}
	break;
	case ((NU8) 123):
	{
		expr_478648(p, (*e).kindU.S6.sons->data[((NI) 1)], d);
	}
	break;
	case ((NU8) 124):
	{
		genrepr_495739(p, e, d);
	}
	break;
	case ((NU8) 12):
	{
		genof_495731(p, e, d);
	}
	break;
	case ((NU8) 29):
	{
		gennew_495180(p, e);
	}
	break;
	case ((NU8) 30):
	{
		gennewfinalize_495440(p, e);
	}
	break;
	case ((NU8) 31):
	{
		gennewseq_495221(p, e);
	}
	break;
	case ((NU8) 9):
	{
		Ttype214828* t;
		TY169507 LOC54;
		Ropeobj169006* LOC55;
		t = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, 256);
		memset((void*)LOC54, 0, sizeof(LOC54));
		LOC54[0] = gettypedesc_475055((*p).module, t);
		LOC55 = 0;
		LOC55 = HEX25_169905(((NimStringDesc*) &TMP4147), LOC54, 1);
		putintodest_490713(p, d, (*e).typ, LOC55, ((NU8) 0));
	}
	break;
	case ((NU8) 41):
	{
		gensomecast_496880(p, e, d);
	}
	break;
	case ((NU8) 28):
	{
		genord_496874(p, e, d);
	}
	break;
	case ((NU8) 34):
	case ((NU8) 8):
	case ((NU8) 33):
	case ((NU8) 35):
	case ((NU8) 32):
	{
		genarraylen_495814(p, e, d, op);
	}
	break;
	case ((NU8) 36):
	case ((NU8) 37):
	{
		{
			NIM_BOOL LOC62;
			LOC62 = 0;
			LOC62 = (gcmd_160123 == ((NU8) 2));
			if (LOC62) goto LA63;
			LOC62 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
			LA63: ;
			if (!!(LOC62)) goto LA64;
			unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4159));
		}
		goto LA60;
		LA64: ;
		{
			unaryexpr_491609(p, e, d, ((NimStringDesc*) &TMP4160));
		}
		LA60: ;
	}
	break;
	case ((NU8) 42):
	{
		unarystmt_490772(p, e, d, ((NimStringDesc*) &TMP4162));
	}
	break;
	case ((NU8) 43):
	{
		unarystmt_490772(p, e, d, ((NimStringDesc*) &TMP4163));
	}
	break;
	case ((NU8) 150):
	{
		gensetlengthstr_496032(p, e, d);
	}
	break;
	case ((NU8) 151):
	{
		gensetlengthseq_495899(p, e, d);
	}
	break;
	case ((NU8) 38):
	case ((NU8) 39):
	case ((NU8) 40):
	case ((NU8) 132):
	case ((NU8) 131):
	case ((NU8) 130):
	case ((NU8) 133):
	case ((NU8) 134):
	case ((NU8) 135):
	case ((NU8) 147):
	{
		gensetop_496819(p, e, d, op);
	}
	break;
	case ((NU8) 160):
	case ((NU8) 161):
	case ((NU8) 158):
	case ((NU8) 159):
	case ((NU8) 149):
	case ((NU8) 162):
	{
		Tsym214822* opr;
		opr = (*(*e).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		{
			NimStringDesc* LOC77;
			Ropeobj169006* LOC78;
			if (!!((((*opr).loc.flags &(1U<<((NU)(((NU8) 3))&15U)))!=0))) goto LA75;
			LOC77 = 0;
			LOC77 = HEX24_169856((*opr).loc.r);
			LOC78 = 0;
			LOC78 = cgsym_472403((*p).module, LOC77);
		}
		LA75: ;
		gencall_483033(p, e, d);
	}
	break;
	case ((NU8) 163):
	{
		genreset_495130(p, e);
	}
	break;
	case ((NU8) 17):
	{
		Tnode214790* LOC81;
		Tnode214790* LOC82;
		LOC81 = 0;
		LOC81 = HEX5BHEX5D_215238(e, ((NI) 1));
		LOC82 = 0;
		LOC82 = skipconv_249082(LOC81);
		genecho_494793(p, LOC82);
	}
	break;
	case ((NU8) 157):
	{
		genarrtoseq_495376(p, e, d);
	}
	break;
	case ((NU8) 216) ... ((NU8) 250):
	case ((NU8) 19) ... ((NU8) 24):
	{
		localerror_187080((*e).info, ((NU16) 229), (*(*(*(*e).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
	}
	break;
	case ((NU8) 201):
	{
		Tnode214790* n;
		n = wrapprocforspawn_378500((*(*p).module).module, e, (*e).typ, NIM_NIL, NIM_NIL);
		expr_478648(p, n, d);
	}
	break;
	case ((NU8) 154):
	{
		Tnode214790* n;
		n = liftparallel_420821((*(*p).module).module, e);
		expr_478648(p, n, d);
	}
	break;
	case ((NU8) 202):
	{
		Tloc214804 a;
		Tloc214804 b;
		Tnode214790* x;
		memset((void*)(&a), 0, sizeof(a));
		memset((void*)(&b), 0, sizeof(b));
		{
			Tnode214790* LOC90;
			Tnode214790* LOC93;
			LOC90 = 0;
			LOC90 = HEX5BHEX5D_215238(e, ((NI) 1));
			if (!((*LOC90).kind == ((NU8) 63) || (*LOC90).kind == ((NU8) 64))) goto LA91;
			LOC93 = 0;
			LOC93 = HEX5BHEX5D_215238(e, ((NI) 1));
			x = HEX5BHEX5D_215238(LOC93, ((NI) 0));
		}
		goto LA88;
		LA91: ;
		{
			x = HEX5BHEX5D_215238(e, ((NI) 1));
		}
		LA88: ;
		initlocexpr_478683(p, x, (&a));
		initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 2)], (&b));
		gendeepcopy_490604(p, a, b);
	}
	break;
	case ((NU8) 139):
	{
		gencall_483033(p, e, d);
	}
	break;
	default:
	{
		NimStringDesc* LOC97;
		LOC97 = 0;
		LOC97 = rawNewString(reprEnum(op, (&NTI214521))->Sup.len + 14);
appendString(LOC97, ((NimStringDesc*) &TMP4303));
appendString(LOC97, reprEnum(op, (&NTI214521)));
		internalerror_187100((*e).info, LOC97);
	}
	break;
	}
}

N_NIMCALL(Ropeobj169006*, gensetnode_489864)(Tcproc469022* p, Tnode214790* n) {
	Ropeobj169006* result;
	Tbitset259006* cs;
	NI size;
	NI64 LOC1;
	result = 0;
	cs = 0;
	LOC1 = 0;
	LOC1 = getsize_240124((*n).typ);
	size = ((NI) (LOC1));
	tobitset_260001(n, (&cs));
	{
		NI id;
		Ropeobj169006* LOC6;
		if (!(((NI) 8) < size)) goto LA4;
		id = nodetabletestorset_262682((&(*(*p).module).datacache), n, gbackendid_213004);
		LOC6 = 0;
		LOC6 = rope_169401(((NI64) (id)));
		result = HEX26_169452(((NimStringDesc*) &TMP3917), LOC6);
		{
			TY474655 LOC11;
			if (!(id == gbackendid_213004)) goto LA9;
			gbackendid_213004 += ((NI) 1);
			memset((void*)LOC11, 0, sizeof(LOC11));
			LOC11[0] = gettypedesc_475055((*p).module, (*n).typ);
			LOC11[1] = result;
			LOC11[2] = genrawsetdata_489829(cs, size);
			addf_170205(&(*(*p).module).s[(((NU8) 8))- 0], ((NimStringDesc*) &TMP4304), LOC11, 3);
		}
		LA9: ;
	}
	goto LA2;
	LA4: ;
	{
		result = genrawsetdata_489829(cs, size);
	}
	LA2: ;
	return result;
}

N_NIMCALL(void, gensetconstr_497945)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 a;
	Tloc214804 b;
	Tloc214804 idx;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&idx), 0, sizeof(idx));
	{
		Ropeobj169006* LOC5;
		if (!(((*e).flags &(1U<<((NU)(((NU8) 4))&15U)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = gensetnode_489864(p, e);
		putintodest_490713(p, d, (*e).typ, LOC5, ((NU8) 0));
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!((*d).k == ((NU8) 0))) goto LA9;
			gettemp_476435(p, (*e).typ, d, NIM_FALSE);
		}
		LA9: ;
		{
			NI64 LOC13;
			TY169507 LOC16;
			LOC13 = 0;
			LOC13 = getsize_240124((*e).typ);
			if (!(IL64(8) < LOC13)) goto LA14;
			usestringh_472345((*p).module);
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_477569((*d));
			linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4305), LOC16, 1);
			{
				NI i_497986;
				NI HEX3Atmp_498052;
				NI LOC18;
				NI res_498055;
				i_497986 = 0;
				HEX3Atmp_498052 = 0;
				LOC18 = 0;
				LOC18 = sonslen_217351(e);
				HEX3Atmp_498052 = (NI)(LOC18 - ((NI) 1));
				res_498055 = ((NI) 0);
				{
					while (1) {
						if (!(res_498055 <= HEX3Atmp_498052)) goto LA20;
						i_497986 = res_498055;
						{
							Ttype214828* LOC25;
							TY474652 LOC26;
							if (!((*(*e).kindU.S6.sons->data[i_497986]).kind == ((NU8) 44))) goto LA23;
							LOC25 = 0;
							LOC25 = getsystype_258130(((NU8) 31));
							gettemp_476435(p, LOC25, (&idx), NIM_FALSE);
							initlocexpr_478683(p, (*(*e).kindU.S6.sons->data[i_497986]).kindU.S6.sons->data[((NI) 0)], (&a));
							initlocexpr_478683(p, (*(*e).kindU.S6.sons->data[i_497986]).kindU.S6.sons->data[((NI) 1)], (&b));
							memset((void*)LOC26, 0, sizeof(LOC26));
							LOC26[0] = rdloc_477569(idx);
							LOC26[1] = rdloc_477569((*d));
							LOC26[2] = rdsetelemloc_496062(a, (*e).typ);
							LOC26[3] = rdsetelemloc_496062(b, (*e).typ);
							linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4306), LOC26, 4);
						}
						goto LA21;
						LA23: ;
						{
							TY501032 LOC28;
							initlocexpr_478683(p, (*e).kindU.S6.sons->data[i_497986], (&a));
							memset((void*)LOC28, 0, sizeof(LOC28));
							LOC28[0] = rdloc_477569((*d));
							LOC28[1] = rdsetelemloc_496062(a, (*e).typ);
							linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4307), LOC28, 2);
						}
						LA21: ;
						res_498055 += ((NI) 1);
					} LA20: ;
				}
			}
		}
		goto LA11;
		LA14: ;
		{
			NimStringDesc* ts;
			NimStringDesc* LOC30;
			NI64 LOC31;
			NimStringDesc* LOC32;
			TY169507 LOC33;
			LOC30 = 0;
			LOC31 = 0;
			LOC31 = getsize_240124((*e).typ);
			LOC32 = 0;
			LOC32 = nimInt64ToStr((NI64)(LOC31 * IL64(8)));
			LOC30 = rawNewString(LOC32->Sup.len + 2);
appendString(LOC30, ((NimStringDesc*) &TMP3789));
appendString(LOC30, LOC32);
			ts = LOC30;
			memset((void*)LOC33, 0, sizeof(LOC33));
			LOC33[0] = rdloc_477569((*d));
			linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3893), LOC33, 1);
			{
				NI i_498024;
				NI HEX3Atmp_498060;
				NI LOC35;
				NI res_498063;
				i_498024 = 0;
				HEX3Atmp_498060 = 0;
				LOC35 = 0;
				LOC35 = sonslen_217351(e);
				HEX3Atmp_498060 = (NI)(LOC35 - ((NI) 1));
				res_498063 = ((NI) 0);
				{
					while (1) {
						if (!(res_498063 <= HEX3Atmp_498060)) goto LA37;
						i_498024 = res_498063;
						{
							Ttype214828* LOC42;
							NimStringDesc* LOC43;
							TY474652 LOC44;
							if (!((*(*e).kindU.S6.sons->data[i_498024]).kind == ((NU8) 44))) goto LA40;
							LOC42 = 0;
							LOC42 = getsystype_258130(((NU8) 31));
							gettemp_476435(p, LOC42, (&idx), NIM_FALSE);
							initlocexpr_478683(p, (*(*e).kindU.S6.sons->data[i_498024]).kindU.S6.sons->data[((NI) 0)], (&a));
							initlocexpr_478683(p, (*(*e).kindU.S6.sons->data[i_498024]).kindU.S6.sons->data[((NI) 1)], (&b));
							LOC43 = 0;
							LOC43 = rawNewString(ts->Sup.len + ts->Sup.len + 68);
appendString(LOC43, ((NimStringDesc*) &TMP4308));
appendString(LOC43, ts);
appendString(LOC43, ((NimStringDesc*) &TMP4309));
appendString(LOC43, ts);
appendString(LOC43, ((NimStringDesc*) &TMP4173));
							memset((void*)LOC44, 0, sizeof(LOC44));
							LOC44[0] = rdloc_477569(idx);
							LOC44[1] = rdloc_477569((*d));
							LOC44[2] = rdsetelemloc_496062(a, (*e).typ);
							LOC44[3] = rdsetelemloc_496062(b, (*e).typ);
							linef_472700(p, ((NU8) 2), LOC43, LOC44, 4);
						}
						goto LA38;
						LA40: ;
						{
							NimStringDesc* LOC46;
							TY501032 LOC47;
							initlocexpr_478683(p, (*e).kindU.S6.sons->data[i_498024], (&a));
							LOC46 = 0;
							LOC46 = rawNewString(ts->Sup.len + ts->Sup.len + 36);
appendString(LOC46, ((NimStringDesc*) &TMP4310));
appendString(LOC46, ts);
appendString(LOC46, ((NimStringDesc*) &TMP4311));
appendString(LOC46, ts);
appendString(LOC46, ((NimStringDesc*) &TMP4173));
							memset((void*)LOC47, 0, sizeof(LOC47));
							LOC47[0] = rdloc_477569((*d));
							LOC47[1] = rdsetelemloc_496062(a, (*e).typ);
							linef_472700(p, ((NU8) 2), LOC46, LOC47, 2);
						}
						LA38: ;
						res_498063 += ((NI) 1);
					} LA37: ;
				}
			}
		}
		LA11: ;
	}
	LA1: ;
}

N_NIMCALL(void, exprcomplexconst_498884)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	Ttype214828* t;
	Ropeobj169006* LOC1;
	NI id;
	Ropeobj169006* tmp;
	Ropeobj169006* LOC2;
	t = getuniquetype_468640((*n).typ);
	LOC1 = 0;
	LOC1 = gettypedesc_475055((*p).module, t);
	id = nodetabletestorset_262682((&(*(*p).module).datacache), n, gbackendid_213004);
	LOC2 = 0;
	LOC2 = rope_169401(((NI64) (id)));
	tmp = HEX26_169452(((NimStringDesc*) &TMP3917), LOC2);
	{
		TY474655 LOC7;
		if (!(id == gbackendid_213004)) goto LA5;
		gbackendid_213004 += ((NI) 1);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_475055((*p).module, t);
		LOC7[1] = tmp;
		LOC7[2] = genconstexpr_497898(p, n);
		addf_170205(&(*(*p).module).s[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3989), LOC7, 3);
	}
	LA5: ;
	{
		if (!((*d).k == ((NU8) 0))) goto LA10;
		fillloc_472282(d, ((NU8) 8), t, tmp, ((NU8) 1));
	}
	goto LA8;
	LA10: ;
	{
		putdataintodest_490681(p, d, t, tmp);
	}
	LA8: ;
}

N_NIMCALL(NIM_BOOL, handleconstexpr_497902)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	NIM_BOOL result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NI LOC8;
		Ttype214828* t;
		Ropeobj169006* LOC12;
		NI id;
		Ropeobj169006* LOC13;
		Ropeobj169006* LOC14;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC5 = (((*n).flags &(1U<<((NU)(((NU8) 4))&15U)))!=0);
		if (!(LOC5)) goto LA6;
		LOC5 = ((*d).k == ((NU8) 0));
		LA6: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA7;
		LOC8 = 0;
		LOC8 = len_215059(n);
		LOC4 = (((NI) 0) < LOC8);
		LA7: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA9;
		LOC3 = isdeepconstexpr_239361(n);
		LA9: ;
		if (!LOC3) goto LA10;
		t = getuniquetype_468640((*n).typ);
		LOC12 = 0;
		LOC12 = gettypedesc_475055((*p).module, t);
		id = nodetabletestorset_262682((&(*(*p).module).datacache), n, gbackendid_213004);
		LOC13 = 0;
		LOC13 = rope_169401(((NI64) (id)));
		LOC14 = 0;
		LOC14 = HEX26_169452(((NimStringDesc*) &TMP3917), LOC13);
		fillloc_472282(d, ((NU8) 8), t, LOC14, ((NU8) 1));
		{
			TY474655 LOC19;
			if (!(id == gbackendid_213004)) goto LA17;
			gbackendid_213004 += ((NI) 1);
			memset((void*)LOC19, 0, sizeof(LOC19));
			LOC19[0] = gettypedesc_475055((*p).module, t);
			LOC19[1] = (*d).r;
			LOC19[2] = genconstexpr_497898(p, n);
			addf_170205(&(*(*p).module).s[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3989), LOC19, 3);
		}
		LA17: ;
		result = NIM_TRUE;
	}
	goto LA1;
	LA10: ;
	{
		result = NIM_FALSE;
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genarrayconstr_498438)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	Tloc214804 arr;
	memset((void*)(&arr), 0, sizeof(arr));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = handleconstexpr_497902(p, n, d);
		if (!!(LOC3)) goto LA4;
		{
			if (!((*d).k == ((NU8) 0))) goto LA8;
			gettemp_476435(p, (*n).typ, d, NIM_FALSE);
		}
		LA8: ;
		{
			NI i_498465;
			NI HEX3Atmp_498473;
			NI LOC11;
			NI res_498476;
			i_498465 = 0;
			HEX3Atmp_498473 = 0;
			LOC11 = 0;
			LOC11 = sonslen_217351(n);
			HEX3Atmp_498473 = (NI)(LOC11 - ((NI) 1));
			res_498476 = ((NI) 0);
			{
				while (1) {
					Ttype214828* LOC14;
					Ttype214828* LOC15;
					TY501032 LOC16;
					if (!(res_498476 <= HEX3Atmp_498473)) goto LA13;
					i_498465 = res_498476;
					LOC14 = 0;
					LOC14 = skiptypes_218113((*n).typ, IL64(211106232576256));
					LOC15 = 0;
					LOC15 = elemtype_240383(LOC14);
					initloc_472273((&arr), ((NU8) 6), LOC15, (*d).s);
					memset((void*)LOC16, 0, sizeof(LOC16));
					LOC16[0] = rdloc_477569((*d));
					LOC16[1] = intliteral_478670(((NI64) (i_498465)));
					arr.r = HEX25_169905(((NimStringDesc*) &TMP3880), LOC16, 2);
					expr_478648(p, (*n).kindU.S6.sons->data[i_498465], (&arr));
					res_498476 += ((NI) 1);
				} LA13: ;
			}
		}
	}
	LA4: ;
}

N_NIMCALL(void, gentupleconstr_498067)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	Tloc214804 rec;
	memset((void*)(&rec), 0, sizeof(rec));
	{
		NIM_BOOL LOC3;
		Ttype214828* t;
		Ropeobj169006* LOC6;
		LOC3 = 0;
		LOC3 = handleconstexpr_497902(p, n, d);
		if (!!(LOC3)) goto LA4;
		t = getuniquetype_468640((*n).typ);
		LOC6 = 0;
		LOC6 = gettypedesc_475055((*p).module, t);
		{
			if (!((*d).k == ((NU8) 0))) goto LA9;
			gettemp_476435(p, t, d, NIM_FALSE);
		}
		LA9: ;
		{
			NI i_498095;
			NI HEX3Atmp_498203;
			NI LOC12;
			NI res_498206;
			i_498095 = 0;
			HEX3Atmp_498203 = 0;
			LOC12 = 0;
			LOC12 = sonslen_217351(n);
			HEX3Atmp_498203 = (NI)(LOC12 - ((NI) 1));
			res_498206 = ((NI) 0);
			{
				while (1) {
					Tnode214790* it;
					TY501032 LOC19;
					if (!(res_498206 <= HEX3Atmp_498203)) goto LA14;
					i_498095 = res_498206;
					it = (*n).kindU.S6.sons->data[i_498095];
					{
						if (!((*it).kind == ((NU8) 34))) goto LA17;
						it = (*it).kindU.S6.sons->data[((NI) 1)];
					}
					LA17: ;
					initloc_472273((&rec), ((NU8) 6), (*it).typ, (*d).s);
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = rdloc_477569((*d));
					LOC19[1] = rope_169401(((NI64) (i_498095)));
					rec.r = HEX25_169905(((NimStringDesc*) &TMP3934), LOC19, 2);
					expr_478648(p, it, (&rec));
					res_498206 += ((NI) 1);
				} LA14: ;
			}
		}
	}
	LA4: ;
}

N_NIMCALL(Tsym214822*, lookupfieldagain_493543)(Tcproc469022* p, Ttype214828* ty_493546, Tsym214822* field, Ropeobj169006** r) {
	Tsym214822* result;
	Ttype214828* ty;
	result = 0;
	ty = ty_493546;
	{
		while (1) {
			if (!!((ty == NIM_NIL))) goto LA2;
			result = lookupinrecord_221140((*ty).n, (*field).name);
			{
				if (!!((result == NIM_NIL))) goto LA5;
				goto LA1;
			}
			LA5: ;
			{
				NIM_BOOL LOC9;
				LOC9 = 0;
				LOC9 = (gcmd_160123 == ((NU8) 2));
				if (LOC9) goto LA10;
				LOC9 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
				LA10: ;
				if (!!(LOC9)) goto LA11;
				add_169487(r, ((NimStringDesc*) &TMP3897));
			}
			LA11: ;
			ty = getuniquetype_468640((*ty).sons->data[((NI) 0)]);
		} LA2: ;
	} LA1: ;
	{
		if (!(result == NIM_NIL)) goto LA15;
		internalerror_187100((*field).info, ((NimStringDesc*) &TMP4312));
	}
	LA15: ;
	return result;
}

N_NIMCALL(void, genfieldcheck_493904)(Tcproc469022* p, Tnode214790* e, Ropeobj169006* obj, Tsym214822* field, Ttype214828* origty) {
	Tloc214804 test;
	Tloc214804 u;
	Tloc214804 v;
	memset((void*)(&test), 0, sizeof(test));
	memset((void*)(&u), 0, sizeof(u));
	memset((void*)(&v), 0, sizeof(v));
	{
		NI i_493925;
		NI HEX3Atmp_494439;
		NI LOC2;
		NI res_494442;
		i_493925 = 0;
		HEX3Atmp_494439 = 0;
		LOC2 = 0;
		LOC2 = sonslen_217351(e);
		HEX3Atmp_494439 = (NI)(LOC2 - ((NI) 1));
		res_494442 = ((NI) 1);
		{
			while (1) {
				Tnode214790* it;
				Tsym214822* op;
				Tnode214790* disc;
				Ropeobj169006* o;
				Tsym214822* d;
				NI id;
				Tnode214790* LOC9;
				Ropeobj169006* strlit;
				if (!(res_494442 <= HEX3Atmp_494439)) goto LA4;
				i_493925 = res_494442;
				it = (*e).kindU.S6.sons->data[i_493925];
				op = (*(*it).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
				{
					if (!((*op).magic == ((NU8) 98))) goto LA7;
					it = (*it).kindU.S6.sons->data[((NI) 1)];
				}
				LA7: ;
				disc = skipconv_249082((*it).kindU.S6.sons->data[((NI) 2)]);
				initloc_472273((&test), ((NU8) 0), (*it).typ, ((NU8) 2));
				initlocexpr_478683(p, (*it).kindU.S6.sons->data[((NI) 1)], (&u));
				o = obj;
				d = lookupfieldagain_493543(p, origty, (*disc).kindU.S4.sym, &o);
				initloc_472273((&v), ((NU8) 6), (*d).typ, ((NU8) 0));
				v.r = o;
				add_169487(&v.r, ((NimStringDesc*) &TMP3971));
				add_169482(&v.r, (*d).loc.r);
				geninexpraux_493896(p, it, (&u), (&v), (&test));
				LOC9 = 0;
				LOC9 = newstrnode_215678(((NU8) 20), (*(*field).name).s);
				id = nodetabletestorset_262682((&(*(*p).module).datacache), LOC9, gbackendid_213004);
				{
					if (!(id == gbackendid_213004)) goto LA12;
					strlit = getstrlit_489495((*p).module, (*(*field).name).s);
				}
				goto LA10;
				LA12: ;
				{
					Ropeobj169006* LOC15;
					LOC15 = 0;
					LOC15 = rope_169401(((NI64) (id)));
					strlit = HEX26_169452(((NimStringDesc*) &TMP3917), LOC15);
				}
				LA10: ;
				{
					TY501032 LOC20;
					if (!((*op).magic == ((NU8) 98))) goto LA18;
					memset((void*)LOC20, 0, sizeof(LOC20));
					LOC20[0] = rdloc_477569(test);
					LOC20[1] = strlit;
					linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4314), LOC20, 2);
				}
				goto LA16;
				LA18: ;
				{
					TY501032 LOC22;
					memset((void*)LOC22, 0, sizeof(LOC22));
					LOC22[0] = rdloc_477569(test);
					LOC22[1] = strlit;
					linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4315), LOC22, 2);
				}
				LA16: ;
				res_494442 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, genobjconstr_495233)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 tmp;
	Ttype214828* t;
	NIM_BOOL isref;
	Ropeobj169006* r;
	Ropeobj169006* LOC8;
	Ttype214828* ty;
	memset((void*)(&tmp), 0, sizeof(tmp));
	t = skiptypes_218113((*e).typ, IL64(211106232576256));
	gettemp_476435(p, t, (&tmp), NIM_FALSE);
	isref = ((*t).kind == ((NU8) 22));
	r = rdloc_477569(tmp);
	{
		Ttype214828* LOC5;
		TY169507 LOC6;
		if (!isref) goto LA3;
		rawgennew_495140(p, tmp, NIM_NIL);
		LOC5 = 0;
		LOC5 = lastson_217377(t);
		t = skiptypes_218113(LOC5, IL64(211106232576256));
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = r;
		r = HEX25_169905(((NimStringDesc*) &TMP3894), LOC6, 1);
		gcusage_494863(e);
	}
	goto LA1;
	LA3: ;
	{
		constructloc_477770(p, tmp, NIM_FALSE);
	}
	LA1: ;
	LOC8 = 0;
	LOC8 = gettypedesc_475055((*p).module, t);
	ty = getuniquetype_468640(t);
	{
		NI i_495274;
		NI HEX3Atmp_495327;
		NI LOC10;
		NI res_495330;
		i_495274 = 0;
		HEX3Atmp_495327 = 0;
		LOC10 = 0;
		LOC10 = len_215059(e);
		HEX3Atmp_495327 = (LOC10 - 1);
		res_495330 = ((NI) 1);
		{
			while (1) {
				Tnode214790* it;
				Tloc214804 tmp2;
				Tsym214822* field;
				if (!(res_495330 <= HEX3Atmp_495327)) goto LA12;
				i_495274 = res_495330;
				it = (*e).kindU.S6.sons->data[i_495274];
				memset((void*)(&tmp2), 0, sizeof(tmp2));
				tmp2.r = r;
				field = lookupfieldagain_493543(p, ty, (*(*it).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym, &tmp2.r);
				{
					if (!((*field).loc.r == NIM_NIL)) goto LA15;
					internalerror_187100((*e).info, ((NimStringDesc*) &TMP4313));
				}
				LA15: ;
				{
					NIM_BOOL LOC19;
					NI LOC20;
					LOC19 = 0;
					LOC20 = 0;
					LOC20 = len_215059(it);
					LOC19 = (LOC20 == ((NI) 3));
					if (!(LOC19)) goto LA21;
					LOC19 = (((*p).options &(1U<<((NU)(((NU8) 2))&31U)))!=0);
					LA21: ;
					if (!LOC19) goto LA22;
					genfieldcheck_493904(p, (*it).kindU.S6.sons->data[((NI) 2)], r, field, ty);
				}
				LA22: ;
				add_169487(&tmp2.r, ((NimStringDesc*) &TMP3971));
				add_169482(&tmp2.r, (*field).loc.r);
				tmp2.k = ((NU8) 1);
				tmp2.t = (*field).loc.t;
				{
					if (!isref) goto LA26;
					tmp2.s = ((NU8) 3);
				}
				goto LA24;
				LA26: ;
				{
					tmp2.s = ((NU8) 2);
				}
				LA24: ;
				tmp2.heaproot = tmp.r;
				expr_478648(p, (*it).kindU.S6.sons->data[((NI) 1)], (&tmp2));
				res_495330 += ((NI) 1);
			} LA12: ;
		}
	}
	{
		if (!((*d).k == ((NU8) 0))) goto LA31;
		genericAssign((void*)(&(*d)), (void*)(&tmp), (&NTI214804));
	}
	goto LA29;
	LA31: ;
	{
		genassignment_478664(p, (*d), tmp, 0);
	}
	LA29: ;
}

N_NIMCALL(void, gencast_496937)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Ttype214828* destt;
	Ttype214828* srct;
	destt = skiptypes_218113((*e).typ, IL64(211106233624832));
	srct = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106233624832));
	{
		NIM_BOOL LOC3;
		Ropeobj169006* lbl;
		Tloc214804 tmp;
		TY169507 LOC7;
		TY474655 LOC8;
		TY169507 LOC9;
		Ropeobj169006* LOC10;
		LOC3 = 0;
		LOC3 = ((*destt).kind >= ((NU8) 36) && (*destt).kind <= ((NU8) 39));
		if (LOC3) goto LA4;
		LOC3 = ((*srct).kind >= ((NU8) 36) && (*srct).kind <= ((NU8) 39));
		LA4: ;
		if (!LOC3) goto LA5;
		(*p).labels += ((NI) 1);
		lbl = rope_169401(((NI64) ((*p).labels)));
		memset((void*)(&tmp), 0, sizeof(tmp));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = lbl;
		tmp.r = HEX25_169905(((NimStringDesc*) &TMP4316), LOC7, 1);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = gettypedesc_475055((*p).module, srct);
		LOC8[1] = gettypedesc_475055((*p).module, destt);
		LOC8[2] = lbl;
		linefmt_472714(p, ((NU8) 0), ((NimStringDesc*) &TMP4317), LOC8, 3);
		tmp.k = ((NU8) 6);
		tmp.t = srct;
		tmp.s = ((NU8) 2);
		tmp.flags = 0;
		expr_478648(p, (*e).kindU.S6.sons->data[((NI) 1)], (&tmp));
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = lbl;
		LOC10 = 0;
		LOC10 = HEX25_169905(((NimStringDesc*) &TMP4318), LOC9, 1);
		putintodest_490713(p, d, (*e).typ, LOC10, tmp.s);
	}
	goto LA1;
	LA5: ;
	{
		gensomecast_496880(p, e, d);
	}
	LA1: ;
}

N_NIMCALL(void, genconv_497032)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Ttype214828* desttype;
	desttype = skiptypes_218113((*e).typ, 8390656);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = comparetypes_246404(desttype, (*(*e).kindU.S6.sons->data[((NI) 1)]).typ, ((NU8) 1), 0);
		if (!LOC3) goto LA4;
		expr_478648(p, (*e).kindU.S6.sons->data[((NI) 1)], d);
	}
	goto LA1;
	LA4: ;
	{
		gensomecast_496880(p, e, d);
	}
	LA1: ;
}

static N_INLINE(NIM_BOOL, iscppref_493207)(Tcproc469022* p, Ttype214828* typ) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	NIM_BOOL LOC3;
	Ttype214828* LOC6;
	Ttype214828* LOC8;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC3 = 0;
	LOC3 = (gcmd_160123 == ((NU8) 2));
	if (LOC3) goto LA4;
	LOC3 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
	LA4: ;
	LOC2 = LOC3;
	if (!(LOC2)) goto LA5;
	LOC6 = 0;
	LOC6 = skiptypes_218113(typ, IL64(211106232576256));
	LOC2 = ((*LOC6).kind == ((NU8) 23));
	LA5: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA7;
	LOC8 = 0;
	LOC8 = skiptypes_218113(typ, IL64(211106232576256));
	LOC1 = !((((*LOC8).flags &(1U<<((NU)(((NU8) 18))&31U)))!=0));
	LA7: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genaddr_493392)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	{
		Ttype214828* LOC3;
		Tloc214804 a;
		Ropeobj169006* LOC6;
		LOC3 = 0;
		LOC3 = skiptypes_218113((*(*e).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576256));
		if (!((*LOC3).kind == ((NU8) 22) || (*LOC3).kind == ((NU8) 21))) goto LA4;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 0)], (&a));
		LOC6 = 0;
		LOC6 = HEX26_169452(((NimStringDesc*) &TMP3793), a.r);
		putintodest_490713(p, d, (*e).typ, LOC6, a.s);
	}
	goto LA1;
	LA4: ;
	{
		NIM_BOOL LOC8;
		NU8 LOC9;
		LOC8 = 0;
		LOC9 = 0;
		LOC9 = maptype_473166((*(*e).kindU.S6.sons->data[((NI) 0)]).typ);
		LOC8 = (LOC9 == ((NU8) 17));
		if (LOC8) goto LA10;
		LOC8 = iscppref_493207(p, (*(*e).kindU.S6.sons->data[((NI) 0)]).typ);
		LA10: ;
		if (!LOC8) goto LA11;
		expr_478648(p, (*e).kindU.S6.sons->data[((NI) 0)], d);
	}
	goto LA1;
	LA11: ;
	{
		Tloc214804 a;
		Ropeobj169006* LOC14;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 0)], (&a));
		LOC14 = 0;
		LOC14 = addrloc_477585(a);
		putintodest_490713(p, d, (*e).typ, LOC14, a.s);
	}
	LA1: ;
}

N_NIMCALL(void, genarrayelem_494493)(Tcproc469022* p, Tnode214790* x, Tnode214790* y, Tloc214804* d) {
	Tloc214804 a;
	Tloc214804 b;
	Ttype214828* ty;
	Ttype214828* LOC1;
	Ropeobj169006* first;
	NI64 LOC2;
	Ttype214828* LOC56;
	Ttype214828* LOC57;
	TY474655 LOC58;
	Ropeobj169006* LOC59;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_478683(p, x, (&a));
	initlocexpr_478683(p, y, (&b));
	LOC1 = 0;
	LOC1 = skiptypes_218113(a.t, IL64(211106242013440));
	ty = skiptypes_218113(LOC1, IL64(211106247256320));
	LOC2 = 0;
	LOC2 = firstord_240001(ty);
	first = intliteral_478670(LOC2);
	{
		NIM_BOOL LOC5;
		LOC5 = 0;
		LOC5 = (((*p).options &(1U<<((NU)(((NU8) 4))&31U)))!=0);
		if (!(LOC5)) goto LA6;
		LOC5 = !((((*ty).flags &(1U<<((NU)(((NU8) 0))&31U)))!=0));
		LA6: ;
		if (!LOC5) goto LA7;
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = isconstexpr_239336(y);
			if (!!(LOC11)) goto LA12;
			{
				NI64 LOC16;
				LOC16 = 0;
				LOC16 = firstord_240001(ty);
				if (!(LOC16 == IL64(0))) goto LA17;
				{
					NIM_BOOL LOC21;
					NI64 LOC22;
					NI64 LOC23;
					NI64 LOC25;
					NI64 LOC26;
					TY501032 LOC29;
					NI64 LOC30;
					LOC21 = 0;
					LOC22 = 0;
					LOC22 = firstord_240001(b.t);
					LOC23 = 0;
					LOC23 = firstord_240001(ty);
					LOC21 = (LOC22 < LOC23);
					if (LOC21) goto LA24;
					LOC25 = 0;
					LOC25 = lastord_240004(ty);
					LOC26 = 0;
					LOC26 = lastord_240004(b.t);
					LOC21 = (LOC25 < LOC26);
					LA24: ;
					if (!LOC21) goto LA27;
					memset((void*)LOC29, 0, sizeof(LOC29));
					LOC29[0] = rdcharloc_477608(b);
					LOC30 = 0;
					LOC30 = lastord_240004(ty);
					LOC29[1] = intliteral_478670(LOC30);
					linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4319), LOC29, 2);
				}
				LA27: ;
			}
			goto LA14;
			LA17: ;
			{
				TY474655 LOC32;
				NI64 LOC33;
				memset((void*)LOC32, 0, sizeof(LOC32));
				LOC32[0] = rdcharloc_477608(b);
				LOC32[1] = first;
				LOC33 = 0;
				LOC33 = lastord_240004(ty);
				LOC32[2] = intliteral_478670(LOC33);
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4320), LOC32, 3);
			}
			LA14: ;
		}
		goto LA9;
		LA12: ;
		{
			NI64 idx;
			idx = getordvalue_240118(y);
			{
				NIM_BOOL LOC37;
				NI64 LOC38;
				NI64 LOC40;
				LOC37 = 0;
				LOC38 = 0;
				LOC38 = firstord_240001(ty);
				LOC37 = (idx < LOC38);
				if (LOC37) goto LA39;
				LOC40 = 0;
				LOC40 = lastord_240004(ty);
				LOC37 = (LOC40 < idx);
				LA39: ;
				if (!LOC37) goto LA41;
				localerror_187080((*x).info, ((NU16) 86), ((NimStringDesc*) &TMP4209));
			}
			LA41: ;
		}
		LA9: ;
	}
	LA7: ;
	{
		if (!((*d).k == ((NU8) 0))) goto LA45;
		(*d).s = a.s;
	}
	LA45: ;
	{
		if (!((*d).heaproot == NIM_NIL)) goto LA49;
		{
			if (!!((a.heaproot == NIM_NIL))) goto LA53;
			unsureAsgnRef((void**) (&(*d).heaproot), a.heaproot);
		}
		goto LA51;
		LA53: ;
		{
			unsureAsgnRef((void**) (&(*d).heaproot), a.r);
		}
		LA51: ;
	}
	LA49: ;
	LOC56 = 0;
	LOC56 = skiptypes_218113(ty, IL64(211106240964864));
	LOC57 = 0;
	LOC57 = elemtype_240383(LOC56);
	memset((void*)LOC58, 0, sizeof(LOC58));
	LOC58[0] = rdloc_477569(a);
	LOC58[1] = rdcharloc_477608(b);
	LOC58[2] = first;
	LOC59 = 0;
	LOC59 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP4321), LOC58, 3);
	putintodest_490713(p, d, LOC57, LOC59, a.s);
}

N_NIMCALL(void, genopenarrayelem_494593)(Tcproc469022* p, Tnode214790* x, Tnode214790* y, Tloc214804* d) {
	Tloc214804 a;
	Tloc214804 b;
	Ttype214828* LOC10;
	Ttype214828* LOC11;
	TY501032 LOC12;
	Ropeobj169006* LOC13;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_478683(p, x, (&a));
	initlocexpr_478683(p, y, (&b));
	{
		TY501032 LOC5;
		if (!(((*p).options &(1U<<((NU)(((NU8) 4))&31U)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_477569(b);
		LOC5[1] = rdloc_477569(a);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4322), LOC5, 2);
	}
	LA3: ;
	{
		if (!((*d).k == ((NU8) 0))) goto LA8;
		(*d).s = a.s;
	}
	LA8: ;
	LOC10 = 0;
	LOC10 = skiptypes_218113(a.t, IL64(211106240964864));
	LOC11 = 0;
	LOC11 = elemtype_240383(LOC10);
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = rdloc_477569(a);
	LOC12[1] = rdcharloc_477608(b);
	LOC13 = 0;
	LOC13 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3880), LOC12, 2);
	putintodest_490713(p, d, LOC11, LOC13, a.s);
}

N_NIMCALL(void, genseqelem_494629)(Tcproc469022* p, Tnode214790* x, Tnode214790* y, Tloc214804* d) {
	Tloc214804 a;
	Tloc214804 b;
	Ttype214828* ty;
	Ttype214828* LOC27;
	Ttype214828* LOC28;
	TY501032 LOC29;
	Ropeobj169006* LOC30;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_478683(p, x, (&a));
	initlocexpr_478683(p, y, (&b));
	ty = skiptypes_218113(a.t, IL64(211106242013440));
	{
		Ttype214828* LOC5;
		if (!((*ty).kind == ((NU8) 22) || (*ty).kind == ((NU8) 21))) goto LA3;
		LOC5 = 0;
		LOC5 = lastson_217377(ty);
		ty = skiptypes_218113(LOC5, IL64(211106242013440));
	}
	LA3: ;
	{
		if (!(((*p).options &(1U<<((NU)(((NU8) 4))&31U)))!=0)) goto LA8;
		{
			TY474655 LOC14;
			if (!((*ty).kind == ((NU8) 28))) goto LA12;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = rdloc_477569(b);
			LOC14[1] = rdloc_477569(a);
			LOC14[2] = lenfield_478705(p);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4323), LOC14, 3);
		}
		goto LA10;
		LA12: ;
		{
			TY474655 LOC16;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_477569(b);
			LOC16[1] = rdloc_477569(a);
			LOC16[2] = lenfield_478705(p);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4324), LOC16, 3);
		}
		LA10: ;
	}
	LA8: ;
	{
		if (!((*d).k == ((NU8) 0))) goto LA19;
		(*d).s = ((NU8) 3);
	}
	LA19: ;
	unsureAsgnRef((void**) (&(*d).heaproot), a.r);
	{
		Ttype214828* LOC23;
		TY169507 LOC26;
		LOC23 = 0;
		LOC23 = skiptypes_218113(a.t, IL64(211106240964864));
		if (!((*LOC23).kind == ((NU8) 22) || (*LOC23).kind == ((NU8) 21))) goto LA24;
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = a.r;
		a.r = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3894), LOC26, 1);
	}
	LA24: ;
	LOC27 = 0;
	LOC27 = skiptypes_218113(a.t, IL64(211106240964864));
	LOC28 = 0;
	LOC28 = elemtype_240383(LOC27);
	memset((void*)LOC29, 0, sizeof(LOC29));
	LOC29[0] = rdloc_477569(a);
	LOC29[1] = rdcharloc_477608(b);
	LOC30 = 0;
	LOC30 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3936), LOC29, 2);
	putintodest_490713(p, d, LOC28, LOC30, a.s);
}

N_NIMCALL(void, gencstringelem_494568)(Tcproc469022* p, Tnode214790* x, Tnode214790* y, Tloc214804* d) {
	Tloc214804 a;
	Tloc214804 b;
	Ttype214828* ty;
	Ttype214828* LOC5;
	Ttype214828* LOC6;
	TY501032 LOC7;
	Ropeobj169006* LOC8;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_478683(p, x, (&a));
	initlocexpr_478683(p, y, (&b));
	ty = skiptypes_218113(a.t, IL64(211106242013440));
	{
		if (!((*d).k == ((NU8) 0))) goto LA3;
		(*d).s = a.s;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = skiptypes_218113(ty, IL64(211106240964864));
	LOC6 = 0;
	LOC6 = elemtype_240383(LOC5);
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = rdloc_477569(a);
	LOC7[1] = rdcharloc_477608(b);
	LOC8 = 0;
	LOC8 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3880), LOC7, 2);
	putintodest_490713(p, d, LOC6, LOC8, a.s);
}

N_NIMCALL(void, gentupleelem_493490)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 a;
	NI i;
	Ropeobj169006* LOC14;
	Ttype214828* ty;
	Ropeobj169006* r;
	TY169507 LOC17;
	memset((void*)(&a), 0, sizeof(a));
	i = 0;
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 0)], (&a));
	{
		if (!((*d).k == ((NU8) 0))) goto LA3;
		(*d).s = a.s;
	}
	LA3: ;
	{
		if (!((*d).heaproot == NIM_NIL)) goto LA7;
		{
			if (!!((a.heaproot == NIM_NIL))) goto LA11;
			unsureAsgnRef((void**) (&(*d).heaproot), a.heaproot);
		}
		goto LA9;
		LA11: ;
		{
			unsureAsgnRef((void**) (&(*d).heaproot), a.r);
		}
		LA9: ;
	}
	LA7: ;
	LOC14 = 0;
	LOC14 = gettypedesc_475055((*p).module, a.t);
	ty = getuniquetype_468640(a.t);
	r = rdloc_477569(a);
	switch ((*(*e).kindU.S6.sons->data[((NI) 1)]).kind) {
	case ((NU8) 6) ... ((NU8) 15):
	{
		i = ((NI) ((*(*e).kindU.S6.sons->data[((NI) 1)]).kindU.S1.intval));
	}
	break;
	default:
	{
		internalerror_187100((*e).info, ((NimStringDesc*) &TMP4325));
	}
	break;
	}
	memset((void*)LOC17, 0, sizeof(LOC17));
	LOC17[0] = rope_169401(((NI64) (i)));
	addf_170205(&r, ((NimStringDesc*) &TMP4326), LOC17, 1);
	putintodest_490713(p, d, (*ty).sons->data[i], r, a.s);
}

N_NIMCALL(void, genbracketexpr_494701)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	Ttype214828* ty;
	ty = skiptypes_218113((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106242013440));
	{
		Ttype214828* LOC5;
		if (!((*ty).kind == ((NU8) 22) || (*ty).kind == ((NU8) 21))) goto LA3;
		LOC5 = 0;
		LOC5 = lastson_217377(ty);
		ty = skiptypes_218113(LOC5, IL64(211106242013440));
	}
	LA3: ;
	switch ((*ty).kind) {
	case ((NU8) 16):
	case ((NU8) 4):
	{
		genarrayelem_494493(p, (*n).kindU.S6.sons->data[((NI) 0)], (*n).kindU.S6.sons->data[((NI) 1)], d);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		genopenarrayelem_494593(p, (*n).kindU.S6.sons->data[((NI) 0)], (*n).kindU.S6.sons->data[((NI) 1)], d);
	}
	break;
	case ((NU8) 24):
	case ((NU8) 28):
	{
		genseqelem_494629(p, (*n).kindU.S6.sons->data[((NI) 0)], (*n).kindU.S6.sons->data[((NI) 1)], d);
	}
	break;
	case ((NU8) 29):
	{
		gencstringelem_494568(p, (*n).kindU.S6.sons->data[((NI) 0)], (*n).kindU.S6.sons->data[((NI) 1)], d);
	}
	break;
	case ((NU8) 18):
	{
		gentupleelem_493490(p, n, d);
	}
	break;
	default:
	{
		NimStringDesc* LOC12;
		LOC12 = 0;
		LOC12 = rawNewString(reprEnum((*ty).kind, (&NTI214241))->Sup.len + 21);
appendString(LOC12, ((NimStringDesc*) &TMP4327));
appendString(LOC12, reprEnum((*ty).kind, (&NTI214241)));
appendChar(LOC12, 41);
		internalerror_187100((*n).info, LOC12);
	}
	break;
	}
}

N_NIMCALL(void, genderef_483563)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, NIM_BOOL enforcederef) {
	NU8 mt;
{	mt = maptype_473166((*(*e).kindU.S6.sons->data[((NI) 0)]).typ);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((393216 &(1U<<((NU)(mt)&31U)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = !(enforcederef);
		LA4: ;
		if (!LOC3) goto LA5;
		expr_478648(p, (*e).kindU.S6.sons->data[((NI) 0)], d);
	}
	goto LA1;
	LA5: ;
	{
		Tloc214804 a;
		memset((void*)(&a), 0, sizeof(a));
		initlocexprsingleuse_478689(p, (*e).kindU.S6.sons->data[((NI) 0)], (&a));
		{
			Ttype214828* typ;
			if (!((*d).k == ((NU8) 0))) goto LA10;
			typ = skiptypes_218113(a.t, IL64(211106232576256));
			switch ((*typ).kind) {
			case ((NU8) 22):
			{
				(*d).s = ((NU8) 3);
			}
			break;
			case ((NU8) 23):
			{
				(*d).s = ((NU8) 0);
				{
					NIM_BOOL LOC16;
					NIM_BOOL LOC17;
					NIM_BOOL LOC19;
					Ropeobj169006* LOC24;
					LOC16 = 0;
					LOC17 = 0;
					LOC17 = !((((*typ).flags &(1U<<((NU)(((NU8) 18))&31U)))!=0));
					if (!(LOC17)) goto LA18;
					LOC19 = 0;
					LOC19 = (gcmd_160123 == ((NU8) 2));
					if (LOC19) goto LA20;
					LOC19 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
					LA20: ;
					LOC17 = LOC19;
					LA18: ;
					LOC16 = LOC17;
					if (!(LOC16)) goto LA21;
					LOC16 = ((*e).kind == ((NU8) 65));
					LA21: ;
					if (!LOC16) goto LA22;
					LOC24 = 0;
					LOC24 = rdloc_477569(a);
					putintodest_490713(p, d, (*e).typ, LOC24, a.s);
					goto BeforeRet;
				}
				LA22: ;
			}
			break;
			case ((NU8) 21):
			{
				(*d).s = ((NU8) 0);
			}
			break;
			default:
			{
				NimStringDesc* LOC27;
				LOC27 = 0;
				LOC27 = rawNewString(reprEnum((*a.t).kind, (&NTI214241))->Sup.len + 9);
appendString(LOC27, ((NimStringDesc*) &TMP4328));
appendString(LOC27, reprEnum((*a.t).kind, (&NTI214241)));
				internalerror_187100((*e).info, LOC27);
			}
			break;
			}
		}
		goto LA8;
		LA10: ;
		{
			NIM_BOOL LOC29;
			Ttype214828* typ;
			LOC29 = 0;
			LOC29 = (gcmd_160123 == ((NU8) 2));
			if (LOC29) goto LA30;
			LOC29 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
			LA30: ;
			if (!LOC29) goto LA31;
			typ = skiptypes_218113(a.t, IL64(211106232576256));
			{
				NIM_BOOL LOC35;
				NIM_BOOL LOC36;
				Ropeobj169006* LOC41;
				LOC35 = 0;
				LOC36 = 0;
				LOC36 = ((*typ).kind == ((NU8) 23));
				if (!(LOC36)) goto LA37;
				LOC36 = !((((*typ).flags &(1U<<((NU)(((NU8) 18))&31U)))!=0));
				LA37: ;
				LOC35 = LOC36;
				if (!(LOC35)) goto LA38;
				LOC35 = ((*e).kind == ((NU8) 65));
				LA38: ;
				if (!LOC35) goto LA39;
				LOC41 = 0;
				LOC41 = rdloc_477569(a);
				putintodest_490713(p, d, (*e).typ, LOC41, a.s);
				goto BeforeRet;
			}
			LA39: ;
		}
		goto LA8;
		LA31: ;
		LA8: ;
		{
			NIM_BOOL LOC44;
			Ropeobj169006* LOC48;
			LOC44 = 0;
			LOC44 = enforcederef;
			if (!(LOC44)) goto LA45;
			LOC44 = (mt == ((NU8) 18));
			LA45: ;
			if (!LOC44) goto LA46;
			LOC48 = 0;
			LOC48 = rdloc_477569(a);
			putintodest_490713(p, d, (*a.t).sons->data[((NI) 0)], LOC48, a.s);
		}
		goto LA42;
		LA46: ;
		{
			TY169507 LOC50;
			Ropeobj169006* LOC51;
			memset((void*)LOC50, 0, sizeof(LOC50));
			LOC50[0] = rdloc_477569(a);
			LOC51 = 0;
			LOC51 = HEX25_169905(((NimStringDesc*) &TMP3894), LOC50, 1);
			putintodest_490713(p, d, (*e).typ, LOC51, a.s);
		}
		LA42: ;
	}
	LA1: ;
	}BeforeRet: ;
}

N_NIMCALL(Ttype214828*, genrecordfieldaux_493438)(Tcproc469022* p, Tnode214790* e, Tloc214804* d, Tloc214804* a) {
	Ttype214828* result;
	Ropeobj169006* LOC18;
	result = 0;
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 0)], a);
	{
		if (!!(((*(*e).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 3)))) goto LA3;
		internalerror_187100((*e).info, ((NimStringDesc*) &TMP4329));
	}
	LA3: ;
	{
		if (!((*d).k == ((NU8) 0))) goto LA7;
		(*d).s = (*a).s;
	}
	LA7: ;
	{
		if (!((*d).heaproot == NIM_NIL)) goto LA11;
		{
			if (!!(((*a).heaproot == NIM_NIL))) goto LA15;
			unsureAsgnRef((void**) (&(*d).heaproot), (*a).heaproot);
		}
		goto LA13;
		LA15: ;
		{
			unsureAsgnRef((void**) (&(*d).heaproot), (*a).r);
		}
		LA13: ;
	}
	LA11: ;
	LOC18 = 0;
	LOC18 = gettypedesc_475055((*p).module, (*a).t);
	result = getuniquetype_468640((*a).t);
	return result;
}

N_NIMCALL(void, genrecordfield_493848)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	Tloc214804 a;
	Ttype214828* ty;
	Ropeobj169006* r;
	Tsym214822* f;
	memset((void*)(&a), 0, sizeof(a));
	ty = genrecordfieldaux_493438(p, e, d, (&a));
	r = rdloc_477569(a);
	f = (*(*e).kindU.S6.sons->data[((NI) 1)]).kindU.S4.sym;
	{
		TY169507 LOC5;
		if (!((*ty).kind == ((NU8) 18))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rope_169401(((NI64) ((*f).position)));
		addf_170205(&r, ((NimStringDesc*) &TMP4326), LOC5, 1);
		putintodest_490713(p, d, (*f).typ, r, a.s);
	}
	goto LA1;
	LA3: ;
	{
		Tsym214822* field;
		TY169507 LOC11;
		field = lookupfieldagain_493543(p, ty, f, &r);
		{
			if (!((*field).loc.r == NIM_NIL)) goto LA9;
			internalerror_187100((*e).info, ((NimStringDesc*) &TMP4330));
		}
		LA9: ;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = (*field).loc.r;
		addf_170205(&r, ((NimStringDesc*) &TMP4331), LOC11, 1);
		putintodest_490713(p, d, (*field).typ, r, a.s);
	}
	LA1: ;
}

N_NIMCALL(void, gencheckedrecordfield_494446)(Tcproc469022* p, Tnode214790* e, Tloc214804* d) {
	{
		Tloc214804 a;
		Ttype214828* ty;
		Ropeobj169006* r;
		Tsym214822* f;
		Tsym214822* field;
		TY169507 LOC9;
		Ropeobj169006* LOC10;
		if (!(((*p).options &(1U<<((NU)(((NU8) 2))&31U)))!=0)) goto LA3;
		memset((void*)(&a), 0, sizeof(a));
		ty = genrecordfieldaux_493438(p, (*e).kindU.S6.sons->data[((NI) 0)], d, (&a));
		r = rdloc_477569(a);
		f = (*(*(*e).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)]).kindU.S4.sym;
		field = lookupfieldagain_493543(p, ty, f, &r);
		{
			if (!((*field).loc.r == NIM_NIL)) goto LA7;
			internalerror_187100((*e).info, ((NimStringDesc*) &TMP4312));
		}
		LA7: ;
		genfieldcheck_493904(p, e, r, field, ty);
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = (*field).loc.r;
		LOC10 = 0;
		LOC10 = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP4331), LOC9, 1);
		add_169482(&r, LOC10);
		putintodest_490713(p, d, (*field).typ, r, a.s);
	}
	goto LA1;
	LA3: ;
	{
		genrecordfield_493848(p, (*e).kindU.S6.sons->data[((NI) 0)], d);
	}
	LA1: ;
}

N_NIMCALL(NI, startblock_483620)(Tcproc469022* p, NimStringDesc* start, Ropeobj169006** args, NI argsLen0) {
	NI result;
	result = 0;
	linecg_472707(p, ((NU8) 2), start, args, argsLen0);
	(*p).labels += ((NI) 1);
	result = ((*p).blocks ? (*p).blocks->Sup.len : 0);
	(*p).blocks = (TY469094*) setLengthSeq(&((*p).blocks)->Sup, sizeof(Tblock469020), ((NI) ((NI)(result + ((NI) 1)))));
	(*p).blocks->data[result].id = ((NI) ((*p).labels));
	(*p).blocks->data[result].nestedtrystmts = ((NI16) (((*p).nestedtrystmts ? (*p).nestedtrystmts->Sup.len : 0)));
	(*p).blocks->data[result].nestedexceptstmts = ((NI16) ((*p).inexceptblock));
	return result;
}

N_NIMCALL(Ropeobj169006*, blockbody_483667)(Tblock469020* b) {
	Ropeobj169006* result;
	result = 0;
	result = (*b).sections[(((NU8) 0))- 0];
	{
		TY169507 LOC5;
		if (!(((NI16) 0) < (*b).framelen)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rope_169401(((NI64) ((*b).framelen)));
		addf_170205(&result, ((NimStringDesc*) &TMP4334), LOC5, 1);
	}
	LA3: ;
	add_169482(&result, (*b).sections[(((NU8) 1))- 0]);
	add_169482(&result, (*b).sections[(((NU8) 2))- 0]);
	return result;
}

N_NIMCALL(void, endblock_483677)(Tcproc469022* p, Ropeobj169006* blockend) {
	NI topblock;
	Ropeobj169006* LOC1;
	topblock = (NI)(((*p).blocks ? (*p).blocks->Sup.len : 0) - ((NI) 1));
	LOC1 = 0;
	LOC1 = blockbody_483667((&(*p).blocks->data[topblock]));
	add_169482(&(*p).blocks->data[(NI)(topblock - ((NI) 1))].sections[(((NU8) 2))- 0], LOC1);
	(*p).blocks = (TY469094*) setLengthSeq(&((*p).blocks)->Sup, sizeof(Tblock469020), ((NI) (topblock)));
	line_472690(p, ((NU8) 2), blockend);
}

N_NIMCALL(void, endblock_483702)(Tcproc469022* p) {
	NI topblock;
	Ropeobj169006* blockend;
	NI16 framelen;
	topblock = (NI)(((*p).blocks ? (*p).blocks->Sup.len : 0) - ((NI) 1));
	{
		TY169507 LOC5;
		if (!!(((*p).blocks->data[topblock].label == NIM_NIL))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = (*p).blocks->data[topblock].label;
		blockend = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP4332), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY473064 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		blockend = HEX25_169905(((NimStringDesc*) &TMP3904), LOC7, 0);
	}
	LA1: ;
	framelen = (*p).blocks->data[topblock].framelen;
	{
		TY169507 LOC12;
		if (!(((NI16) 0) < framelen)) goto LA10;
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = rope_169401(((NI64) (framelen)));
		addf_170205(&blockend, ((NimStringDesc*) &TMP4333), LOC12, 1);
	}
	LA10: ;
	endblock_483677(p, blockend);
}

N_NIMCALL(void, genblock_485884)(Tcproc469022* p, Tnode214790* t, Tloc214804* d) {
	NI oldbreakidx_485891;
	TY473064 LOC1;
	oldbreakidx_485891 = (*p).breakidx;
	memset((void*)LOC1, 0, sizeof(LOC1));
	(*p).breakidx = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC1, 0);
	{
		Tsym214822* sym;
		if (!!(((*(*t).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA4;
		sym = (*(*t).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		(*sym).loc.k = ((NU8) 10);
		(*sym).position = (NI)((*p).breakidx + ((NI) 1));
	}
	LA4: ;
	expr_478648(p, (*t).kindU.S6.sons->data[((NI) 1)], d);
	endblock_483702(p);
	(*p).breakidx = oldbreakidx_485891;
}

N_NIMCALL(void, genstmtlistexpr_498602)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	NI length;
	length = sonslen_217351(n);
	{
		NI i_498620;
		NI HEX3Atmp_498624;
		NI res_498627;
		i_498620 = 0;
		HEX3Atmp_498624 = 0;
		HEX3Atmp_498624 = (NI)(length - ((NI) 2));
		res_498627 = ((NI) 0);
		{
			while (1) {
				if (!(res_498627 <= HEX3Atmp_498624)) goto LA3;
				i_498620 = res_498627;
				genstmts_478644(p, (*n).kindU.S6.sons->data[i_498620]);
				res_498627 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		if (!(((NI) 0) < length)) goto LA6;
		expr_478648(p, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))], d);
	}
	LA6: ;
}

N_NIMCALL(void, genif_484793)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	Tloc214804 a;
	Ropeobj169006* lelse;
	Ropeobj169006* lend;
	memset((void*)(&a), 0, sizeof(a));
	lelse = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_219513((*n).typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).k == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_476435(p, (*n).typ, d, NIM_FALSE);
	}
	LA6: ;
	genlinedir_472823(p, n);
	lend = getlabel_478617(p);
	{
		NI i_484822;
		NI HEX3Atmp_485235;
		NI LOC9;
		NI res_485238;
		i_484822 = 0;
		HEX3Atmp_485235 = 0;
		LOC9 = 0;
		LOC9 = sonslen_217351(n);
		HEX3Atmp_485235 = (NI)(LOC9 - ((NI) 1));
		res_485238 = ((NI) 0);
		{
			while (1) {
				Tnode214790* it;
				if (!(res_485238 <= HEX3Atmp_485235)) goto LA11;
				i_484822 = res_485238;
				it = (*n).kindU.S6.sons->data[i_484822];
				{
					NI LOC14;
					TY473064 LOC17;
					NI LOC18;
					TY501032 LOC19;
					LOC14 = 0;
					LOC14 = len_215059(it);
					if (!(LOC14 == ((NI) 2))) goto LA15;
					memset((void*)LOC17, 0, sizeof(LOC17));
					LOC18 = 0;
					LOC18 = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC17, 0);
					initlocexprsingleuse_478689(p, (*it).kindU.S6.sons->data[((NI) 0)], (&a));
					lelse = getlabel_478617(p);
					(*p).labels += ((NI) 1);
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = rdloc_477569(a);
					LOC19[1] = lelse;
					linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4335), LOC19, 2);
					{
						NIM_BOOL LOC22;
						Ropeobj169006** LOC26;
						Ropeobj169006** LOC27;
						LOC22 = 0;
						LOC22 = (gcmd_160123 == ((NU8) 2));
						if (LOC22) goto LA23;
						LOC22 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
						LA23: ;
						if (!LOC22) goto LA24;
						LOC26 = 0;
						LOC26 = s_469166(p, ((NU8) 2));
						add_169487(LOC26, ((NimStringDesc*) &TMP4001));
						expr_478648(p, (*it).kindU.S6.sons->data[((NI) 1)], d);
						LOC27 = 0;
						LOC27 = s_469166(p, ((NU8) 2));
						add_169487(LOC27, ((NimStringDesc*) &TMP3997));
					}
					goto LA20;
					LA24: ;
					{
						expr_478648(p, (*it).kindU.S6.sons->data[((NI) 1)], d);
					}
					LA20: ;
					endblock_483702(p);
					{
						NI LOC31;
						TY169507 LOC34;
						LOC31 = 0;
						LOC31 = sonslen_217351(n);
						if (!(((NI) 1) < LOC31)) goto LA32;
						memset((void*)LOC34, 0, sizeof(LOC34));
						LOC34[0] = lend;
						linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4336), LOC34, 1);
					}
					LA32: ;
					fixlabel_478630(p, lelse);
				}
				goto LA12;
				LA15: ;
				{
					NI LOC36;
					TY473064 LOC39;
					NI LOC40;
					LOC36 = 0;
					LOC36 = len_215059(it);
					if (!(LOC36 == ((NI) 1))) goto LA37;
					memset((void*)LOC39, 0, sizeof(LOC39));
					LOC40 = 0;
					LOC40 = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC39, 0);
					expr_478648(p, (*it).kindU.S6.sons->data[((NI) 0)], d);
					endblock_483702(p);
				}
				goto LA12;
				LA37: ;
				{
					internalerror_187100((*n).info, ((NimStringDesc*) &TMP4337));
				}
				LA12: ;
				res_485238 += ((NI) 1);
			} LA11: ;
		}
	}
	{
		NI LOC44;
		LOC44 = 0;
		LOC44 = sonslen_217351(n);
		if (!(((NI) 1) < LOC44)) goto LA45;
		fixlabel_478630(p, lend);
	}
	LA45: ;
}

N_NIMCALL(void, downconv_498781)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_160123 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		expr_478648(p, (*n).kindU.S6.sons->data[((NI) 0)], d);
	}
	goto LA1;
	LA5: ;
	{
		Ttype214828* dest;
		Tnode214790* arg;
		Ttype214828* src;
		Tloc214804 a;
		Ropeobj169006* r;
		NIM_BOOL isref;
		Ttype214828* LOC10;
		dest = skiptypes_218113((*n).typ, IL64(211106247256320));
		arg = (*n).kindU.S6.sons->data[((NI) 0)];
		{
			while (1) {
				if (!((*arg).kind == ((NU8) 66))) goto LA9;
				arg = (*arg).kindU.S6.sons->data[((NI) 0)];
			} LA9: ;
		}
		src = skiptypes_218113((*arg).typ, IL64(211106247256320));
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_478683(p, arg, (&a));
		r = rdloc_477569(a);
		LOC10 = 0;
		LOC10 = skiptypes_218113((*arg).typ, IL64(211106232576256));
		isref = ((*LOC10).kind == ((NU8) 22) || (*LOC10).kind == ((NU8) 21) || (*LOC10).kind == ((NU8) 23));
		{
			if (!isref) goto LA13;
			add_169487(&r, ((NimStringDesc*) &TMP4338));
		}
		goto LA11;
		LA13: ;
		{
			add_169487(&r, ((NimStringDesc*) &TMP3897));
		}
		LA11: ;
		{
			NI i_498850;
			NI HEX3Atmp_498877;
			NI LOC17;
			NI res_498880;
			i_498850 = 0;
			HEX3Atmp_498877 = 0;
			LOC17 = 0;
			LOC17 = inheritancediff_246442(dest, src);
			HEX3Atmp_498877 = (LOC17 > 0? (LOC17) : -(LOC17));
			res_498880 = ((NI) 2);
			{
				while (1) {
					if (!(res_498880 <= HEX3Atmp_498877)) goto LA19;
					i_498850 = res_498880;
					add_169487(&r, ((NimStringDesc*) &TMP3897));
					res_498880 += ((NI) 1);
				} LA19: ;
			}
		}
		{
			if (!isref) goto LA22;
			{
				NIM_BOOL LOC26;
				Ttype214828* LOC28;
				TY501032 LOC31;
				LOC26 = 0;
				LOC26 = ((*d).k == ((NU8) 0));
				if (!(LOC26)) goto LA27;
				LOC28 = 0;
				LOC28 = skiptypes_218113((*n).typ, IL64(211106232576256));
				LOC26 = ((*LOC28).kind == ((NU8) 22) || (*LOC28).kind == ((NU8) 21) || (*LOC28).kind == ((NU8) 23));
				LA27: ;
				if (!LOC26) goto LA29;
				gettemp_476435(p, (*n).typ, d, NIM_FALSE);
				memset((void*)LOC31, 0, sizeof(LOC31));
				LOC31[0] = rdloc_477569((*d));
				LOC31[1] = r;
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4339), LOC31, 2);
			}
			goto LA24;
			LA29: ;
			{
				r = HEX26_169452(((NimStringDesc*) &TMP3793), r);
				putintodest_490713(p, d, (*n).typ, r, a.s);
			}
			LA24: ;
		}
		goto LA20;
		LA22: ;
		{
			putintodest_490713(p, d, (*n).typ, r, a.s);
		}
		LA20: ;
	}
	LA1: ;
}

N_NIMCALL(void, upconv_498631)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	Tloc214804 a;
	Ttype214828* dest;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 0)], (&a));
	dest = skiptypes_218113((*n).typ, IL64(211106247256320));
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		Ropeobj169006* r;
		Ropeobj169006* nilcheck;
		Ttype214828* t;
		LOC3 = 0;
		LOC3 = (((*p).options &(1U<<((NU)(((NU8) 1))&31U)))!=0);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = isobjlackingtypefield_473283(dest);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		r = rdloc_477569(a);
		nilcheck = NIM_NIL;
		t = skiptypes_218113(a.t, IL64(211106232576256));
		{
			while (1) {
				Ttype214828* LOC23;
				if (!((*t).kind == ((NU8) 23) || (*t).kind == ((NU8) 21) || (*t).kind == ((NU8) 22))) goto LA9;
				{
					if (!!(((*t).kind == ((NU8) 23)))) goto LA12;
					nilcheck = r;
				}
				LA12: ;
				{
					NIM_BOOL LOC16;
					NIM_BOOL LOC18;
					TY169507 LOC22;
					LOC16 = 0;
					LOC16 = !(((*t).kind == ((NU8) 23)));
					if (LOC16) goto LA17;
					LOC18 = 0;
					LOC18 = (gcmd_160123 == ((NU8) 2));
					if (LOC18) goto LA19;
					LOC18 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
					LA19: ;
					LOC16 = !(LOC18);
					LA17: ;
					if (!LOC16) goto LA20;
					memset((void*)LOC22, 0, sizeof(LOC22));
					LOC22[0] = r;
					r = HEX25_169905(((NimStringDesc*) &TMP3894), LOC22, 1);
				}
				LA20: ;
				LOC23 = 0;
				LOC23 = lastson_217377(t);
				t = skiptypes_218113(LOC23, IL64(211106232576256));
			} LA9: ;
		}
		{
			NIM_BOOL LOC26;
			LOC26 = 0;
			LOC26 = (gcmd_160123 == ((NU8) 2));
			if (LOC26) goto LA27;
			LOC26 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
			LA27: ;
			if (!!(LOC26)) goto LA28;
			{
				while (1) {
					NIM_BOOL LOC32;
					LOC32 = 0;
					LOC32 = ((*t).kind == ((NU8) 17));
					if (!(LOC32)) goto LA33;
					LOC32 = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
					LA33: ;
					if (!LOC32) goto LA31;
					add_169487(&r, ((NimStringDesc*) &TMP3897));
					t = skiptypes_218113((*t).sons->data[((NI) 0)], IL64(211106232576256));
				} LA31: ;
			}
		}
		LA28: ;
		{
			TY474655 LOC38;
			if (!!((nilcheck == NIM_NIL))) goto LA36;
			memset((void*)LOC38, 0, sizeof(LOC38));
			LOC38[0] = nilcheck;
			LOC38[1] = r;
			LOC38[2] = gentypeinfo_475350((*p).module, dest);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4340), LOC38, 3);
		}
		goto LA34;
		LA36: ;
		{
			TY501032 LOC40;
			memset((void*)LOC40, 0, sizeof(LOC40));
			LOC40[0] = r;
			LOC40[1] = gentypeinfo_475350((*p).module, dest);
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4341), LOC40, 2);
		}
		LA34: ;
	}
	LA6: ;
	{
		TY501032 LOC45;
		Ropeobj169006* LOC46;
		if (!!(((*(*(*n).kindU.S6.sons->data[((NI) 0)]).typ).kind == ((NU8) 17)))) goto LA43;
		memset((void*)LOC45, 0, sizeof(LOC45));
		LOC45[0] = gettypedesc_475055((*p).module, (*n).typ);
		LOC45[1] = rdloc_477569(a);
		LOC46 = 0;
		LOC46 = HEX25_169905(((NimStringDesc*) &TMP4149), LOC45, 2);
		putintodest_490713(p, d, (*n).typ, LOC46, a.s);
	}
	goto LA41;
	LA43: ;
	{
		TY501032 LOC48;
		Ropeobj169006* LOC49;
		memset((void*)LOC48, 0, sizeof(LOC48));
		LOC48[0] = gettypedesc_475055((*p).module, dest);
		LOC48[1] = addrloc_477585(a);
		LOC49 = 0;
		LOC49 = HEX25_169905(((NimStringDesc*) &TMP4148), LOC48, 2);
		putintodest_490713(p, d, (*n).typ, LOC49, a.s);
	}
	LA41: ;
}

N_NIMCALL(void, genrangechck_496990)(Tcproc469022* p, Tnode214790* n, Tloc214804* d, NimStringDesc* magic) {
	Tloc214804 a;
	Ttype214828* dest;
	memset((void*)(&a), 0, sizeof(a));
	dest = skiptypes_218113((*n).typ, IL64(211106240964864));
	{
		NIM_BOOL LOC3;
		Ttype214828* LOC5;
		TY501032 LOC8;
		Ropeobj169006* LOC9;
		LOC3 = 0;
		LOC3 = !((((*p).options &(1U<<((NU)(((NU8) 3))&31U)))!=0));
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = skiptypes_218113(dest, 1048576);
		LOC3 = ((*LOC5).kind >= ((NU8) 40) && (*LOC5).kind <= ((NU8) 44));
		LA4: ;
		if (!LOC3) goto LA6;
		initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 0)], (&a));
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = gettypedesc_475055((*p).module, dest);
		LOC8[1] = rdcharloc_477608(a);
		LOC9 = 0;
		LOC9 = HEX25_169905(((NimStringDesc*) &TMP4149), LOC8, 2);
		putintodest_490713(p, d, (*n).typ, LOC9, a.s);
	}
	goto LA1;
	LA6: ;
	{
		TY475874 LOC11;
		Ropeobj169006* LOC12;
		initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 0)], (&a));
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = gettypedesc_475055((*p).module, dest);
		LOC11[1] = rdcharloc_477608(a);
		LOC11[2] = genliteral_489503(p, (*n).kindU.S6.sons->data[((NI) 1)], dest);
		LOC11[3] = genliteral_489503(p, (*n).kindU.S6.sons->data[((NI) 2)], dest);
		LOC11[4] = rope_169277(magic);
		LOC12 = 0;
		LOC12 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4342), LOC11, 5);
		putintodest_490713(p, d, dest, LOC12, a.s);
	}
	LA1: ;
}

N_NIMCALL(void, convstrtocstr_497042)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	Tloc214804 a;
	Ttype214828* LOC1;
	TY169507 LOC2;
	Ropeobj169006* LOC3;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 0)], (&a));
	LOC1 = 0;
	LOC1 = skiptypes_218113((*n).typ, IL64(211106240964864));
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = rdloc_477569(a);
	LOC3 = 0;
	LOC3 = HEX25_169905(((NimStringDesc*) &TMP4204), LOC2, 1);
	putintodest_490713(p, d, LOC1, LOC3, a.s);
}

N_NIMCALL(void, convcstrtostr_497054)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	Tloc214804 a;
	Ttype214828* LOC1;
	TY169507 LOC2;
	Ropeobj169006* LOC3;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 0)], (&a));
	LOC1 = 0;
	LOC1 = skiptypes_218113((*n).typ, IL64(211106240964864));
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = rdloc_477569(a);
	LOC3 = 0;
	LOC3 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4131), LOC2, 1);
	putintodest_490713(p, d, LOC1, LOC3, a.s);
	gcusage_494863(n);
}

static N_INLINE(NIM_BOOL, isroutine_219396)(Tsym214822* s) {
	NIM_BOOL result;
	result = 0;
	result = ((258048 &(1U<<((NU)((*s).kind)&31U)))!=0);
	return result;
}

static N_INLINE(NIM_BOOL, isconstclosure_498210)(Tnode214790* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
	if (!(LOC2)) goto LA3;
	LOC2 = isroutine_219396((*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym);
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 23));
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genclosure_498236)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	{
		NIM_BOOL LOC3;
		Ropeobj169006* tmp;
		Ropeobj169006* LOC6;
		TY474655 LOC7;
		LOC3 = 0;
		LOC3 = isconstclosure_498210(n);
		if (!LOC3) goto LA4;
		(*(*p).module).labels += ((NI) 1);
		LOC6 = 0;
		LOC6 = rope_169401(((NI64) ((*(*p).module).labels)));
		tmp = HEX26_169452(((NimStringDesc*) &TMP4346), LOC6);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_475055((*p).module, (*n).typ);
		LOC7[1] = tmp;
		LOC7[2] = genconstexpr_497898(p, n);
		addf_170205(&(*(*p).module).s[(((NU8) 8))- 0], ((NimStringDesc*) &TMP4304), LOC7, 3);
		putintodest_490713(p, d, (*n).typ, tmp, ((NU8) 1));
	}
	goto LA1;
	LA4: ;
	{
		Tloc214804 tmp;
		Tloc214804 a;
		Tloc214804 b;
		TY474655 LOC14;
		memset((void*)(&tmp), 0, sizeof(tmp));
		memset((void*)(&a), 0, sizeof(a));
		memset((void*)(&b), 0, sizeof(b));
		initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 0)], (&a));
		initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 1)], (&b));
		{
			Tnode214790* LOC11;
			LOC11 = 0;
			LOC11 = skipconv_249082((*n).kindU.S6.sons->data[((NI) 0)]);
			if (!((*LOC11).kind == ((NU8) 155))) goto LA12;
			internalerror_187100((*n).info, ((NimStringDesc*) &TMP4347));
		}
		LA12: ;
		gettemp_476435(p, (*n).typ, (&tmp), NIM_FALSE);
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = rdloc_477569(tmp);
		LOC14[1] = rdloc_477569(a);
		LOC14[2] = rdloc_477569(b);
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4348), LOC14, 3);
		putlocintodest_478658(p, d, tmp);
	}
	LA1: ;
}

static N_INLINE(Ropeobj169006*, assignlabel_483662)(Tblock469020* b) {
	Ropeobj169006* result;
	Ropeobj169006* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = rope_169401(((NI64) ((*b).id)));
	unsureAsgnRef((void**) (&(*b).label), HEX26_169452(((NimStringDesc*) &TMP4016), LOC1));
	result = (*b).label;
	return result;
}

N_NIMCALL(void, gencomputedgoto_485553)(Tcproc469022* p, Tnode214790* n) {
	NI casepos;
	NI arraysize;
	NI id;
	Ropeobj169006* tmp;
	TY169507 LOC27;
	Ropeobj169006* gotoarray;
	TY501032 LOC28;
	TY169507 LOC33;
	NI topblock;
	Ropeobj169006* oldbody;
	Ropeobj169006* tailb;
	Ropeobj169006* taila;
	Tnode214790* casestmt;
	Tloc214804 a_485680;
	TY501032 LOC41;
{	casepos = ((NI) -1);
	arraysize = 0;
	{
		NI i_485577;
		NI HEX3Atmp_485742;
		NI LOC2;
		NI res_485745;
		i_485577 = 0;
		HEX3Atmp_485742 = 0;
		LOC2 = 0;
		LOC2 = len_215059(n);
		HEX3Atmp_485742 = (LOC2 - 1);
		res_485745 = ((NI) 0);
		{
			while (1) {
				Tnode214790* it;
				if (!(res_485745 <= HEX3Atmp_485742)) goto LA4;
				i_485577 = res_485745;
				it = (*n).kindU.S6.sons->data[i_485577];
				{
					NI64 asize;
					if (!((*it).kind == ((NU8) 97))) goto LA7;
					{
						Tnode214790* LOC11;
						LOC11 = 0;
						LOC11 = lastson_217364(it);
						if (!!(((*LOC11).kind == ((NU8) 85)))) goto LA12;
						localerror_187085((*it).info, ((NimStringDesc*) &TMP4350));
						goto BeforeRet;
					}
					LA12: ;
					casepos = i_485577;
					asize = lengthord_240007((*(*it).kindU.S6.sons->data[((NI) 0)]).typ);
					{
						if (!(IL64(10000) < asize)) goto LA16;
						localerror_187085((*it).info, ((NimStringDesc*) &TMP4351));
						goto BeforeRet;
					}
					LA16: ;
					arraysize = ((NI) (asize));
					{
						NI64 LOC20;
						LOC20 = 0;
						LOC20 = firstord_240001((*(*it).kindU.S6.sons->data[((NI) 0)]).typ);
						if (!!((LOC20 == IL64(0)))) goto LA21;
						localerror_187085((*it).info, ((NimStringDesc*) &TMP4352));
						goto BeforeRet;
					}
					LA21: ;
				}
				LA7: ;
				res_485745 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		if (!(casepos < ((NI) 0))) goto LA25;
		localerror_187085((*n).info, ((NimStringDesc*) &TMP4353));
		goto BeforeRet;
	}
	LA25: ;
	id = (NI)(((NI) ((*p).labels)) + ((NI) 1));
	(*p).labels += (NI)(arraysize + ((NI) 1));
	memset((void*)LOC27, 0, sizeof(LOC27));
	LOC27[0] = rope_169401(((NI64) (id)));
	tmp = HEX25_169905(((NimStringDesc*) &TMP3887), LOC27, 1);
	memset((void*)LOC28, 0, sizeof(LOC28));
	LOC28[0] = tmp;
	LOC28[1] = rope_169401(((NI64) (arraysize)));
	gotoarray = HEX25_169905(((NimStringDesc*) &TMP4354), LOC28, 2);
	{
		NI i_485628;
		NI HEX3Atmp_485750;
		NI res_485753;
		i_485628 = 0;
		HEX3Atmp_485750 = 0;
		HEX3Atmp_485750 = (NI)(arraysize - ((NI) 1));
		res_485753 = ((NI) 1);
		{
			while (1) {
				TY169507 LOC32;
				if (!(res_485753 <= HEX3Atmp_485750)) goto LA31;
				i_485628 = res_485753;
				memset((void*)LOC32, 0, sizeof(LOC32));
				LOC32[0] = rope_169401(((NI64) ((NI)(((NI) (id)) + i_485628))));
				addf_170205(&gotoarray, ((NimStringDesc*) &TMP4355), LOC32, 1);
				res_485753 += ((NI) 1);
			} LA31: ;
		}
	}
	memset((void*)LOC33, 0, sizeof(LOC33));
	LOC33[0] = rope_169401(((NI64) ((NI)(((NI) (id)) + arraysize))));
	addf_170205(&gotoarray, ((NimStringDesc*) &TMP4356), LOC33, 1);
	line_472690(p, ((NU8) 0), gotoarray);
	topblock = (NI)(((*p).blocks ? (*p).blocks->Sup.len : 0) - ((NI) 1));
	oldbody = (*p).blocks->data[topblock].sections[(((NU8) 2))- 0];
	asgnRefNoCycle((void**) (&(*p).blocks->data[topblock].sections[(((NU8) 2))- 0]), NIM_NIL);
	{
		NI j_485663;
		NI HEX3Atmp_485758;
		NI HEX3Atmp_485759;
		NI LOC35;
		NI res_485762;
		j_485663 = 0;
		HEX3Atmp_485758 = 0;
		HEX3Atmp_485759 = 0;
		HEX3Atmp_485758 = (NI)(casepos + ((NI) 1));
		LOC35 = 0;
		LOC35 = len_215059(n);
		HEX3Atmp_485759 = (LOC35 - 1);
		res_485762 = HEX3Atmp_485758;
		{
			while (1) {
				if (!(res_485762 <= HEX3Atmp_485759)) goto LA37;
				j_485663 = res_485762;
				genstmts_478644(p, (*n).kindU.S6.sons->data[j_485663]);
				res_485762 += ((NI) 1);
			} LA37: ;
		}
	}
	tailb = (*p).blocks->data[topblock].sections[(((NU8) 2))- 0];
	asgnRefNoCycle((void**) (&(*p).blocks->data[topblock].sections[(((NU8) 2))- 0]), NIM_NIL);
	{
		NI j_485675;
		NI HEX3Atmp_485767;
		NI res_485770;
		j_485675 = 0;
		HEX3Atmp_485767 = 0;
		HEX3Atmp_485767 = (NI)(casepos - ((NI) 1));
		res_485770 = ((NI) 0);
		{
			while (1) {
				if (!(res_485770 <= HEX3Atmp_485767)) goto LA40;
				j_485675 = res_485770;
				genstmts_478644(p, (*n).kindU.S6.sons->data[j_485675]);
				res_485770 += ((NI) 1);
			} LA40: ;
		}
	}
	taila = (*p).blocks->data[topblock].sections[(((NU8) 2))- 0];
	asgnRefNoCycle((void**) (&(*p).blocks->data[topblock].sections[(((NU8) 2))- 0]), HEX26_169418(oldbody, taila));
	casestmt = (*n).kindU.S6.sons->data[casepos];
	memset((void*)(&a_485680), 0, sizeof(a_485680));
	initlocexpr_478683(p, (*casestmt).kindU.S6.sons->data[((NI) 0)], (&a_485680));
	memset((void*)LOC41, 0, sizeof(LOC41));
	LOC41[0] = tmp;
	LOC41[1] = rdloc_477569(a_485680);
	linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4357), LOC41, 2);
	{
		NI i_485703;
		NI HEX3Atmp_485786;
		NI LOC43;
		NI res_485789;
		i_485703 = 0;
		HEX3Atmp_485786 = 0;
		LOC43 = 0;
		LOC43 = len_215059(casestmt);
		HEX3Atmp_485786 = (LOC43 - 1);
		res_485789 = ((NI) 1);
		{
			while (1) {
				TY473064 LOC46;
				NI LOC47;
				Tnode214790* it;
				Tnode214790* LOC57;
				Ropeobj169006** LOC58;
				Ropeobj169006** LOC59;
				Tloc214804 a;
				TY501032 LOC60;
				if (!(res_485789 <= HEX3Atmp_485786)) goto LA45;
				i_485703 = res_485789;
				memset((void*)LOC46, 0, sizeof(LOC46));
				LOC47 = 0;
				LOC47 = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC46, 0);
				it = (*casestmt).kindU.S6.sons->data[i_485703];
				{
					NI j_485719;
					NI HEX3Atmp_485778;
					NI LOC49;
					NI res_485781;
					j_485719 = 0;
					HEX3Atmp_485778 = 0;
					LOC49 = 0;
					LOC49 = len_215059(it);
					HEX3Atmp_485778 = (NI)(LOC49 - ((NI) 2));
					res_485781 = ((NI) 0);
					{
						while (1) {
							NI64 val;
							TY169507 LOC56;
							if (!(res_485781 <= HEX3Atmp_485778)) goto LA51;
							j_485719 = res_485781;
							{
								if (!((*(*it).kindU.S6.sons->data[j_485719]).kind == ((NU8) 44))) goto LA54;
								localerror_187085((*it).info, ((NimStringDesc*) &TMP4358));
								goto BeforeRet;
							}
							LA54: ;
							val = getordvalue_240118((*it).kindU.S6.sons->data[j_485719]);
							memset((void*)LOC56, 0, sizeof(LOC56));
							LOC56[0] = intliteral_478670((NI64)((NI64)(val + ((NI64) (id))) + IL64(1)));
							linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4359), LOC56, 1);
							res_485781 += ((NI) 1);
						} LA51: ;
					}
				}
				LOC57 = 0;
				LOC57 = lastson_217364(it);
				genstmts_478644(p, LOC57);
				LOC58 = 0;
				LOC58 = s_469166(p, ((NU8) 2));
				add_169482(LOC58, tailb);
				LOC59 = 0;
				LOC59 = s_469166(p, ((NU8) 2));
				add_169482(LOC59, taila);
				memset((void*)(&a), 0, sizeof(a));
				initlocexpr_478683(p, (*casestmt).kindU.S6.sons->data[((NI) 0)], (&a));
				memset((void*)LOC60, 0, sizeof(LOC60));
				LOC60[0] = tmp;
				LOC60[1] = rdloc_477569(a);
				linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4357), LOC60, 2);
				endblock_483702(p);
				res_485789 += ((NI) 1);
			} LA45: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(void, genwhilestmt_485793)(Tcproc469022* p, Tnode214790* t) {
	Tloc214804 a;
	Ropeobj169006* labl;
	NI oldbreakidx_485811;
	TY473064 LOC1;
	Tnode214790* loopbody;
	memset((void*)(&a), 0, sizeof(a));
	labl = 0;
	(*p).withinloop += ((NI) 1);
	genlinedir_472823(p, t);
	oldbreakidx_485811 = (*p).breakidx;
	memset((void*)LOC1, 0, sizeof(LOC1));
	(*p).breakidx = startblock_483620(p, ((NimStringDesc*) &TMP4349), LOC1, 0);
	(*p).blocks->data[(*p).breakidx].isloop = NIM_TRUE;
	initlocexpr_478683(p, (*t).kindU.S6.sons->data[((NI) 0)], (&a));
	{
		NIM_BOOL LOC4;
		Ropeobj169006* label;
		TY501032 LOC8;
		LOC4 = 0;
		LOC4 = !(((*(*t).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 6)));
		if (LOC4) goto LA5;
		LOC4 = ((*(*t).kindU.S6.sons->data[((NI) 0)]).kindU.S1.intval == IL64(0));
		LA5: ;
		if (!LOC4) goto LA6;
		label = assignlabel_483662((&(*p).blocks->data[(*p).breakidx]));
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_477569(a);
		LOC8[1] = label;
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4335), LOC8, 2);
	}
	LA6: ;
	loopbody = (*t).kindU.S6.sons->data[((NI) 1)];
	{
		NIM_BOOL LOC11;
		LOC11 = 0;
		LOC11 = stmtscontainpragma_468085(loopbody, ((NU16) 180));
		if (!(LOC11)) goto LA12;
		LOC11 = ((Cc_194413[(ccompiler_194431)- 1].Field20 &(1U<<((NU)(((NU8) 1))&7U)))!=0);
		LA12: ;
		if (!LOC11) goto LA13;
		{
			NIM_BOOL LOC17;
			NI LOC18;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = len_215059(loopbody);
			LOC17 = (LOC18 == ((NI) 2));
			if (!(LOC17)) goto LA19;
			LOC17 = ((*(*loopbody).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1));
			LA19: ;
			if (!LOC17) goto LA20;
			loopbody = (*loopbody).kindU.S6.sons->data[((NI) 1)];
		}
		LA20: ;
		gencomputedgoto_485553(p, loopbody);
	}
	goto LA9;
	LA13: ;
	{
		genstmts_478644(p, loopbody);
	}
	LA9: ;
	{
		TY473064 LOC27;
		if (!(((*p).options &(1U<<((NU)(((NU8) 19))&31U)))!=0)) goto LA25;
		memset((void*)LOC27, 0, sizeof(LOC27));
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4360), LOC27, 0);
	}
	LA25: ;
	endblock_483702(p);
	(*p).breakidx = oldbreakidx_485811;
	(*p).withinloop -= ((NI) 1);
}

N_NIMCALL(void, gengotovar_484058)(Tcproc469022* p, Tnode214790* value) {
	{
		if (!!(((*value).kind >= ((NU8) 5) && (*value).kind <= ((NU8) 15)))) goto LA3;
		localerror_187085((*value).info, ((NimStringDesc*) &TMP4361));
	}
	goto LA1;
	LA3: ;
	{
		TY169507 LOC6;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = rope_169401((*value).kindU.S1.intval);
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4362), LOC6, 1);
	}
	LA1: ;
}

N_NIMCALL(void, loaddynamiclib_499637)(Tcgen469026* m, Tlib214808* lib) {
	{
		Ropeobj169006* tmp;
		TY169507 LOC5;
		if (!!((*lib).generated)) goto LA3;
		(*lib).generated = NIM_TRUE;
		tmp = getglobaltempname_473371();
		asgnRefNoCycle((void**) (&(*lib).name), tmp);
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = tmp;
		addf_170205(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP4363), LOC5, 1);
		{
			TY125202* s;
			Ropeobj169006* loadlib;
			TY501032 LOC18;
			if (!((*(*lib).path).kind >= ((NU8) 20) && (*(*lib).path).kind <= ((NU8) 22))) goto LA8;
			s = (TY125202*) newSeq((&NTI125202), 0);
			libcandidates_161603((*(*lib).path).kindU.S3.strval, (&s));
			rawmessage_185612(((NU16) 286), (*(*lib).path).kindU.S3.strval);
			loadlib = NIM_NIL;
			{
				NI i_500047;
				NI HEX3Atmp_500102;
				NI res_500105;
				i_500047 = 0;
				HEX3Atmp_500102 = 0;
				HEX3Atmp_500102 = (s ? (s->Sup.len-1) : -1);
				res_500105 = ((NI) 0);
				{
					while (1) {
						TY501032 LOC17;
						if (!(res_500105 <= HEX3Atmp_500102)) goto LA12;
						i_500047 = res_500105;
						(*m).labels += ((NI) 1);
						{
							if (!(((NI) 0) < i_500047)) goto LA15;
							add_169487(&loadlib, ((NimStringDesc*) &TMP4364));
						}
						LA15: ;
						memset((void*)LOC17, 0, sizeof(LOC17));
						LOC17[0] = tmp;
						LOC17[1] = getstrlit_489495(m, s->data[i_500047]);
						appcg_472632(m, &loadlib, ((NimStringDesc*) &TMP4365), LOC17, 2);
						res_500105 += ((NI) 1);
					} LA12: ;
				}
			}
			memset((void*)LOC18, 0, sizeof(LOC18));
			LOC18[0] = loadlib;
			LOC18[1] = getstrlit_489495(m, (*(*lib).path).kindU.S3.strval);
			appcg_472632(m, &(*m).s[(((NU8) 16))- 0], ((NimStringDesc*) &TMP4366), LOC18, 2);
		}
		goto LA6;
		LA8: ;
		{
			Tcproc469022* p;
			Tloc214804 dest;
			Ropeobj169006** LOC20;
			Ropeobj169006** LOC21;
			Ropeobj169006** LOC22;
			TY501032 LOC23;
			p = newproc_469193(NIM_NIL, m);
			(*p).options = ((*p).options & ~ 163840);
			memset((void*)(&dest), 0, sizeof(dest));
			initlocexpr_478683(p, (*lib).path, (&dest));
			LOC20 = 0;
			LOC20 = s_469166(p, ((NU8) 0));
			add_169482(&(*m).s[(((NU8) 9))- 0], (*LOC20));
			LOC21 = 0;
			LOC21 = s_469166(p, ((NU8) 1));
			add_169482(&(*m).s[(((NU8) 16))- 0], (*LOC21));
			LOC22 = 0;
			LOC22 = s_469166(p, ((NU8) 2));
			add_169482(&(*m).s[(((NU8) 16))- 0], (*LOC22));
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = tmp;
			LOC23[1] = rdloc_477569(dest);
			appcg_472632(m, &(*m).s[(((NU8) 16))- 0], ((NimStringDesc*) &TMP4367), LOC23, 2);
		}
		LA6: ;
	}
	LA3: ;
	{
		if (!((*lib).name == NIM_NIL)) goto LA26;
		internalerror_187113(((NimStringDesc*) &TMP4368));
	}
	LA26: ;
}

N_NIMCALL(void, varindynamiclib_478358)(Tcgen469026* m, Tsym214822* sym) {
	Tlib214808* lib;
	Ropeobj169006* extname;
	Ropeobj169006* tmp;
	TY474652 LOC1;
	NimStringDesc* LOC2;
	TY501032 LOC3;
	lib = (*sym).annex;
	extname = (*sym).loc.r;
	loaddynamiclib_499637(m, lib);
	(*sym).loc.flags |= ((NU16)1)<<((((NU8) 0))%(sizeof(NU16)*8));
	tmp = mangledynlibproc_478362(sym);
	asgnRefNoCycle((void**) (&(*sym).loc.r), tmp);
	(*m).labels += ((NI) 2);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = tmp;
	LOC1[1] = gettypedesc_475055(m, (*sym).typ);
	LOC1[2] = (*lib).name;
	LOC2 = 0;
	LOC2 = HEX24_169856(extname);
	LOC1[3] = makecstring_182637(LOC2);
	appcg_472632(m, &(*m).s[(((NU8) 16))- 0], ((NimStringDesc*) &TMP4369), LOC1, 4);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = (*sym).loc.r;
	LOC3[1] = gettypedesc_475055(m, (*sym).loc.t);
	addf_170205(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP4370), LOC3, 2);
}

N_NIMCALL(void, assignglobalvar_478365)(Tcproc469022* p, Tsym214822* s) {
{	{
		Ropeobj169006* LOC5;
		if (!((*s).loc.k == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_472977(s);
		fillloc_472282((&(*s).loc), ((NU8) 3), (*s).typ, LOC5, ((NU8) 3));
	}
	LA3: ;
	{
		Tcgen469026* q;
		if (!(((*s).loc.flags &(1U<<((NU)(((NU8) 4))&15U)))!=0)) goto LA8;
		q = findpendingmodule_472241((*p).module, s);
		{
			NIM_BOOL LOC12;
			NIM_BOOL LOC14;
			LOC12 = 0;
			LOC12 = !((q == NIM_NIL));
			if (!(LOC12)) goto LA13;
			LOC14 = 0;
			LOC14 = containsorincl_211862((&(*q).declaredthings), (*s).Sup.id);
			LOC12 = !(LOC14);
			LA13: ;
			if (!LOC12) goto LA15;
			varindynamiclib_478358(q, s);
		}
		goto LA10;
		LA15: ;
		{
			asgnRefNoCycle((void**) (&(*s).loc.r), mangledynlibproc_478362(s));
		}
		LA10: ;
		goto BeforeRet;
	}
	LA8: ;
	useheader_472349((*p).module, s);
	{
		if (!(((*s).loc.flags &(1U<<((NU)(((NU8) 3))&15U)))!=0)) goto LA20;
		goto BeforeRet;
	}
	LA20: ;
	{
		if (!(((*s).flags &(1U<<((NU)(((NU8) 22))&31U)))!=0)) goto LA24;
		declarethreadvar_478232((*p).module, s, (((*s).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0));
	}
	goto LA22;
	LA24: ;
	{
		Ropeobj169006* decl;
		Ropeobj169006* td;
		decl = NIM_NIL;
		td = gettypedesc_475055((*p).module, (*s).loc.t);
		{
			TY169507 LOC43;
			if (!(*s).constraint == 0) goto LA29;
			{
				if (!(((*s).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0)) goto LA33;
				add_169487(&decl, ((NimStringDesc*) &TMP3986));
			}
			LA33: ;
			add_169482(&decl, td);
			{
				if (!(((*s).flags &(1U<<((NU)(((NU8) 8))&31U)))!=0)) goto LA37;
				add_169487(&decl, ((NimStringDesc*) &TMP3866));
			}
			LA37: ;
			{
				if (!(((*s).flags &(1U<<((NU)(((NU8) 7))&31U)))!=0)) goto LA41;
				add_169487(&decl, ((NimStringDesc*) &TMP3867));
			}
			LA41: ;
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC43[0] = (*s).loc.r;
			addf_170205(&decl, ((NimStringDesc*) &TMP3988), LOC43, 1);
		}
		goto LA27;
		LA29: ;
		{
			NimStringDesc* LOC45;
			TY501032 LOC46;
			LOC45 = 0;
			LOC45 = rawNewString((*(*s).constraint).kindU.S3.strval->Sup.len + 3);
appendString(LOC45, (*(*s).constraint).kindU.S3.strval);
appendString(LOC45, ((NimStringDesc*) &TMP4215));
			memset((void*)LOC46, 0, sizeof(LOC46));
			LOC46[0] = td;
			LOC46[1] = (*s).loc.r;
			decl = HEX25_169905(LOC45, LOC46, 2);
		}
		LA27: ;
		add_169482(&(*(*p).module).s[(((NU8) 9))- 0], decl);
	}
	LA22: ;
	{
		if (!(((NI) 0) < (*p).withinloop)) goto LA49;
		resetloc_477732(p, (&(*s).loc));
	}
	LA49: ;
	{
		TY474655 LOC55;
		NimStringDesc* LOC56;
		NimStringDesc* LOC57;
		if (!(((*(*(*p).module).module).options & 163840) == 163840)) goto LA53;
		memset((void*)LOC55, 0, sizeof(LOC55));
		LOC56 = 0;
		LOC56 = rawNewString((*(*(*s).owner).name).s->Sup.len + (*(*s).name).s->Sup.len + 1);
appendString(LOC56, (*(*(*s).owner).name).s);
appendChar(LOC56, 46);
appendString(LOC56, (*(*s).name).s);
		LOC57 = 0;
		LOC57 = nsuNormalize(LOC56);
		LOC55[0] = makecstring_182637(LOC57);
		LOC55[1] = (*s).loc.r;
		LOC55[2] = gentypeinfo_475350((*p).module, (*s).typ);
		appcg_472632((*p).module, &(*(*p).module).s[(((NU8) 15))- 0], ((NimStringDesc*) &TMP4371), LOC55, 3);
	}
	LA53: ;
	}BeforeRet: ;
}

N_NIMCALL(Ropeobj169006*, gentraverseprocforglobal_477432)(Tcgen469026* m, Tsym214822* s) {
	Ropeobj169006* result;
	Ropeobj169006* LOC1;
	Ttraversalclosure476422 c;
	Tcproc469022* p;
	Ropeobj169006* sloc;
	Ropeobj169006* header;
	TY169507 LOC8;
	Ropeobj169006* generatedproc;
	TY474652 LOC9;
	Ropeobj169006** LOC10;
	Ropeobj169006** LOC11;
	Ropeobj169006** LOC12;
	TY169507 LOC13;
	result = 0;
	LOC1 = 0;
	LOC1 = gentypeinfo_475350(m, (*s).loc.t);
	memset((void*)(&c), 0, sizeof(c));
	p = newproc_469193(NIM_NIL, m);
	sloc = (*s).loc.r;
	result = getglobaltempname_473371();
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = (((*s).flags &(1U<<((NU)(((NU8) 22))&31U)))!=0);
		if (!(LOC4)) goto LA5;
		LOC4 = emulatedthreadvars_472949();
		LA5: ;
		if (!LOC4) goto LA6;
		accessthreadlocalvar_472945(p, s);
		sloc = HEX26_169452(((NimStringDesc*) &TMP4007), sloc);
	}
	LA6: ;
	c.visitorfrmt = copyString(((NimStringDesc*) &TMP4372));
	c.p = p;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = result;
	header = HEX25_169905(((NimStringDesc*) &TMP4373), LOC8, 1);
	gentraverseproc_476425((&c), sloc, (*s).loc.t);
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC9[0] = header;
	LOC10 = 0;
	LOC10 = s_469166(p, ((NU8) 0));
	LOC9[1] = (*LOC10);
	LOC11 = 0;
	LOC11 = s_469166(p, ((NU8) 1));
	LOC9[2] = (*LOC11);
	LOC12 = 0;
	LOC12 = s_469166(p, ((NU8) 2));
	LOC9[3] = (*LOC12);
	generatedproc = HEX25_169905(((NimStringDesc*) &TMP3939), LOC9, 4);
	memset((void*)LOC13, 0, sizeof(LOC13));
	LOC13[0] = header;
	addf_170205(&(*m).s[(((NU8) 7))- 0], ((NimStringDesc*) &TMP3864), LOC13, 1);
	add_169482(&(*m).s[(((NU8) 10))- 0], generatedproc);
	return result;
}

N_NIMCALL(void, registergcroot_483404)(Tcproc469022* p, Tsym214822* v) {
	{
		NIM_BOOL LOC3;
		Ropeobj169006* prc;
		Ropeobj169006** LOC7;
		TY169507 LOC8;
		LOC3 = 0;
		LOC3 = ((104 &(1U<<((NU)(gselectedgc_160124)&7U)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = containsgarbagecollectedref_240106((*v).loc.t);
		LA4: ;
		if (!LOC3) goto LA5;
		prc = gentraverseprocforglobal_477432((*p).module, v);
		LOC7 = 0;
		LOC7 = procsec_469181((*(*p).module).initproc, ((NU8) 2));
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = prc;
		appcg_472632((*p).module, LOC7, ((NimStringDesc*) &TMP4374), LOC8, 1);
	}
	LA5: ;
}

static N_INLINE(NIM_BOOL, isassignedimmediately_483423)(Tnode214790* n) {
	NIM_BOOL result;
{	result = 0;
	{
		if (!((*n).kind == ((NU8) 1))) goto LA3;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = isinvalidreturntype_473318((*n).typ);
		if (!LOC7) goto LA8;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA8: ;
	result = NIM_TRUE;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, genasgncall_483201)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* d) {
	{
		Ttype214828* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_218113((*(*ri).kindU.S6.sons->data[((NI) 0)]).typ, 2048);
		if (!((*LOC3).callconv == ((NU8) 8))) goto LA4;
		genclosurecall_479852(p, le, ri, d);
	}
	goto LA1;
	LA4: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = ((*(*ri).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
		if (!(LOC7)) goto LA8;
		LOC7 = (((*(*(*ri).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA8: ;
		if (!LOC7) goto LA9;
		geninfixcall_481329(p, le, ri, d);
	}
	goto LA1;
	LA9: ;
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = ((*(*ri).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
		if (!(LOC12)) goto LA13;
		LOC12 = (((*(*(*ri).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 28))&31U)))!=0);
		LA13: ;
		if (!LOC12) goto LA14;
		gennamedparamcall_482017(p, ri, d);
	}
	goto LA1;
	LA14: ;
	{
		genprefixcall_479360(p, le, ri, d);
	}
	LA1: ;
	poststmtactions_472942(p);
}

static N_INLINE(void, loadinto_483570)(Tcproc469022* p, Tnode214790* le, Tnode214790* ri, Tloc214804* a) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = 0;
		LOC3 = ((*ri).kind == ((NU8) 27) || (*ri).kind == ((NU8) 29) || (*ri).kind == ((NU8) 30) || (*ri).kind == ((NU8) 31) || (*ri).kind == ((NU8) 26) || (*ri).kind == ((NU8) 28) || (*ri).kind == ((NU8) 32));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = !(((*(*ri).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)));
		if (LOC5) goto LA6;
		LOC5 = ((*(*(*ri).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic == ((NU8) 0));
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA7;
		genasgncall_483201(p, le, ri, a);
	}
	goto LA1;
	LA7: ;
	{
		if (!((*ri).kind == ((NU8) 47) || (*ri).kind == ((NU8) 65))) goto LA10;
		genderef_483563(p, ri, a, NIM_TRUE);
	}
	goto LA1;
	LA10: ;
	{
		expr_478648(p, ri, a);
	}
	LA1: ;
}

N_NIMCALL(void, gensinglevar_484076)(Tcproc469022* p, Tnode214790* a) {
	Tsym214822* v;
	Tcproc469022* targetproc;
{	v = (*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	{
		if (!!(((1082130432 & (*v).flags) == 0))) goto LA3;
		{
			if (!(((*v).flags &(1U<<((NU)(((NU8) 30))&31U)))!=0)) goto LA7;
			gengotovar_484058(p, (*a).kindU.S6.sons->data[((NI) 2)]);
		}
		LA7: ;
		goto BeforeRet;
	}
	LA3: ;
	targetproc = p;
	{
		if (!(((*v).flags &(1U<<((NU)(((NU8) 3))&31U)))!=0)) goto LA11;
		{
			NIM_BOOL LOC15;
			NIM_BOOL LOC16;
			LOC15 = 0;
			LOC16 = 0;
			LOC16 = (((*v).flags & 96) == 32);
			if (!(LOC16)) goto LA17;
			LOC16 = ((*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1));
			LA17: ;
			LOC15 = LOC16;
			if (!(LOC15)) goto LA18;
			LOC15 = !((((*v).loc.flags & 72) == 0));
			LA18: ;
			if (!LOC15) goto LA19;
			goto BeforeRet;
		}
		LA19: ;
		{
			if (!(((*v).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0)) goto LA23;
			targetproc = (*(*p).module).preinitproc;
		}
		LA23: ;
		assignglobalvar_478365(targetproc, v);
		genobjectinit_477623((*(*p).module).preinitproc, ((NU8) 1), (*v).typ, (*v).loc, NIM_TRUE);
		{
			NIM_BOOL LOC27;
			LOC27 = 0;
			LOC27 = (((*v).flags &(1U<<((NU)(((NU8) 6))&31U)))!=0);
			if (!(LOC27)) goto LA28;
			LOC27 = !((generatedheader_472201 == NIM_NIL));
			LA28: ;
			if (!LOC27) goto LA29;
			genvarprototypeaux_484054(generatedheader_472201, v);
		}
		LA29: ;
		registergcroot_483404(p, v);
	}
	goto LA9;
	LA11: ;
	{
		Tnode214790* value;
		NIM_BOOL imm;
		value = (*a).kindU.S6.sons->data[((NI) 2)];
		imm = isassignedimmediately_483423(value);
		{
			NIM_BOOL LOC34;
			NIM_BOOL LOC35;
			NIM_BOOL LOC36;
			NIM_BOOL LOC38;
			NIM_BOOL LOC42;
			Ropeobj169006* decl;
			Tloc214804 tmp;
			LOC34 = 0;
			LOC35 = 0;
			LOC36 = 0;
			LOC36 = imm;
			if (!(LOC36)) goto LA37;
			LOC38 = 0;
			LOC38 = (gcmd_160123 == ((NU8) 2));
			if (LOC38) goto LA39;
			LOC38 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
			LA39: ;
			LOC36 = LOC38;
			LA37: ;
			LOC35 = LOC36;
			if (!(LOC35)) goto LA40;
			LOC35 = ((*p).splitdecls == ((NI) 0));
			LA40: ;
			LOC34 = LOC35;
			if (!(LOC34)) goto LA41;
			LOC42 = 0;
			LOC42 = containshiddenpointer_240109((*v).typ);
			LOC34 = !(LOC42);
			LA41: ;
			if (!LOC34) goto LA43;
			genlinedir_472823(p, a);
			decl = localvardecl_478098(p, v);
			memset((void*)(&tmp), 0, sizeof(tmp));
			{
				NIM_BOOL LOC47;
				NIM_BOOL LOC48;
				Tnode214790* LOC50;
				Tnode214790* LOC52;
				Ropeobj169006* params;
				Ttype214828* typ;
				TY501032 LOC66;
				LOC47 = 0;
				LOC48 = 0;
				LOC48 = ((*value).kind == ((NU8) 27) || (*value).kind == ((NU8) 29) || (*value).kind == ((NU8) 30) || (*value).kind == ((NU8) 31) || (*value).kind == ((NU8) 26) || (*value).kind == ((NU8) 28) || (*value).kind == ((NU8) 32));
				if (!(LOC48)) goto LA49;
				LOC50 = 0;
				LOC50 = HEX5BHEX5D_215238(value, ((NI) 0));
				LOC48 = ((*LOC50).kind == ((NU8) 3));
				LA49: ;
				LOC47 = LOC48;
				if (!(LOC47)) goto LA51;
				LOC52 = 0;
				LOC52 = HEX5BHEX5D_215238(value, ((NI) 0));
				LOC47 = (((*(*LOC52).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 24))&31U)))!=0);
				LA51: ;
				if (!LOC47) goto LA53;
				params = 0;
				typ = skiptypes_218113((*(*value).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576256));
				{
					NI i_484419;
					NI HEX3Atmp_484625;
					NI LOC56;
					NI res_484628;
					i_484419 = 0;
					HEX3Atmp_484625 = 0;
					LOC56 = 0;
					LOC56 = len_215059(value);
					HEX3Atmp_484625 = (LOC56 - 1);
					res_484628 = ((NI) 1);
					{
						while (1) {
							Ropeobj169006* LOC65;
							if (!(res_484628 <= HEX3Atmp_484625)) goto LA58;
							i_484419 = res_484628;
							{
								TY473064 LOC63;
								Ropeobj169006* LOC64;
								if (!!((params == NIM_NIL))) goto LA61;
								memset((void*)LOC63, 0, sizeof(LOC63));
								LOC64 = 0;
								LOC64 = HEX25_169905(((NimStringDesc*) &TMP3802), LOC63, 0);
								add_169482(&params, LOC64);
							}
							LA61: ;
							LOC65 = 0;
							LOC65 = genotherarg_478677(p, value, i_484419, typ);
							add_169482(&params, LOC65);
							res_484628 += ((NI) 1);
						} LA58: ;
					}
				}
				memset((void*)LOC66, 0, sizeof(LOC66));
				LOC66[0] = decl;
				LOC66[1] = params;
				linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4375), LOC66, 2);
			}
			goto LA45;
			LA53: ;
			{
				TY501032 LOC68;
				initlocexprsingleuse_478689(p, value, (&tmp));
				memset((void*)LOC68, 0, sizeof(LOC68));
				LOC68[0] = decl;
				LOC68[1] = rdloc_477569(tmp);
				linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4376), LOC68, 2);
			}
			LA45: ;
			goto BeforeRet;
		}
		LA43: ;
		assignlocalvar_478180(p, v);
		initlocalvar_477780(p, v, imm);
	}
	LA9: ;
	{
		if (!!(((*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA71;
		genlinedir_472823(targetproc, a);
		loadinto_483570(targetproc, (*a).kindU.S6.sons->data[((NI) 0)], (*a).kindU.S6.sons->data[((NI) 2)], (&(*v).loc));
	}
	LA71: ;
	}BeforeRet: ;
}

N_NIMCALL(void, genclosurevar_484632)(Tcproc469022* p, Tnode214790* a) {
	NIM_BOOL immediateasgn;
	immediateasgn = !(((*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)));
	{
		Tloc214804 v;
		if (!immediateasgn) goto LA3;
		memset((void*)(&v), 0, sizeof(v));
		initlocexpr_478683(p, (*a).kindU.S6.sons->data[((NI) 0)], (&v));
		genlinedir_472823(p, a);
		loadinto_483570(p, (*a).kindU.S6.sons->data[((NI) 0)], (*a).kindU.S6.sons->data[((NI) 2)], (&v));
	}
	LA3: ;
}

N_NIMCALL(void, genvartuple_483436)(Tcproc469022* p, Tnode214790* n) {
	Tloc214804 tup;
	Tloc214804 field;
	NI L;
	NIM_BOOL uselowering;
	Ttype214828* t;
{	memset((void*)(&tup), 0, sizeof(tup));
	memset((void*)(&field), 0, sizeof(field));
	{
		if (!!(((*n).kind == ((NU8) 36)))) goto LA3;
		internalerror_187100((*n).info, ((NimStringDesc*) &TMP4377));
	}
	LA3: ;
	L = sonslen_217351(n);
	uselowering = NIM_FALSE;
	{
		NI i_483464;
		NI HEX3Atmp_483547;
		NI res_483550;
		i_483464 = 0;
		HEX3Atmp_483547 = 0;
		HEX3Atmp_483547 = (NI)(L - ((NI) 3));
		res_483550 = ((NI) 0);
		{
			while (1) {
				if (!(res_483550 <= HEX3Atmp_483547)) goto LA7;
				i_483464 = res_483550;
				{
					Tnode214790* LOC10;
					LOC10 = 0;
					LOC10 = HEX5BHEX5D_215238(n, i_483464);
					if (!!(((*LOC10).kind == ((NU8) 3)))) goto LA11;
					uselowering = NIM_TRUE;
					goto LA5;
				}
				LA11: ;
				res_483550 += ((NI) 1);
			} LA7: ;
		}
	} LA5: ;
	{
		Tnode214790* LOC17;
		if (!uselowering) goto LA15;
		LOC17 = 0;
		LOC17 = lowertupleunpacking_376039(n, (*p).prc);
		genstmts_478644(p, LOC17);
		goto BeforeRet;
	}
	LA15: ;
	genlinedir_472823(p, n);
	initlocexpr_478683(p, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))], (&tup));
	t = getuniquetype_468640(tup.t);
	{
		NI i_483488;
		NI HEX3Atmp_483556;
		NI res_483559;
		i_483488 = 0;
		HEX3Atmp_483556 = 0;
		HEX3Atmp_483556 = (NI)(L - ((NI) 3));
		res_483559 = ((NI) 0);
		{
			while (1) {
				if (!(res_483559 <= HEX3Atmp_483556)) goto LA20;
				i_483488 = res_483559;
				{
					Tsym214822* v;
					v = (*(*n).kindU.S6.sons->data[i_483488]).kindU.S4.sym;
					{
						if (!(((*v).flags &(1U<<((NU)(((NU8) 23))&31U)))!=0)) goto LA24;
						goto LA21;
					}
					LA24: ;
					{
						if (!(((*v).flags &(1U<<((NU)(((NU8) 3))&31U)))!=0)) goto LA28;
						assignglobalvar_478365(p, v);
						genobjectinit_477623(p, ((NU8) 1), (*v).typ, (*v).loc, NIM_TRUE);
						registergcroot_483404(p, v);
					}
					goto LA26;
					LA28: ;
					{
						Tnode214790* LOC31;
						NIM_BOOL LOC32;
						assignlocalvar_478180(p, v);
						LOC31 = 0;
						LOC31 = HEX5BHEX5D_215238(n, (NI)(L - ((NI) 1)));
						LOC32 = 0;
						LOC32 = isassignedimmediately_483423(LOC31);
						initlocalvar_477780(p, v, LOC32);
					}
					LA26: ;
					initloc_472273((&field), ((NU8) 6), (*t).sons->data[i_483488], tup.s);
					{
						TY501032 LOC37;
						if (!((*t).kind == ((NU8) 18))) goto LA35;
						memset((void*)LOC37, 0, sizeof(LOC37));
						LOC37[0] = rdloc_477569(tup);
						LOC37[1] = rope_169401(((NI64) (i_483488)));
						field.r = HEX25_169905(((NimStringDesc*) &TMP3934), LOC37, 2);
					}
					goto LA33;
					LA35: ;
					{
						TY501032 LOC43;
						{
							if (!!(((*(*(*t).n).kindU.S6.sons->data[i_483488]).kind == ((NU8) 3)))) goto LA41;
							internalerror_187100((*n).info, ((NimStringDesc*) &TMP4377));
						}
						LA41: ;
						memset((void*)LOC43, 0, sizeof(LOC43));
						LOC43[0] = rdloc_477569(tup);
						LOC43[1] = manglerecfieldname_473950((*(*(*t).n).kindU.S6.sons->data[i_483488]).kindU.S4.sym, t);
						field.r = HEX25_169905(((NimStringDesc*) &TMP3836), LOC43, 2);
					}
					LA33: ;
					putlocintodest_478658(p, (&(*v).loc), field);
				} LA21: ;
				res_483559 += ((NI) 1);
			} LA20: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(void, genvarstmt_484654)(Tcproc469022* p, Tnode214790* n) {
	{
		NI i_484669;
		NI HEX3Atmp_484702;
		NI LOC2;
		NI res_484705;
		i_484669 = 0;
		HEX3Atmp_484702 = 0;
		LOC2 = 0;
		LOC2 = sonslen_217351(n);
		HEX3Atmp_484702 = (NI)(LOC2 - ((NI) 1));
		res_484705 = ((NI) 0);
		{
			while (1) {
				if (!(res_484705 <= HEX3Atmp_484702)) goto LA4;
				i_484669 = res_484705;
				{
					Tnode214790* a;
					a = (*n).kindU.S6.sons->data[i_484669];
					{
						if (!((*a).kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!((*a).kind == ((NU8) 35))) goto LA12;
						{
							if (!((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3))) goto LA16;
							gensinglevar_484076(p, a);
						}
						goto LA14;
						LA16: ;
						{
							genclosurevar_484632(p, a);
						}
						LA14: ;
					}
					goto LA10;
					LA12: ;
					{
						genvartuple_483436(p, a);
					}
					LA10: ;
				} LA5: ;
				res_484705 += ((NI) 1);
			} LA4: ;
		}
	}
}

static N_INLINE(NIM_BOOL, emitlazily_472248)(Tsym214822* s) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	Tsym214822* LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((gglobaloptions_160121 &(1U<<((NU)(((NU8) 2))&31U)))!=0);
	if (LOC1) goto LA2;
	LOC3 = 0;
	LOC3 = getmodule_221144(s);
	LOC1 = (((*LOC3).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genconststmt_484709)(Tcproc469022* p, Tnode214790* t) {
	{
		NI i_484724;
		NI HEX3Atmp_484786;
		NI LOC2;
		NI res_484789;
		i_484724 = 0;
		HEX3Atmp_484786 = 0;
		LOC2 = 0;
		LOC2 = sonslen_217351(t);
		HEX3Atmp_484786 = (NI)(LOC2 - ((NI) 1));
		res_484789 = ((NI) 0);
		{
			while (1) {
				if (!(res_484789 <= HEX3Atmp_484786)) goto LA4;
				i_484724 = res_484789;
				{
					Tnode214790* it;
					Tsym214822* c;
					it = (*t).kindU.S6.sons->data[i_484724];
					{
						if (!((*it).kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!!(((*it).kind == ((NU8) 102)))) goto LA12;
						internalerror_187100((*t).info, ((NimStringDesc*) &TMP4378));
					}
					LA12: ;
					c = (*(*it).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
					{
						NIM_BOOL LOC16;
						LOC16 = 0;
						LOC16 = containscompiletimeonly_248921((*c).typ);
						if (!LOC16) goto LA17;
						goto LA5;
					}
					LA17: ;
					{
						if (!(((*c).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0)) goto LA21;
						gensinglevar_484076(p, it);
					}
					goto LA19;
					LA21: ;
					{
						NIM_BOOL LOC24;
						NIM_BOOL LOC25;
						NI LOC28;
						LOC24 = 0;
						LOC25 = 0;
						LOC25 = ((*(*c).typ).kind == ((NU8) 4) || (*(*c).typ).kind == ((NU8) 16) || (*(*c).typ).kind == ((NU8) 19) || (*(*c).typ).kind == ((NU8) 18) || (*(*c).typ).kind == ((NU8) 24));
						if (!(LOC25)) goto LA26;
						LOC25 = !((((*c).loc.flags &(1U<<((NU)(((NU8) 3))&15U)))!=0));
						LA26: ;
						LOC24 = LOC25;
						if (!(LOC24)) goto LA27;
						LOC28 = 0;
						LOC28 = len_215059((*c).ast);
						LOC24 = !((LOC28 == ((NI) 0)));
						LA27: ;
						if (!LOC24) goto LA29;
						{
							NIM_BOOL LOC33;
							LOC33 = 0;
							LOC33 = emitlazily_472248(c);
							if (!!(LOC33)) goto LA34;
							requestconstimpl_478640(p, c);
						}
						LA34: ;
					}
					goto LA19;
					LA29: ;
					LA19: ;
				} LA5: ;
				res_484789 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, gencasestringbranch_486881)(Tcproc469022* p, Tnode214790* b, Tloc214804 e, Ropeobj169006* labl, Ropeobj169006** branches, NI branchesLen0) {
	Tloc214804 x;
	NI length;
	memset((void*)(&x), 0, sizeof(x));
	length = sonslen_217351(b);
	{
		NI i_486903;
		NI HEX3Atmp_487209;
		NI res_487212;
		i_486903 = 0;
		HEX3Atmp_487209 = 0;
		HEX3Atmp_487209 = (NI)(length - ((NI) 2));
		res_487212 = ((NI) 0);
		{
			while (1) {
				NI j;
				NI64 LOC4;
				TY474655 LOC5;
				if (!(res_487212 <= HEX3Atmp_487209)) goto LA3;
				i_486903 = res_487212;
				initlocexpr_478683(p, (*b).kindU.S6.sons->data[i_486903], (&x));
				LOC4 = 0;
				LOC4 = hashstring_468102((*(*b).kindU.S6.sons->data[i_486903]).kindU.S3.strval);
				j = ((NI) ((NI64)(LOC4 & ((NI64) ((branchesLen0-1))))));
				memset((void*)LOC5, 0, sizeof(LOC5));
				LOC5[0] = rdloc_477569(e);
				LOC5[1] = rdloc_477569(x);
				LOC5[2] = labl;
				appcg_472632((*p).module, &branches[j], ((NimStringDesc*) &TMP4380), LOC5, 3);
				res_487212 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(void, exprblock_483745)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	TY473064 LOC1;
	NI LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC1, 0);
	expr_478648(p, n, d);
	endblock_483702(p);
}

N_NIMCALL(Ropeobj169006*, gencasesecondpass_486755)(Tcproc469022* p, Tnode214790* t, Tloc214804* d, NI labid, NI until) {
	Ropeobj169006* result;
	Ropeobj169006* lend;
	result = 0;
	lend = getlabel_478617(p);
	{
		NI i_486774;
		NI res_486798;
		i_486774 = 0;
		res_486798 = ((NI) 1);
		{
			while (1) {
				TY169507 LOC4;
				if (!(res_486798 <= until)) goto LA3;
				i_486774 = res_486798;
				memset((void*)LOC4, 0, sizeof(LOC4));
				LOC4[0] = rope_169401(((NI64) ((NI)(labid + i_486774))));
				linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4384), LOC4, 1);
				{
					NI length;
					TY169507 LOC9;
					if (!((*(*t).kindU.S6.sons->data[i_486774]).kind == ((NU8) 85))) goto LA7;
					length = sonslen_217351((*t).kindU.S6.sons->data[i_486774]);
					exprblock_483745(p, (*(*t).kindU.S6.sons->data[i_486774]).kindU.S6.sons->data[(NI)(length - ((NI) 1))], d);
					memset((void*)LOC9, 0, sizeof(LOC9));
					LOC9[0] = lend;
					linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4336), LOC9, 1);
				}
				goto LA5;
				LA7: ;
				{
					exprblock_483745(p, (*(*t).kindU.S6.sons->data[i_486774]).kindU.S6.sons->data[((NI) 0)], d);
				}
				LA5: ;
				res_486798 += ((NI) 1);
			} LA3: ;
		}
	}
	result = lend;
	return result;
}

N_NIMCALL(void, gencasegenericbranch_486700)(Tcproc469022* p, Tnode214790* b, Tloc214804 e, NimStringDesc* rangeformat, NimStringDesc* eqformat, Ropeobj169006* labl) {
	Tloc214804 x;
	Tloc214804 y;
	NI length;
	memset((void*)(&x), 0, sizeof(x));
	memset((void*)(&y), 0, sizeof(y));
	length = sonslen_217351(b);
	{
		NI i_486722;
		NI HEX3Atmp_486748;
		NI res_486751;
		i_486722 = 0;
		HEX3Atmp_486748 = 0;
		HEX3Atmp_486748 = (NI)(length - ((NI) 2));
		res_486751 = ((NI) 0);
		{
			while (1) {
				if (!(res_486751 <= HEX3Atmp_486748)) goto LA3;
				i_486722 = res_486751;
				{
					TY474652 LOC8;
					if (!((*(*b).kindU.S6.sons->data[i_486722]).kind == ((NU8) 44))) goto LA6;
					initlocexpr_478683(p, (*(*b).kindU.S6.sons->data[i_486722]).kindU.S6.sons->data[((NI) 0)], (&x));
					initlocexpr_478683(p, (*(*b).kindU.S6.sons->data[i_486722]).kindU.S6.sons->data[((NI) 1)], (&y));
					memset((void*)LOC8, 0, sizeof(LOC8));
					LOC8[0] = rdcharloc_477608(e);
					LOC8[1] = rdcharloc_477608(x);
					LOC8[2] = rdcharloc_477608(y);
					LOC8[3] = labl;
					linecg_472707(p, ((NU8) 2), rangeformat, LOC8, 4);
				}
				goto LA4;
				LA6: ;
				{
					TY474655 LOC10;
					initlocexpr_478683(p, (*b).kindU.S6.sons->data[i_486722], (&x));
					memset((void*)LOC10, 0, sizeof(LOC10));
					LOC10[0] = rdcharloc_477608(e);
					LOC10[1] = rdcharloc_477608(x);
					LOC10[2] = labl;
					linecg_472707(p, ((NU8) 2), eqformat, LOC10, 3);
				}
				LA4: ;
				res_486751 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(Ropeobj169006*, genifforcaseuntil_486802)(Tcproc469022* p, Tnode214790* t, Tloc214804* d, NimStringDesc* rangeformat, NimStringDesc* eqformat, NI until, Tloc214804 a) {
	Ropeobj169006* result;
	NI labid;
	result = 0;
	labid = (*p).labels;
	{
		NI i_486823;
		NI res_486864;
		i_486823 = 0;
		res_486864 = ((NI) 1);
		{
			while (1) {
				if (!(res_486864 <= until)) goto LA3;
				i_486823 = res_486864;
				(*p).labels += ((NI) 1);
				{
					Ropeobj169006* LOC8;
					Ropeobj169006* LOC9;
					if (!((*(*t).kindU.S6.sons->data[i_486823]).kind == ((NU8) 85))) goto LA6;
					LOC8 = 0;
					LOC8 = rope_169401(((NI64) ((*p).labels)));
					LOC9 = 0;
					LOC9 = HEX26_169452(((NimStringDesc*) &TMP4016), LOC8);
					gencasegenericbranch_486700(p, (*t).kindU.S6.sons->data[i_486823], a, rangeformat, eqformat, LOC9);
				}
				goto LA4;
				LA6: ;
				{
					TY169507 LOC11;
					memset((void*)LOC11, 0, sizeof(LOC11));
					LOC11[0] = rope_169401(((NI64) ((*p).labels)));
					linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4383), LOC11, 1);
				}
				LA4: ;
				res_486864 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NI LOC14;
		NI gototarget;
		TY169507 LOC17;
		TY169507 LOC18;
		LOC14 = 0;
		LOC14 = len_215059(t);
		if (!(until < (NI)(LOC14 - ((NI) 1)))) goto LA15;
		(*p).labels += ((NI) 1);
		gototarget = (*p).labels;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = rope_169401(((NI64) (gototarget)));
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4383), LOC17, 1);
		result = gencasesecondpass_486755(p, t, d, ((NI) (labid)), until);
		memset((void*)LOC18, 0, sizeof(LOC18));
		LOC18[0] = rope_169401(((NI64) (gototarget)));
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4384), LOC18, 1);
	}
	goto LA12;
	LA15: ;
	{
		result = gencasesecondpass_486755(p, t, d, ((NI) (labid)), until);
	}
	LA12: ;
	return result;
}

N_NIMCALL(void, gencasegeneric_486868)(Tcproc469022* p, Tnode214790* t, Tloc214804* d, NimStringDesc* rangeformat, NimStringDesc* eqformat) {
	Tloc214804 a;
	Ropeobj169006* lend;
	NI LOC1;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*t).kindU.S6.sons->data[((NI) 0)], (&a));
	LOC1 = 0;
	LOC1 = sonslen_217351(t);
	lend = genifforcaseuntil_486802(p, t, d, rangeformat, eqformat, (NI)(LOC1 - ((NI) 1)), a);
	fixlabel_478630(p, lend);
}

N_NIMCALL(void, genstringcase_487216)(Tcproc469022* p, Tnode214790* t, Tloc214804* d) {
	NI strings;
	strings = ((NI) 0);
	{
		NI i_487234;
		NI HEX3Atmp_487349;
		NI LOC2;
		NI res_487352;
		i_487234 = 0;
		HEX3Atmp_487349 = 0;
		LOC2 = 0;
		LOC2 = sonslen_217351(t);
		HEX3Atmp_487349 = (NI)(LOC2 - ((NI) 1));
		res_487352 = ((NI) 1);
		{
			while (1) {
				if (!(res_487352 <= HEX3Atmp_487349)) goto LA4;
				i_487234 = res_487352;
				{
					NI LOC9;
					if (!((*(*t).kindU.S6.sons->data[i_487234]).kind == ((NU8) 85))) goto LA7;
					LOC9 = 0;
					LOC9 = sonslen_217351((*t).kindU.S6.sons->data[i_487234]);
					strings += (NI)(LOC9 - ((NI) 1));
				}
				LA7: ;
				res_487352 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NI bitmask;
		NI LOC14;
		TY182350* branches;
		Tloc214804 a;
		NI labid;
		TY501032 LOC26;
		TY473064 LOC35;
		Ropeobj169006* lend;
		NI LOC42;
		if (!(((NI) 8) < strings)) goto LA12;
		LOC14 = 0;
		LOC14 = nextpoweroftwo_155627(strings);
		bitmask = (NI)(LOC14 - ((NI) 1));
		branches = 0;
		branches = (TY182350*) newSeq((&NTI182350), ((NI) ((NI)(bitmask + ((NI) 1)))));
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_478683(p, (*t).kindU.S6.sons->data[((NI) 0)], (&a));
		labid = (*p).labels;
		{
			NI i_487283;
			NI HEX3Atmp_487359;
			NI LOC16;
			NI res_487362;
			i_487283 = 0;
			HEX3Atmp_487359 = 0;
			LOC16 = 0;
			LOC16 = sonslen_217351(t);
			HEX3Atmp_487359 = (NI)(LOC16 - ((NI) 1));
			res_487362 = ((NI) 1);
			{
				while (1) {
					if (!(res_487362 <= HEX3Atmp_487359)) goto LA18;
					i_487283 = res_487362;
					(*p).labels += ((NI) 1);
					{
						Ropeobj169006* LOC23;
						Ropeobj169006* LOC24;
						if (!((*(*t).kindU.S6.sons->data[i_487283]).kind == ((NU8) 85))) goto LA21;
						LOC23 = 0;
						LOC23 = rope_169401(((NI64) ((*p).labels)));
						LOC24 = 0;
						LOC24 = HEX26_169452(((NimStringDesc*) &TMP4016), LOC23);
						gencasestringbranch_486881(p, (*t).kindU.S6.sons->data[i_487283], a, LOC24, branches->data, branches->Sup.len);
					}
					goto LA19;
					LA21: ;
					{
					}
					LA19: ;
					res_487362 += ((NI) 1);
				} LA18: ;
			}
		}
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = rdloc_477569(a);
		LOC26[1] = rope_169401(((NI64) (bitmask)));
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4381), LOC26, 2);
		{
			NI j_487317;
			NI HEX3Atmp_487367;
			NI res_487370;
			j_487317 = 0;
			HEX3Atmp_487367 = 0;
			HEX3Atmp_487367 = (branches ? (branches->Sup.len-1) : -1);
			res_487370 = ((NI) 0);
			{
				while (1) {
					if (!(res_487370 <= HEX3Atmp_487367)) goto LA29;
					j_487317 = res_487370;
					{
						TY501032 LOC34;
						if (!!((branches->data[j_487317] == NIM_NIL))) goto LA32;
						memset((void*)LOC34, 0, sizeof(LOC34));
						LOC34[0] = intliteral_478670(((NI64) (j_487317)));
						LOC34[1] = branches->data[j_487317];
						linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4382), LOC34, 2);
					}
					LA32: ;
					res_487370 += ((NI) 1);
				} LA29: ;
			}
		}
		memset((void*)LOC35, 0, sizeof(LOC35));
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3904), LOC35, 0);
		{
			NI LOC38;
			TY169507 LOC41;
			LOC38 = 0;
			LOC38 = sonslen_217351(t);
			if (!!(((*(*t).kindU.S6.sons->data[(NI)(LOC38 - ((NI) 1))]).kind == ((NU8) 85)))) goto LA39;
			memset((void*)LOC41, 0, sizeof(LOC41));
			LOC41[0] = rope_169401(((NI64) ((*p).labels)));
			linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4383), LOC41, 1);
		}
		LA39: ;
		LOC42 = 0;
		LOC42 = sonslen_217351(t);
		lend = gencasesecondpass_486755(p, t, d, ((NI) (labid)), (NI)(LOC42 - ((NI) 1)));
		fixlabel_478630(p, lend);
	}
	goto LA10;
	LA12: ;
	{
		gencasegeneric_486868(p, t, d, ((NimStringDesc*) &TMP4209), ((NimStringDesc*) &TMP4380));
	}
	LA10: ;
}

N_NIMCALL(void, gengotoforcase_485482)(Tcproc469022* p, Tnode214790* casestmt) {
{	{
		NI i_485504;
		NI HEX3Atmp_485546;
		NI LOC2;
		NI res_485549;
		i_485504 = 0;
		HEX3Atmp_485546 = 0;
		LOC2 = 0;
		LOC2 = len_215059(casestmt);
		HEX3Atmp_485546 = (LOC2 - 1);
		res_485549 = ((NI) 1);
		{
			while (1) {
				TY473064 LOC5;
				NI LOC6;
				Tnode214790* it;
				Tnode214790* LOC16;
				if (!(res_485549 <= HEX3Atmp_485546)) goto LA4;
				i_485504 = res_485549;
				memset((void*)LOC5, 0, sizeof(LOC5));
				LOC6 = 0;
				LOC6 = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC5, 0);
				it = (*casestmt).kindU.S6.sons->data[i_485504];
				{
					NI j_485520;
					NI HEX3Atmp_485539;
					NI LOC8;
					NI res_485542;
					j_485520 = 0;
					HEX3Atmp_485539 = 0;
					LOC8 = 0;
					LOC8 = len_215059(it);
					HEX3Atmp_485539 = (NI)(LOC8 - ((NI) 2));
					res_485542 = ((NI) 0);
					{
						while (1) {
							NI64 val;
							TY169507 LOC15;
							if (!(res_485542 <= HEX3Atmp_485539)) goto LA10;
							j_485520 = res_485542;
							{
								if (!((*(*it).kindU.S6.sons->data[j_485520]).kind == ((NU8) 44))) goto LA13;
								localerror_187085((*it).info, ((NimStringDesc*) &TMP4358));
								goto BeforeRet;
							}
							LA13: ;
							val = getordvalue_240118((*it).kindU.S6.sons->data[j_485520]);
							memset((void*)LOC15, 0, sizeof(LOC15));
							LOC15[0] = rope_169401(val);
							linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4387), LOC15, 1);
							res_485542 += ((NI) 1);
						} LA10: ;
					}
				}
				LOC16 = 0;
				LOC16 = lastson_217364(it);
				genstmts_478644(p, LOC16);
				endblock_483702(p);
				res_485549 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(NIM_BOOL, branchhastoobigrange_487375)(Tnode214790* b) {
	NIM_BOOL result;
{	result = 0;
	{
		NI i_487390;
		NI HEX3Atmp_487408;
		NI LOC2;
		NI res_487411;
		i_487390 = 0;
		HEX3Atmp_487408 = 0;
		LOC2 = 0;
		LOC2 = sonslen_217351(b);
		HEX3Atmp_487408 = (NI)(LOC2 - ((NI) 2));
		res_487411 = ((NI) 0);
		{
			while (1) {
				if (!(res_487411 <= HEX3Atmp_487408)) goto LA4;
				i_487390 = res_487411;
				{
					NIM_BOOL LOC7;
					LOC7 = 0;
					LOC7 = ((*(*b).kindU.S6.sons->data[i_487390]).kind == ((NU8) 44));
					if (!(LOC7)) goto LA8;
					LOC7 = (IL64(256) < (NI64)((*(*(*b).kindU.S6.sons->data[i_487390]).kindU.S6.sons->data[((NI) 1)]).kindU.S1.intval - (*(*(*b).kindU.S6.sons->data[i_487390]).kindU.S6.sons->data[((NI) 0)]).kindU.S1.intval));
					LA8: ;
					if (!LOC7) goto LA9;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA9: ;
				res_487411 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NI, ifswitchsplitpoint_487415)(Tcproc469022* p, Tnode214790* n) {
	NI result;
	result = 0;
	{
		NI i_487430;
		NI HEX3Atmp_487454;
		NI LOC2;
		NI res_487457;
		i_487430 = 0;
		HEX3Atmp_487454 = 0;
		LOC2 = 0;
		LOC2 = len_215059(n);
		HEX3Atmp_487454 = (NI)(LOC2 - ((NI) 1));
		res_487457 = ((NI) 1);
		{
			while (1) {
				Tnode214790* branch;
				Tnode214790* stmtblock;
				if (!(res_487457 <= HEX3Atmp_487454)) goto LA4;
				i_487430 = res_487457;
				branch = HEX5BHEX5D_215238(n, i_487430);
				stmtblock = lastson_217364(branch);
				{
					NIM_BOOL LOC7;
					LOC7 = 0;
					LOC7 = stmtscontainpragma_468085(stmtblock, ((NU16) 179));
					if (!LOC7) goto LA8;
					result = i_487430;
				}
				goto LA5;
				LA8: ;
				{
					if (!!(((Cc_194413[(ccompiler_194431)- 1].Field20 &(1U<<((NU)(((NU8) 0))&7U)))!=0))) goto LA11;
					{
						NIM_BOOL LOC15;
						LOC15 = 0;
						LOC15 = ((*branch).kind == ((NU8) 85));
						if (!(LOC15)) goto LA16;
						LOC15 = branchhastoobigrange_487375(branch);
						LA16: ;
						if (!LOC15) goto LA17;
						result = i_487430;
					}
					LA17: ;
				}
				goto LA5;
				LA11: ;
				LA5: ;
				res_487457 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(void, genordinalcase_487524)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	NI splitpoint;
	Tloc214804 a;
	Ropeobj169006* lend;
	splitpoint = ifswitchsplitpoint_487415(p, n);
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 0)], (&a));
	{
		if (!(((NI) 0) < splitpoint)) goto LA3;
		lend = genifforcaseuntil_486802(p, n, d, ((NimStringDesc*) &TMP4385), ((NimStringDesc*) &TMP4386), splitpoint, a);
	}
	goto LA1;
	LA3: ;
	{
		lend = NIM_NIL;
	}
	LA1: ;
	{
		NI LOC8;
		TY169507 LOC11;
		NIM_BOOL hasdefault;
		TY473064 LOC31;
		LOC8 = 0;
		LOC8 = len_215059(n);
		if (!((NI)(splitpoint + ((NI) 1)) < LOC8)) goto LA9;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = rdcharloc_477608(a);
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4388), LOC11, 1);
		hasdefault = NIM_FALSE;
		{
			NI i_487557;
			NI HEX3Atmp_487607;
			NI HEX3Atmp_487608;
			NI LOC13;
			NI res_487611;
			i_487557 = 0;
			HEX3Atmp_487607 = 0;
			HEX3Atmp_487608 = 0;
			HEX3Atmp_487607 = (NI)(splitpoint + ((NI) 1));
			LOC13 = 0;
			LOC13 = len_215059(n);
			HEX3Atmp_487608 = (LOC13 - 1);
			res_487611 = HEX3Atmp_487607;
			{
				while (1) {
					Tnode214790* branch;
					Tnode214790* LOC22;
					TY473064 LOC23;
					if (!(res_487611 <= HEX3Atmp_487608)) goto LA15;
					i_487557 = res_487611;
					branch = HEX5BHEX5D_215238(n, i_487557);
					{
						if (!((*branch).kind == ((NU8) 85))) goto LA18;
						gencaserange_476431(p, branch);
					}
					goto LA16;
					LA18: ;
					{
						TY473064 LOC21;
						memset((void*)LOC21, 0, sizeof(LOC21));
						linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3930), LOC21, 0);
						hasdefault = NIM_TRUE;
					}
					LA16: ;
					LOC22 = 0;
					LOC22 = lastson_217364(branch);
					exprblock_483745(p, LOC22, d);
					memset((void*)LOC23, 0, sizeof(LOC23));
					linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3931), LOC23, 0);
					res_487611 += ((NI) 1);
				} LA15: ;
			}
		}
		{
			NIM_BOOL LOC26;
			TY473064 LOC30;
			LOC26 = 0;
			LOC26 = ((Cc_194413[(ccompiler_194431)- 1].Field20 &(1U<<((NU)(((NU8) 3))&7U)))!=0);
			if (!(LOC26)) goto LA27;
			LOC26 = !(hasdefault);
			LA27: ;
			if (!LOC26) goto LA28;
			memset((void*)LOC30, 0, sizeof(LOC30));
			linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4389), LOC30, 0);
		}
		LA28: ;
		memset((void*)LOC31, 0, sizeof(LOC31));
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3904), LOC31, 0);
	}
	LA9: ;
	{
		if (!!((lend == NIM_NIL))) goto LA34;
		fixlabel_478630(p, lend);
	}
	LA34: ;
}

N_NIMCALL(void, gencase_487617)(Tcproc469022* p, Tnode214790* t, Tloc214804* d) {
	Ttype214828* LOC8;
	genlinedir_472823(p, t);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_219513((*t).typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).k == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_476435(p, (*t).typ, d, NIM_FALSE);
	}
	LA6: ;
	LOC8 = 0;
	LOC8 = skiptypes_218113((*(*t).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106242013440));
	switch ((*LOC8).kind) {
	case ((NU8) 28):
	{
		genstringcase_487216(p, t, d);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		gencasegeneric_486868(p, t, d, ((NimStringDesc*) &TMP4385), ((NimStringDesc*) &TMP4386));
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = ((*(*t).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
			if (!(LOC14)) goto LA15;
			LOC14 = (((*(*(*t).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 30))&31U)))!=0);
			LA15: ;
			if (!LOC14) goto LA16;
			gengotoforcase_485482(p, t);
		}
		goto LA12;
		LA16: ;
		{
			genordinalcase_487524(p, t, d);
		}
		LA12: ;
	}
	break;
	}
}

static N_INLINE(Tnode214790*, pop_485305)(Tnodeseq214784** s) {
	Tnode214790* result;
	NI L;
	result = 0;
	L = (NI)(((*s) ? (*s)->Sup.len : 0) - ((NI) 1));
	result = (*s)->data[L];
	(*s) = (Tnodeseq214784*) setLengthSeq(&((*s))->Sup, sizeof(Tnode214790*), ((NI) (L)));
	return result;
}

N_NIMCALL(void, blockleaveactions_485242)(Tcproc469022* p, NI howmanytrys, NI howmanyexcepts) {
	Tnodeseq214784* stack;
	NI alreadypoppedcnt;
	stack = 0;
	stack = (Tnodeseq214784*) newSeq((&NTI214784), ((NI) 0));
	alreadypoppedcnt = (*p).inexceptblock;
	{
		NI i_485271;
		NI res_485415;
		i_485271 = 0;
		res_485415 = ((NI) 1);
		{
			while (1) {
				Tnode214790* trystmt;
				Tnode214790* finallystmt;
				if (!(res_485415 <= howmanytrys)) goto LA3;
				i_485271 = res_485415;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = (gcmd_160123 == ((NU8) 2));
					if (LOC6) goto LA7;
					LOC6 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
					LA7: ;
					if (!!(LOC6)) goto LA8;
					{
						if (!(((NI) 0) < alreadypoppedcnt)) goto LA12;
						alreadypoppedcnt -= ((NI) 1);
					}
					goto LA10;
					LA12: ;
					{
						TY473064 LOC15;
						memset((void*)LOC15, 0, sizeof(LOC15));
						linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4390), LOC15, 0);
					}
					LA10: ;
				}
				LA8: ;
				trystmt = pop_485305((&(*p).nestedtrystmts));
				stack = (Tnodeseq214784*) incrSeqV2(&(stack)->Sup, sizeof(Tnode214790*));
				asgnRefNoCycle((void**) (&stack->data[stack->Sup.len]), trystmt);
				++stack->Sup.len;
				finallystmt = lastson_217364(trystmt);
				{
					if (!((*finallystmt).kind == ((NU8) 107))) goto LA18;
					genstmts_478644(p, (*finallystmt).kindU.S6.sons->data[((NI) 0)]);
				}
				LA18: ;
				res_485415 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NI i_485365;
		NI HEX3Atmp_485420;
		NI res_485423;
		i_485365 = 0;
		HEX3Atmp_485420 = 0;
		HEX3Atmp_485420 = (NI)(howmanytrys - ((NI) 1));
		res_485423 = HEX3Atmp_485420;
		{
			while (1) {
				if (!(((NI) 0) <= res_485423)) goto LA22;
				i_485365 = res_485423;
				(*p).nestedtrystmts = (Tnodeseq214784*) incrSeqV2(&((*p).nestedtrystmts)->Sup, sizeof(Tnode214790*));
				asgnRefNoCycle((void**) (&(*p).nestedtrystmts->data[(*p).nestedtrystmts->Sup.len]), stack->data[i_485365]);
				++(*p).nestedtrystmts->Sup.len;
				res_485423 -= ((NI) 1);
			} LA22: ;
		}
	}
	{
		NIM_BOOL LOC25;
		LOC25 = 0;
		LOC25 = (gcmd_160123 == ((NU8) 2));
		if (LOC25) goto LA26;
		LOC25 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA26: ;
		if (!!(LOC25)) goto LA27;
		{
			NI i_485406;
			NI HEX3Atmp_485429;
			NI res_485432;
			i_485406 = 0;
			HEX3Atmp_485429 = 0;
			HEX3Atmp_485429 = (NI)(howmanyexcepts - ((NI) 1));
			res_485432 = HEX3Atmp_485429;
			{
				while (1) {
					TY473064 LOC32;
					if (!(((NI) 0) <= res_485432)) goto LA31;
					i_485406 = res_485432;
					memset((void*)LOC32, 0, sizeof(LOC32));
					linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4391), LOC32, 0);
					res_485432 -= ((NI) 1);
				} LA31: ;
			}
		}
	}
	LA27: ;
}

N_NIMCALL(void, genreturnstmt_485436)(Tcproc469022* p, Tnode214790* t) {
	TY473064 LOC10;
	(*p).beforeretneeded = NIM_TRUE;
	genlinedir_472823(p, t);
	{
		if (!!(((*(*t).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA3;
		genstmts_478644(p, (*t).kindU.S6.sons->data[((NI) 0)]);
	}
	LA3: ;
	blockleaveactions_485242(p, ((*p).nestedtrystmts ? (*p).nestedtrystmts->Sup.len : 0), (*p).inexceptblock);
	{
		Ropeobj169006* safepoint;
		TY169507 LOC9;
		if (!(((NI) 0) < ((*p).finallysafepoints ? (*p).finallysafepoints->Sup.len : 0))) goto LA7;
		safepoint = (*p).finallysafepoints->data[(NI)(((*p).finallysafepoints ? (*p).finallysafepoints->Sup.len : 0) - ((NI) 1))];
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = safepoint;
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4392), LOC9, 1);
	}
	LA7: ;
	memset((void*)LOC10, 0, sizeof(LOC10));
	linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4393), LOC10, 0);
}

N_NIMCALL(void, genbreakstmt_486244)(Tcproc469022* p, Tnode214790* t) {
	NI idx;
	Ropeobj169006* label;
	TY169507 LOC16;
	idx = (*p).breakidx;
	{
		Tsym214822* sym;
		if (!!(((*(*t).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA3;
		sym = (*(*t).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		idx = (NI)((*sym).position - ((NI) 1));
	}
	goto LA1;
	LA3: ;
	{
		{
			while (1) {
				NIM_BOOL LOC8;
				LOC8 = 0;
				LOC8 = (((NI) 0) <= idx);
				if (!(LOC8)) goto LA9;
				LOC8 = !((*p).blocks->data[idx].isloop);
				LA9: ;
				if (!LOC8) goto LA7;
				idx -= ((NI) 1);
			} LA7: ;
		}
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = (idx < ((NI) 0));
			if (LOC12) goto LA13;
			LOC12 = !((*p).blocks->data[idx].isloop);
			LA13: ;
			if (!LOC12) goto LA14;
			internalerror_187100((*t).info, ((NimStringDesc*) &TMP4394));
		}
		LA14: ;
	}
	LA1: ;
	label = assignlabel_483662((&(*p).blocks->data[idx]));
	blockleaveactions_485242(p, (NI)(((*p).nestedtrystmts ? (*p).nestedtrystmts->Sup.len : 0) - ((NI) ((*p).blocks->data[idx].nestedtrystmts))), (NI)((*p).inexceptblock - ((NI) ((*p).blocks->data[idx].nestedexceptstmts))));
	genlinedir_472823(p, t);
	memset((void*)LOC16, 0, sizeof(LOC16));
	LOC16[0] = label;
	linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4336), LOC16, 1);
}

N_NIMCALL(NIM_BOOL, fielddiscriminantcheckneeded_489080)(Tcproc469022* p, Tnode214790* asgn) {
	NIM_BOOL result;
	result = 0;
	{
		Tnode214790* le;
		if (!(((*p).options &(1U<<((NU)(((NU8) 2))&31U)))!=0)) goto LA3;
		le = (*asgn).kindU.S6.sons->data[((NI) 0)];
		{
			Tsym214822* field;
			if (!((*le).kind == ((NU8) 46))) goto LA7;
			field = (*(*(*le).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)]).kindU.S4.sym;
			result = (((*field).flags &(1U<<((NU)(((NU8) 18))&31U)))!=0);
		}
		goto LA5;
		LA7: ;
		{
			Tsym214822* field;
			if (!((*le).kind == ((NU8) 45))) goto LA10;
			field = (*(*le).kindU.S6.sons->data[((NI) 1)]).kindU.S4.sym;
			result = (((*field).flags &(1U<<((NU)(((NU8) 18))&31U)))!=0);
		}
		goto LA5;
		LA10: ;
		LA5: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, discriminatortabledecl_475493)(Tcgen469026* m, Ttype214828* objtype, Tsym214822* d) {
	Ropeobj169006* result;
	Ropeobj169006* LOC1;
	Ropeobj169006* tmp;
	TY501032 LOC2;
	NI64 LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_472403(m, ((NimStringDesc*) &TMP3873));
	tmp = discriminatortablename_475456(m, objtype, d);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = tmp;
	LOC3 = 0;
	LOC3 = lengthord_240007((*d).typ);
	LOC2[1] = rope_169401((NI64)(LOC3 + IL64(1)));
	result = HEX25_169905(((NimStringDesc*) &TMP3951), LOC2, 2);
	return result;
}

N_NIMCALL(void, gendiscriminantcheck_489144)(Tcproc469022* p, Tloc214804 a, Tloc214804 tmp, Ttype214828* objtype, Tsym214822* field) {
	Ttype214828* t;
	Ropeobj169006* LOC1;
	NI64 L;
	TY474652 LOC8;
	t = skiptypes_218113(objtype, IL64(211106240964864));
	LOC1 = 0;
	LOC1 = gentypeinfo_475350((*p).module, t);
	L = lengthord_240007((*field).typ);
	{
		NIM_BOOL LOC4;
		TY169507 LOC7;
		LOC4 = 0;
		LOC4 = containsorincl_211862((&(*(*p).module).declaredthings), (*field).Sup.id);
		if (!!(LOC4)) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = discriminatortabledecl_475493((*p).module, t, field);
		appcg_472640((*p).module, ((NU8) 9), ((NimStringDesc*) &TMP4395), LOC7, 1);
	}
	LA5: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rdloc_477569(a);
	LOC8[1] = rdloc_477569(tmp);
	LOC8[2] = discriminatortablename_475456((*p).module, t, field);
	LOC8[3] = intliteral_478670((NI64)(L + IL64(1)));
	linecg_472707(p, ((NU8) 2), ((NimStringDesc*) &TMP4396), LOC8, 4);
}

N_NIMCALL(void, asgnfielddiscriminant_489209)(Tcproc469022* p, Tnode214790* e) {
	Tloc214804 a;
	Tloc214804 tmp;
	Tnode214790* dotexpr;
	Tsym214822* d;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&tmp), 0, sizeof(tmp));
	dotexpr = (*e).kindU.S6.sons->data[((NI) 0)];
	d = 0;
	{
		if (!((*dotexpr).kind == ((NU8) 46))) goto LA3;
		dotexpr = (*dotexpr).kindU.S6.sons->data[((NI) 0)];
	}
	LA3: ;
	initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 0)], (&a));
	gettemp_476435(p, a.t, (&tmp), NIM_FALSE);
	expr_478648(p, (*e).kindU.S6.sons->data[((NI) 1)], (&tmp));
	gendiscriminantcheck_489144(p, a, tmp, (*(*dotexpr).kindU.S6.sons->data[((NI) 0)]).typ, (*(*dotexpr).kindU.S6.sons->data[((NI) 1)]).kindU.S4.sym);
	genassignment_478664(p, a, tmp, 0);
}

N_NIMCALL(void, genasgn_489241)(Tcproc469022* p, Tnode214790* e, NIM_BOOL fastasgn) {
	genlinedir_472823(p, e);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*(*e).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
		if (!(LOC3)) goto LA4;
		LOC3 = (((*(*(*e).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags &(1U<<((NU)(((NU8) 30))&31U)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		gengotovar_484058(p, (*e).kindU.S6.sons->data[((NI) 1)]);
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC8;
		Tloc214804 a;
		LOC8 = 0;
		LOC8 = fielddiscriminantcheckneeded_489080(p, e);
		if (!!(LOC8)) goto LA9;
		memset((void*)(&a), 0, sizeof(a));
		{
			Tnode214790* LOC13;
			Tnode214790* LOC16;
			LOC13 = 0;
			LOC13 = HEX5BHEX5D_215238(e, ((NI) 0));
			if (!((*LOC13).kind == ((NU8) 47) || (*LOC13).kind == ((NU8) 65))) goto LA14;
			LOC16 = 0;
			LOC16 = HEX5BHEX5D_215238(e, ((NI) 0));
			genderef_483563(p, LOC16, (&a), NIM_TRUE);
		}
		goto LA11;
		LA14: ;
		{
			initlocexpr_478683(p, (*e).kindU.S6.sons->data[((NI) 0)], (&a));
		}
		LA11: ;
		{
			if (!fastasgn) goto LA20;
			a.flags |= ((NU16)1)<<((((NU8) 2))%(sizeof(NU16)*8));
		}
		LA20: ;
		loadinto_483570(p, (*e).kindU.S6.sons->data[((NI) 0)], (*e).kindU.S6.sons->data[((NI) 1)], (&a));
	}
	goto LA1;
	LA9: ;
	{
		asgnfielddiscriminant_489209(p, e);
	}
	LA1: ;
}

N_NIMCALL(Ropeobj169006*, genasmoremitstmt_488508)(Tcproc469022* p, Tnode214790* t, NIM_BOOL isasmstmt) {
	Ropeobj169006* result;
	NimStringDesc* res;
	result = 0;
	res = copyString(((NimStringDesc*) &TMP4209));
	{
		NI i_488526;
		NI HEX3Atmp_488613;
		NI LOC2;
		NI res_488616;
		i_488526 = 0;
		HEX3Atmp_488613 = 0;
		LOC2 = 0;
		LOC2 = sonslen_217351(t);
		HEX3Atmp_488613 = (NI)(LOC2 - ((NI) 1));
		res_488616 = ((NI) 0);
		{
			while (1) {
				if (!(res_488616 <= HEX3Atmp_488613)) goto LA4;
				i_488526 = res_488616;
				switch ((*(*t).kindU.S6.sons->data[i_488526]).kind) {
				case ((NU8) 20) ... ((NU8) 22):
				{
					res = resizeString(res, (*(*t).kindU.S6.sons->data[i_488526]).kindU.S3.strval->Sup.len + 0);
appendString(res, (*(*t).kindU.S6.sons->data[i_488526]).kindU.S3.strval);
				}
				break;
				case ((NU8) 3):
				{
					Tsym214822* sym;
					sym = (*(*t).kindU.S6.sons->data[i_488526]).kindU.S4.sym;
					{
						Tloc214804 a;
						Ropeobj169006* LOC11;
						NimStringDesc* LOC12;
						if (!((28672 &(1U<<((NU)((*sym).kind)&31U)))!=0)) goto LA9;
						memset((void*)(&a), 0, sizeof(a));
						initlocexpr_478683(p, (*t).kindU.S6.sons->data[i_488526], (&a));
						LOC11 = 0;
						LOC11 = rdloc_477569(a);
						LOC12 = 0;
						LOC12 = HEX24_169856(LOC11);
						res = resizeString(res, LOC12->Sup.len + 0);
appendString(res, LOC12);
					}
					goto LA7;
					LA9: ;
					{
						Ropeobj169006* r;
						NimStringDesc* LOC18;
						r = (*sym).loc.r;
						{
							if (!(r == NIM_NIL)) goto LA16;
							r = manglename_472977(sym);
							asgnRefNoCycle((void**) (&(*sym).loc.r), r);
						}
						LA16: ;
						LOC18 = 0;
						LOC18 = HEX24_169856(r);
						res = resizeString(res, LOC18->Sup.len + 0);
appendString(res, LOC18);
					}
					LA7: ;
				}
				break;
				default:
				{
					internalerror_187100((*(*t).kindU.S6.sons->data[i_488526]).info, ((NimStringDesc*) &TMP4397));
				}
				break;
				}
				res_488616 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NIM_BOOL LOC22;
		LOC22 = 0;
		LOC22 = isasmstmt;
		if (!(LOC22)) goto LA23;
		LOC22 = ((Cc_194413[(ccompiler_194431)- 1].Field20 &(1U<<((NU)(((NU8) 5))&7U)))!=0);
		LA23: ;
		if (!LOC22) goto LA24;
		{
			NimStringDesc* x_488573;
			NI first_488625;
			NI last_488627;
			x_488573 = 0;
			first_488625 = ((NI) 0);
			last_488627 = ((NI) 0);
			{
				while (1) {
					NI j;
					{
						while (1) {
							if (!!((((NU8)(res->data[last_488627])) == ((NU8)(0)) || ((NU8)(res->data[last_488627])) == ((NU8)(13)) || ((NU8)(res->data[last_488627])) == ((NU8)(10))))) goto LA30;
							last_488627 += ((NI) 1);
						} LA30: ;
					}
					x_488573 = copyStrLast(res, first_488625, (NI)(last_488627 - ((NI) 1)));
					j = ((NI) 0);
					{
						while (1) {
							if (!(((NU8)(x_488573->data[j])) == ((NU8)(32)) || ((NU8)(x_488573->data[j])) == ((NU8)(9)))) goto LA32;
							j += ((NI) 1);
						} LA32: ;
					}
					{
						if (!(((NU8)(x_488573->data[j])) == ((NU8)(34)) || ((NU8)(x_488573->data[j])) == ((NU8)(58)))) goto LA35;
						add_169487(&result, x_488573);
						add_169487(&result, tnl_167618);
					}
					goto LA33;
					LA35: ;
					{
						if (!!(((NU8)(x_488573->data[j]) == (NU8)(0)))) goto LA38;
						add_169487(&result, ((NimStringDesc*) &TMP4398));
						add_169487(&result, x_488573);
						add_169487(&result, ((NimStringDesc*) &TMP4399));
					}
					goto LA33;
					LA38: ;
					LA33: ;
					{
						if (!((NU8)(res->data[last_488627]) == (NU8)(10))) goto LA42;
						last_488627 += ((NI) 1);
					}
					goto LA40;
					LA42: ;
					{
						if (!((NU8)(res->data[last_488627]) == (NU8)(13))) goto LA45;
						last_488627 += ((NI) 1);
						{
							if (!((NU8)(res->data[last_488627]) == (NU8)(10))) goto LA49;
							last_488627 += ((NI) 1);
						}
						LA49: ;
					}
					goto LA40;
					LA45: ;
					{
						goto LA27;
					}
					LA40: ;
					first_488625 = last_488627;
				}
			} LA27: ;
		}
	}
	goto LA20;
	LA24: ;
	{
		res = resizeString(res, tnl_167618->Sup.len + 0);
appendString(res, tnl_167618);
		result = rope_169277(res);
	}
	LA20: ;
	return result;
}

N_NIMCALL(void, genasmstmt_488628)(Tcproc469022* p, Tnode214790* t) {
	Ropeobj169006* s;
	genlinedir_472823(p, t);
	s = genasmoremitstmt_488508(p, t, NIM_TRUE);
	{
		TY169507 LOC5;
		if (!((*p).prc == NIM_NIL)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = s;
		addf_170205(&(*(*p).module).s[(((NU8) 7))- 0], Cc_194413[(ccompiler_194431)- 1].Field17, LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY169507 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = s;
		linef_472700(p, ((NU8) 2), Cc_194413[(ccompiler_194431)- 1].Field17, LOC7, 1);
	}
	LA1: ;
}

static N_INLINE(void, gensimpleblock_483737)(Tcproc469022* p, Tnode214790* stmts) {
	TY473064 LOC1;
	NI LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC1, 0);
	genstmts_478644(p, stmts);
	endblock_483702(p);
}

N_NIMCALL(void, gentrycpp_487684)(Tcproc469022* p, Tnode214790* t, Tloc214804* d) {
	Ropeobj169006* exc;
	TY473064 LOC16;
	NI LOC17;
	NI length;
	TY169507 LOC18;
	Ropeobj169006* LOC19;
	NI i;
	NIM_BOOL catchallpresent;
	TY473064 LOC72;
	Tnode214790* LOC73;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_219513((*t).typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).k == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_476435(p, (*t).typ, d, NIM_FALSE);
	}
	LA6: ;
	genlinedir_472823(p, t);
	exc = gettempname_473366();
	{
		Tsym214822* LOC10;
		Ropeobj169006* LOC13;
		LOC10 = 0;
		LOC10 = getcompilerproc_258746(((NimStringDesc*) &TMP4400));
		if (!!((LOC10 == NIM_NIL))) goto LA11;
		LOC13 = 0;
		LOC13 = cgsym_472403((*p).module, ((NimStringDesc*) &TMP4400));
	}
	goto LA8;
	LA11: ;
	{
		Ropeobj169006* LOC15;
		LOC15 = 0;
		LOC15 = cgsym_472403((*p).module, ((NimStringDesc*) &TMP4401));
	}
	LA8: ;
	(*p).nestedtrystmts = (Tnodeseq214784*) incrSeqV2(&((*p).nestedtrystmts)->Sup, sizeof(Tnode214790*));
	asgnRefNoCycle((void**) (&(*p).nestedtrystmts->data[(*p).nestedtrystmts->Sup.len]), t);
	++(*p).nestedtrystmts->Sup.len;
	memset((void*)LOC16, 0, sizeof(LOC16));
	LOC17 = 0;
	LOC17 = startblock_483620(p, ((NimStringDesc*) &TMP4402), LOC16, 0);
	expr_478648(p, (*t).kindU.S6.sons->data[((NI) 0)], d);
	length = sonslen_217351(t);
	memset((void*)LOC18, 0, sizeof(LOC18));
	LOC18[0] = exc;
	LOC19 = 0;
	LOC19 = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4403), LOC18, 1);
	endblock_483677(p, LOC19);
	{
		TY473064 LOC24;
		if (!(((*p).options &(1U<<((NU)(((NU8) 15))&31U)))!=0)) goto LA22;
		memset((void*)LOC24, 0, sizeof(LOC24));
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4404), LOC24, 0);
	}
	LA22: ;
	(*p).inexceptblock += ((NI) 1);
	i = ((NI) 1);
	catchallpresent = NIM_FALSE;
	{
		while (1) {
			NIM_BOOL LOC27;
			NI blen;
			LOC27 = 0;
			LOC27 = (i < length);
			if (!(LOC27)) goto LA28;
			LOC27 = ((*(*t).kindU.S6.sons->data[i]).kind == ((NU8) 87));
			LA28: ;
			if (!LOC27) goto LA26;
			blen = sonslen_217351((*t).kindU.S6.sons->data[i]);
			{
				Ropeobj169006** LOC33;
				TY473064 LOC34;
				if (!(((NI) 1) < i)) goto LA31;
				LOC33 = 0;
				LOC33 = s_469166(p, ((NU8) 2));
				memset((void*)LOC34, 0, sizeof(LOC34));
				addf_170205(LOC33, ((NimStringDesc*) &TMP4405), LOC34, 0);
			}
			LA31: ;
			{
				TY473064 LOC39;
				NI LOC40;
				TY473064 LOC41;
				if (!(blen == ((NI) 1))) goto LA37;
				catchallpresent = NIM_TRUE;
				memset((void*)LOC39, 0, sizeof(LOC39));
				LOC40 = 0;
				LOC40 = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC39, 0);
				expr_478648(p, (*(*t).kindU.S6.sons->data[i]).kindU.S6.sons->data[((NI) 0)], d);
				memset((void*)LOC41, 0, sizeof(LOC41));
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4391), LOC41, 0);
				endblock_483702(p);
			}
			goto LA35;
			LA37: ;
			{
				Ropeobj169006* orexpr;
				TY169507 LOC51;
				TY473064 LOC52;
				NI LOC53;
				TY473064 LOC54;
				orexpr = NIM_NIL;
				{
					NI j_487788;
					NI HEX3Atmp_488101;
					NI res_488104;
					j_487788 = 0;
					HEX3Atmp_488101 = 0;
					HEX3Atmp_488101 = (NI)(blen - ((NI) 2));
					res_488104 = ((NI) 0);
					{
						while (1) {
							TY501032 LOC50;
							if (!(res_488104 <= HEX3Atmp_488101)) goto LA45;
							j_487788 = res_488104;
							{
								if (!!((orexpr == NIM_NIL))) goto LA48;
								add_169487(&orexpr, ((NimStringDesc*) &TMP4364));
							}
							LA48: ;
							memset((void*)LOC50, 0, sizeof(LOC50));
							LOC50[0] = exc;
							LOC50[1] = gentypeinfo_475350((*p).module, (*(*(*t).kindU.S6.sons->data[i]).kindU.S6.sons->data[j_487788]).typ);
							appcg_472632((*p).module, &orexpr, ((NimStringDesc*) &TMP4406), LOC50, 2);
							res_488104 += ((NI) 1);
						} LA45: ;
					}
				}
				memset((void*)LOC51, 0, sizeof(LOC51));
				LOC51[0] = orexpr;
				linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4407), LOC51, 1);
				memset((void*)LOC52, 0, sizeof(LOC52));
				LOC53 = 0;
				LOC53 = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC52, 0);
				expr_478648(p, (*(*t).kindU.S6.sons->data[i]).kindU.S6.sons->data[(NI)(blen - ((NI) 1))], d);
				memset((void*)LOC54, 0, sizeof(LOC54));
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4391), LOC54, 0);
				endblock_483702(p);
			}
			LA35: ;
			i += ((NI) 1);
		} LA26: ;
	}
	{
		TY473064 LOC64;
		NI LOC65;
		Tnode214790* finallyblock;
		TY473064 LOC70;
		Ropeobj169006* LOC71;
		if (!!(catchallpresent)) goto LA57;
		{
			TY473064 LOC63;
			if (!(((NI) 1) < i)) goto LA61;
			memset((void*)LOC63, 0, sizeof(LOC63));
			linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4405), LOC63, 0);
		}
		LA61: ;
		memset((void*)LOC64, 0, sizeof(LOC64));
		LOC65 = 0;
		LOC65 = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC64, 0);
		finallyblock = lastson_217364(t);
		{
			if (!((*finallyblock).kind == ((NU8) 107))) goto LA68;
			genstmts_478644(p, (*finallyblock).kindU.S6.sons->data[((NI) 0)]);
		}
		LA68: ;
		memset((void*)LOC70, 0, sizeof(LOC70));
		LOC71 = 0;
		LOC71 = HEX25_169905(((NimStringDesc*) &TMP4408), LOC70, 0);
		line_472690(p, ((NU8) 2), LOC71);
		endblock_483702(p);
	}
	LA57: ;
	memset((void*)LOC72, 0, sizeof(LOC72));
	linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3904), LOC72, 0);
	(*p).inexceptblock -= ((NI) 1);
	LOC73 = 0;
	LOC73 = pop_485305((&(*p).nestedtrystmts));
	{
		NIM_BOOL LOC76;
		LOC76 = 0;
		LOC76 = (i < length);
		if (!(LOC76)) goto LA77;
		LOC76 = ((*(*t).kindU.S6.sons->data[i]).kind == ((NU8) 107));
		LA77: ;
		if (!LOC76) goto LA78;
		gensimpleblock_483737(p, (*(*t).kindU.S6.sons->data[i]).kindU.S6.sons->data[((NI) 0)]);
	}
	LA78: ;
}

N_NIMCALL(void, line_472695)(Tcproc469022* p, NU8 s, NimStringDesc* r) {
	Ropeobj169006** LOC1;
	Ropeobj169006* LOC2;
	Ropeobj169006* LOC3;
	LOC1 = 0;
	LOC1 = s_469166(p, s);
	LOC2 = 0;
	LOC2 = rope_169277(r);
	LOC3 = 0;
	LOC3 = indentline_472656(p, LOC2);
	add_169482(LOC1, LOC3);
}

static N_INLINE(Ropeobj169006*, pop_169530)(TY182350** s) {
	Ropeobj169006* result;
	NI L;
	result = 0;
	L = (NI)(((*s) ? (*s)->Sup.len : 0) - ((NI) 1));
	result = (*s)->data[L];
	(*s) = (TY182350*) setLengthSeq(&((*s))->Sup, sizeof(Ropeobj169006*), ((NI) (L)));
	return result;
}

N_NIMCALL(void, gentry_488114)(Tcproc469022* p, Tnode214790* t, Tloc214804* d) {
	NIM_BOOL LOC8;
	Ropeobj169006* safepoint;
	TY169507 LOC17;
	TY169507 LOC18;
	TY169507 LOC37;
	NI LOC38;
	NI length;
	TY473064 LOC39;
	TY473064 LOC40;
	NI LOC41;
	TY473064 LOC42;
	NI i;
	Tnode214790* LOC82;
	TY169507 LOC90;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_219513((*t).typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).k == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_476435(p, (*t).typ, d, NIM_FALSE);
	}
	LA6: ;
	LOC8 = 0;
	LOC8 = includestr_135249((&(*(*p).module).headerfiles), ((NimStringDesc*) &TMP4409));
	genlinedir_472823(p, t);
	safepoint = gettempname_473366();
	{
		Tsym214822* LOC11;
		Ropeobj169006* LOC14;
		LOC11 = 0;
		LOC11 = getcompilerproc_258746(((NimStringDesc*) &TMP4400));
		if (!!((LOC11 == NIM_NIL))) goto LA12;
		LOC14 = 0;
		LOC14 = cgsym_472403((*p).module, ((NimStringDesc*) &TMP4400));
	}
	goto LA9;
	LA12: ;
	{
		Ropeobj169006* LOC16;
		LOC16 = 0;
		LOC16 = cgsym_472403((*p).module, ((NimStringDesc*) &TMP4401));
	}
	LA9: ;
	memset((void*)LOC17, 0, sizeof(LOC17));
	LOC17[0] = safepoint;
	linefmt_472714(p, ((NU8) 0), ((NimStringDesc*) &TMP4410), LOC17, 1);
	memset((void*)LOC18, 0, sizeof(LOC18));
	LOC18[0] = safepoint;
	linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4411), LOC18, 1);
	{
		NIM_BOOL LOC21;
		TY169507 LOC24;
		LOC21 = 0;
		LOC21 = isdefined_190010(((NimStringDesc*) &TMP4412));
		if (!LOC21) goto LA22;
		memset((void*)LOC24, 0, sizeof(LOC24));
		LOC24[0] = safepoint;
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4413), LOC24, 1);
	}
	goto LA19;
	LA22: ;
	{
		NIM_BOOL LOC26;
		TY169507 LOC29;
		LOC26 = 0;
		LOC26 = isdefined_190010(((NimStringDesc*) &TMP4414));
		if (!LOC26) goto LA27;
		memset((void*)LOC29, 0, sizeof(LOC29));
		LOC29[0] = safepoint;
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4415), LOC29, 1);
	}
	goto LA19;
	LA27: ;
	{
		NIM_BOOL LOC31;
		TY169507 LOC34;
		LOC31 = 0;
		LOC31 = isdefined_190010(((NimStringDesc*) &TMP4416));
		if (!LOC31) goto LA32;
		memset((void*)LOC34, 0, sizeof(LOC34));
		LOC34[0] = safepoint;
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4417), LOC34, 1);
	}
	goto LA19;
	LA32: ;
	{
		TY169507 LOC36;
		memset((void*)LOC36, 0, sizeof(LOC36));
		LOC36[0] = safepoint;
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4413), LOC36, 1);
	}
	LA19: ;
	memset((void*)LOC37, 0, sizeof(LOC37));
	LOC37[0] = safepoint;
	LOC38 = 0;
	LOC38 = startblock_483620(p, ((NimStringDesc*) &TMP4418), LOC37, 1);
	length = sonslen_217351(t);
	(*p).nestedtrystmts = (Tnodeseq214784*) incrSeqV2(&((*p).nestedtrystmts)->Sup, sizeof(Tnode214790*));
	asgnRefNoCycle((void**) (&(*p).nestedtrystmts->data[(*p).nestedtrystmts->Sup.len]), t);
	++(*p).nestedtrystmts->Sup.len;
	expr_478648(p, (*t).kindU.S6.sons->data[((NI) 0)], d);
	memset((void*)LOC39, 0, sizeof(LOC39));
	linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4390), LOC39, 0);
	endblock_483702(p);
	memset((void*)LOC40, 0, sizeof(LOC40));
	LOC41 = 0;
	LOC41 = startblock_483620(p, ((NimStringDesc*) &TMP4419), LOC40, 0);
	memset((void*)LOC42, 0, sizeof(LOC42));
	linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4390), LOC42, 0);
	{
		TY473064 LOC47;
		if (!(((*p).options &(1U<<((NU)(((NU8) 15))&31U)))!=0)) goto LA45;
		memset((void*)LOC47, 0, sizeof(LOC47));
		linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4404), LOC47, 0);
	}
	LA45: ;
	(*p).inexceptblock += ((NI) 1);
	i = ((NI) 1);
	{
		while (1) {
			NIM_BOOL LOC50;
			NI blen;
			LOC50 = 0;
			LOC50 = (i < length);
			if (!(LOC50)) goto LA51;
			LOC50 = ((*(*t).kindU.S6.sons->data[i]).kind == ((NU8) 87));
			LA51: ;
			if (!LOC50) goto LA49;
			blen = sonslen_217351((*t).kindU.S6.sons->data[i]);
			{
				TY473064 LOC61;
				NI LOC62;
				TY169507 LOC63;
				TY473064 LOC64;
				if (!(blen == ((NI) 1))) goto LA54;
				{
					TY473064 LOC60;
					if (!(((NI) 1) < i)) goto LA58;
					memset((void*)LOC60, 0, sizeof(LOC60));
					linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4420), LOC60, 0);
				}
				LA58: ;
				memset((void*)LOC61, 0, sizeof(LOC61));
				LOC62 = 0;
				LOC62 = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC61, 0);
				memset((void*)LOC63, 0, sizeof(LOC63));
				LOC63[0] = safepoint;
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4421), LOC63, 1);
				expr_478648(p, (*(*t).kindU.S6.sons->data[i]).kindU.S6.sons->data[((NI) 0)], d);
				memset((void*)LOC64, 0, sizeof(LOC64));
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4391), LOC64, 0);
				endblock_483702(p);
			}
			goto LA52;
			LA54: ;
			{
				Ropeobj169006* orexpr;
				TY169507 LOC78;
				NI LOC79;
				TY169507 LOC80;
				TY473064 LOC81;
				orexpr = NIM_NIL;
				{
					NI j_488238;
					NI HEX3Atmp_488500;
					NI res_488503;
					j_488238 = 0;
					HEX3Atmp_488500 = 0;
					HEX3Atmp_488500 = (NI)(blen - ((NI) 2));
					res_488503 = ((NI) 0);
					{
						while (1) {
							TY169507 LOC73;
							if (!(res_488503 <= HEX3Atmp_488500)) goto LA68;
							j_488238 = res_488503;
							{
								if (!!((orexpr == NIM_NIL))) goto LA71;
								add_169487(&orexpr, ((NimStringDesc*) &TMP4364));
							}
							LA71: ;
							memset((void*)LOC73, 0, sizeof(LOC73));
							LOC73[0] = gentypeinfo_475350((*p).module, (*(*(*t).kindU.S6.sons->data[i]).kindU.S6.sons->data[j_488238]).typ);
							appcg_472632((*p).module, &orexpr, ((NimStringDesc*) &TMP4422), LOC73, 1);
							res_488503 += ((NI) 1);
						} LA68: ;
					}
				}
				{
					if (!(((NI) 1) < i)) goto LA76;
					line_472695(p, ((NU8) 2), ((NimStringDesc*) &TMP4405));
				}
				LA76: ;
				memset((void*)LOC78, 0, sizeof(LOC78));
				LOC78[0] = orexpr;
				LOC79 = 0;
				LOC79 = startblock_483620(p, ((NimStringDesc*) &TMP4423), LOC78, 1);
				memset((void*)LOC80, 0, sizeof(LOC80));
				LOC80[0] = safepoint;
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4421), LOC80, 1);
				expr_478648(p, (*(*t).kindU.S6.sons->data[i]).kindU.S6.sons->data[(NI)(blen - ((NI) 1))], d);
				memset((void*)LOC81, 0, sizeof(LOC81));
				linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4391), LOC81, 0);
				endblock_483702(p);
			}
			LA52: ;
			i += ((NI) 1);
		} LA49: ;
	}
	(*p).inexceptblock -= ((NI) 1);
	LOC82 = 0;
	LOC82 = pop_485305((&(*p).nestedtrystmts));
	endblock_483702(p);
	{
		NIM_BOOL LOC85;
		Ropeobj169006* LOC89;
		LOC85 = 0;
		LOC85 = (i < length);
		if (!(LOC85)) goto LA86;
		LOC85 = ((*(*t).kindU.S6.sons->data[i]).kind == ((NU8) 107));
		LA86: ;
		if (!LOC85) goto LA87;
		(*p).finallysafepoints = (TY182350*) incrSeqV2(&((*p).finallysafepoints)->Sup, sizeof(Ropeobj169006*));
		asgnRefNoCycle((void**) (&(*p).finallysafepoints->data[(*p).finallysafepoints->Sup.len]), safepoint);
		++(*p).finallysafepoints->Sup.len;
		gensimpleblock_483737(p, (*(*t).kindU.S6.sons->data[i]).kindU.S6.sons->data[((NI) 0)]);
		LOC89 = 0;
		LOC89 = pop_169530((&(*p).finallysafepoints));
	}
	LA87: ;
	memset((void*)LOC90, 0, sizeof(LOC90));
	LOC90[0] = safepoint;
	linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4424), LOC90, 1);
}

N_NIMCALL(NimStringDesc*, getraisefrmt_486624)(Tcproc469022* p) {
	NimStringDesc* result;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP4425));
	return result;
}

N_NIMCALL(void, genraisestmt_486628)(Tcproc469022* p, Tnode214790* t) {
	{
		Tnode214790* finallyblock;
		if (!(((NI) 0) < (*p).inexceptblock)) goto LA3;
		finallyblock = lastson_217364((*p).nestedtrystmts->data[(NI)(((*p).nestedtrystmts ? (*p).nestedtrystmts->Sup.len : 0) - ((NI) 1))]);
		{
			if (!((*finallyblock).kind == ((NU8) 107))) goto LA7;
			gensimpleblock_483737(p, (*finallyblock).kindU.S6.sons->data[((NI) 0)]);
		}
		LA7: ;
	}
	LA3: ;
	{
		Tloc214804 a;
		Ropeobj169006* e;
		Ttype214828* typ;
		NimStringDesc* LOC13;
		TY501032 LOC14;
		if (!!(((*(*t).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA11;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_478683(p, (*t).kindU.S6.sons->data[((NI) 0)], (&a));
		e = rdloc_477569(a);
		typ = skiptypes_218113((*(*t).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106247256320));
		genlinedir_472823(p, t);
		LOC13 = 0;
		LOC13 = getraisefrmt_486624(p);
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = e;
		LOC14[1] = makecstring_182637((*(*(*typ).sym).name).s);
		linecg_472707(p, ((NU8) 2), LOC13, LOC14, 2);
	}
	goto LA9;
	LA11: ;
	{
		genlinedir_472823(p, t);
		{
			NIM_BOOL LOC18;
			TY473064 LOC22;
			Ropeobj169006* LOC23;
			LOC18 = 0;
			LOC18 = (gcmd_160123 == ((NU8) 2));
			if (LOC18) goto LA19;
			LOC18 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
			LA19: ;
			if (!LOC18) goto LA20;
			memset((void*)LOC22, 0, sizeof(LOC22));
			LOC23 = 0;
			LOC23 = HEX25_169905(((NimStringDesc*) &TMP4408), LOC22, 0);
			line_472690(p, ((NU8) 2), LOC23);
		}
		goto LA16;
		LA20: ;
		{
			TY473064 LOC25;
			memset((void*)LOC25, 0, sizeof(LOC25));
			linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4426), LOC25, 0);
		}
		LA16: ;
	}
	LA9: ;
}

N_NIMCALL(void, gentypesection_477565)(Tcgen469026* m, Tnode214790* n) {
}

N_NIMCALL(NU8, determinesection_488819)(Tnode214790* n) {
	NU8 result;
	result = 0;
	result = ((NU8) 7);
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NimStringDesc* sec;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = len_215059(n);
		LOC3 = (((NI) 1) <= LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind >= ((NU8) 20) && (*(*n).kindU.S6.sons->data[((NI) 0)]).kind <= ((NU8) 22));
		LA5: ;
		if (!LOC3) goto LA6;
		sec = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S3.strval;
		{
			NIM_BOOL LOC10;
			LOC10 = 0;
			LOC10 = nsuStartsWith(sec, ((NimStringDesc*) &TMP4427));
			if (!LOC10) goto LA11;
			result = ((NU8) 3);
		}
		goto LA8;
		LA11: ;
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = nsuStartsWith(sec, ((NimStringDesc*) &TMP4428));
			if (!LOC14) goto LA15;
			result = ((NU8) 9);
		}
		goto LA8;
		LA15: ;
		{
			NIM_BOOL LOC18;
			LOC18 = 0;
			LOC18 = nsuStartsWith(sec, ((NimStringDesc*) &TMP4429));
			if (!LOC18) goto LA19;
			result = ((NU8) 1);
		}
		goto LA8;
		LA19: ;
		LA8: ;
	}
	LA6: ;
	return result;
}

N_NIMCALL(void, genemit_488839)(Tcproc469022* p, Tnode214790* t) {
	Ropeobj169006* s;
	s = genasmoremitstmt_488508(p, (*t).kindU.S6.sons->data[((NI) 1)], NIM_FALSE);
	{
		NU8 section;
		Tnode214790* LOC5;
		if (!((*p).prc == NIM_NIL)) goto LA3;
		LOC5 = 0;
		LOC5 = HEX5BHEX5D_215238(t, ((NI) 1));
		section = determinesection_488819(LOC5);
		genclinedir_472813(&(*(*p).module).s[(section)- 0], (*t).info);
		add_169482(&(*(*p).module).s[(section)- 0], s);
	}
	goto LA1;
	LA3: ;
	{
		genlinedir_472823(p, t);
		line_472690(p, ((NU8) 2), s);
	}
	LA1: ;
}

N_NIMCALL(void, genbreakpoint_488862)(Tcproc469022* p, Tnode214790* t) {
	NimStringDesc* name;
	name = 0;
	{
		TY474655 LOC12;
		NI LOC13;
		NimStringDesc* LOC14;
		if (!(((*p).options &(1U<<((NU)(((NU8) 17))&31U)))!=0)) goto LA3;
		{
			if (!((*t).kind == ((NU8) 34))) goto LA7;
			name = nsuNormalize((*(*t).kindU.S6.sons->data[((NI) 1)]).kindU.S3.strval);
		}
		goto LA5;
		LA7: ;
		{
			NimStringDesc* LOC10;
			NimStringDesc* LOC11;
			breakpointid_488860 += ((NI) 1);
			LOC10 = 0;
			LOC11 = 0;
			LOC11 = nimIntToStr(breakpointid_488860);
			LOC10 = rawNewString(LOC11->Sup.len + 2);
appendString(LOC10, ((NimStringDesc*) &TMP4430));
appendString(LOC10, LOC11);
			name = LOC10;
		}
		LA5: ;
		genlinedir_472823(p, t);
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC13 = 0;
		LOC13 = tolinenumber_183415((*t).info);
		LOC12[0] = rope_169401(((NI64) (LOC13)));
		LOC14 = 0;
		LOC14 = tofilename_183265((*t).info.fileindex);
		LOC12[1] = makecstring_182637(LOC14);
		LOC12[2] = makecstring_182637(name);
		appcg_472632((*p).module, &gbreakpoints_488861, ((NimStringDesc*) &TMP4431), LOC12, 3);
	}
	LA3: ;
}

N_NIMCALL(void, genwatchpoint_489016)(Tcproc469022* p, Tnode214790* n) {
	Tloc214804 a;
	Ttype214828* typ;
	TY474655 LOC5;
	NimStringDesc* LOC6;
{	{
		if (!!((((*p).options &(1U<<((NU)(((NU8) 17))&31U)))!=0))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 1)], (&a));
	typ = skiptypes_218113((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106242013440));
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = addrloc_477585(a);
	LOC6 = 0;
	LOC6 = rendertree_233044((*n).kindU.S6.sons->data[((NI) 1)], 0);
	LOC5[1] = makecstring_182637(LOC6);
	LOC5[2] = gentypeinfo_475350((*p).module, typ);
	linecg_472707(p, ((NU8) 2), ((NimStringDesc*) &TMP4432), LOC5, 3);
	}BeforeRet: ;
}

N_NIMCALL(void, genpragma_489039)(Tcproc469022* p_489041, Tnode214790* n) {
	{
		NI i_489054;
		NI HEX3Atmp_489073;
		NI LOC2;
		NI res_489076;
		i_489054 = 0;
		HEX3Atmp_489073 = 0;
		LOC2 = 0;
		LOC2 = sonslen_217351(n);
		HEX3Atmp_489073 = (NI)(LOC2 - ((NI) 1));
		res_489076 = ((NI) 0);
		{
			while (1) {
				Tnode214790* it;
				NU16 LOC5;
				if (!(res_489076 <= HEX3Atmp_489073)) goto LA4;
				i_489054 = res_489076;
				it = (*n).kindU.S6.sons->data[i_489054];
				LOC5 = 0;
				LOC5 = whichpragma_239525(it);
				switch (LOC5) {
				case ((NU16) 189):
				{
					genemit_488839(p_489041, it);
				}
				break;
				case ((NU16) 129):
				{
					genbreakpoint_488862(p_489041, it);
				}
				break;
				case ((NU16) 174):
				{
					genwatchpoint_489016(p_489041, it);
				}
				break;
				case ((NU16) 181):
				{
					Tcproc469022* p;
					Ropeobj169006** LOC10;
					p = newproc_469193(NIM_NIL, (*p_489041).module);
					(*p).options = ((*p).options & ~ 98304);
					genstmts_478644(p, (*it).kindU.S6.sons->data[((NI) 1)]);
					LOC10 = 0;
					LOC10 = s_469166(p, ((NU8) 2));
					asgnRefNoCycle((void**) (&(*(*p).module).injectstmt), (*LOC10));
				}
				break;
				default:
				{
				}
				break;
				}
				res_489076 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, genparforstmt_486008)(Tcproc469022* p, Tnode214790* t) {
	NI oldbreakidx_486211;
	Tsym214822* forloopvar;
	Tloc214804 rangea;
	Tloc214804 rangeb;
	Tnode214790* call;
	TY474652 LOC1;
	NimStringDesc* LOC2;
	TY473064 LOC3;
	(*p).withinloop += ((NI) 1);
	genlinedir_472823(p, t);
	oldbreakidx_486211 = (*p).breakidx;
	forloopvar = (*(*t).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	memset((void*)(&rangea), 0, sizeof(rangea));
	memset((void*)(&rangeb), 0, sizeof(rangeb));
	assignlocalvar_478180(p, forloopvar);
	call = (*t).kindU.S6.sons->data[((NI) 1)];
	initlocexpr_478683(p, (*call).kindU.S6.sons->data[((NI) 1)], (&rangea));
	initlocexpr_478683(p, (*call).kindU.S6.sons->data[((NI) 2)], (&rangeb));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_477569((*forloopvar).loc);
	LOC1[1] = rdloc_477569(rangea);
	LOC1[2] = rdloc_477569(rangeb);
	LOC2 = 0;
	LOC2 = getstr_219303((*call).kindU.S6.sons->data[((NI) 3)]);
	LOC1[3] = rope_169277(LOC2);
	linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4433), LOC1, 4);
	memset((void*)LOC3, 0, sizeof(LOC3));
	(*p).breakidx = startblock_483620(p, ((NimStringDesc*) &TMP3990), LOC3, 0);
	(*p).blocks->data[(*p).breakidx].isloop = NIM_TRUE;
	genstmts_478644(p, (*t).kindU.S6.sons->data[((NI) 2)]);
	endblock_483702(p);
	(*p).breakidx = oldbreakidx_486211;
	(*p).withinloop -= ((NI) 1);
}

N_NIMCALL(void, genstate_483759)(Tcproc469022* p, Tnode214790* n) {
	NI64 idx;
	TY169507 LOC9;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NimStringDesc* LOC8;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = len_215059(n);
		LOC3 = (LOC4 == ((NI) 1));
		if (!(LOC3)) goto LA5;
		LOC3 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 6));
		LA5: ;
		if (!!(LOC3)) goto LA6;
		LOC8 = 0;
		LOC8 = HEX24_187183(TMP4434);
		internalerror_187113(LOC8);
	}
	LA6: ;
	idx = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S1.intval;
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC9[0] = rope_169401(idx);
	linefmt_472714(p, ((NU8) 2), ((NimStringDesc*) &TMP4436), LOC9, 1);
}

N_NIMCALL(void, gengotostate_483786)(Tcproc469022* p, Tnode214790* n) {
	Tloc214804 a;
	TY169507 LOC1;
	TY473064 LOC2;
	TY473064 LOC7;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 0)], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_477569(a);
	linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4388), LOC1, 1);
	(*p).beforeretneeded = NIM_TRUE;
	memset((void*)LOC2, 0, sizeof(LOC2));
	linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4437), LOC2, 0);
	{
		NI64 i_484014;
		NI64 HEX3Atmp_484023;
		NI64 res_484026;
		i_484014 = 0;
		HEX3Atmp_484023 = 0;
		HEX3Atmp_484023 = lastord_240004((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
		res_484026 = IL64(0);
		{
			while (1) {
				TY169507 LOC6;
				if (!(res_484026 <= HEX3Atmp_484023)) goto LA5;
				i_484014 = res_484026;
				memset((void*)LOC6, 0, sizeof(LOC6));
				LOC6[0] = rope_169401(i_484014);
				linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4438), LOC6, 1);
				res_484026 += ((NI) 1);
			} LA5: ;
		}
	}
	memset((void*)LOC7, 0, sizeof(LOC7));
	linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP3904), LOC7, 0);
}

N_NIMCALL(void, genbreakstate_484029)(Tcproc469022* p, Tnode214790* n) {
	Tloc214804 a;
	memset((void*)(&a), 0, sizeof(a));
	{
		TY169507 LOC5;
		if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 155))) goto LA3;
		initlocexpr_478683(p, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)], (&a));
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_477569(a);
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4439), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY169507 LOC7;
		initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 0)], (&a));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_477569(a);
		linef_472700(p, ((NU8) 2), ((NimStringDesc*) &TMP4440), LOC7, 1);
	}
	LA1: ;
}

N_NIMCALL(void, expr_478648)(Tcproc469022* p, Tnode214790* n, Tloc214804* d) {
	switch ((*n).kind) {
	case ((NU8) 3):
	{
		Tsym214822* sym;
		sym = (*n).kindU.S4.sym;
		switch ((*sym).kind) {
		case ((NU8) 13):
		{
			{
				if (!!(((33554448 & (*sym).flags) == 0))) goto LA5;
				fillprocloc_478601(sym);
				genprocprototype_478654((*p).module, sym);
			}
			goto LA3;
			LA5: ;
			{
				genproc_472951((*p).module, sym);
			}
			LA3: ;
			putlocintodest_478658(p, d, (*sym).loc);
		}
		break;
		case ((NU8) 12):
		case ((NU8) 15):
		case ((NU8) 14):
		{
			{
				NimStringDesc* LOC13;
				if (!(((*sym).flags &(1U<<((NU)(((NU8) 23))&31U)))!=0)) goto LA11;
				LOC13 = 0;
				LOC13 = rawNewString((*(*sym).name).s->Sup.len + 48);
appendString(LOC13, ((NimStringDesc*) &TMP3984));
appendString(LOC13, (*(*sym).name).s);
				localerror_187085((*n).info, LOC13);
			}
			LA11: ;
			genproc_472951((*p).module, sym);
			{
				NIM_BOOL LOC16;
				NimStringDesc* LOC20;
				LOC16 = 0;
				LOC16 = ((*sym).loc.r == NIM_NIL);
				if (LOC16) goto LA17;
				LOC16 = ((*sym).loc.t == NIM_NIL);
				LA17: ;
				if (!LOC16) goto LA18;
				LOC20 = 0;
				LOC20 = rawNewString((*(*sym).name).s->Sup.len + 20);
appendString(LOC20, ((NimStringDesc*) &TMP3985));
appendString(LOC20, (*(*sym).name).s);
				internalerror_187100((*n).info, LOC20);
			}
			LA18: ;
			putlocintodest_478658(p, d, (*sym).loc);
		}
		break;
		case ((NU8) 10):
		{
			{
				if (!(((*sym).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0)) goto LA24;
				{
					if (!(((*sym).flags &(1U<<((NU)(((NU8) 3))&31U)))!=0)) goto LA28;
					genvarprototype_478636((*p).module, sym);
				}
				LA28: ;
				putlocintodest_478658(p, d, (*sym).loc);
			}
			goto LA22;
			LA24: ;
			{
				NIM_BOOL LOC31;
				Ropeobj169006* LOC34;
				LOC31 = 0;
				LOC31 = issimpleconst_472311((*sym).typ);
				if (!LOC31) goto LA32;
				LOC34 = 0;
				LOC34 = genliteral_489503(p, (*sym).ast, (*sym).typ);
				putintodest_490713(p, d, (*n).typ, LOC34, ((NU8) 1));
			}
			goto LA22;
			LA32: ;
			{
				gencomplexconst_498480(p, sym, d);
			}
			LA22: ;
		}
		break;
		case ((NU8) 19):
		{
			Ropeobj169006* LOC37;
			LOC37 = 0;
			LOC37 = rope_169401(((NI64) ((*sym).position)));
			putintodest_490713(p, d, (*n).typ, LOC37, ((NU8) 0));
		}
		break;
		case ((NU8) 8):
		case ((NU8) 20):
		case ((NU8) 11):
		case ((NU8) 9):
		{
			{
				if (!(((*sym).flags &(1U<<((NU)(((NU8) 3))&31U)))!=0)) goto LA41;
				genvarprototype_478636((*p).module, sym);
			}
			LA41: ;
			{
				NIM_BOOL LOC45;
				NimStringDesc* LOC49;
				NimStringDesc* LOC50;
				LOC45 = 0;
				LOC45 = ((*sym).loc.r == NIM_NIL);
				if (LOC45) goto LA46;
				LOC45 = ((*sym).loc.t == NIM_NIL);
				LA46: ;
				if (!LOC45) goto LA47;
				LOC49 = 0;
				LOC50 = 0;
				LOC50 = nimIntToStr((*sym).Sup.id);
				LOC49 = rawNewString((*(*sym).name).s->Sup.len + LOC50->Sup.len + 20);
appendString(LOC49, ((NimStringDesc*) &TMP4004));
appendString(LOC49, (*(*sym).name).s);
appendString(LOC49, ((NimStringDesc*) &TMP3763));
appendString(LOC49, LOC50);
				internalerror_187100((*n).info, LOC49);
			}
			LA47: ;
			{
				if (!(((*sym).flags &(1U<<((NU)(((NU8) 22))&31U)))!=0)) goto LA53;
				accessthreadlocalvar_472945(p, sym);
				{
					NIM_BOOL LOC57;
					Ropeobj169006* LOC60;
					LOC57 = 0;
					LOC57 = emulatedthreadvars_472949();
					if (!LOC57) goto LA58;
					LOC60 = 0;
					LOC60 = HEX26_169452(((NimStringDesc*) &TMP4007), (*sym).loc.r);
					putintodest_490713(p, d, (*sym).loc.t, LOC60, ((NU8) 0));
				}
				goto LA55;
				LA58: ;
				{
					putlocintodest_478658(p, d, (*sym).loc);
				}
				LA55: ;
			}
			goto LA51;
			LA53: ;
			{
				putlocintodest_478658(p, d, (*sym).loc);
			}
			LA51: ;
		}
		break;
		case ((NU8) 5):
		{
			{
				NIM_BOOL LOC66;
				NimStringDesc* LOC70;
				NimStringDesc* LOC71;
				LOC66 = 0;
				LOC66 = ((*sym).loc.r == NIM_NIL);
				if (LOC66) goto LA67;
				LOC66 = ((*sym).loc.t == NIM_NIL);
				LA67: ;
				if (!LOC66) goto LA68;
				LOC70 = 0;
				LOC71 = 0;
				LOC71 = nimIntToStr((*sym).Sup.id);
				LOC70 = rawNewString((*(*sym).name).s->Sup.len + LOC71->Sup.len + 21);
appendString(LOC70, ((NimStringDesc*) &TMP4008));
appendString(LOC70, (*(*sym).name).s);
appendString(LOC70, ((NimStringDesc*) &TMP3763));
appendString(LOC70, LOC71);
				internalerror_187100((*n).info, LOC70);
			}
			LA68: ;
			putlocintodest_478658(p, d, (*sym).loc);
		}
		break;
		case ((NU8) 3):
		{
			{
				NIM_BOOL LOC75;
				NimStringDesc* LOC79;
				NimStringDesc* LOC80;
				LOC75 = 0;
				LOC75 = ((*sym).loc.r == NIM_NIL);
				if (LOC75) goto LA76;
				LOC75 = ((*sym).loc.t == NIM_NIL);
				LA76: ;
				if (!LOC75) goto LA77;
				LOC79 = 0;
				LOC80 = 0;
				LOC80 = nimIntToStr((*sym).Sup.id);
				LOC79 = rawNewString((*(*sym).name).s->Sup.len + LOC80->Sup.len + 22);
appendString(LOC79, ((NimStringDesc*) &TMP4009));
appendString(LOC79, (*(*sym).name).s);
appendString(LOC79, ((NimStringDesc*) &TMP3763));
appendString(LOC79, LOC80);
				internalerror_187100((*n).info, LOC79);
			}
			LA77: ;
			putlocintodest_478658(p, d, (*sym).loc);
		}
		break;
		default:
		{
			NimStringDesc* LOC82;
			LOC82 = 0;
			LOC82 = rawNewString(reprEnum((*sym).kind, (&NTI214435))->Sup.len + 22);
appendString(LOC82, ((NimStringDesc*) &TMP4010));
appendString(LOC82, reprEnum((*sym).kind, (&NTI214435)));
appendString(LOC82, ((NimStringDesc*) &TMP4011));
			internalerror_187100((*n).info, LOC82);
		}
		break;
		}
	}
	break;
	case ((NU8) 23):
	{
		{
			NIM_BOOL LOC86;
			Ropeobj169006* LOC89;
			LOC86 = 0;
			LOC86 = isemptytype_219513((*n).typ);
			if (!!(LOC86)) goto LA87;
			LOC89 = 0;
			LOC89 = genliteral_478673(p, n);
			putintodest_490713(p, d, (*n).typ, LOC89, ((NU8) 0));
		}
		LA87: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		Ropeobj169006* LOC91;
		LOC91 = 0;
		LOC91 = genliteral_478673(p, n);
		putdataintodest_490681(p, d, (*n).typ, LOC91);
	}
	break;
	case ((NU8) 6) ... ((NU8) 15):
	case ((NU8) 16) ... ((NU8) 19):
	case ((NU8) 5):
	{
		Ropeobj169006* LOC93;
		LOC93 = 0;
		LOC93 = genliteral_478673(p, n);
		putintodest_490713(p, d, (*n).typ, LOC93, ((NU8) 0));
	}
	break;
	case ((NU8) 27):
	case ((NU8) 32):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		Tnode214790* op;
		genlinedir_472823(p, n);
		op = (*n).kindU.S6.sons->data[((NI) 0)];
		{
			Tloc214804 a;
			if (!(*n).typ == 0) goto LA97;
			memset((void*)(&a), 0, sizeof(a));
			{
				NIM_BOOL LOC101;
				LOC101 = 0;
				LOC101 = ((*op).kind == ((NU8) 3));
				if (!(LOC101)) goto LA102;
				LOC101 = !(((*(*op).kindU.S4.sym).magic == ((NU8) 0)));
				LA102: ;
				if (!LOC101) goto LA103;
				genmagicexpr_497433(p, n, (&a), (*(*op).kindU.S4.sym).magic);
			}
			goto LA99;
			LA103: ;
			{
				gencall_483033(p, n, (&a));
			}
			LA99: ;
		}
		goto LA95;
		LA97: ;
		{
			{
				NIM_BOOL LOC109;
				LOC109 = 0;
				LOC109 = ((*op).kind == ((NU8) 3));
				if (!(LOC109)) goto LA110;
				LOC109 = !(((*(*op).kindU.S4.sym).magic == ((NU8) 0)));
				LA110: ;
				if (!LOC109) goto LA111;
				genmagicexpr_497433(p, n, d, (*(*op).kindU.S4.sym).magic);
			}
			goto LA107;
			LA111: ;
			{
				gencall_483033(p, n, d);
			}
			LA107: ;
		}
		LA95: ;
	}
	break;
	case ((NU8) 39):
	{
		{
			NIM_BOOL LOC117;
			NI LOC119;
			Ropeobj169006* LOC122;
			LOC117 = 0;
			LOC117 = isdeepconstexpr_239361(n);
			if (!(LOC117)) goto LA118;
			LOC119 = 0;
			LOC119 = len_215059(n);
			LOC117 = !((LOC119 == ((NI) 0)));
			LA118: ;
			if (!LOC117) goto LA120;
			LOC122 = 0;
			LOC122 = gensetnode_489864(p, n);
			putintodest_490713(p, d, (*n).typ, LOC122, ((NU8) 0));
		}
		goto LA115;
		LA120: ;
		{
			gensetconstr_497945(p, n, d);
		}
		LA115: ;
	}
	break;
	case ((NU8) 41):
	{
		{
			NIM_BOOL LOC127;
			NI LOC129;
			LOC127 = 0;
			LOC127 = isdeepconstexpr_239361(n);
			if (!(LOC127)) goto LA128;
			LOC129 = 0;
			LOC129 = len_215059(n);
			LOC127 = !((LOC129 == ((NI) 0)));
			LA128: ;
			if (!LOC127) goto LA130;
			exprcomplexconst_498884(p, n, d);
		}
		goto LA125;
		LA130: ;
		{
			Ttype214828* LOC133;
			LOC133 = 0;
			LOC133 = skiptypes_218113((*n).typ, IL64(211106242013440));
			if (!((*LOC133).kind == ((NU8) 24))) goto LA134;
			genseqconstr_495334(p, n, d);
		}
		goto LA125;
		LA134: ;
		{
			genarrayconstr_498438(p, n, d);
		}
		LA125: ;
	}
	break;
	case ((NU8) 37):
	{
		{
			NIM_BOOL LOC140;
			NI LOC142;
			LOC140 = 0;
			LOC140 = isdeepconstexpr_239361(n);
			if (!(LOC140)) goto LA141;
			LOC142 = 0;
			LOC142 = len_215059(n);
			LOC140 = !((LOC142 == ((NI) 0)));
			LA141: ;
			if (!LOC140) goto LA143;
			exprcomplexconst_498884(p, n, d);
		}
		goto LA138;
		LA143: ;
		{
			gentupleconstr_498067(p, n, d);
		}
		LA138: ;
	}
	break;
	case ((NU8) 38):
	{
		genobjconstr_495233(p, n, d);
	}
	break;
	case ((NU8) 61):
	{
		gencast_496937(p, n, d);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	{
		genconv_497032(p, n, d);
	}
	break;
	case ((NU8) 64):
	case ((NU8) 63):
	{
		genaddr_493392(p, n, d);
	}
	break;
	case ((NU8) 42):
	{
		genbracketexpr_494701(p, n, d);
	}
	break;
	case ((NU8) 47):
	case ((NU8) 65):
	{
		genderef_483563(p, n, d, NIM_FALSE);
	}
	break;
	case ((NU8) 45):
	{
		genrecordfield_493848(p, n, d);
	}
	break;
	case ((NU8) 46):
	{
		gencheckedrecordfield_494446(p, n, d);
	}
	break;
	case ((NU8) 127):
	case ((NU8) 112):
	{
		genblock_485884(p, n, d);
	}
	break;
	case ((NU8) 126):
	{
		genstmtlistexpr_498602(p, n, d);
	}
	break;
	case ((NU8) 115):
	{
		{
			NI i_499218;
			NI HEX3Atmp_499441;
			NI LOC158;
			NI res_499444;
			i_499218 = 0;
			HEX3Atmp_499441 = 0;
			LOC158 = 0;
			LOC158 = sonslen_217351(n);
			HEX3Atmp_499441 = (NI)(LOC158 - ((NI) 1));
			res_499444 = ((NI) 0);
			{
				while (1) {
					if (!(res_499444 <= HEX3Atmp_499441)) goto LA160;
					i_499218 = res_499444;
					genstmts_478644(p, (*n).kindU.S6.sons->data[i_499218]);
					res_499444 += ((NI) 1);
				} LA160: ;
			}
		}
	}
	break;
	case ((NU8) 48):
	case ((NU8) 92):
	{
		genif_484793(p, n, d);
	}
	break;
	case ((NU8) 93):
	{
		expr_478648(p, (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 0)], d);
	}
	break;
	case ((NU8) 66):
	{
		downconv_498781(p, n, d);
	}
	break;
	case ((NU8) 67):
	{
		upconv_498631(p, n, d);
	}
	break;
	case ((NU8) 68):
	{
		genrangechck_496990(p, n, d, ((NimStringDesc*) &TMP4343));
	}
	break;
	case ((NU8) 69):
	{
		genrangechck_496990(p, n, d, ((NimStringDesc*) &TMP4344));
	}
	break;
	case ((NU8) 70):
	{
		genrangechck_496990(p, n, d, ((NimStringDesc*) &TMP4345));
	}
	break;
	case ((NU8) 71):
	{
		convstrtocstr_497042(p, n, d);
	}
	break;
	case ((NU8) 72):
	{
		convcstrtostr_497054(p, n, d);
	}
	break;
	case ((NU8) 51):
	case ((NU8) 52):
	{
		Tsym214822* sym;
		sym = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		genproc_472951((*p).module, sym);
		{
			NIM_BOOL LOC173;
			NimStringDesc* LOC177;
			LOC173 = 0;
			LOC173 = ((*sym).loc.r == NIM_NIL);
			if (LOC173) goto LA174;
			LOC173 = ((*sym).loc.t == NIM_NIL);
			LA174: ;
			if (!LOC173) goto LA175;
			LOC177 = 0;
			LOC177 = rawNewString((*(*sym).name).s->Sup.len + 20);
appendString(LOC177, ((NimStringDesc*) &TMP3985));
appendString(LOC177, (*(*sym).name).s);
			internalerror_187100((*n).info, LOC177);
		}
		LA175: ;
		putlocintodest_478658(p, d, (*sym).loc);
	}
	break;
	case ((NU8) 155):
	{
		genclosure_498236(p, n, d);
	}
	break;
	case ((NU8) 1):
	{
	}
	break;
	case ((NU8) 96):
	{
		genwhilestmt_485793(p, n);
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		genvarstmt_484654(p, n);
	}
	break;
	case ((NU8) 101):
	{
		genconststmt_484709(p, n);
	}
	break;
	case ((NU8) 94):
	{
		internalerror_187100((*n).info, ((NimStringDesc*) &TMP4379));
	}
	break;
	case ((NU8) 97):
	{
		gencase_487617(p, n, d);
	}
	break;
	case ((NU8) 109):
	{
		genreturnstmt_485436(p, n);
	}
	break;
	case ((NU8) 110):
	{
		genbreakstmt_486244(p, n);
	}
	break;
	case ((NU8) 73):
	{
		genasgn_489241(p, n, NIM_FALSE);
	}
	break;
	case ((NU8) 74):
	{
		genasgn_489241(p, n, !(((*p).prc == NIM_NIL)));
	}
	break;
	case ((NU8) 114):
	{
		{
			Tloc214804 a;
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA192;
			genlinedir_472823(p, n);
			memset((void*)(&a), 0, sizeof(a));
			initlocexpr_478683(p, (*n).kindU.S6.sons->data[((NI) 0)], (&a));
		}
		LA192: ;
	}
	break;
	case ((NU8) 89):
	{
		genasmstmt_488628(p, n);
	}
	break;
	case ((NU8) 106):
	{
		{
			NIM_BOOL LOC198;
			LOC198 = 0;
			LOC198 = (gcmd_160123 == ((NU8) 2));
			if (LOC198) goto LA199;
			LOC198 = (((*(*(*p).module).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
			LA199: ;
			if (!LOC198) goto LA200;
			gentrycpp_487684(p, n, d);
		}
		goto LA196;
		LA200: ;
		{
			gentry_488114(p, n, d);
		}
		LA196: ;
	}
	break;
	case ((NU8) 108):
	{
		genraisestmt_486628(p, n);
	}
	break;
	case ((NU8) 98):
	{
		gentypesection_477565((*p).module, n);
	}
	break;
	case ((NU8) 125):
	case ((NU8) 84):
	case ((NU8) 121):
	case ((NU8) 116):
	case ((NU8) 117):
	case ((NU8) 118):
	case ((NU8) 119):
	case ((NU8) 120):
	case ((NU8) 83):
	case ((NU8) 82):
	{
	}
	break;
	case ((NU8) 90):
	{
		genpragma_489039(p, n);
	}
	break;
	case ((NU8) 91):
	{
		Tnode214790* LOC208;
		LOC208 = 0;
		LOC208 = lastson_217364(n);
		expr_478648(p, LOC208, d);
	}
	break;
	case ((NU8) 79):
	case ((NU8) 80):
	case ((NU8) 81):
	{
		{
			Tsym214822* prc;
			if (!((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1))) goto LA212;
			prc = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
			{
				NIM_BOOL LOC216;
				Tsym214822* LOC217;
				LOC216 = 0;
				LOC217 = 0;
				LOC217 = skipgenericowner_219352(prc);
				LOC216 = ((*LOC217).kind == ((NU8) 6));
				if (!(LOC216)) goto LA218;
				LOC216 = !((((*prc).flags &(1U<<((NU)(((NU8) 23))&31U)))!=0));
				LA218: ;
				if (!LOC216) goto LA219;
				{
					NIM_BOOL LOC223;
					NIM_BOOL LOC224;
					NIM_BOOL LOC225;
					NIM_BOOL LOC226;
					Tsym214822* LOC228;
					NIM_BOOL LOC231;
					LOC223 = 0;
					LOC224 = 0;
					LOC225 = 0;
					LOC226 = 0;
					LOC226 = !(((gglobaloptions_160121 &(1U<<((NU)(((NU8) 2))&31U)))!=0));
					if (!(LOC226)) goto LA227;
					LOC228 = 0;
					LOC228 = getmodule_221144(prc);
					LOC226 = !((((*LOC228).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0));
					LA227: ;
					LOC225 = LOC226;
					if (LOC225) goto LA229;
					LOC225 = ((65600 & (*prc).flags) == 64);
					LA229: ;
					LOC224 = LOC225;
					if (LOC224) goto LA230;
					LOC231 = 0;
					LOC231 = (((*prc).flags &(1U<<((NU)(((NU8) 6))&31U)))!=0);
					if (!(LOC231)) goto LA232;
					LOC231 = (((*prc).loc.flags &(1U<<((NU)(((NU8) 5))&15U)))!=0);
					LA232: ;
					LOC224 = LOC231;
					LA230: ;
					LOC223 = LOC224;
					if (LOC223) goto LA233;
					LOC223 = ((*prc).kind == ((NU8) 13));
					LA233: ;
					if (!LOC223) goto LA234;
					{
						NIM_BOOL LOC238;
						Tnode214790* LOC239;
						LOC238 = 0;
						LOC239 = 0;
						LOC239 = getbody_254828(prc);
						LOC238 = !(((*LOC239).kind == ((NU8) 1)));
						if (LOC238) goto LA240;
						LOC238 = (((*prc).loc.flags &(1U<<((NU)(((NU8) 4))&15U)))!=0);
						LA240: ;
						if (!LOC238) goto LA241;
						genproc_472951((*p).module, prc);
					}
					LA241: ;
				}
				LA234: ;
			}
			LA219: ;
		}
		LA212: ;
	}
	break;
	case ((NU8) 95):
	{
		genparforstmt_486008(p, n);
	}
	break;
	case ((NU8) 157):
	{
		genstate_483759(p, n);
	}
	break;
	case ((NU8) 156):
	{
		gengotostate_483786(p, n);
	}
	break;
	case ((NU8) 158):
	{
		genbreakstate_484029(p, n);
	}
	break;
	default:
	{
		NimStringDesc* LOC248;
		LOC248 = 0;
		LOC248 = rawNewString(reprEnum((*n).kind, (&NTI214020))->Sup.len + 25);
appendString(LOC248, ((NimStringDesc*) &TMP4010));
appendString(LOC248, reprEnum((*n).kind, (&NTI214020)));
appendString(LOC248, ((NimStringDesc*) &TMP4441));
		internalerror_187100((*n).info, LOC248);
	}
	break;
	}
}

N_NIMCALL(void, genstmts_478644)(Tcproc469022* p, Tnode214790* t) {
	Tloc214804 a;
	memset((void*)(&a), 0, sizeof(a));
	expr_478648(p, t, (&a));
	{
		NimStringDesc* LOC5;
		if (!!(((7 &(1U<<((NU)(a.k)&15U)))!=0))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_187183(TMP4442);
		internalerror_187113(LOC5);
	}
	LA3: ;
}

N_NIMCALL(Ropeobj169006*, initgcframe_478001)(Tcproc469022* p) {
	Ropeobj169006* result;
	result = 0;
	{
		TY169507 LOC5;
		if (!(((NI) 0) < ((NI) ((*p).gcframeid)))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = (*p).gcframetype;
		result = HEX25_169905(((NimStringDesc*) &TMP4446), LOC5, 1);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, initframe_500358)(Tcproc469022* p, Ropeobj169006* procname, Ropeobj169006* filename) {
	Ropeobj169006* result;
	Ropeobj169006* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_472403((*p).module, ((NimStringDesc*) &TMP4447));
	{
		Ropeobj169006* LOC6;
		TY474652 LOC7;
		if (!(((NI) 0) < (*p).maxframelen)) goto LA4;
		LOC6 = 0;
		LOC6 = cgsym_472403((*p).module, ((NimStringDesc*) &TMP4448));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = procname;
		LOC7[1] = filename;
		LOC7[2] = rope_169401(((NI64) ((*p).maxframelen)));
		LOC7[3] = rope_169401(((NI64) ((*p).blocks->data[((NI) 0)].framelen)));
		result = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP4449), LOC7, 4);
	}
	goto LA2;
	LA4: ;
	{
		TY501032 LOC9;
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = procname;
		LOC9[1] = filename;
		result = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP4450), LOC9, 2);
	}
	LA2: ;
	return result;
}

N_NIMCALL(void, appcg_472648)(Tcproc469022* p, NU8 s, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0) {
	Ropeobj169006** LOC1;
	Ropeobj169006* LOC2;
	LOC1 = 0;
	LOC1 = s_469166(p, s);
	LOC2 = 0;
	LOC2 = ropecg_472407((*p).module, frmt, args, argsLen0);
	add_169482(LOC1, LOC2);
}

N_NIMCALL(Ropeobj169006*, deinitgcframe_478007)(Tcproc469022* p) {
	Ropeobj169006* result;
	result = 0;
	{
		TY473064 LOC5;
		if (!(((NI) 0) < ((NI) ((*p).gcframeid)))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		result = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4453), LOC5, 0);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, deinitframe_500368)(Tcproc469022* p) {
	Ropeobj169006* result;
	TY473064 LOC1;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	result = ropecg_472407((*p).module, ((NimStringDesc*) &TMP4454), LOC1, 0);
	return result;
}

N_NIMCALL(void, genprocaux_500409)(Tcgen469026* m, Tsym214822* prc) {
	Tcproc469022* p;
	Ropeobj169006* header;
	Ropeobj169006* returnstmt;
	Tnode214790* LOC38;
	Ropeobj169006* generatedproc;
	p = newproc_469193(prc, m);
	header = genprocheader_475286(m, prc);
	returnstmt = NIM_NIL;
	{
		NIM_BOOL LOC3;
		Tsym214822* res;
		LOC3 = 0;
		LOC3 = !((((*prc).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*(*prc).typ).sons->data[((NI) 0)] == NIM_NIL));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_215059((*prc).ast);
			if (!(LOC9 <= ((NI) 7))) goto LA10;
			internalerror_187100((*prc).info, ((NimStringDesc*) &TMP3865));
		}
		LA10: ;
		res = (*(*(*prc).ast).kindU.S6.sons->data[((NI) 7)]).kindU.S4.sym;
		{
			NIM_BOOL LOC14;
			TY169507 LOC21;
			LOC14 = 0;
			LOC14 = isinvalidreturntype_473318((*(*prc).typ).sons->data[((NI) 0)]);
			if (!!(LOC14)) goto LA15;
			{
				if (!(((*prc).flags &(1U<<((NU)(((NU8) 12))&31U)))!=0)) goto LA19;
				(*res).flags |= ((NU32)1)<<((((NU8) 12))%(sizeof(NU32)*8));
			}
			LA19: ;
			assignlocalvar_478180(p, res);
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = rdloc_477569((*res).loc);
			returnstmt = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3958), LOC21, 1);
			initlocalvar_477780(p, res, NIM_FALSE);
		}
		goto LA12;
		LA15: ;
		{
			fillresult_473465(res);
			assignparam_478540(p, res);
			{
				Ttype214828* LOC25;
				LOC25 = 0;
				LOC25 = skiptypes_218113((*res).typ, IL64(211106232576256));
				if (!((*LOC25).kind == ((NU8) 16))) goto LA26;
				(*res).loc.flags |= ((NU16)1)<<((((NU8) 0))%(sizeof(NU16)*8));
				(*res).loc.s = ((NU8) 0);
			}
			LA26: ;
		}
		LA12: ;
	}
	LA5: ;
	{
		NI i_500838;
		NI HEX3Atmp_500953;
		NI LOC29;
		NI res_500956;
		i_500838 = 0;
		HEX3Atmp_500953 = 0;
		LOC29 = 0;
		LOC29 = sonslen_217351((*(*prc).typ).n);
		HEX3Atmp_500953 = (NI)(LOC29 - ((NI) 1));
		res_500956 = ((NI) 1);
		{
			while (1) {
				if (!(res_500956 <= HEX3Atmp_500953)) goto LA31;
				i_500838 = res_500956;
				{
					Tsym214822* param;
					param = (*(*(*(*prc).typ).n).kindU.S6.sons->data[i_500838]).kindU.S4.sym;
					{
						NIM_BOOL LOC35;
						LOC35 = 0;
						LOC35 = iscompiletimeonly_248906((*param).typ);
						if (!LOC35) goto LA36;
						goto LA32;
					}
					LA36: ;
					assignparam_478540(p, param);
				} LA32: ;
				res_500956 += ((NI) 1);
			} LA31: ;
		}
	}
	closuresetup_500376(p, prc);
	LOC38 = 0;
	LOC38 = getbody_254828(prc);
	genstmts_478644(p, LOC38);
	generatedproc = 0;
	{
		if (!(((*prc).flags &(1U<<((NU)(((NU8) 14))&31U)))!=0)) goto LA41;
		{
			if (!((Cc_194413[(ccompiler_194431)- 1].Field20 &(1U<<((NU)(((NU8) 6))&7U)))!=0)) goto LA45;
			header = HEX26_169452(((NimStringDesc*) &TMP3860), header);
		}
		LA45: ;
	}
	LA41: ;
	{
		TY474652 LOC55;
		Ropeobj169006** LOC56;
		Ropeobj169006** LOC57;
		Ropeobj169006** LOC58;
		if (!(((*prc).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0)) goto LA49;
		{
			if (!((Cc_194413[(ccompiler_194431)- 1].Field20 &(1U<<((NU)(((NU8) 6))&7U)))!=0)) goto LA53;
			header = HEX26_169452(((NimStringDesc*) &TMP4443), header);
		}
		LA53: ;
		memset((void*)LOC55, 0, sizeof(LOC55));
		LOC55[0] = header;
		LOC56 = 0;
		LOC56 = s_469166(p, ((NU8) 0));
		LOC55[1] = (*LOC56);
		LOC57 = 0;
		LOC57 = s_469166(p, ((NU8) 1));
		LOC55[2] = (*LOC57);
		LOC58 = 0;
		LOC58 = s_469166(p, ((NU8) 2));
		LOC55[3] = (*LOC58);
		generatedproc = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP4444), LOC55, 4);
	}
	goto LA47;
	LA49: ;
	{
		TY169507 LOC60;
		Ropeobj169006* LOC61;
		Ropeobj169006** LOC80;
		Ropeobj169006** LOC81;
		Ropeobj169006* LOC88;
		TY473064 LOC94;
		Ropeobj169006* LOC95;
		memset((void*)LOC60, 0, sizeof(LOC60));
		LOC60[0] = header;
		generatedproc = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP4445), LOC60, 1);
		LOC61 = 0;
		LOC61 = initgcframe_478001(p);
		add_169482(&generatedproc, LOC61);
		{
			Ropeobj169006** LOC66;
			Ropeobj169006* procname;
			Ropeobj169006* LOC67;
			Ropeobj169006* LOC68;
			if (!(((*prc).options &(1U<<((NU)(((NU8) 15))&31U)))!=0)) goto LA64;
			LOC66 = 0;
			LOC66 = s_469166(p, ((NU8) 0));
			add_169482(&generatedproc, (*LOC66));
			procname = makecstring_182637((*(*prc).name).s);
			LOC67 = 0;
			LOC67 = quotedfilename_187418((*prc).info);
			LOC68 = 0;
			LOC68 = initframe_500358(p, procname, LOC67);
			add_169482(&generatedproc, LOC68);
		}
		goto LA62;
		LA64: ;
		{
			Ropeobj169006** LOC70;
			LOC70 = 0;
			LOC70 = s_469166(p, ((NU8) 0));
			add_169482(&generatedproc, (*LOC70));
		}
		LA62: ;
		{
			TY473064 LOC75;
			if (!(((*prc).options &(1U<<((NU)(((NU8) 19))&31U)))!=0)) goto LA73;
			memset((void*)LOC75, 0, sizeof(LOC75));
			appcg_472648(p, ((NU8) 1), ((NimStringDesc*) &TMP4451), LOC75, 0);
		}
		LA73: ;
		{
			if (!(*p).beforeretneeded) goto LA78;
			add_169487(&generatedproc, ((NimStringDesc*) &TMP4001));
		}
		LA78: ;
		LOC80 = 0;
		LOC80 = s_469166(p, ((NU8) 1));
		add_169482(&generatedproc, (*LOC80));
		LOC81 = 0;
		LOC81 = s_469166(p, ((NU8) 2));
		add_169482(&generatedproc, (*LOC81));
		{
			TY473064 LOC86;
			Ropeobj169006* LOC87;
			if (!(*p).beforeretneeded) goto LA84;
			memset((void*)LOC86, 0, sizeof(LOC86));
			LOC87 = 0;
			LOC87 = HEX25_169905(((NimStringDesc*) &TMP4452), LOC86, 0);
			add_169482(&generatedproc, LOC87);
		}
		LA84: ;
		LOC88 = 0;
		LOC88 = deinitgcframe_478007(p);
		add_169482(&generatedproc, LOC88);
		{
			Ropeobj169006* LOC93;
			if (!(((*prc).options &(1U<<((NU)(((NU8) 15))&31U)))!=0)) goto LA91;
			LOC93 = 0;
			LOC93 = deinitframe_500368(p);
			add_169482(&generatedproc, LOC93);
		}
		LA91: ;
		add_169482(&generatedproc, returnstmt);
		memset((void*)LOC94, 0, sizeof(LOC94));
		LOC95 = 0;
		LOC95 = HEX25_169905(((NimStringDesc*) &TMP4455), LOC94, 0);
		add_169482(&generatedproc, LOC95);
	}
	LA47: ;
	add_169482(&(*m).s[(((NU8) 10))- 0], generatedproc);
}

N_NIMCALL(NIM_BOOL, isgetprocaddr_499599)(Tlib214808* lib) {
	NIM_BOOL result;
	Tnode214790* n;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	n = (*lib).path;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*n).kind == ((NU8) 27) || (*n).kind == ((NU8) 29) || (*n).kind == ((NU8) 30) || (*n).kind == ((NU8) 31) || (*n).kind == ((NU8) 26) || (*n).kind == ((NU8) 28) || (*n).kind == ((NU8) 32));
	if (!(LOC2)) goto LA3;
	LOC2 = !(((*n).typ == NIM_NIL));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = ((*(*n).typ).kind == ((NU8) 26) || (*(*n).typ).kind == ((NU8) 25));
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, symindynamiclib_500129)(Tcgen469026* m, Tsym214822* sym) {
	Tlib214808* lib;
	NIM_BOOL iscall;
	Ropeobj169006* extname;
	Ropeobj169006* tmp;
	TY501032 LOC43;
	lib = (*sym).annex;
	iscall = isgetprocaddr_499599(lib);
	extname = (*sym).loc.r;
	{
		if (!!(iscall)) goto LA3;
		loaddynamiclib_499637(m, lib);
	}
	LA3: ;
	tmp = mangledynlibproc_478362(sym);
	asgnRefNoCycle((void**) (&(*sym).loc.r), tmp);
	asgnRefNoCycle((void**) (&(*(*sym).typ).sym), NIM_NIL);
	(*m).labels += ((NI) 2);
	{
		Tnode214790* n;
		Tloc214804 a;
		Tnode214790* LOC9;
		Ropeobj169006* params;
		Ropeobj169006* LOC10;
		Ropeobj169006* load;
		TY474652 LOC17;
		NimStringDesc* LOC18;
		Tnode214790* last;
		NimStringDesc* idx;
		if (!iscall) goto LA7;
		n = (*lib).path;
		memset((void*)(&a), 0, sizeof(a));
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_215238(n, ((NI) 0));
		initlocexpr_478683((*m).initproc, LOC9, (&a));
		LOC10 = 0;
		LOC10 = rdloc_477569(a);
		params = HEX26_169447(LOC10, ((NimStringDesc*) &TMP3810));
		{
			NI i_500164;
			NI HEX3Atmp_500225;
			NI LOC12;
			NI res_500228;
			i_500164 = 0;
			HEX3Atmp_500225 = 0;
			LOC12 = 0;
			LOC12 = len_215059(n);
			HEX3Atmp_500225 = (NI)(LOC12 - ((NI) 2));
			res_500228 = ((NI) 1);
			{
				while (1) {
					Tnode214790* LOC15;
					Ropeobj169006* LOC16;
					if (!(res_500228 <= HEX3Atmp_500225)) goto LA14;
					i_500164 = res_500228;
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_215238(n, i_500164);
					initlocexpr_478683((*m).initproc, LOC15, (&a));
					LOC16 = 0;
					LOC16 = rdloc_477569(a);
					add_169482(&params, LOC16);
					add_169487(&params, ((NimStringDesc*) &TMP3802));
					res_500228 += ((NI) 1);
				} LA14: ;
			}
		}
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = tmp;
		LOC17[1] = gettypedesc_475055(m, (*sym).typ);
		LOC17[2] = params;
		LOC18 = 0;
		LOC18 = HEX24_169856(extname);
		LOC17[3] = makecstring_182637(LOC18);
		load = HEX25_169905(((NimStringDesc*) &TMP4456), LOC17, 4);
		last = lastson_217364(n);
		{
			if (!((*last).kind == ((NU8) 58))) goto LA21;
			last = (*last).kindU.S6.sons->data[((NI) 1)];
		}
		LA21: ;
		{
			NimStringDesc* LOC27;
			if (!!(((*last).kind == ((NU8) 20)))) goto LA25;
			LOC27 = 0;
			LOC27 = HEX24_187183(TMP4457);
			internalerror_187113(LOC27);
		}
		LA25: ;
		idx = (*last).kindU.S3.strval;
		{
			Ropeobj169006** LOC32;
			if (!((idx ? idx->Sup.len : 0) == ((NI) 0))) goto LA30;
			LOC32 = 0;
			LOC32 = s_469166((*m).initproc, ((NU8) 2));
			add_169482(LOC32, load);
		}
		goto LA28;
		LA30: ;
		{
			NIM_BOOL LOC34;
			LOC34 = 0;
			LOC34 = ((idx ? idx->Sup.len : 0) == ((NI) 1));
			if (!(LOC34)) goto LA35;
			LOC34 = (((NU8)(idx->data[((NI) 0)])) >= ((NU8)(48)) && ((NU8)(idx->data[((NI) 0)])) <= ((NU8)(57)));
			LA35: ;
			if (!LOC34) goto LA36;
			add_169482(&(*m).extensionloaders[(((NU8)(idx->data[((NI) 0)])))- 48], load);
		}
		goto LA28;
		LA36: ;
		{
			NimStringDesc* LOC39;
			LOC39 = 0;
			LOC39 = rawNewString(idx->Sup.len + 13);
appendString(LOC39, ((NimStringDesc*) &TMP4458));
appendString(LOC39, idx);
			internalerror_187100((*sym).info, LOC39);
		}
		LA28: ;
	}
	goto LA5;
	LA7: ;
	{
		TY474652 LOC41;
		NimStringDesc* LOC42;
		memset((void*)LOC41, 0, sizeof(LOC41));
		LOC41[0] = tmp;
		LOC41[1] = gettypedesc_475055(m, (*sym).typ);
		LOC41[2] = (*lib).name;
		LOC42 = 0;
		LOC42 = HEX24_169856(extname);
		LOC41[3] = makecstring_182637(LOC42);
		appcg_472632(m, &(*m).s[(((NU8) 16))- 0], ((NimStringDesc*) &TMP4459), LOC41, 4);
	}
	LA5: ;
	memset((void*)LOC43, 0, sizeof(LOC43));
	LOC43[0] = (*sym).loc.r;
	LOC43[1] = gettypedesc_475055(m, (*sym).loc.t);
	addf_170205(&(*m).s[(((NU8) 9))- 0], ((NimStringDesc*) &TMP4460), LOC43, 2);
}

N_NIMCALL(void, symindynamiclibpartial_500271)(Tcgen469026* m, Tsym214822* sym) {
	asgnRefNoCycle((void**) (&(*sym).loc.r), mangledynlibproc_478362(sym));
	asgnRefNoCycle((void**) (&(*(*sym).typ).sym), NIM_NIL);
}

N_NIMCALL(void, genprocnoforward_501116)(Tcgen469026* m, Tsym214822* prc) {
{	fillprocloc_478601(prc);
	useheader_472349(m, prc);
	{
		Ropeobj169006* LOC5;
		if (!(((*prc).loc.flags &(1U<<((NU)(((NU8) 7))&15U)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = cgsym_472403(m, (*(*prc).name).s);
		goto BeforeRet;
	}
	LA3: ;
	genprocprototype_478654(m, prc);
	{
		if (!(((*prc).loc.flags &(1U<<((NU)(((NU8) 3))&15U)))!=0)) goto LA8;
	}
	goto LA6;
	LA8: ;
	{
		if (!((*(*prc).typ).callconv == ((NU8) 5))) goto LA11;
		{
			NIM_BOOL LOC15;
			LOC15 = 0;
			LOC15 = containsorincl_211862((&(*m).declaredthings), (*prc).Sup.id);
			if (!!(LOC15)) goto LA16;
			genprocaux_500409(m, prc);
		}
		LA16: ;
	}
	goto LA6;
	LA11: ;
	{
		Tcgen469026* q;
		if (!(((*prc).loc.flags &(1U<<((NU)(((NU8) 4))&15U)))!=0)) goto LA19;
		q = findpendingmodule_472241(m, prc);
		{
			NIM_BOOL LOC23;
			NIM_BOOL LOC25;
			LOC23 = 0;
			LOC23 = !((q == NIM_NIL));
			if (!(LOC23)) goto LA24;
			LOC25 = 0;
			LOC25 = containsorincl_211862((&(*q).declaredthings), (*prc).Sup.id);
			LOC23 = !(LOC25);
			LA24: ;
			if (!LOC23) goto LA26;
			symindynamiclib_500129(q, prc);
		}
		goto LA21;
		LA26: ;
		{
			symindynamiclibpartial_500271(m, prc);
		}
		LA21: ;
	}
	goto LA6;
	LA19: ;
	{
		Tcgen469026* q;
		if (!!((((*prc).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0))) goto LA30;
		q = findpendingmodule_472241(m, prc);
		{
			NIM_BOOL LOC34;
			NIM_BOOL LOC36;
			LOC34 = 0;
			LOC34 = !((q == NIM_NIL));
			if (!(LOC34)) goto LA35;
			LOC36 = 0;
			LOC36 = containsorincl_211862((&(*q).declaredthings), (*prc).Sup.id);
			LOC34 = !(LOC36);
			LA35: ;
			if (!LOC34) goto LA37;
			genprocaux_500409(q, prc);
		}
		LA37: ;
	}
	goto LA6;
	LA30: ;
	LA6: ;
	}BeforeRet: ;
}

N_NIMCALL(void, genproc_472951)(Tcgen469026* m, Tsym214822* prc) {
{	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = 0;
		LOC3 = (((*prc).flags &(1U<<((NU)(((NU8) 26))&31U)))!=0);
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = isactivated_501631(prc);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		goto BeforeRet;
	}
	LA6: ;
	fillprocloc_478601(prc);
	{
		if (!(((*prc).flags &(1U<<((NU)(((NU8) 4))&31U)))!=0)) goto LA10;
		addforwardedproc_472203(m, prc);
	}
	goto LA8;
	LA10: ;
	{
		genprocnoforward_501116(m, prc);
		{
			NIM_BOOL LOC15;
			NIM_BOOL LOC16;
			LOC15 = 0;
			LOC16 = 0;
			LOC16 = ((65600 & (*prc).flags) == 64);
			if (!(LOC16)) goto LA17;
			LOC16 = !((generatedheader_472201 == NIM_NIL));
			LA17: ;
			LOC15 = LOC16;
			if (!(LOC15)) goto LA18;
			LOC15 = !((((*prc).loc.flags &(1U<<((NU)(((NU8) 3))&15U)))!=0));
			LA18: ;
			if (!LOC15) goto LA19;
			genprocprototype_478654(generatedheader_472201, prc);
			{
				if (!((*(*prc).typ).callconv == ((NU8) 5))) goto LA23;
				{
					NIM_BOOL LOC27;
					LOC27 = 0;
					LOC27 = containsorincl_211862((&(*generatedheader_472201).declaredthings), (*prc).Sup.id);
					if (!!(LOC27)) goto LA28;
					genprocaux_500409(generatedheader_472201, prc);
				}
				LA28: ;
			}
			LA23: ;
		}
		LA19: ;
	}
	LA8: ;
	}BeforeRet: ;
}

N_NIMCALL(Ropeobj169006*, cgsym_472403)(Tcgen469026* m, NimStringDesc* name) {
	Ropeobj169006* result;
	Tsym214822* sym;
	result = 0;
	sym = getcompilerproc_258746(name);
	{
		if (!!((sym == NIM_NIL))) goto LA3;
		switch ((*sym).kind) {
		case ((NU8) 12):
		case ((NU8) 13):
		case ((NU8) 15):
		case ((NU8) 14):
		{
			genproc_472951(m, sym);
		}
		break;
		case ((NU8) 8):
		case ((NU8) 11):
		case ((NU8) 9):
		{
			genvarprototype_478636(m, sym);
		}
		break;
		case ((NU8) 7):
		{
			Ropeobj169006* LOC8;
			LOC8 = 0;
			LOC8 = gettypedesc_475055(m, (*sym).typ);
		}
		break;
		default:
		{
			NimStringDesc* LOC10;
			LOC10 = 0;
			LOC10 = rawNewString(name->Sup.len + reprEnum((*sym).kind, (&NTI214435))->Sup.len + 9);
appendString(LOC10, ((NimStringDesc*) &TMP4461));
appendString(LOC10, name);
appendString(LOC10, ((NimStringDesc*) &TMP4225));
appendString(LOC10, reprEnum((*sym).kind, (&NTI214435)));
			internalerror_187113(LOC10);
		}
		break;
		}
	}
	goto LA1;
	LA3: ;
	{
		rawmessage_185612(((NU16) 68), name);
	}
	LA1: ;
	result = (*sym).loc.r;
	return result;
}

N_NIMCALL(Ropeobj169006*, ropecg_472407)(Tcgen469026* m, NimStringDesc* frmt, Ropeobj169006** args, NI argsLen0) {
	Ropeobj169006* result;
	NI i;
	NI length;
	NI num;
	result = 0;
	i = ((NI) 0);
	length = (frmt ? frmt->Sup.len : 0);
	result = NIM_NIL;
	num = ((NI) 0);
	{
		while (1) {
			NI start;
			if (!(i < length)) goto LA2;
			{
				if (!((NU8)(frmt->data[i]) == (NU8)(36))) goto LA5;
				i += ((NI) 1);
				switch (((NU8)(frmt->data[i]))) {
				case 36:
				{
					add_169487(&result, ((NimStringDesc*) &TMP3754));
					i += ((NI) 1);
				}
				break;
				case 35:
				{
					i += ((NI) 1);
					add_169482(&result, args[num]);
					num += ((NI) 1);
				}
				break;
				case 48 ... 57:
				{
					NI j;
					j = ((NI) 0);
					{
						while (1) {
							j = (NI)((NI)((NI)(j * ((NI) 10)) + ((NI) (((NU8)(frmt->data[i]))))) - ((NI) 48));
							i += ((NI) 1);
							{
								NIM_BOOL LOC14;
								LOC14 = 0;
								LOC14 = (length <= i);
								if (LOC14) goto LA15;
								LOC14 = !((((NU8)(frmt->data[i])) >= ((NU8)(48)) && ((NU8)(frmt->data[i])) <= ((NU8)(57))));
								LA15: ;
								if (!LOC14) goto LA16;
								goto LA10;
							}
							LA16: ;
						}
					} LA10: ;
					num = j;
					{
						NimStringDesc* LOC22;
						NimStringDesc* LOC23;
						if (!((NI)((argsLen0-1) + ((NI) 1)) < j)) goto LA20;
						LOC22 = 0;
						LOC23 = 0;
						LOC23 = nimIntToStr(j);
						LOC22 = rawNewString(LOC23->Sup.len + 30);
appendString(LOC22, ((NimStringDesc*) &TMP3755));
appendString(LOC22, LOC23);
						internalerror_187113(LOC22);
					}
					LA20: ;
					add_169482(&result, args[(NI)(j - ((NI) 1))]);
				}
				break;
				case 110:
				{
					{
						if (!!(((goptions_160119 &(1U<<((NU)(((NU8) 10))&31U)))!=0))) goto LA27;
						add_169482(&result, rnl_169903);
					}
					LA27: ;
					i += ((NI) 1);
				}
				break;
				case 78:
				{
					add_169482(&result, rnl_169903);
					i += ((NI) 1);
				}
				break;
				default:
				{
					NimStringDesc* LOC31;
					LOC31 = 0;
					LOC31 = rawNewString(31);
appendString(LOC31, ((NimStringDesc*) &TMP3755));
appendChar(LOC31, frmt->data[i]);
					internalerror_187113(LOC31);
				}
				break;
				}
			}
			goto LA3;
			LA5: ;
			{
				NIM_BOOL LOC33;
				NI j;
				NimStringDesc* ident;
				Ropeobj169006* LOC39;
				LOC33 = 0;
				LOC33 = ((NU8)(frmt->data[i]) == (NU8)(35));
				if (!(LOC33)) goto LA34;
				LOC33 = (((NU8)(frmt->data[(NI)(i + ((NI) 1))])) >= ((NU8)(97)) && ((NU8)(frmt->data[(NI)(i + ((NI) 1))])) <= ((NU8)(122)) || ((NU8)(frmt->data[(NI)(i + ((NI) 1))])) >= ((NU8)(65)) && ((NU8)(frmt->data[(NI)(i + ((NI) 1))])) <= ((NU8)(90)) || ((NU8)(frmt->data[(NI)(i + ((NI) 1))])) == ((NU8)(95)));
				LA34: ;
				if (!LOC33) goto LA35;
				i += ((NI) 1);
				j = i;
				{
					while (1) {
						if (!(((NU8)(frmt->data[j])) >= ((NU8)(97)) && ((NU8)(frmt->data[j])) <= ((NU8)(122)) || ((NU8)(frmt->data[j])) >= ((NU8)(65)) && ((NU8)(frmt->data[j])) <= ((NU8)(90)) || ((NU8)(frmt->data[j])) >= ((NU8)(48)) && ((NU8)(frmt->data[j])) <= ((NU8)(57)) || ((NU8)(frmt->data[j])) == ((NU8)(95)))) goto LA38;
						j += ((NI) 1);
					} LA38: ;
				}
				ident = copyStrLast(frmt, i, (NI)(j - ((NI) 1)));
				i = j;
				LOC39 = 0;
				LOC39 = cgsym_472403(m, ident);
				add_169482(&result, LOC39);
			}
			goto LA3;
			LA35: ;
			{
				NIM_BOOL LOC41;
				NI j;
				NimStringDesc* LOC47;
				Ropeobj169006* LOC48;
				LOC41 = 0;
				LOC41 = ((NU8)(frmt->data[i]) == (NU8)(35));
				if (!(LOC41)) goto LA42;
				LOC41 = ((NU8)(frmt->data[(NI)(i + ((NI) 1))]) == (NU8)(36));
				LA42: ;
				if (!LOC41) goto LA43;
				i += ((NI) 2);
				j = ((NI) 0);
				{
					while (1) {
						if (!(((NU8)(frmt->data[i])) >= ((NU8)(48)) && ((NU8)(frmt->data[i])) <= ((NU8)(57)))) goto LA46;
						j = (NI)((NI)((NI)(j * ((NI) 10)) + ((NI) (((NU8)(frmt->data[i]))))) - ((NI) 48));
						i += ((NI) 1);
					} LA46: ;
				}
				LOC47 = 0;
				LOC47 = HEX24_169856(args[(NI)(j - ((NI) 1))]);
				LOC48 = 0;
				LOC48 = cgsym_472403(m, LOC47);
				add_169482(&result, LOC48);
			}
			goto LA3;
			LA43: ;
			LA3: ;
			start = i;
			{
				while (1) {
					if (!(i < length)) goto LA50;
					{
						NIM_BOOL LOC53;
						LOC53 = 0;
						LOC53 = !(((NU8)(frmt->data[i]) == (NU8)(36)));
						if (!(LOC53)) goto LA54;
						LOC53 = !(((NU8)(frmt->data[i]) == (NU8)(35)));
						LA54: ;
						if (!LOC53) goto LA55;
						i += ((NI) 1);
					}
					goto LA51;
					LA55: ;
					{
						goto LA49;
					}
					LA51: ;
				} LA50: ;
			} LA49: ;
			{
				NimStringDesc* LOC62;
				if (!(start <= (NI)(i - ((NI) 1)))) goto LA60;
				LOC62 = 0;
				LOC62 = copyStrLast(frmt, start, (NI)(i - ((NI) 1)));
				add_169487(&result, LOC62);
			}
			LA60: ;
		} LA2: ;
	}
	return result;
}

N_NIMCALL(Ropeobj169006*, gettempname_473366)(void) {
	Ropeobj169006* result;
	TY169507 LOC1;
	NI LOC2;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = backendid_213413();
	LOC1[0] = rope_169401(((NI64) (LOC2)));
	result = ropecg_472407(NIM_NIL, ((NimStringDesc*) &TMP3887), LOC1, 1);
	return result;
}

N_NIMCALL(Tcgen469026*, rawnewmodule_503063)(Tsym214822* module, NimStringDesc* filename) {
	Tcgen469026* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	result = (Tcgen469026*) newObj((&NTI469016), sizeof(Tcgen469026));
	(*result).Sup.Sup.m_type = (&NTI469026);
	initlinkedlist_135028((&(*result).headerfiles));
	initintset_211885((&(*result).declaredthings));
	initintset_211885((&(*result).declaredprotos));
	LOC1 = 0;
	LOC1 = (*result).cfilename; (*result).cfilename = copyStringRC1(filename);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	LOC2 = 0;
	LOC2 = (*result).filename; (*result).filename = copyStringRC1(filename);
	if (LOC2) nimGCunrefNoCycle(LOC2);
	initidtable_218033((&(*result).typecache));
	initidtable_218033((&(*result).forwtypecache));
	asgnRefNoCycle((void**) (&(*result).module), module);
	initintset_211885((&(*result).typeinfomarker));
	asgnRef((void**) (&(*result).initproc), newproc_469193(NIM_NIL, result));
	(*(*result).initproc).options = initprocoptions_503035(result);
	asgnRef((void**) (&(*result).preinitproc), newpreinitproc_503025(result));
	asgnRef((void**) (&(*result).postinitproc), newpostinitproc_503030(result));
	initnodetable_218099((&(*result).datacache));
	if ((*result).typestack) nimGCunrefNoCycle((*result).typestack);
	(*result).typestack = (Ttypeseq214824*) newSeqRC1((&NTI214824), 0);
	if ((*result).forwardedprocs) nimGCunrefNoCycle((*result).forwardedprocs);
	(*result).forwardedprocs = (Tsymseq214792*) newSeqRC1((&NTI214792), 0);
	asgnRefNoCycle((void**) (&(*result).typenodesname), gettempname_473366());
	asgnRefNoCycle((void**) (&(*result).nimtypesname), gettempname_473366());
	{
		if (!(((*module).flags &(1U<<((NU)(((NU8) 13))&31U)))!=0)) goto LA5;
		(*result).preventstacktrace = NIM_TRUE;
		(*(*result).preinitproc).options &= ~(((NU32)1) << ((((NU8) 15)) % (sizeof(NU32)*8)));
		(*(*result).postinitproc).options &= ~(((NU32)1) << ((((NU8) 15)) % (sizeof(NU32)*8)));
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tcgen469026*, rawnewmodule_503438)(Tsym214822* module) {
	Tcgen469026* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = tofullpath_183269(((NI32) ((*module).position)));
	result = rawnewmodule_503063(module, LOC1);
	return result;
}

N_NIMCALL(Tcgen469026*, newmodule_503445)(Tsym214822* module) {
	Tcgen469026* result;
	result = 0;
	{
		Tcgen469026* LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = getcgenmodule_472226(module);
		if (!!((LOC3 == NIM_NIL))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX24_187183(TMP3752);
		internalerror_187113(LOC6);
	}
	LA4: ;
	result = rawnewmodule_503438(module);
	{
		if (!((gmodules_469157 ? gmodules_469157->Sup.len : 0) <= (*module).position)) goto LA9;
		gmodules_469157 = (TY469140*) setLengthSeq(&(gmodules_469157)->Sup, sizeof(Tcgen469026*), ((NI) ((NI)((*module).position + ((NI) 1)))));
	}
	LA9: ;
	asgnRef((void**) (&gmodules_469157->data[(*module).position]), result);
	{
		if (!((gglobaloptions_160121 &(1U<<((NU)(((NU8) 2))&31U)))!=0)) goto LA13;
		{
			NimStringDesc* LOC19;
			NimStringDesc* LOC20;
			if (!(((*module).flags &(1U<<((NU)(((NU8) 25))&31U)))!=0)) goto LA17;
			LOC19 = 0;
			LOC20 = 0;
			LOC20 = tofilename_183265(((NI32) ((*module).position)));
			LOC19 = rawNewString(LOC20->Sup.len + 28);
appendString(LOC19, ((NimStringDesc*) &TMP4462));
appendString(LOC19, LOC20);
			internalerror_187113(LOC19);
		}
		LA17: ;
	}
	LA13: ;
	return result;
}

N_NIMCALL(Tpasscontext261002*, myopen_503515)(Tsym214822* module) {
	Tpasscontext261002* result;
	Tcgen469026* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = newmodule_503445(module);
	result = &LOC1->Sup;
	{
		NIM_BOOL LOC4;
		NimStringDesc* f;
		NimStringDesc* LOC13;
		NimStringDesc* LOC14;
		LOC4 = 0;
		LOC4 = ((gglobaloptions_160121 &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		if (!(LOC4)) goto LA5;
		LOC4 = (generatedheader_472201 == NIM_NIL);
		LA5: ;
		if (!LOC4) goto LA6;
		{
			if (!(((NI) 0) < (headerfile_160129 ? headerfile_160129->Sup.len : 0))) goto LA10;
			f = headerfile_160129;
		}
		goto LA8;
		LA10: ;
		{
			f = gprojectfull_160201;
		}
		LA8: ;
		LOC13 = 0;
		LOC13 = completecfilepath_194854(f, NIM_TRUE);
		LOC14 = 0;
		LOC14 = noschangeFileExt(LOC13, ((NimStringDesc*) &TMP4463));
		asgnRef((void**) (&generatedheader_472201), rawnewmodule_503063(module, LOC14));
		(*generatedheader_472201).isheaderfile = NIM_TRUE;
	}
	LA6: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getcfile_503594)(Tcgen469026* m) {
	NimStringDesc* result;
	NimStringDesc* ext;
	NimStringDesc* LOC13;
	NimStringDesc* LOC14;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_160123 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*m).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		ext = copyString(((NimStringDesc*) &TMP4473));
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = (gcmd_160123 == ((NU8) 3));
		if (LOC8) goto LA9;
		LOC8 = (((*(*m).module).flags &(1U<<((NU)(((NU8) 28))&31U)))!=0);
		LA9: ;
		if (!LOC8) goto LA10;
		ext = copyString(((NimStringDesc*) &TMP4474));
	}
	goto LA1;
	LA10: ;
	{
		ext = copyString(((NimStringDesc*) &TMP4475));
	}
	LA1: ;
	LOC13 = 0;
	LOC13 = withpackagename_161074((*m).cfilename);
	LOC14 = 0;
	LOC14 = completecfilepath_194854(LOC13, NIM_TRUE);
	result = noschangeFileExt(LOC14, ext);
	return result;
}

N_NIMCALL(Tpasscontext261002*, myopencached_503639)(Tsym214822* module, Trodreader252021* rd) {
	Tpasscontext261002* result;
	Tcgen469026* m;
	NimStringDesc* LOC1;
	result = 0;
	m = newmodule_503445(module);
	LOC1 = 0;
	LOC1 = getcfile_503594(m);
	readmergeinfo_470613(LOC1, m);
	result = &m->Sup;
	return result;
}

static N_INLINE(NIM_BOOL, skipcodegen_261065)(Tnode214790* n) {
	NIM_BOOL result;
	result = 0;
	result = (((NI) 0) < gerrorcounter_183081);
	return result;
}

N_NIMCALL(Tnode214790*, myprocess_503802)(Tpasscontext261002* b, Tnode214790* n) {
	Tnode214790* result;
	Tcgen469026* m;
{	result = 0;
	result = n;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (b == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = skipcodegen_261065(n);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	m = ((Tcgen469026*) (b));
	(*(*m).initproc).options = initprocoptions_503035(m);
	genstmts_478644((*m).initproc, n);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ropeobj169006*, getsomeinitname_502304)(Tsym214822* m, NimStringDesc* suffix) {
	Ropeobj169006* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!((12288 & (*m).flags) == 0)) goto LA3;
		LOC5 = 0;
		LOC5 = mangle_468847((*(*(*m).owner).name).s);
		result = rope_169277(LOC5);
		add_169487(&result, ((NimStringDesc*) &TMP3763));
	}
	LA3: ;
	add_169487(&result, (*(*m).name).s);
	add_169487(&result, suffix);
	return result;
}

N_NIMCALL(Ropeobj169006*, getinitname_502635)(Tsym214822* m) {
	Ropeobj169006* result;
	result = 0;
	result = getsomeinitname_502304(m, ((NimStringDesc*) &TMP4476));
	return result;
}

N_NIMCALL(Ropeobj169006*, getdatinitname_502639)(Tsym214822* m) {
	Ropeobj169006* result;
	result = 0;
	result = getsomeinitname_502304(m, ((NimStringDesc*) &TMP4477));
	return result;
}

N_NIMCALL(void, registermoduletomain_502643)(Tsym214822* m) {
	Ropeobj169006* init;
	Ropeobj169006* datinit;
	TY169507 LOC1;
	TY169507 LOC2;
	init = getinitname_502635(m);
	datinit = getdatinitname_502639(m);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = init;
	addf_170205(&mainmodprocs_469135, ((NimStringDesc*) &TMP4478), LOC1, 1);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = datinit;
	addf_170205(&mainmodprocs_469135, ((NimStringDesc*) &TMP4478), LOC2, 1);
	{
		TY169507 LOC7;
		Ropeobj169006* initcall;
		TY169507 LOC8;
		if (!!((((*m).flags &(1U<<((NU)(((NU8) 13))&31U)))!=0))) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = datinit;
		addf_170205(&maindatinit_469138, ((NimStringDesc*) &TMP4479), LOC7, 1);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = init;
		initcall = HEX25_169905(((NimStringDesc*) &TMP4479), LOC8, 1);
		{
			if (!(((*m).flags &(1U<<((NU)(((NU8) 12))&31U)))!=0)) goto LA11;
			add_169482(&mainmodinit_469136, initcall);
		}
		goto LA9;
		LA11: ;
		{
			add_169482(&othermodsinit_469137, initcall);
		}
		LA9: ;
	}
	LA5: ;
}

N_NIMCALL(Ropeobj169006*, genfilenames_502088)(Tcgen469026* m) {
	Ropeobj169006* result;
	Ropeobj169006* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_472403(m, ((NimStringDesc*) &TMP4492));
	result = NIM_NIL;
	{
		NI i_502117;
		NI HEX3Atmp_502122;
		NI res_502125;
		i_502117 = 0;
		HEX3Atmp_502122 = 0;
		HEX3Atmp_502122 = ((fileinfos_182629 ? fileinfos_182629->Sup.len : 0) - 1);
		res_502125 = ((NI) 0);
		{
			while (1) {
				TY169507 LOC5;
				if (!(res_502125 <= HEX3Atmp_502122)) goto LA4;
				i_502117 = res_502125;
				memset((void*)LOC5, 0, sizeof(LOC5));
				LOC5[0] = makecstring_182637(fileinfos_182629->data[i_502117].projpath);
				addf_170205(&result, ((NimStringDesc*) &TMP4493), LOC5, 1);
				res_502125 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(void, genmainproc_502129)(Tcgen469026* m) {
	NimStringDesc* nimmain;
	NimStringDesc* othermain;
	Ropeobj169006* initstackbottomcall;
	TY475874 LOC38;
	TY474655 LOC47;
	nimmain = 0;
	othermain = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC12;
		LOC3 = 0;
		LOC3 = (targetos_167603 == ((NU8) 2));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((gglobaloptions_160121 & 1280) == 0));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!((gglobaloptions_160121 &(1U<<((NU)(((NU8) 10))&31U)))!=0)) goto LA9;
			nimmain = copyString(((NimStringDesc*) &TMP4482));
			othermain = copyString(((NimStringDesc*) &TMP4483));
		}
		goto LA7;
		LA9: ;
		{
			nimmain = copyString(((NimStringDesc*) &TMP4484));
			othermain = copyString(((NimStringDesc*) &TMP4485));
		}
		LA7: ;
		LOC12 = 0;
		LOC12 = includestr_135249((&(*m).headerfiles), ((NimStringDesc*) &TMP4486));
	}
	goto LA1;
	LA5: ;
	{
		if (!((gglobaloptions_160121 &(1U<<((NU)(((NU8) 8))&31U)))!=0)) goto LA14;
		nimmain = copyString(((NimStringDesc*) &TMP4484));
		othermain = copyString(((NimStringDesc*) &TMP4487));
	}
	goto LA1;
	LA14: ;
	{
		if (!(targetos_167603 == ((NU8) 24))) goto LA17;
		nimmain = copyString(((NimStringDesc*) &TMP4488));
		othermain = copyString(((NimStringDesc*) &TMP4489));
	}
	goto LA1;
	LA17: ;
	{
		nimmain = copyString(((NimStringDesc*) &TMP4488));
		othermain = copyString(((NimStringDesc*) &TMP4490));
	}
	LA1: ;
	{
		Ropeobj169006* LOC24;
		if (!!((gbreakpoints_488861 == NIM_NIL))) goto LA22;
		LOC24 = 0;
		LOC24 = cgsym_472403(m, ((NimStringDesc*) &TMP4491));
	}
	LA22: ;
	{
		Ropeobj169006* LOC29;
		if (!((goptions_160119 &(1U<<((NU)(((NU8) 17))&31U)))!=0)) goto LA27;
		LOC29 = 0;
		LOC29 = genfilenames_502088(m);
		add_169482(&gbreakpoints_488861, LOC29);
	}
	LA27: ;
	{
		NIM_BOOL LOC32;
		LOC32 = 0;
		LOC32 = (targetos_167603 == ((NU8) 24));
		if (LOC32) goto LA33;
		LOC32 = (gselectedgc_160124 == ((NU8) 0));
		LA33: ;
		if (!LOC32) goto LA34;
		initstackbottomcall = rope_169277(((NimStringDesc*) &TMP4209));
	}
	goto LA30;
	LA34: ;
	{
		TY473064 LOC37;
		memset((void*)LOC37, 0, sizeof(LOC37));
		initstackbottomcall = ropecg_472407(m, ((NimStringDesc*) &TMP4494), LOC37, 0);
	}
	LA30: ;
	(*m).labels += ((NI) 1);
	memset((void*)LOC38, 0, sizeof(LOC38));
	LOC38[0] = maindatinit_469138;
	LOC38[1] = gbreakpoints_488861;
	LOC38[2] = othermodsinit_469137;
	{
		NIM_BOOL LOC41;
		TY473064 LOC45;
		LOC41 = 0;
		LOC41 = emulatedthreadvars_472949();
		if (!(LOC41)) goto LA42;
		LOC41 = !((targetos_167603 == ((NU8) 24)));
		LA42: ;
		if (!LOC41) goto LA43;
		memset((void*)LOC45, 0, sizeof(LOC45));
		LOC38[3] = ropecg_472407(m, ((NimStringDesc*) &TMP4496), LOC45, 0);
	}
	goto LA39;
	LA43: ;
	{
		LOC38[3] = rope_169277(((NimStringDesc*) &TMP4209));
	}
	LA39: ;
	LOC38[4] = initstackbottomcall;
	appcg_472632(m, &(*m).s[(((NU8) 10))- 0], ((NimStringDesc*) &TMP4495), LOC38, 5);
	memset((void*)LOC47, 0, sizeof(LOC47));
	LOC47[0] = mainmodinit_469136;
	LOC47[1] = initstackbottomcall;
	LOC47[2] = rope_169401(((NI64) ((*m).labels)));
	appcg_472632(m, &(*m).s[(((NU8) 10))- 0], nimmain, LOC47, 3);
	{
		TY473064 LOC52;
		if (!!(((gglobaloptions_160121 &(1U<<((NU)(((NU8) 20))&31U)))!=0))) goto LA50;
		memset((void*)LOC52, 0, sizeof(LOC52));
		appcg_472632(m, &(*m).s[(((NU8) 10))- 0], othermain, LOC52, 0);
	}
	LA50: ;
}

N_NIMCALL(Tnode214790*, myclose_504230)(Tpasscontext261002* b, Tnode214790* n) {
	Tnode214790* result;
	Tcgen469026* m;
{	result = 0;
	result = n;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (b == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = skipcodegen_261065(n);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	m = ((Tcgen469026*) (b));
	{
		if (!!((n == NIM_NIL))) goto LA9;
		(*(*m).initproc).options = initprocoptions_503035(m);
		genstmts_478644((*m).initproc, n);
	}
	LA9: ;
	registermoduletomain_502643((*m).module);
	{
		Tnode214790* disp;
		if (!(((*(*m).module).flags &(1U<<((NU)(((NU8) 12))&31U)))!=0)) goto LA13;
		(*m).objhaskidsvalid = NIM_TRUE;
		disp = generatemethoddispatchers_375151();
		{
			NI i_504281;
			NI HEX3Atmp_504285;
			NI LOC16;
			NI res_504288;
			i_504281 = 0;
			HEX3Atmp_504285 = 0;
			LOC16 = 0;
			LOC16 = sonslen_217351(disp);
			HEX3Atmp_504285 = (NI)(LOC16 - ((NI) 1));
			res_504288 = ((NI) 0);
			{
				while (1) {
					if (!(res_504288 <= HEX3Atmp_504285)) goto LA18;
					i_504281 = res_504288;
					genprocaux_500409(m, (*(*disp).kindU.S6.sons->data[i_504281]).kindU.S4.sym);
					res_504288 += ((NI) 1);
				} LA18: ;
			}
		}
		genmainproc_502129(m);
	}
	LA13: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, finishmodule_503820)(Tcgen469026* m) {
	NI i;
	i = ((NI) 0);
	{
		while (1) {
			Tsym214822* prc;
			if (!(i <= ((*m).forwardedprocs ? ((*m).forwardedprocs->Sup.len-1) : -1))) goto LA2;
			prc = (*m).forwardedprocs->data[i];
			{
				NimStringDesc* LOC7;
				if (!(((*prc).flags &(1U<<((NU)(((NU8) 4))&31U)))!=0)) goto LA5;
				LOC7 = 0;
				LOC7 = rawNewString((*(*prc).name).s->Sup.len + 17);
appendString(LOC7, ((NimStringDesc*) &TMP4539));
appendString(LOC7, (*(*prc).name).s);
				internalerror_187100((*prc).info, LOC7);
			}
			LA5: ;
			genprocnoforward_501116(m, prc);
			i += ((NI) 1);
		} LA2: ;
	}
	gforwardedprocscounter_469158 -= i;
	(*m).forwardedprocs = (Tsymseq214792*) setLengthSeq(&((*m).forwardedprocs)->Sup, sizeof(Tsym214822*), ((NI) 0));
}

N_NIMCALL(void, geninitcode_502686)(Tcgen469026* m) {
	Ropeobj169006* initname;
	Ropeobj169006* prc;
	TY169507 LOC1;
	Ropeobj169006* LOC12;
	Ropeobj169006* LOC13;
	Ropeobj169006** LOC14;
	Ropeobj169006** LOC15;
	Ropeobj169006** LOC16;
	Ropeobj169006* LOC17;
	Ropeobj169006* LOC33;
	Ropeobj169006** LOC34;
	Ropeobj169006** LOC35;
	Ropeobj169006** LOC36;
	Ropeobj169006* LOC37;
	Ropeobj169006* LOC38;
	Ropeobj169006** LOC39;
	Ropeobj169006** LOC40;
	Ropeobj169006** LOC41;
	Ropeobj169006* LOC42;
	Ropeobj169006* LOC50;
	TY473064 LOC51;
	TY169507 LOC52;
	TY473064 LOC58;
	initname = getinitname_502635((*m).module);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = initname;
	prc = HEX25_169905(((NimStringDesc*) &TMP4565), LOC1, 1);
	{
		TY501032 LOC6;
		if (!(((NI) 0) < (*m).typenodes)) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = (*m).typenodesname;
		LOC6[1] = rope_169401(((NI64) ((*m).typenodes)));
		appcg_472632(m, &(*m).s[(((NU8) 12))- 0], ((NimStringDesc*) &TMP4566), LOC6, 2);
	}
	LA4: ;
	{
		TY501032 LOC11;
		if (!(((NI) 0) < (*m).nimtypes)) goto LA9;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = (*m).nimtypesname;
		LOC11[1] = rope_169401(((NI64) ((*m).nimtypes)));
		appcg_472632(m, &(*m).s[(((NU8) 12))- 0], ((NimStringDesc*) &TMP4567), LOC11, 2);
	}
	LA9: ;
	LOC12 = 0;
	LOC12 = initgcframe_478001((*m).initproc);
	add_169482(&prc, LOC12);
	LOC13 = 0;
	LOC13 = gensectionstart_470082(((NU8) 0));
	add_169482(&prc, LOC13);
	LOC14 = 0;
	LOC14 = s_469166((*m).preinitproc, ((NU8) 0));
	add_169482(&prc, (*LOC14));
	LOC15 = 0;
	LOC15 = s_469166((*m).initproc, ((NU8) 0));
	add_169482(&prc, (*LOC15));
	LOC16 = 0;
	LOC16 = s_469166((*m).postinitproc, ((NU8) 0));
	add_169482(&prc, (*LOC16));
	LOC17 = 0;
	LOC17 = gensectionend_470117(((NU8) 0));
	add_169482(&prc, LOC17);
	{
		NIM_BOOL LOC20;
		LOC20 = 0;
		LOC20 = (((*(*m).initproc).options &(1U<<((NU)(((NU8) 15))&31U)))!=0);
		if (!(LOC20)) goto LA21;
		LOC20 = !((*m).framedeclared);
		LA21: ;
		if (!LOC20) goto LA22;
		(*m).framedeclared = NIM_TRUE;
		{
			Ropeobj169006* procname;
			Ropeobj169006* LOC28;
			Ropeobj169006* LOC29;
			if (!!((*m).preventstacktrace)) goto LA26;
			procname = makecstring_182637((*(*(*m).module).name).s);
			LOC28 = 0;
			LOC28 = quotedfilename_187418((*(*m).module).info);
			LOC29 = 0;
			LOC29 = initframe_500358((*m).initproc, procname, LOC28);
			add_169482(&prc, LOC29);
		}
		goto LA24;
		LA26: ;
		{
			TY473064 LOC31;
			Ropeobj169006* LOC32;
			memset((void*)LOC31, 0, sizeof(LOC31));
			LOC32 = 0;
			LOC32 = HEX25_169905(((NimStringDesc*) &TMP4570), LOC31, 0);
			add_169482(&prc, LOC32);
		}
		LA24: ;
	}
	LA22: ;
	LOC33 = 0;
	LOC33 = gensectionstart_470082(((NU8) 1));
	add_169482(&prc, LOC33);
	LOC34 = 0;
	LOC34 = s_469166((*m).preinitproc, ((NU8) 1));
	add_169482(&prc, (*LOC34));
	LOC35 = 0;
	LOC35 = s_469166((*m).initproc, ((NU8) 1));
	add_169482(&prc, (*LOC35));
	LOC36 = 0;
	LOC36 = s_469166((*m).postinitproc, ((NU8) 1));
	add_169482(&prc, (*LOC36));
	LOC37 = 0;
	LOC37 = gensectionend_470117(((NU8) 1));
	add_169482(&prc, LOC37);
	LOC38 = 0;
	LOC38 = gensectionstart_470082(((NU8) 2));
	add_169482(&prc, LOC38);
	LOC39 = 0;
	LOC39 = s_469166((*m).preinitproc, ((NU8) 2));
	add_169482(&prc, (*LOC39));
	LOC40 = 0;
	LOC40 = s_469166((*m).initproc, ((NU8) 2));
	add_169482(&prc, (*LOC40));
	LOC41 = 0;
	LOC41 = s_469166((*m).postinitproc, ((NU8) 2));
	add_169482(&prc, (*LOC41));
	LOC42 = 0;
	LOC42 = gensectionend_470117(((NU8) 2));
	add_169482(&prc, LOC42);
	{
		NIM_BOOL LOC45;
		Ropeobj169006* LOC49;
		LOC45 = 0;
		LOC45 = (((*(*m).initproc).options &(1U<<((NU)(((NU8) 15))&31U)))!=0);
		if (!(LOC45)) goto LA46;
		LOC45 = !((*m).preventstacktrace);
		LA46: ;
		if (!LOC45) goto LA47;
		LOC49 = 0;
		LOC49 = deinitframe_500368((*m).initproc);
		add_169482(&prc, LOC49);
	}
	LA47: ;
	LOC50 = 0;
	LOC50 = deinitgcframe_478007((*m).initproc);
	add_169482(&prc, LOC50);
	memset((void*)LOC51, 0, sizeof(LOC51));
	addf_170205(&prc, ((NimStringDesc*) &TMP4571), LOC51, 0);
	memset((void*)LOC52, 0, sizeof(LOC52));
	LOC52[0] = getdatinitname_502639((*m).module);
	addf_170205(&prc, ((NimStringDesc*) &TMP4565), LOC52, 1);
	{
		NU8 i_502761;
		NI res_502842;
		i_502761 = 0;
		res_502842 = ((NI) 12);
		{
			while (1) {
				Ropeobj169006* LOC56;
				Ropeobj169006* LOC57;
				if (!(res_502842 <= ((NI) 16))) goto LA55;
				i_502761 = ((NU8) (res_502842));
				LOC56 = 0;
				LOC56 = gensectionstart_470016(i_502761);
				add_169482(&prc, LOC56);
				add_169482(&prc, (*m).s[(i_502761)- 0]);
				LOC57 = 0;
				LOC57 = gensectionend_470051(i_502761);
				add_169482(&prc, LOC57);
				res_502842 += ((NI) 1);
			} LA55: ;
		}
	}
	memset((void*)LOC58, 0, sizeof(LOC58));
	addf_170205(&prc, ((NimStringDesc*) &TMP4571), LOC58, 0);
	add_169482(&(*m).s[(((NU8) 11))- 0], prc);
	{
		NIM_CHAR i_502802;
		Ropeobj169006* el_502803;
		TY469132 HEX3Atmp_502847;
		NIM_CHAR i_502850;
		i_502802 = 0;
		el_502803 = 0;
		memset((void*)HEX3Atmp_502847, 0, sizeof(HEX3Atmp_502847));
		memcpy((void*)HEX3Atmp_502847, (NIM_CONST void*)(*m).extensionloaders, sizeof(HEX3Atmp_502847));
		i_502850 = 48;
		{
			if (!((NU8)(((NIM_CHAR) (((NU8)(i_502850))))) <= (NU8)(57))) goto LA62;
			{
				while (1) {
					i_502802 = i_502850;
					el_502803 = HEX3Atmp_502847[(((NU8)(i_502850)))- 48];
					{
						Ropeobj169006* ex;
						TY501032 LOC70;
						if (!!((el_502803 == NIM_NIL))) goto LA68;
						memset((void*)LOC70, 0, sizeof(LOC70));
						LOC70[0] = rope_169401(((NI64) ((NI)(((NI) (((NU8)(i_502802)))) - ((NI) 48)))));
						LOC70[1] = el_502803;
						ex = HEX25_169905(((NimStringDesc*) &TMP4572), LOC70, 2);
						add_169482(&(*m).s[(((NU8) 11))- 0], ex);
					}
					LA68: ;
					{
						if (!((NU8)(57) <= (NU8)(((NIM_CHAR) (((NU8)(i_502850))))))) goto LA73;
						goto LA64;
					}
					LA73: ;
					i_502850 += ((NI) 1);
				}
			} LA64: ;
		}
		LA62: ;
	}
}

N_NIMCALL(void, finishtypedescriptions_475261)(Tcgen469026* m) {
	NI i;
	i = ((NI) 0);
	{
		while (1) {
			Ropeobj169006* LOC3;
			if (!(i < ((*m).typestack ? (*m).typestack->Sup.len : 0))) goto LA2;
			LOC3 = 0;
			LOC3 = gettypedesc_475055(m, (*m).typestack->data[i]);
			i += ((NI) 1);
		} LA2: ;
	}
}

N_NIMCALL(Ropeobj169006*, getcopyright_502065)(NimStringDesc* cfile) {
	Ropeobj169006* result;
	result = 0;
	{
		TY169507 LOC5;
		if (!((gglobaloptions_160121 &(1U<<((NU)(((NU8) 4))&31U)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rope_169277(((NimStringDesc*) &TMP4574));
		result = HEX25_169905(((NimStringDesc*) &TMP4573), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY475874 LOC7;
		NimStringDesc* LOC8;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rope_169277(((NimStringDesc*) &TMP4574));
		LOC7[1] = rope_169277(Os_167055[(targetos_167603)- 1].Field0);
		LOC7[2] = rope_169277(Cpu_167476[(targetcpu_167601)- 1].Field0);
		LOC7[3] = rope_169277(Cc_194413[(ccompiler_194431)- 1].Field0);
		LOC8 = 0;
		LOC8 = getcompilecfilecmd_195284(cfile, NIM_FALSE);
		LOC7[4] = rope_169277(LOC8);
		result = HEX25_169905(((NimStringDesc*) &TMP4575), LOC7, 5);
	}
	LA1: ;
	return result;
}

static N_INLINE(void, addinttypes_502059)(Ropeobj169006** result) {
	NimStringDesc* LOC1;
	TY169507 LOC2;
	LOC1 = 0;
	LOC1 = rawNewString(tnl_167618->Sup.len + 22);
appendString(LOC1, ((NimStringDesc*) &TMP4576));
appendString(LOC1, tnl_167618);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = rope_169401(((NI64) (Cpu_167476[(targetcpu_167601)- 1].Field1)));
	addf_170205(result, LOC1, LOC2, 1);
}

N_NIMCALL(Ropeobj169006*, getfileheader_502083)(NimStringDesc* cfile) {
	Ropeobj169006* result;
	result = 0;
	result = getcopyright_502065(cfile);
	addinttypes_502059(&result);
	return result;
}

N_NIMCALL(void, generateheaders_500304)(Tcgen469026* m) {
	NimStringDesc* LOC1;
	Tstrentry135012* it;
	LOC1 = 0;
	LOC1 = rawNewString(tnl_167618->Sup.len + tnl_167618->Sup.len + 20);
appendString(LOC1, tnl_167618);
appendString(LOC1, ((NimStringDesc*) &TMP4584));
appendString(LOC1, tnl_167618);
	add_169487(&(*m).s[(((NU8) 1))- 0], LOC1);
	it = ((Tstrentry135012*) ((*m).headerfiles.head));
	{
		while (1) {
			if (!!((it == NIM_NIL))) goto LA3;
			{
				NimStringDesc* LOC8;
				NimStringDesc* LOC9;
				Ropeobj169006* LOC10;
				if (!((NU8)((*it).data->data[((NI) 0)]) == (NU8)(35))) goto LA6;
				LOC8 = 0;
				LOC9 = 0;
				LOC9 = nsuReplaceChar((*it).data, 96, 34);
				LOC8 = rawNewString(LOC9->Sup.len + tnl_167618->Sup.len + 0);
appendString(LOC8, LOC9);
appendString(LOC8, tnl_167618);
				LOC10 = 0;
				LOC10 = rope_169277(LOC8);
				add_169482(&(*m).s[(((NU8) 1))- 0], LOC10);
			}
			goto LA4;
			LA6: ;
			{
				TY169507 LOC14;
				if (!!((((NU8)((*it).data->data[((NI) 0)])) == ((NU8)(34)) || ((NU8)((*it).data->data[((NI) 0)])) == ((NU8)(60))))) goto LA12;
				memset((void*)LOC14, 0, sizeof(LOC14));
				LOC14[0] = rope_169277((*it).data);
				addf_170205(&(*m).s[(((NU8) 1))- 0], ((NimStringDesc*) &TMP4585), LOC14, 1);
			}
			goto LA4;
			LA12: ;
			{
				TY169507 LOC16;
				memset((void*)LOC16, 0, sizeof(LOC16));
				LOC16[0] = rope_169277((*it).data);
				addf_170205(&(*m).s[(((NU8) 1))- 0], ((NimStringDesc*) &TMP4586), LOC16, 1);
			}
			LA4: ;
			it = ((Tstrentry135012*) ((*it).Sup.next));
		} LA3: ;
	}
}

N_NIMCALL(void, generatethreadlocalstorage_478273)(Tcgen469026* m) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		TY169507 LOC13;
		LOC3 = 0;
		LOC3 = !((nimtv_478212 == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = (*m).usesthreadvars;
		if (LOC5) goto LA6;
		LOC5 = (((*(*m).module).flags &(1U<<((NU)(((NU8) 12))&31U)))!=0);
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA7;
		{
			Ttype214828* t_478307;
			NI i_478314;
			NI L_478316;
			t_478307 = 0;
			i_478314 = ((NI) 0);
			L_478316 = (nimtvdeps_478230 ? nimtvdeps_478230->Sup.len : 0);
			{
				while (1) {
					Ropeobj169006* LOC12;
					if (!(i_478314 < L_478316)) goto LA11;
					t_478307 = nimtvdeps_478230->data[i_478314];
					LOC12 = 0;
					LOC12 = gettypedesc_475055(m, t_478307);
					i_478314 += ((NI) 1);
				} LA11: ;
			}
		}
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = nimtv_478212;
		addf_170205(&(*m).s[(((NU8) 4))- 0], ((NimStringDesc*) &TMP4587), LOC13, 1);
	}
	LA7: ;
}

N_NIMCALL(Ropeobj169006*, genmodule_502851)(Tcgen469026* m, NimStringDesc* cfile) {
	Ropeobj169006* result;
	Ropeobj169006* LOC1;
	result = 0;
	result = getfileheader_502083(cfile);
	LOC1 = 0;
	LOC1 = genmergeinfo_470204(m);
	add_169482(&result, LOC1);
	generateheaders_500304(m);
	generatethreadlocalstorage_478273(m);
	{
		NU8 i_503014;
		NI res_503022;
		i_503014 = 0;
		res_503022 = ((NI) 1);
		{
			while (1) {
				Ropeobj169006* LOC5;
				Ropeobj169006* LOC6;
				if (!(res_503022 <= ((NI) 10))) goto LA4;
				i_503014 = ((NU8) (res_503022));
				LOC5 = 0;
				LOC5 = gensectionstart_470016(i_503014);
				add_169482(&result, LOC5);
				add_169482(&result, (*m).s[(i_503014)- 0]);
				LOC6 = 0;
				LOC6 = gensectionend_470051(i_503014);
				add_169482(&result, LOC6);
				res_503022 += ((NI) 1);
			} LA4: ;
		}
	}
	add_169482(&result, (*m).s[(((NU8) 11))- 0]);
	return result;
}

N_NIMCALL(void, updatecachedmodule_504213)(Tcgen469026* m) {
	NimStringDesc* cfile;
	NimStringDesc* cfilenoext;
	cfile = getcfile_503594(m);
	cfilenoext = noschangeFileExt(cfile, ((NimStringDesc*) &TMP4209));
	{
		NIM_BOOL LOC3;
		Ropeobj169006* code;
		LOC3 = 0;
		LOC3 = mergerequired_470832(m);
		if (!(LOC3)) goto LA4;
		LOC3 = !((((*(*m).module).flags &(1U<<((NU)(((NU8) 12))&31U)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		mergefiles_471241(cfile, m);
		geninitcode_502686(m);
		finishtypedescriptions_475261(m);
		code = genmodule_502851(m, cfile);
		writerope_169836(code, cfile, NIM_FALSE);
		addfiletocompile_194863(cfile);
	}
	LA5: ;
	addfiletolink_194872(cfilenoext);
}

N_NIMCALL(void, generatethreadvarssize_478317)(Tcgen469026* m) {
	{
		NimStringDesc* externc;
		TY169507 LOC12;
		if (!!((nimtv_478212 == NIM_NIL))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = !((gcmd_160123 == ((NU8) 2)));
			if (!(LOC7)) goto LA8;
			LOC7 = (((*(*m).module).flags &(1U<<((NU)(((NU8) 27))&31U)))!=0);
			LA8: ;
			if (!LOC7) goto LA9;
			externc = copyString(((NimStringDesc*) &TMP4589));
		}
		goto LA5;
		LA9: ;
		{
			externc = copyString(((NimStringDesc*) &TMP4209));
		}
		LA5: ;
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = rope_169277(externc);
		addf_170205(&(*m).s[(((NU8) 10))- 0], ((NimStringDesc*) &TMP4590), LOC12, 1);
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, shouldrecompile_504021)(Ropeobj169006* code, NimStringDesc* cfile) {
	NIM_BOOL result;
{	result = 0;
	result = NIM_TRUE;
	{
		NimStringDesc* objfile;
		if (!!(((gglobaloptions_160121 &(1U<<((NU)(((NU8) 1))&31U)))!=0))) goto LA3;
		objfile = toobjfile_194859(cfile);
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = writeropeifnotequal_170491(code, cfile);
			if (!LOC7) goto LA8;
			goto BeforeRet;
		}
		LA8: ;
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = nosexistsFile(objfile);
			if (!(LOC12)) goto LA13;
			LOC12 = nosfileNewer(objfile, cfile);
			LA13: ;
			if (!LOC12) goto LA14;
			result = NIM_FALSE;
		}
		LA14: ;
	}
	goto LA1;
	LA3: ;
	{
		writerope_169836(code, cfile, NIM_FALSE);
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, writemodule_504037)(Tcgen469026* m, NIM_BOOL pending) {
	NimStringDesc* cfile;
	NimStringDesc* cfilenoext;
	cfile = getcfile_503594(m);
	cfilenoext = noschangeFileExt(cfile, ((NimStringDesc*) &TMP4209));
	{
		NIM_BOOL LOC3;
		Ropeobj169006* code;
		LOC3 = 0;
		LOC3 = !((*m).Sup.fromcache);
		if (LOC3) goto LA4;
		LOC3 = ((gglobaloptions_160121 &(1U<<((NU)(((NU8) 1))&31U)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		geninitcode_502686(m);
		finishtypedescriptions_475261(m);
		{
			if (!(((*(*m).module).flags &(1U<<((NU)(((NU8) 12))&31U)))!=0)) goto LA9;
			add_169482(&(*m).s[(((NU8) 7))- 0], mainmodprocs_469135);
			generatethreadvarssize_478317(m);
		}
		LA9: ;
		code = genmodule_502851(m, cfile);
		{
			NIM_BOOL LOC13;
			LOC13 = 0;
			LOC13 = shouldrecompile_504021(code, cfile);
			if (!LOC13) goto LA14;
			addfiletocompile_194863(cfile);
		}
		LA14: ;
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC17;
		NIM_BOOL LOC18;
		Ropeobj169006* code;
		LOC17 = 0;
		LOC18 = 0;
		LOC18 = pending;
		if (!(LOC18)) goto LA19;
		LOC18 = mergerequired_470832(m);
		LA19: ;
		LOC17 = LOC18;
		if (!(LOC17)) goto LA20;
		LOC17 = !((((*(*m).module).flags &(1U<<((NU)(((NU8) 12))&31U)))!=0));
		LA20: ;
		if (!LOC17) goto LA21;
		mergefiles_471241(cfile, m);
		geninitcode_502686(m);
		finishtypedescriptions_475261(m);
		code = genmodule_502851(m, cfile);
		writerope_169836(code, cfile, NIM_FALSE);
		addfiletocompile_194863(cfile);
	}
	goto LA1;
	LA21: ;
	{
		NimStringDesc* LOC24;
		NIM_BOOL LOC25;
		LOC24 = 0;
		LOC24 = toobjfile_194859(cfilenoext);
		LOC25 = 0;
		LOC25 = nosexistsFile(LOC24);
		if (!!(LOC25)) goto LA26;
		addfiletocompile_194863(cfile);
	}
	goto LA1;
	LA26: ;
	LA1: ;
	addfiletolink_194872(cfilenoext);
}

N_NIMCALL(void, writeheader_503542)(Tcgen469026* m) {
	Ropeobj169006* result;
	Ropeobj169006* guard;
	TY169507 LOC1;
	TY118706 LOC2;
	TY169507 LOC3;
	TY473064 LOC13;
	TY169507 LOC14;
	result = getcopyright_502065((*m).filename);
	memset((void*)LOC1, 0, sizeof(LOC1));
	memset((void*)(&LOC2), 0, sizeof(LOC2));
	nossplitFile((*m).filename, (&LOC2));
	LOC1[0] = rope_169277(LOC2.Field1);
	guard = HEX25_169905(((NimStringDesc*) &TMP4601), LOC1, 1);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = guard;
	addf_170205(&result, ((NimStringDesc*) &TMP4602), LOC3, 1);
	addinttypes_502059(&result);
	generateheaders_500304(m);
	generatethreadlocalstorage_478273(m);
	{
		NU8 i_503564;
		NI res_503590;
		i_503564 = 0;
		res_503590 = ((NI) 1);
		{
			while (1) {
				Ropeobj169006* LOC7;
				Ropeobj169006* LOC8;
				if (!(res_503590 <= ((NI) 10))) goto LA6;
				i_503564 = ((NU8) (res_503590));
				LOC7 = 0;
				LOC7 = gensectionstart_470016(i_503564);
				add_169482(&result, LOC7);
				add_169482(&result, (*m).s[(i_503564)- 0]);
				LOC8 = 0;
				LOC8 = gensectionend_470051(i_503564);
				add_169482(&result, LOC8);
				res_503590 += ((NI) 1);
			} LA6: ;
		}
	}
	add_169482(&result, (*m).s[(((NU8) 11))- 0]);
	{
		if (!((gglobaloptions_160121 &(1U<<((NU)(((NU8) 8))&31U)))!=0)) goto LA11;
		add_169487(&result, ((NimStringDesc*) &TMP3856));
	}
	LA11: ;
	memset((void*)LOC13, 0, sizeof(LOC13));
	addf_170205(&result, ((NimStringDesc*) &TMP4603), LOC13, 0);
	memset((void*)LOC14, 0, sizeof(LOC14));
	LOC14[0] = guard;
	addf_170205(&result, ((NimStringDesc*) &TMP4604), LOC14, 1);
	writerope_169836(result, (*m).filename, NIM_FALSE);
}

N_NIMCALL(void, cgenwritemodules_504292)(void) {
	{
		if (!!((generatedheader_472201 == NIM_NIL))) goto LA3;
		finishmodule_503820(generatedheader_472201);
	}
	LA3: ;
	{
		while (1) {
			if (!(((NI) 0) < gforwardedprocscounter_469158)) goto LA6;
			{
				Tcgen469026* m_504306;
				m_504306 = 0;
				{
					NI i_504325;
					NI HEX3Atmp_504327;
					NI res_504329;
					i_504325 = 0;
					HEX3Atmp_504327 = 0;
					HEX3Atmp_504327 = (gmodules_469157 ? (gmodules_469157->Sup.len-1) : -1);
					res_504329 = ((NI) 0);
					{
						while (1) {
							if (!(res_504329 <= HEX3Atmp_504327)) goto LA10;
							i_504325 = res_504329;
							{
								if (!!((gmodules_469157->data[i_504325] == NIM_NIL))) goto LA13;
								m_504306 = gmodules_469157->data[i_504325];
								{
									if (!!((*m_504306).Sup.fromcache)) goto LA17;
									finishmodule_503820(m_504306);
								}
								LA17: ;
							}
							LA13: ;
							res_504329 += ((NI) 1);
						} LA10: ;
					}
				}
			}
		} LA6: ;
	}
	{
		Tcgen469026* m_504307;
		m_504307 = 0;
		{
			NI i_504336;
			NI HEX3Atmp_504338;
			NI res_504340;
			i_504336 = 0;
			HEX3Atmp_504338 = 0;
			HEX3Atmp_504338 = (gmodules_469157 ? (gmodules_469157->Sup.len-1) : -1);
			res_504340 = ((NI) 0);
			{
				while (1) {
					if (!(res_504340 <= HEX3Atmp_504338)) goto LA22;
					i_504336 = res_504340;
					{
						if (!!((gmodules_469157->data[i_504336] == NIM_NIL))) goto LA25;
						m_504307 = gmodules_469157->data[i_504336];
						{
							if (!(*m_504307).Sup.fromcache) goto LA29;
							updatecachedmodule_504213(m_504307);
						}
						goto LA27;
						LA29: ;
						{
							writemodule_504037(m_504307, NIM_TRUE);
						}
						LA27: ;
					}
					LA25: ;
					res_504340 += ((NI) 1);
				} LA22: ;
			}
		}
	}
	writemapping_195769(gmapping_469139);
	{
		if (!!((generatedheader_472201 == NIM_NIL))) goto LA34;
		writeheader_503542(generatedheader_472201);
	}
	LA34: ;
}

N_NIMCALL(void, nullify_503203)(Ropeobj169006** arr) {
	{
		NU8 i_503218;
		NI res_503223;
		i_503218 = 0;
		res_503223 = ((NI) 0);
		{
			while (1) {
				if (!(res_503223 <= ((NI) 17))) goto LA3;
				i_503218 = ((NU8) (res_503223));
				unsureAsgnRef((void**) (&arr[(i_503218)- 0]), NIM_NIL);
				res_503223 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(void, nullify_503228)(Ropeobj169006** arr) {
	{
		NIM_CHAR i_503414;
		NI res_503419;
		i_503414 = 0;
		res_503419 = ((NI) 48);
		{
			while (1) {
				if (!(res_503419 <= ((NI) 57))) goto LA3;
				i_503414 = ((NIM_CHAR) (res_503419));
				unsureAsgnRef((void**) (&arr[(((NU8)(i_503414)))- 48]), NIM_NIL);
				res_503419 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(void, resetmodule_503153)(Tcgen469026* m) {
	initlinkedlist_135028((&(*m).headerfiles));
	initintset_211885((&(*m).declaredprotos));
	initidtable_218033((&(*m).forwtypecache));
	asgnRef((void**) (&(*m).initproc), newproc_469193(NIM_NIL, m));
	(*(*m).initproc).options = initprocoptions_503035(m);
	asgnRef((void**) (&(*m).preinitproc), newpreinitproc_503025(m));
	asgnRef((void**) (&(*m).postinitproc), newpostinitproc_503030(m));
	initnodetable_218099((&(*m).datacache));
	if ((*m).typestack) nimGCunrefNoCycle((*m).typestack);
	(*m).typestack = (Ttypeseq214824*) newSeqRC1((&NTI214824), 0);
	if ((*m).forwardedprocs) nimGCunrefNoCycle((*m).forwardedprocs);
	(*m).forwardedprocs = (Tsymseq214792*) newSeqRC1((&NTI214792), 0);
	asgnRefNoCycle((void**) (&(*m).typenodesname), gettempname_473366());
	asgnRefNoCycle((void**) (&(*m).nimtypesname), gettempname_473366());
	(*m).preventstacktrace = (((*(*m).module).flags &(1U<<((NU)(((NU8) 13))&31U)))!=0);
	nullify_503203((*m).s);
	(*m).usesthreadvars = NIM_FALSE;
	(*m).typenodes = ((NI) 0);
	(*m).nimtypes = ((NI) 0);
	nullify_503228((*m).extensionloaders);
	(*m).Sup.fromcache = NIM_TRUE;
}

N_NIMCALL(void, resetcgenmodules_503424)(void) {
	{
		Tcgen469026* m_503426;
		m_503426 = 0;
		{
			NI i_503431;
			NI HEX3Atmp_503433;
			NI res_503435;
			i_503431 = 0;
			HEX3Atmp_503433 = 0;
			HEX3Atmp_503433 = (gmodules_469157 ? (gmodules_469157->Sup.len-1) : -1);
			res_503435 = ((NI) 0);
			{
				while (1) {
					if (!(res_503435 <= HEX3Atmp_503433)) goto LA4;
					i_503431 = res_503435;
					{
						if (!!((gmodules_469157->data[i_503431] == NIM_NIL))) goto LA7;
						m_503426 = gmodules_469157->data[i_503431];
						resetmodule_503153(m_503426);
					}
					LA7: ;
					res_503435 += ((NI) 1);
				} LA4: ;
			}
		}
	}
}
NIM_EXTERNC N_NOINLINE(void, compiler_cgenInit000)(void) {
	asgnRefNoCycle((void**) (&indent_472655), rope_169277(((NimStringDesc*) &TMP1178)));
	if (nimtvdeps_478230) nimGCunrefNoCycle(nimtvdeps_478230);
	nimtvdeps_478230 = (Ttypeseq214824*) newSeqRC1((&NTI214824), 0);
	chckNil((void*)(&nimtvdeclared_478231));
	genericReset((void*)(&nimtvdeclared_478231), (&NTI211035));
	initintset_211885((&nimtvdeclared_478231));
	breakpointid_488860 = ((NI) 0);
}

NIM_EXTERNC N_NOINLINE(void, compiler_cgenDatInit000)(void) {
}

