/* Generated by Nimrod Compiler v0.9.5 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
/* Compiled for: Linux, i386, gcc */
/* Command for C compiler:
   gcc -c  -w -O3 -fno-strict-aliasing  -I/build/nimrod/src/nimrod/lib -o compiler/nimcache/cgen.o compiler/nimcache/cgen.c */
#define NIM_INTBITS 32
#include "nimbase.h"

#include <string.h>
typedef struct tcgen465030 tcgen465030;
typedef struct trope145007 trope145007;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tcell41090 tcell41090;
typedef struct TNimType TNimType;
typedef struct tcellseq41106 tcellseq41106;
typedef struct tgcheap43016 tgcheap43016;
typedef struct tcellset41102 tcellset41102;
typedef struct tpagedesc41098 tpagedesc41098;
typedef struct tmemregion23410 tmemregion23410;
typedef struct tsmallchunk22638 tsmallchunk22638;
typedef struct tllchunk23404 tllchunk23404;
typedef struct tbigchunk22640 tbigchunk22640;
typedef struct tintset22615 tintset22615;
typedef struct ttrunk22611 ttrunk22611;
typedef struct tavlnode23408 tavlnode23408;
typedef struct tgcstat43014 tgcstat43014;
typedef struct ttypeseq188835 ttypeseq188835;
typedef struct ttype188837 ttype188837;
typedef struct TNimNode TNimNode;
typedef struct tintset185047 tintset185047;
typedef struct ttrunk185043 ttrunk185043;
typedef struct ttrunkseq185045 ttrunkseq185045;
typedef struct tpasscontext246003 tpasscontext246003;
typedef struct tsym188833 tsym188833;
typedef struct tidobj167013 tidobj167013;
typedef struct TNimObject TNimObject;
typedef struct tscope188827 tscope188827;
typedef struct TY188933 TY188933;
typedef struct tinstantiation188823 tinstantiation188823;
typedef struct tstrtable188807 tstrtable188807;
typedef struct tsymseq188805 tsymseq188805;
typedef struct tident167019 tident167019;
typedef struct tlineinfo163527 tlineinfo163527;
typedef struct tnode188803 tnode188803;
typedef struct tloc188817 tloc188817;
typedef struct tlib188821 tlib188821;
typedef struct TY465142 TY465142;
typedef struct TY79484 TY79484;
typedef struct tidtable188849 tidtable188849;
typedef struct tidpairseq188847 tidpairseq188847;
typedef struct tidpair188845 tidpair188845;
typedef struct tlinkedlist118023 tlinkedlist118023;
typedef struct tlistentry118017 tlistentry118017;
typedef struct tcproc465026 tcproc465026;
typedef struct tnodetable188861 tnodetable188861;
typedef struct tnodepairseq188859 tnodepairseq188859;
typedef struct tnodepair188857 tnodepair188857;
typedef struct tnodeseq188797 tnodeseq188797;
typedef struct TY163540 TY163540;
typedef struct TY465097 TY465097;
typedef struct tblock465024 tblock465024;
typedef struct tinfocc169014 tinfocc169014;
typedef struct ttraversalclosure473827 ttraversalclosure473827;
typedef struct tbitset243012 tbitset243012;
typedef struct TY110805 TY110805;
typedef struct trodreader236024 trodreader236024;
typedef struct TY163619 TY163619;
typedef struct tfileinfo163525 tfileinfo163525;
typedef struct tinfoos142044 tinfoos142044;
typedef struct tinfocpu142453 tinfocpu142453;
typedef struct tstrentry118019 tstrentry118019;
typedef struct TY108700 TY108700;
typedef struct tbasechunk22636 tbasechunk22636;
typedef struct tfreecell22628 tfreecell22628;
typedef struct TY188922 TY188922;
typedef struct tindex236022 tindex236022;
typedef struct tiitable197207 tiitable197207;
typedef struct tiipairseq197205 tiipairseq197205;
typedef struct tiipair197203 tiipair197203;
typedef struct tmemfile234204 tmemfile234204;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tcell41090  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq41106  {
NI Len;
NI Cap;
tcell41090** D;
};
struct  tcellset41102  {
NI Counter;
NI Max;
tpagedesc41098* Head;
tpagedesc41098** Data;
};
typedef tsmallchunk22638* TY23422[512];
typedef ttrunk22611* ttrunkbuckets22613[256];
struct  tintset22615  {
ttrunkbuckets22613 Data;
};
struct  tmemregion23410  {
NI Minlargeobj;
NI Maxlargeobj;
TY23422 Freesmallchunks;
tllchunk23404* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk22640* Freechunkslist;
tintset22615 Chunkstarts;
tavlnode23408* Root;
tavlnode23408* Deleted;
tavlnode23408* Last;
tavlnode23408* Freeavlnodes;
};
struct  tgcstat43014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap43016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq41106 Zct;
tcellseq41106 Decstack;
tcellset41102 Cycleroots;
tcellseq41106 Tempstack;
NI Recgclock;
tmemregion23410 Region;
tgcstat43014 Stat;
};
typedef N_NIMCALL_PTR(void, TY2289) (void* p, NI op);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY2289 marker;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  tintset185047  {
NI Counter;
NI Max;
ttrunk185043* Head;
ttrunkseq185045* Data;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tidobj167013  {
  TNimObject Sup;
NI Id;
};
struct  tstrtable188807  {
NI Counter;
tsymseq188805* Data;
};
struct  tlineinfo163527  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  tloc188817  {
NU8 K;
NU8 S;
NU8 Flags;
ttype188837* T;
trope145007* R;
trope145007* Heaproot;
NI A;
};
struct  tsym188833  {
  tidobj167013 Sup;
NU8 Kind;
union {
struct {ttypeseq188835* Typeinstcache;
tscope188827* Typscope;
} S1;
struct {TY188933* Procinstcache;
tscope188827* Scope;
} S2;
struct {TY188933* Usedgenerics;
tstrtable188807 Tab;
} S3;
} kindU;
NU16 Magic;
ttype188837* Typ;
tident167019* Name;
tlineinfo163527 Info;
tsym188833* Owner;
NU32 Flags;
tnode188803* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc188817 Loc;
tlib188821* Annex;
tnode188803* Constraint;
};
struct TY79484 {
NimStringDesc* Field0;
NI Field1;
};
struct  tpasscontext246003  {
  TNimObject Sup;
NIM_BOOL Fromcache;
};
typedef trope145007* tcfilesections465014[18];
struct  tidpair188845  {
tidobj167013* Key;
TNimObject* Val;
};
struct  tidtable188849  {
NI Counter;
tidpairseq188847* Data;
};
struct  tlinkedlist118023  {
tlistentry118017* Head;
tlistentry118017* Tail;
NI Counter;
};
struct  tnodepair188857  {
NI H;
tnode188803* Key;
NI Val;
};
struct  tnodetable188861  {
NI Counter;
tnodepairseq188859* Data;
};
typedef trope145007* TY465132[10];
struct  tcgen465030  {
  tpasscontext246003 Sup;
tsym188833* Module;
NimStringDesc* Filename;
tcfilesections465014 S;
NIM_BOOL Preventstacktrace;
NIM_BOOL Usesthreadvars;
NIM_BOOL Framedeclared;
NIM_BOOL Isheaderfile;
NIM_BOOL Includesstringh;
NimStringDesc* Cfilename;
tidtable188849 Typecache;
tidtable188849 Forwtypecache;
tintset185047 Declaredthings;
tintset185047 Declaredprotos;
tlinkedlist118023 Headerfiles;
tintset185047 Typeinfomarker;
tcproc465026* Initproc;
tcproc465026* Postinitproc;
tcproc465026* Preinitproc;
ttypeseq188835* Typestack;
tnodetable188861 Datacache;
tsymseq188805* Forwardedprocs;
NI Typenodes;
NI Nimtypes;
trope145007* Typenodesname;
trope145007* Nimtypesname;
NI Labels;
TY465132 Extensionloaders;
trope145007* Injectstmt;
};
typedef trope145007* tcprocsections465018[3];
struct  tblock465024  {
NI Id;
trope145007* Label;
tcprocsections465018 Sections;
NIM_BOOL Isloop;
NI16 Nestedtrystmts;
NI16 Nestedexceptstmts;
NI16 Framelen;
};
struct  tcproc465026  {
tsym188833* Prc;
NIM_BOOL Beforeretneeded;
NIM_BOOL Threadvaraccessed;
tnodeseq188797* Nestedtrystmts;
NI Inexceptblock;
TY163540* Finallysafepoints;
NI Labels;
TY465097* Blocks;
NI Breakidx;
NU32 Options;
NI Maxframelen;
tcgen465030* Module;
NI Withinloop;
NI Gcframeid;
trope145007* Gcframetype;
};
typedef trope145007* TY469906[1];
struct  tident167019  {
  tidobj167013 Sup;
NimStringDesc* S;
tident167019* Next;
NI H;
};
struct  tlistentry118017  {
  TNimObject Sup;
tlistentry118017* Prev;
tlistentry118017* Next;
};
struct  tlib188821  {
  tlistentry118017 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope145007* Name;
tnode188803* Path;
};
typedef trope145007* TY503234[2];
struct  ttype188837  {
  tidobj167013 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq188835* Sons;
tnode188803* N;
tsym188833* Destructor;
tsym188833* Owner;
tsym188833* Sym;
NI64 Size;
NI Align;
tloc188817 Loc;
};
typedef trope145007* TY470214[3];
typedef NimStringDesc* TY471067[14];
struct  tnode188803  {
ttype188837* Typ;
tlineinfo163527 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym188833* Sym;
} S4;
struct {tident167019* Ident;
} S5;
struct {tnodeseq188797* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
typedef trope145007* TY471942[4];
typedef NimStringDesc* TY188016[10];
struct tinfocc169014 {
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 tinfocc169014 TY169403[12];
typedef trope145007* TY145497[1];
struct  ttraversalclosure473827  {
tcproc465026* P;
NimStringDesc* Visitorfrmt;
};
typedef trope145007* TY473698[6];
typedef trope145007* TY473203[7];
typedef trope145007* TY473397[5];
typedef NimStringDesc* TY492499[21];
typedef NimStringDesc* TY491496[4];
typedef NimStringDesc* TY498576[4];
typedef NimStringDesc* TY491648[53];
typedef NimStringDesc* TY491109[10];
typedef NimStringDesc* TY497851[6];
struct  tfileinfo163525  {
NimStringDesc* Fullpath;
NimStringDesc* Projpath;
NimStringDesc* Shortname;
trope145007* Quotedname;
TY163540* Lines;
};
struct tinfoos142044 {
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 tinfoos142044 TY142064[23];
struct tinfocpu142453 {
NimStringDesc* Field0;
NI Field1;
NU8 Field2;
NI Field3;
NI Field4;
};
typedef tinfocpu142453 TY142469[14];
struct  tstrentry118019  {
  tlistentry118017 Sup;
NimStringDesc* Data;
};
struct TY108700 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
struct  trope145007  {
  TNimObject Sup;
trope145007* Left;
trope145007* Right;
NI Length;
NimStringDesc* Data;
};
typedef NI TY22618[16];
struct  tpagedesc41098  {
tpagedesc41098* Next;
NI Key;
TY22618 Bits;
};
struct  tbasechunk22636  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk22638  {
  tbasechunk22636 Sup;
tsmallchunk22638* Next;
tsmallchunk22638* Prev;
tfreecell22628* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk23404  {
NI Size;
NI Acc;
tllchunk23404* Next;
};
struct  tbigchunk22640  {
  tbasechunk22636 Sup;
tbigchunk22640* Next;
tbigchunk22640* Prev;
NI Align;
NF Data;
};
struct  ttrunk22611  {
ttrunk22611* Next;
NI Key;
TY22618 Bits;
};
typedef tavlnode23408* TY23414[2];
struct  tavlnode23408  {
TY23414 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  ttrunk185043  {
ttrunk185043* Next;
NI Key;
TY22618 Bits;
};
struct  tscope188827  {
NI Depthlevel;
tstrtable188807 Symbols;
tnodeseq188797* Usingsyms;
tscope188827* Parent;
};
struct  tinstantiation188823  {
tsym188833* Sym;
ttypeseq188835* Concretetypes;
TY188922* Usedby;
};
struct  tiipair197203  {
NI Key;
NI Val;
};
struct  tiitable197207  {
NI Counter;
tiipairseq197205* Data;
};
struct  tindex236022  {
NI Lastidxkey;
NI Lastidxval;
tiitable197207 Tab;
NimStringDesc* R;
NI Offset;
};
struct  tmemfile234204  {
void* Mem;
NI Size;
int Handle;
};
struct  trodreader236024  {
  TNimObject Sup;
NI Pos;
NCSTRING S;
NU32 Options;
NU8 Reason;
TY188922* Moddeps;
TY188922* Files;
NI Dataidx;
NI Convertersidx;
NI Initidx;
NI Interfidx;
NI Compilerprocsidx;
NI Methodsidx;
NimStringDesc* Filename;
tindex236022 Index;
tindex236022 Imports;
NI Readerindex;
NI Line;
NI Moduleid;
tidtable188849 Syms;
tmemfile234204 Memfile;
tsymseq188805* Methods;
NimStringDesc* Origfile;
NIM_BOOL Inviewmode;
};
struct  tfreecell22628  {
tfreecell22628* Next;
NI Zerofield;
};
struct ttypeseq188835 {
  TGenericSeq Sup;
  ttype188837* data[SEQ_DECL_SIZE];
};
struct ttrunkseq185045 {
  TGenericSeq Sup;
  ttrunk185043* data[SEQ_DECL_SIZE];
};
struct TY188933 {
  TGenericSeq Sup;
  tinstantiation188823* data[SEQ_DECL_SIZE];
};
struct tsymseq188805 {
  TGenericSeq Sup;
  tsym188833* data[SEQ_DECL_SIZE];
};
struct TY465142 {
  TGenericSeq Sup;
  tcgen465030* data[SEQ_DECL_SIZE];
};
struct tidpairseq188847 {
  TGenericSeq Sup;
  tidpair188845 data[SEQ_DECL_SIZE];
};
struct tnodepairseq188859 {
  TGenericSeq Sup;
  tnodepair188857 data[SEQ_DECL_SIZE];
};
struct tnodeseq188797 {
  TGenericSeq Sup;
  tnode188803* data[SEQ_DECL_SIZE];
};
struct TY163540 {
  TGenericSeq Sup;
  trope145007* data[SEQ_DECL_SIZE];
};
struct TY465097 {
  TGenericSeq Sup;
  tblock465024 data[SEQ_DECL_SIZE];
};
struct tbitset243012 {
  TGenericSeq Sup;
  NI8 data[SEQ_DECL_SIZE];
};
struct TY110805 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct TY163619 {
  TGenericSeq Sup;
  tfileinfo163525 data[SEQ_DECL_SIZE];
};
struct TY188922 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct tiipairseq197205 {
  TGenericSeq Sup;
  tiipair197203 data[SEQ_DECL_SIZE];
};
N_NIMCALL(trope145007*, torope_145058)(NimStringDesc* s);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tcell41090*, usrtocell_44443)(void* usr);
static N_INLINE(void, rtladdzct_46002)(tcell41090* c);
N_NOINLINE(void, addzct_44418)(tcellseq41106* s, tcell41090* c);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(void, initintset_185918)(tintset185047* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_NIMCALL(tcgen465030*, newmodule_505503)(tsym188833* module);
N_NIMCALL(tcgen465030*, getcgenmodule_468282)(tsym188833* s);
N_NIMCALL(void, internalerror_165606)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_165714)(TY79484 x_165718);
N_NIMCALL(tcgen465030*, rawnewmodule_505496)(tsym188833* module);
N_NIMCALL(tcgen465030*, rawnewmodule_505227)(tsym188833* module, NimStringDesc* filename);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_NIMCALL(void, initlinkedlist_118036)(tlinkedlist118023* list);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_NIMCALL(void, initidtable_189120)(tidtable188849* x);
N_NIMCALL(tcproc465026*, newproc_465208)(tsym188833* prc, tcgen465030* module);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_46827)(tcell41090* c);
static N_INLINE(NIM_BOOL, canbecycleroot_44462)(tcell41090* c);
static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c);
N_NOINLINE(void, incl_41855)(tcellset41102* s, tcell41090* cell);
static N_INLINE(void, decref_46402)(tcell41090* c);
N_NIMCALL(NU32, initprocoptions_505190)(tcgen465030* m);
N_NIMCALL(tcproc465026*, newpreinitproc_505176)(tcgen465030* m);
N_NIMCALL(tcproc465026*, newpostinitproc_505183)(tcgen465030* m);
N_NIMCALL(void, initnodetable_189135)(tnodetable188861* x);
N_NIMCALL(trope145007*, gettempname_470368)(void);
N_NIMCALL(trope145007*, ropecg_468609)(tcgen465030* m, NimStringDesc* frmt, trope145007** args, NI argsLen0);
N_NIMCALL(void, app_145046)(trope145007** a, NimStringDesc* b);
N_NIMCALL(void, app_145040)(trope145007** a, trope145007* 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_70624, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(trope145007*, cgsym_468604)(tcgen465030* m, NimStringDesc* name);
N_NIMCALL(tsym188833*, getcompilerproc_242028)(NimStringDesc* name);
N_NIMCALL(void, genproc_476482)(tcgen465030* m, tsym188833* prc);
N_NIMCALL(NIM_BOOL, isactivated_503840)(tsym188833* prc);
N_NIMCALL(void, fillprocloc_476425)(tsym188833* sym);
N_NIMCALL(void, fillloc_468351)(tloc188817* a, NU8 k, ttype188837* typ, trope145007* r, NU8 s);
N_NIMCALL(ttype188837*, getuniquetype_464401)(ttype188837* key);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(trope145007*, manglename_469870)(tsym188833* s);
N_NIMCALL(trope145007*, ropef_145079)(NimStringDesc* frmt, trope145007** args, NI argsLen0);
N_NIMCALL(void, internalerror_165591)(tlineinfo163527 info, NimStringDesc* errmsg);
N_NIMCALL(NIM_BOOL, iskeyword_469856)(tident167019* w);
N_NIMCALL(trope145007*, newrope_145135)(NimStringDesc* data);
N_NIMCALL(NimStringDesc*, mangle_469704)(NimStringDesc* name);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, nsuToHex)(NI64 x, NI len);
N_NIMCALL(trope145007*, torope_145062)(NI64 i);
N_NIMCALL(void, addforwardedproc_468242)(tcgen465030* m, tsym188833* prc);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(void, genprocnoforward_503298)(tcgen465030* m, tsym188833* prc);
N_NIMCALL(void, useheader_468432)(tcgen465030* m, tsym188833* sym);
N_NIMCALL(NIM_BOOL, includestr_118275)(tlinkedlist118023* list, NimStringDesc* data);
N_NIMCALL(NimStringDesc*, getstr_194873)(tnode188803* a);
N_NIMCALL(void, genprocprototype_476499)(tcgen465030* m, tsym188833* sym);
N_NIMCALL(tsym188833*, getmodule_197183)(tsym188833* s);
N_NIMCALL(NIM_BOOL, containsorincl_185888)(tintset185047* s, NI key);
N_NIMCALL(trope145007*, gettypedesc_472091)(tcgen465030* m, ttype188837* typ);
N_NIMCALL(trope145007*, gettypedescaux_470303)(tcgen465030* m, ttype188837* typ, tintset185047* check);
N_NIMCALL(trope145007*, gettypepre_471074)(tcgen465030* m, ttype188837* typ);
N_NIMCALL(trope145007*, getsimpletypedesc_471061)(tcgen465030* m, ttype188837* typ);
N_NIMCALL(trope145007*, typenameorliteral_471016)(ttype188837* t, NimStringDesc* literal);
N_NIMCALL(trope145007*, gettypename_470110)(ttype188837* typ);
N_NIMCALL(trope145007*, con_145020)(trope145007* a, trope145007* b);
N_NIMCALL(trope145007*, typename_470081)(ttype188837* typ);
N_NIMCALL(trope145007*, con_145035)(trope145007** a, NI aLen0);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_75880, TNimType* typ);
N_NIMCALL(NI64, firstord_223002)(ttype188837* t);
N_NIMCALL(NI64, getsize_223158)(ttype188837* typ);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(trope145007*, cachegettype_470362)(tidtable188849 tab, ttype188837* key);
N_NIMCALL(TNimObject*, idtableget_197137)(tidtable188849 t, tidobj167013* key);
N_NIMCALL(NimStringDesc*, typetostring_223020)(ttype188837* typ, NU8 prefer);
static N_INLINE(ttype188837*, lastson_189193)(ttype188837* n);
static N_INLINE(NI, sonslen_189185)(ttype188837* n);
N_NIMCALL(ttype188837*, elemtype_223559)(ttype188837* t);
N_NIMCALL(trope145007*, gettypeforward_471145)(tcgen465030* m, ttype188837* typ);
N_NIMCALL(NIM_BOOL, isimportedtype_470981)(ttype188837* t);
N_NIMCALL(void, appf_145085)(trope145007** c, NimStringDesc* frmt, trope145007** args, NI argsLen0);
N_NIMCALL(NimStringDesc*, getforwardstructformat_471132)(void);
N_NIMCALL(trope145007*, structorunion_471114)(ttype188837* t);
N_NIMCALL(void, idtableput_197147)(tidtable188849* t, tidobj167013* key, TNimObject* val);
N_NIMCALL(trope145007*, con_145025)(trope145007* a, NimStringDesc* b);
N_NIMCALL(void, pushtype_471814)(tcgen465030* m, ttype188837* typ);
N_NIMCALL(void, genprocparams_470622)(tcgen465030* m, ttype188837* t, trope145007** rettype, trope145007** params, tintset185047* check, NIM_BOOL declareenvironment);
N_NIMCALL(NIM_BOOL, isinvalidreturntype_470314)(ttype188837* rettype);
N_NIMCALL(NU8, maptype_470246)(ttype188837* typ);
N_NIMCALL(NU8, mapsettype_470241)(ttype188837* typ);
N_NIMCALL(ttype188837*, skiptypes_192793)(ttype188837* t, NU64 kinds);
N_NIMCALL(NIM_BOOL, needscomplexassignment_470309)(ttype188837* typ);
N_NIMCALL(NIM_BOOL, containsgarbagecollectedref_223134)(ttype188837* typ);
static N_INLINE(NI, sonslen_189181)(tnode188803* n);
static N_INLINE(NIM_BOOL, iscompiletimeonly_233237)(ttype188837* t);
N_NIMCALL(NU8, paramstorageloc_470602)(tsym188833* param);
N_NIMCALL(trope145007*, getparamtypedesc_470523)(tcgen465030* m, ttype188837* t, tintset185047* check);
N_NIMCALL(NIM_BOOL, ccgintroducedptr_470384)(tsym188833* s);
N_NIMCALL(void, appff_468223)(trope145007** dest, NimStringDesc* cformat, NimStringDesc* llvmformat, trope145007** args, NI argsLen0);
N_NIMCALL(NU8, mapreturntype_470289)(ttype188837* typ);
N_NIMCALL(trope145007*, con_145030)(NimStringDesc* a, trope145007* b);
N_NIMCALL(void, appcg_469002)(tcgen465030* m, trope145007** c, NimStringDesc* frmt, trope145007** args, NI argsLen0);
N_NIMCALL(NI64, lengthord_223010)(ttype188837* t);
N_NIMCALL(trope145007*, getrecorddesc_471593)(tcgen465030* m, ttype188837* typ, trope145007* name, tintset185047* check);
N_NIMCALL(trope145007*, getrecordfields_471585)(tcgen465030* m, ttype188837* typ, tintset185047* check);
N_NIMCALL(trope145007*, genrecordfieldsaux_471275)(tcgen465030* m, tnode188803* n, trope145007* accessexpr, ttype188837* rectype, tintset185047* check);
static N_INLINE(tnode188803*, lastson_189189)(tnode188803* n);
N_NIMCALL(trope145007*, manglerecfieldname_471198)(tsym188833* field, ttype188837* rectype);
N_NIMCALL(NimStringDesc*, manglefield_469609)(NimStringDesc* name);
N_NIMCALL(trope145007*, gettupledesc_471756)(tcgen465030* m, ttype188837* typ, trope145007* name, tintset185047* check);
N_NIMCALL(void, excl_185860)(tintset185047* s, NI key);
N_NIMCALL(trope145007*, mangledynlibproc_476099)(tsym188833* sym);
N_NIMCALL(trope145007*, genprocheader_472308)(tcgen465030* m, tsym188833* prc);
N_NIMCALL(void, genclinedir_469420)(trope145007** r, tlineinfo163527 info);
N_NIMCALL(void, genclinedir_469238)(trope145007** r, NimStringDesc* filename, NI line);
N_NIMCALL(NimStringDesc*, makesinglelinecstring_464672)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, tofullpath_164788)(NI32 fileidx);
N_NIMCALL(NI, safelinenm_469231)(tlineinfo163527 info);
static N_INLINE(NI, tolinenumber_164812)(tlineinfo163527 info);
N_NIMCALL(void, genprocaux_502611)(tcgen465030* m, tsym188833* prc);
static N_INLINE(NI, len_189264)(tnode188803* n);
N_NIMCALL(void, assignlocalvar_475781)(tcproc465026* p, tsym188833* s);
N_NIMCALL(void, line_469070)(tcproc465026* p, NU8 s, trope145007* r);
static N_INLINE(trope145007**, s_465173)(tcproc465026* p, NU8 s);
N_NIMCALL(trope145007*, indentline_469033)(tcproc465026* p, trope145007* r);
N_NIMCALL(void, prepend_145052)(trope145007** a, trope145007* b);
N_NIMCALL(void, localdebuginfo_475669)(tcproc465026* p, tsym188833* s);
N_NIMCALL(void, linef_469084)(tcproc465026* p, NU8 s, NimStringDesc* frmt, trope145007** args, NI argsLen0);
N_NIMCALL(trope145007*, makecstring_163651)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(trope145007*, gentypeinfo_472392)(tcgen465030* m, ttype188837* t_472395);
N_NIMCALL(tcgen465030*, bmod_465202)(tsym188833* module);
N_NIMCALL(void, gentypeinfoauxbase_472645)(tcgen465030* m, ttype188837* typ, trope145007* name, trope145007* base);
static N_INLINE(NIM_BOOL, isobjlackingtypefield_472601)(ttype188837* typ);
N_NIMCALL(NIM_BOOL, ispureobject_223162)(ttype188837* typ);
N_NIMCALL(NIM_BOOL, canformacycle_223142)(ttype188837* typ);
N_NIMCALL(void, gentupleinfo_473438)(tcgen465030* m, ttype188837* typ, trope145007* name);
N_NIMCALL(trope145007*, getnimnode_472396)(tcgen465030* m);
N_NIMCALL(ttype188837*, fakeclosuretype_473814)(tsym188833* owner);
N_NIMCALL(ttype188837*, newtype_189060)(NU8 kind, tsym188833* owner);
N_NIMCALL(void, rawaddson_193092)(ttype188837* father, ttype188837* son);
N_NIMCALL(void, gentypeinfoaux_472701)(tcgen465030* m, ttype188837* typ, trope145007* name);
N_NIMCALL(trope145007*, gentraverseproc_474429)(tcgen465030* m, ttype188837* typ, NU8 reason);
N_NIMCALL(trope145007*, getglobaltempname_470376)(void);
static N_INLINE(NI, backendid_187423)(void);
N_NIMCALL(void, gentraverseprocseq_474219)(ttraversalclosure473827* c, trope145007* accessor, ttype188837* typ);
N_NIMCALL(void, gettemp_473840)(tcproc465026* p, ttype188837* t, tloc188817* result);
N_NIMCALL(void, linefmt_469102)(tcproc465026* p, NU8 s, NimStringDesc* frmt, trope145007** args, NI argsLen0);
N_NIMCALL(void, constructloc_475202)(tcproc465026* p, tloc188817* loc, NIM_BOOL istemp);
static N_INLINE(NIM_BOOL, iscomplexvaluetype_475114)(ttype188837* t);
N_NIMCALL(trope145007*, rdloc_474964)(tloc188817* a);
N_NIMCALL(void, usestringh_468426)(tcgen465030* m);
N_NIMCALL(trope145007*, addrloc_474987)(tloc188817* a);
N_NIMCALL(void, genobjectinit_475034)(tcproc465026* p, NU8 section, ttype188837* t, tloc188817* a, NIM_BOOL takeaddr);
N_NIMCALL(NU8, analyseobjectwithtypefield_223176)(ttype188837* t);
N_NIMCALL(ttype188837*, getsystype_242024)(NU8 kind);
N_NIMCALL(void, gentraverseproc_473830)(ttraversalclosure473827* c, trope145007* accessor, ttype188837* typ_473835);
static N_INLINE(trope145007*, parentobj_474078)(trope145007* accessor);
N_NIMCALL(void, gentraverseproc_473846)(ttraversalclosure473827* c, trope145007* accessor, tnode188803* n);
N_NIMCALL(void, gencaserange_473836)(tcproc465026* p, tnode188803* branch);
static N_INLINE(tnode188803*, HEX5BHEX5D_189694)(tnode188803* n, NI i);
N_NIMCALL(trope145007*, genliteral_476522)(tcproc465026* p, tnode188803* n);
N_NIMCALL(trope145007*, genliteral_488767)(tcproc465026* p, tnode188803* n, ttype188837* ty);
N_NIMCALL(trope145007*, intliteral_476518)(NI64 i);
N_NIMCALL(trope145007*, int32literal_488708)(NI i);
N_NIMCALL(NI, nodetabletestorset_247911)(tnodetable188861* t, tnode188803* key, NI val);
N_NIMCALL(trope145007*, getstrlit_488756)(tcgen465030* m, NimStringDesc* s);
N_NIMCALL(NimStringDesc*, tostrmaxprecision_196017)(NF f);
N_NIMCALL(tnode188803*, copynode_189233)(tnode188803* src);
N_NIMCALL(void, linecg_469093)(tcproc465026* p, NU8 s, NimStringDesc* frmt, trope145007** args, NI argsLen0);
N_NIMCALL(void, genarrayinfo_473808)(tcgen465030* m, ttype188837* typ, trope145007* name);
N_NIMCALL(void, gensetinfo_473720)(tcgen465030* m, ttype188837* typ, trope145007* name);
N_NIMCALL(void, genenuminfo_473498)(tcgen465030* m, ttype188837* typ, trope145007* name);
N_NIMCALL(void, genobjectinfo_473417)(tcgen465030* m, ttype188837* typ, trope145007* name);
N_NIMCALL(void, genobjectfields_472786)(tcgen465030* m, ttype188837* typ, tnode188803* n, trope145007* expr);
N_NIMCALL(trope145007*, discriminatortablename_472727)(tcgen465030* m, ttype188837* objtype_472730, tsym188833* d);
N_NIMCALL(tsym188833*, lookupinrecord_197178)(tnode188803* n, tident167019* field);
N_NIMCALL(NI64, getordvalue_223150)(tnode188803* n);
N_NIMCALL(void, initlocalvar_475217)(tcproc465026* p, tsym188833* v, NIM_BOOL immediateasgn);
N_NIMCALL(void, fillresult_470486)(tsym188833* param);
N_NIMCALL(void, assignparam_476314)(tcproc465026* p, tsym188833* s);
N_NIMCALL(void, allocparam_475538)(tcproc465026* p, tsym188833* s);
N_NIMCALL(void, closuresetup_502563)(tcproc465026* p, tsym188833* prc);
N_NIMCALL(void, genstmts_476487)(tcproc465026* p, tnode188803* t);
N_NIMCALL(void, expr_476492)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(tnode188803*, getbody_239244)(tsym188833* s);
N_NIMCALL(void, putlocintodest_476504)(tcproc465026* p, tloc188817* d, tloc188817* s);
N_NIMCALL(void, genassignment_476511)(tcproc465026* p, tloc188817* dest, tloc188817* src, NU8 flags);
N_NIMCALL(void, genrefassign_475107)(tcproc465026* p, tloc188817* dest, tloc188817* src, NU8 flags);
static N_INLINE(NIM_BOOL, usesnativegc_137164)(void);
N_NIMCALL(void, keepalive_475276)(tcproc465026* p, tloc188817* tokeepalive);
N_NIMCALL(void, optasgnloc_489518)(tloc188817* a, ttype188837* t, trope145007* field, tloc188817* Result);
N_NIMCALL(NI, len_192569)(ttype188837* n);
N_NIMCALL(void, genoptasgntuple_489529)(tcproc465026* p, tloc188817* dest, tloc188817* src, NU8 flags);
N_NIMCALL(void, gengenericasgn_489735)(tcproc465026* p, tloc188817* dest, tloc188817* src, NU8 flags);
N_NIMCALL(NI, asgncomplexity_489475)(tnode188803* n);
N_NIMCALL(void, genoptasgnobject_489628)(tcproc465026* p, tloc188817* dest, tloc188817* src, NU8 flags, tnode188803* t);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(void, genvarprototype_476472)(tcgen465030* m, tsym188833* sym);
N_NIMCALL(void, genvarprototypeaux_481557)(tcgen465030* m, tsym188833* sym);
N_NIMCALL(void, declarethreadvar_475961)(tcgen465030* m, tsym188833* s, NIM_BOOL isextern);
static N_INLINE(NIM_BOOL, emulatedthreadvars_469606)(void);
N_NIMCALL(NIM_BOOL, issimpleconst_468387)(ttype188837* typ);
N_NIMCALL(void, putintodest_490145)(tcproc465026* p, tloc188817* d, ttype188837* t, trope145007* r);
N_NIMCALL(void, initloc_468340)(tloc188817* result, NU8 k, ttype188837* typ, NU8 s);
N_NIMCALL(void, gencomplexconst_500121)(tcproc465026* p, tsym188833* sym, tloc188817* d);
N_NIMCALL(void, requestconstimpl_476477)(tcproc465026* p, tsym188833* sym);
N_NIMCALL(tcgen465030*, findpendingmodule_468300)(tcgen465030* m, tsym188833* s);
N_NIMCALL(trope145007*, genconstexpr_499349)(tcproc465026* p, tnode188803* n);
N_NIMCALL(void, tobitset_244002)(tnode188803* s, tbitset243012** b);
N_NIMCALL(trope145007*, genrawsetdata_489232)(tbitset243012* cs, NI size);
N_NIMCALL(NI64, bitsettoword_489027)(tbitset243012* s, NI size);
N_NIMCALL(trope145007*, genconstseq_501470)(tcproc465026* p, tnode188803* n, ttype188837* t);
N_NIMCALL(void, appcg_469012)(tcgen465030* m, NU8 s, NimStringDesc* frmt, trope145007** args, NI argsLen0);
N_NIMCALL(trope145007*, genconstsimplelist_501402)(tcproc465026* p, tnode188803* n);
N_NIMCALL(trope145007*, gennamedconstexpr_501373)(tcproc465026* p, tnode188803* n);
N_NIMCALL(void, initlocexpr_476527)(tcproc465026* p, tnode188803* e, tloc188817* result);
N_NIMCALL(void, accessthreadlocalvar_469601)(tcproc465026* p, tsym188833* s);
static N_INLINE(trope145007**, procsec_465193)(tcproc465026* p, NU8 s);
static N_INLINE(NIM_BOOL, isemptytype_195210)(ttype188837* t);
N_NIMCALL(void, putdataintodest_490109)(tcproc465026* p, tloc188817* d, ttype188837* t, trope145007* r);
N_NIMCALL(void, genlinedir_469427)(tcproc465026* p, tnode188803* t);
N_NIMCALL(trope145007*, sourceline_164155)(tlineinfo163527 i);
N_NIMCALL(NimStringDesc*, tofilename_164780)(NI32 fileidx);
N_NIMCALL(trope145007*, quotedfilename_165750)(tlineinfo163527 i);
N_NIMCALL(void, genmagicexpr_499072)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 op);
N_NIMCALL(void, genandor_494688)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 m);
N_NIMCALL(trope145007*, getlabel_476440)(tcproc465026* p);
N_NIMCALL(void, fixlabel_476462)(tcproc465026* p, trope145007* labl);
N_NIMCALL(void, unaryarith_492491)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 op);
N_NIMCALL(void, unaryarithoverflow_491488)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 m);
N_NIMCALL(void, binaryfloatarith_498531)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 m);
N_NIMCALL(void, binaryarith_491640)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 op);
N_NIMCALL(void, geneqproc_492042)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, binaryarithoverflow_491096)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 m);
N_NIMCALL(NI64, lastord_223006)(ttype188837* t);
N_NIMCALL(void, genrepr_496312)(tcproc465026* p, tnode188803* e, tloc188817* d);
static N_INLINE(trope145007*, lenfield_476535)(void);
N_NIMCALL(void, gcusage_494811)(tnode188803* n);
N_NIMCALL(void, message_165584)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, rendertree_211051)(tnode188803* n, NU8 renderflags);
N_NIMCALL(void, gengettypeinfo_496422)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genswap_496870)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, unaryexpr_491038)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt);
N_NIMCALL(void, binaryexpr_490329)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt);
N_NIMCALL(void, binarystmt_490181)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt);
N_NIMCALL(void, genstrconcat_494824)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genstrappend_495014)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genseqelemappend_495385)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genstrequals_498380)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genisnil_492451)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, gendollar_496444)(tcproc465026* p, tnode188803* n, tloc188817* d, NimStringDesc* frmt);
N_NIMCALL(void, genof_496277)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(void, genof_496164)(tcproc465026* p, tnode188803* x, ttype188837* typ, tloc188817* d);
N_NIMCALL(void, globalerror_165558)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, gennew_495554)(tcproc465026* p, tnode188803* e);
N_NIMCALL(void, rawgennew_495502)(tcproc465026* p, tloc188817* a, trope145007* sizeexpr_495506);
N_NIMCALL(void, gennewfinalize_496090)(tcproc465026* p, tnode188803* e);
N_NIMCALL(void, gennewseq_495628)(tcproc465026* p, tnode188803* e);
N_NIMCALL(void, gennewseqaux_495593)(tcproc465026* p, tloc188817* dest, trope145007* length);
N_NIMCALL(void, gensomecast_497975)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(trope145007*, getclosuretype_472104)(tcgen465030* m, ttype188837* t, NU8 kind);
N_NIMCALL(trope145007*, rdcharloc_475015)(tloc188817* a);
N_NIMCALL(void, genord_497968)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, unaryexprchar_491067)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt);
N_NIMCALL(void, genarraylen_496483)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 op);
N_NIMCALL(void, unarystmt_490236)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt);
N_NIMCALL(void, gensetlengthstr_496863)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, gensetlengthseq_496584)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, gensetop_497843)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 op);
N_NIMCALL(void, binarystmtinexcl_497084)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt);
N_NIMCALL(trope145007*, rdsetelemloc_496934)(tloc188817* a, ttype188837* settype);
N_NIMCALL(void, binaryexprchar_490638)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt);
N_NIMCALL(void, geninop_497238)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(NIM_BOOL, fewcmps_497006)(tnode188803* s);
N_NIMCALL(void, geninexpraux_493176)(tcproc465026* p, tnode188803* e, tloc188817* a, tloc188817* b, tloc188817* d);
N_NIMCALL(void, binaryexprin_497047)(tcproc465026* p, tnode188803* e, tloc188817* a, tloc188817* b, tloc188817* d, NimStringDesc* frmt);
N_NIMCALL(NimStringDesc*, ropetostr_145075)(trope145007* p);
N_NIMCALL(void, gencall_480423)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genclosurecall_477869)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* d);
N_NIMCALL(trope145007*, genarg_477212)(tcproc465026* p, tnode188803* n_477215, tsym188833* param);
static N_INLINE(trope145007*, genargstringtocstring_477185)(tcproc465026* p, tnode188803* n);
N_NIMCALL(trope145007*, openarrayloc_477151)(tcproc465026* p, tnode188803* n);
N_NIMCALL(trope145007*, genargnoparam_477270)(tcproc465026* p, tnode188803* n);
N_NIMCALL(trope145007*, getrawproctype_477876)(tcproc465026* p, ttype188837* t);
N_NIMCALL(NIM_BOOL, leftappearsonrightside_476549)(tnode188803* le, tnode188803* ri);
N_NIMCALL(NU8, ispartof_411388)(tnode188803* a, tnode188803* b);
static N_INLINE(NIM_BOOL, hasnoinit_476609)(tnode188803* call);
N_NIMCALL(void, resetloc_475152)(tcproc465026* p, tloc188817* loc);
N_NIMCALL(trope145007*, addcomma_477882)(trope145007* r);
N_NIMCALL(void, geninfixcall_478623)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* d);
N_NIMCALL(void, fixupcall_476678)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* d, trope145007* callee, trope145007* params);
N_NIMCALL(void, gennamedparamcall_479469)(tcproc465026* p, tnode188803* ri, tloc188817* d);
N_NIMCALL(void, genprefixcall_477288)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* d);
static N_INLINE(void, poststmtactions_469596)(tcproc465026* p);
N_NIMCALL(void, genreset_495476)(tcproc465026* p, tnode188803* n);
N_NIMCALL(void, genecho_494759)(tcproc465026* p, tnode188803* n);
N_NIMCALL(NimStringDesc*, nsuRepeatStr)(NI count, NimStringDesc* s);
N_NIMCALL(void, genarrtoseq_495958)(tcproc465026* p, tnode188803* t, tloc188817* d);
N_NIMCALL(void, genseqconstr_495902)(tcproc465026* p, tnode188803* t, tloc188817* d);
N_NIMCALL(void, localerror_165571)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(tnode188803*, wrapprocforspawn_366936)(tsym188833* owner, tnode188803* n);
N_NIMCALL(NIM_BOOL, isdeepconstexpr_221876)(tnode188803* n);
N_NIMCALL(trope145007*, gensetnode_489273)(tcproc465026* p, tnode188803* n);
N_NIMCALL(void, gensetconstr_499408)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, exprcomplexconst_500579)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(void, genarrayconstr_500065)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(NIM_BOOL, handleconstexpr_499353)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(void, gentupleconstr_499699)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(void, genobjconstr_495667)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genfieldcheck_493184)(tcproc465026* p, tnode188803* e, trope145007* obj, tsym188833* field);
N_NIMCALL(tnode188803*, newstrnode_189085)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(void, gencast_498058)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genconv_498289)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(NIM_BOOL, comparetypes_230547)(ttype188837* x, ttype188837* y, NU8 cmp, NU8 flags);
N_NIMCALL(void, genaddr_492700)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genarrayelem_494288)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(NIM_BOOL, isconstexpr_221843)(tnode188803* n);
N_NIMCALL(void, genopenarrayelem_494500)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genseqelem_494571)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, gencstringelem_494445)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, gentupleelem_492903)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genderef_492623)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genrecordfield_493021)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(ttype188837*, genrecordfieldaux_492814)(tcproc465026* p, tnode188803* e, tloc188817* d, tloc188817* a);
N_NIMCALL(void, gencheckedrecordfield_493896)(tcproc465026* p, tnode188803* e, tloc188817* d);
N_NIMCALL(void, genblock_483402)(tcproc465026* p, tnode188803* t, tloc188817* d);
N_NIMCALL(NI, startblock_481090)(tcproc465026* p, NimStringDesc* start, trope145007** args, NI argsLen0);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, endblock_481207)(tcproc465026* p);
N_NIMCALL(void, endblock_481172)(tcproc465026* p, trope145007* blockend);
N_NIMCALL(trope145007*, blockbody_481158)(tblock465024* b);
N_NIMCALL(void, genstmtlistexpr_500202)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(void, genif_482009)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(void, lineff_469212)(tcproc465026* p, NU8 s, NimStringDesc* cformat, NimStringDesc* llvmformat, trope145007** args, NI argsLen0);
N_NIMCALL(void, downconv_500420)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(NI, inheritancediff_230560)(ttype188837* a, ttype188837* b);
N_NIMCALL(void, upconv_500257)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(void, genrangechck_498157)(tcproc465026* p, tnode188803* n, tloc188817* d, NimStringDesc* magic);
N_NIMCALL(NIM_BOOL, levalue_197404)(tnode188803* a, tnode188803* b);
N_NIMCALL(void, convstrtocstr_498324)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(void, convcstrtostr_498352)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(void, genclosure_499887)(tcproc465026* p, tnode188803* n, tloc188817* d);
static N_INLINE(NIM_BOOL, isconstclosure_499808)(tnode188803* n);
static N_INLINE(NIM_BOOL, isroutine_195040)(tsym188833* s);
N_NIMCALL(void, genwhilestmt_483175)(tcproc465026* p, tnode188803* t);
static N_INLINE(trope145007*, assignlabel_481152)(tblock465024* b);
N_NIMCALL(NIM_BOOL, stmtscontainpragma_464099)(tnode188803* n, NU8 w);
N_NIMCALL(void, gencomputedgoto_482768)(tcproc465026* p, tnode188803* n);
N_NIMCALL(void, localerror_165578)(tlineinfo163527 info, NimStringDesc* arg);
N_NIMCALL(void, genvarstmt_481793)(tcproc465026* p, tnode188803* n);
N_NIMCALL(void, gensinglevar_481561)(tcproc465026* p, tnode188803* a);
N_NIMCALL(void, assignglobalvar_476103)(tcproc465026* p, tsym188833* s);
N_NIMCALL(void, varindynamiclib_476094)(tcgen465030* m, tsym188833* sym);
N_NIMCALL(void, loaddynamiclib_501643)(tcgen465030* m, tlib188821* lib);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, libcandidates_138321)(NimStringDesc* s, TY110805** dest);
N_NIMCALL(void, msgwriteln_164937)(NimStringDesc* s);
N_NIMCALL(trope145007*, cstringlit_475490)(tcgen465030* m, trope145007** r, NimStringDesc* s);
N_NIMCALL(trope145007*, makellvmstring_464684)(NimStringDesc* s);
N_NIMCALL(trope145007*, cstringlit_475427)(tcproc465026* p, trope145007** r, NimStringDesc* s);
N_NIMCALL(void, registergcroot_480805)(tcproc465026* p, tsym188833* v);
N_NIMCALL(trope145007*, gentraverseprocforglobal_474840)(tcgen465030* m, tsym188833* s);
static N_INLINE(void, loadinto_481009)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* a);
N_NIMCALL(void, genasgncall_480602)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* d);
N_NIMCALL(void, genclosurevar_481718)(tcproc465026* p, tnode188803* a);
N_NIMCALL(void, genvartuple_480829)(tcproc465026* p, tnode188803* n);
N_NIMCALL(void, genconststmt_481874)(tcproc465026* p, tnode188803* t);
N_NIMCALL(NIM_BOOL, containscompiletimeonly_233257)(ttype188837* t);
static N_INLINE(NIM_BOOL, emitlazily_468308)(tsym188833* s);
N_NIMCALL(void, gencase_486132)(tcproc465026* p, tnode188803* t, tloc188817* d);
N_NIMCALL(void, genstringcase_485442)(tcproc465026* p, tnode188803* t, tloc188817* d);
N_NIMCALL(NI, nextpoweroftwo_133284)(NI x);
N_NIMCALL(void, gencasestringbranch_484977)(tcproc465026* p, tnode188803* b, tloc188817* e, trope145007* labl, trope145007** branches, NI branchesLen0);
N_NIMCALL(NI64, hashstring_464123)(NimStringDesc* s);
N_NIMCALL(trope145007*, gencasesecondpass_484711)(tcproc465026* p, tnode188803* t, tloc188817* d, NI labid, NI until);
N_NIMCALL(void, exprblock_481271)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(void, gencasegeneric_484950)(tcproc465026* p, tnode188803* t, tloc188817* d, NimStringDesc* rangeformat, NimStringDesc* eqformat);
N_NIMCALL(trope145007*, genifforcaseuntil_484839)(tcproc465026* p, tnode188803* t, tloc188817* d, NimStringDesc* rangeformat, NimStringDesc* eqformat, NI until, tloc188817* a);
N_NIMCALL(void, gencasegenericbranch_484575)(tcproc465026* p, tnode188803* b, tloc188817* e, NimStringDesc* rangeformat, NimStringDesc* eqformat, trope145007* labl);
N_NIMCALL(void, genordinalcase_486003)(tcproc465026* p, tnode188803* n, tloc188817* d);
N_NIMCALL(NI, ifswitchsplitpoint_485841)(tcproc465026* p, tnode188803* n);
N_NIMCALL(NIM_BOOL, branchhastoobigrange_485710)(tnode188803* b);
N_NIMCALL(void, genreturnstmt_482680)(tcproc465026* p, tnode188803* t);
N_NIMCALL(void, blockleaveactions_482450)(tcproc465026* p, NI howmanytrys, NI howmanyexcepts);
static N_INLINE(tnode188803*, pop_482523)(tnodeseq188797** s_482531);
N_NIMCALL(void, genbreakstmt_483953)(tcproc465026* p, tnode188803* t);
N_NIMCALL(void, genasgn_488536)(tcproc465026* p, tnode188803* e, NIM_BOOL fastasgn);
N_NIMCALL(NIM_BOOL, fielddiscriminantcheckneeded_488191)(tcproc465026* p, tnode188803* asgn);
N_NIMCALL(void, asgnfielddiscriminant_488412)(tcproc465026* p, tnode188803* e);
N_NIMCALL(void, gendiscriminantcheck_488341)(tcproc465026* p, tloc188817* a, tloc188817* tmp, ttype188837* objtype, tsym188833* field);
N_NIMCALL(trope145007*, discriminatortabledecl_472774)(tcgen465030* m, ttype188837* objtype, tsym188833* d);
N_NIMCALL(void, genasmstmt_487659)(tcproc465026* p, tnode188803* t);
N_NIMCALL(trope145007*, genasmoremitstmt_487442)(tcproc465026* p, tnode188803* t, NIM_BOOL isasmstmt);
N_NIMCALL(void, gentrycpp_486225)(tcproc465026* p, tnode188803* t, tloc188817* d);
N_NIMCALL(void, gentry_486849)(tcproc465026* p, tnode188803* t, tloc188817* d);
N_NIMCALL(void, line_469077)(tcproc465026* p, NU8 s, NimStringDesc* r);
static N_INLINE(trope145007*, pop_145515)(TY163540** s_145523);
N_NIMCALL(void, genraisestmt_484451)(tcproc465026* p, tnode188803* t);
static N_INLINE(void, gensimpleblock_481259)(tcproc465026* p, tnode188803* stmts);
N_NIMCALL(NimStringDesc*, getraisefrmt_484437)(tcproc465026* p);
N_NIMCALL(void, gentypesection_474957)(tcgen465030* m, tnode188803* n);
N_NIMCALL(void, genpragma_488120)(tcproc465026* p_488122, tnode188803* n);
N_NIMCALL(NU8, whichpragma_222161)(tnode188803* n);
N_NIMCALL(void, genemit_487829)(tcproc465026* p, tnode188803* t);
N_NIMCALL(void, genbreakpoint_487869)(tcproc465026* p, tnode188803* t);
N_NIMCALL(void, genwatchpoint_488052)(tcproc465026* p, tnode188803* n);
N_NIMCALL(tsym188833*, skipgenericowner_194972)(tsym188833* s);
N_NIMCALL(void, genparforstmt_483645)(tcproc465026* p, tnode188803* t);
N_NIMCALL(void, genstate_481289)(tcproc465026* p, tnode188803* n);
N_NIMCALL(void, gengotostate_481380)(tcproc465026* p, tnode188803* n);
N_NIMCALL(void, genbreakstate_481475)(tcproc465026* p, tnode188803* n);
N_NIMCALL(trope145007*, initgcframe_475402)(tcproc465026* p);
N_NIMCALL(trope145007*, initframe_502533)(tcproc465026* p, trope145007* procname, trope145007* filename);
N_NIMCALL(void, appcg_469022)(tcproc465026* p, NU8 s, NimStringDesc* frmt, trope145007** args, NI argsLen0);
N_NIMCALL(trope145007*, deinitgcframe_475413)(tcproc465026* p);
N_NIMCALL(trope145007*, deinitframe_502550)(tcproc465026* p);
N_NIMCALL(void, symindynamiclib_502205)(tcgen465030* m, tsym188833* sym);
N_NIMCALL(NIM_BOOL, isgetprocaddr_501592)(tlib188821* lib);
N_NIMCALL(void, symindynamiclibpartial_502430)(tcgen465030* m, tsym188833* sym);
N_NIMCALL(void, rawmessage_165386)(NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, completecfilepath_169753)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(void, readmergeinfo_466813)(NimStringDesc* cfilename, tcgen465030* m);
N_NIMCALL(NimStringDesc*, getcfile_505708)(tcgen465030* m);
N_NIMCALL(NimStringDesc*, withpackagename_137873)(NimStringDesc* path);
static N_INLINE(NIM_BOOL, skipcodegen_246074)(tnode188803* n);
N_NIMCALL(void, registermoduletomain_504854)(tsym188833* m);
N_NIMCALL(trope145007*, getinitname_504842)(tsym188833* m);
N_NIMCALL(trope145007*, getsomeinitname_504563)(tsym188833* m, NimStringDesc* suffix);
N_NIMCALL(trope145007*, getdatinitname_504848)(tsym188833* m);
N_NIMCALL(trope145007*, ropeff_468205)(NimStringDesc* cformat, NimStringDesc* llvmformat, trope145007** args, NI argsLen0);
N_NIMCALL(tnode188803*, generatemethoddispatchers_365126)(void);
N_NIMCALL(void, genmainproc_504364)(tcgen465030* m);
N_NIMCALL(trope145007*, genfilenames_504315)(tcgen465030* m);
N_NIMCALL(void, finishmodule_505829)(tcgen465030* m);
N_NIMCALL(void, updatecachedmodule_506217)(tcgen465030* m);
N_NIMCALL(NIM_BOOL, mergerequired_467094)(tcgen465030* m);
N_NIMCALL(void, mergefiles_467228)(NimStringDesc* cfilename, tcgen465030* m);
N_NIMCALL(void, geninitcode_504909)(tcgen465030* m);
N_NIMCALL(trope145007*, gensectionstart_466112)(NU8 ps);
N_NIMCALL(trope145007*, gensectionend_466159)(NU8 ps);
N_NIMCALL(trope145007*, gensectionstart_466022)(NU8 fs);
N_NIMCALL(trope145007*, gensectionend_466069)(NU8 fs);
N_NIMCALL(void, finishtypedescriptions_472271)(tcgen465030* m);
N_NIMCALL(trope145007*, genmodule_505117)(tcgen465030* m, NimStringDesc* cfilenoext);
N_NIMCALL(trope145007*, getfileheader_504308)(NimStringDesc* cfilenoext);
N_NIMCALL(trope145007*, getcopyright_504281)(NimStringDesc* cfilenoext);
N_NIMCALL(NimStringDesc*, getcompilecfilecmd_170292)(NimStringDesc* cfilename, NIM_BOOL isexternal);
static N_INLINE(void, addinttypes_504271)(trope145007** result);
N_NIMCALL(trope145007*, genmergeinfo_466271)(tcgen465030* m);
N_NIMCALL(void, generateheaders_502461)(tcgen465030* m);
N_NIMCALL(void, generatethreadlocalstorage_476012)(tcgen465030* m);
N_NIMCALL(void, writerope_146407)(trope145007* head, NimStringDesc* filename, NIM_BOOL usewarning);
N_NIMCALL(void, addfiletocompile_169766)(NimStringDesc* filename);
N_NIMCALL(void, addfiletolink_169779)(NimStringDesc* filename);
N_NIMCALL(void, writemodule_506059)(tcgen465030* m, NIM_BOOL pending);
N_NIMCALL(void, generatethreadvarssize_476069)(tcgen465030* m);
N_NIMCALL(NIM_BOOL, shouldrecompile_506036)(trope145007* code, NimStringDesc* cfile, NimStringDesc* cfilenoext);
N_NIMCALL(NimStringDesc*, toobjfile_169760)(NimStringDesc* filenamewithoutext);
N_NIMCALL(NIM_BOOL, writeropeifnotequal_145070)(trope145007* r, NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, nosfileNewer)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, writemapping_170815)(trope145007* gsymbolmapping);
N_NIMCALL(void, writeheader_505643)(tcgen465030* m);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY108700* Result);
N_NIMCALL(void, resetmodule_505348)(tcgen465030* m);
N_NIMCALL(void, nullify_505409)(trope145007** arr_505415);
N_NIMCALL(void, nullify_505436)(trope145007** arr_505442);
STRING_LITERAL(TMP961, "\011", 1);
STRING_LITERAL(TMP3126, "compiler/cgen.nim", 17);
NIM_CONST TY79484 TMP3125 = {((NimStringDesc*) &TMP3126),
1241}
;
STRING_LITERAL(TMP3127, "$", 1);
STRING_LITERAL(TMP3128, "ropes: invalid format string $", 30);
STRING_LITERAL(TMP3133, "@", 1);
STRING_LITERAL(TMP3134, "%", 1);
STRING_LITERAL(TMP3135, "mangleName", 10);
STRING_LITERAL(TMP3136, "", 0);
STRING_LITERAL(TMP3137, "HEX", 3);
STRING_LITERAL(TMP3138, "_", 1);
STRING_LITERAL(TMP3139, "extern $1 $2;$n", 15);
STRING_LITERAL(TMP3140, "getTypeDescAux: t == nil", 24);
STRING_LITERAL(TMP3141, "void", 4);
STRING_LITERAL(TMP3142, "TY", 2);
STRING_LITERAL(TMP3143, "getTypeName: ", 13);
STRING_LITERAL(TMP3144, "void*", 5);
STRING_LITERAL(TMP3145, "NI32", 4);
STRING_LITERAL(TMP3146, "NU8", 3);
STRING_LITERAL(TMP3147, "NU16", 4);
STRING_LITERAL(TMP3148, "NI64", 4);
STRING_LITERAL(TMP3149, "getSimpleTypeDesc: ", 19);
STRING_LITERAL(TMP3150, "NimStringDesc", 13);
STRING_LITERAL(TMP3151, "NimStringDesc*", 14);
STRING_LITERAL(TMP3152, "NCSTRING", 8);
STRING_LITERAL(TMP3153, "NIM_BOOL", 8);
STRING_LITERAL(TMP3154, "NIM_CHAR", 8);
STRING_LITERAL(TMP3155, "0", 1);
STRING_LITERAL(TMP3156, "NI", 2);
STRING_LITERAL(TMP3157, "NI8", 3);
STRING_LITERAL(TMP3158, "NI16", 4);
STRING_LITERAL(TMP3159, "NF", 2);
STRING_LITERAL(TMP3160, "NF32", 4);
STRING_LITERAL(TMP3161, "NF64", 4);
STRING_LITERAL(TMP3162, "NF128", 5);
STRING_LITERAL(TMP3163, "NU", 2);
STRING_LITERAL(TMP3164, "NU32", 4);
STRING_LITERAL(TMP3165, "NU64", 4);
NIM_CONST TY471067 numericaltypetostr_471066 = {((NimStringDesc*) &TMP3156),
((NimStringDesc*) &TMP3157),
((NimStringDesc*) &TMP3158),
((NimStringDesc*) &TMP3145),
((NimStringDesc*) &TMP3148),
((NimStringDesc*) &TMP3159),
((NimStringDesc*) &TMP3160),
((NimStringDesc*) &TMP3161),
((NimStringDesc*) &TMP3162),
((NimStringDesc*) &TMP3163),
((NimStringDesc*) &TMP3146),
((NimStringDesc*) &TMP3147),
((NimStringDesc*) &TMP3164),
((NimStringDesc*) &TMP3165)}
;
STRING_LITERAL(TMP3166, "cannot generate C type for: ", 28);
STRING_LITERAL(TMP3167, "$1 $2;$n", 8);
STRING_LITERAL(TMP3168, "typedef $1 $2 $2;$n", 19);
STRING_LITERAL(TMP3169, "union", 5);
STRING_LITERAL(TMP3170, "struct", 6);
STRING_LITERAL(TMP3171, "getTypeForward(", 15);
STRING_LITERAL(TMP3172, "*", 1);
STRING_LITERAL(TMP3173, "**", 2);
STRING_LITERAL(TMP3174, "mapType", 7);
STRING_LITERAL(TMP3177, "genProcParams", 13);
STRING_LITERAL(TMP3178, ", ", 2);
STRING_LITERAL(TMP3179, " ", 1);
STRING_LITERAL(TMP3180, ", NI $1Len$2", 12);
STRING_LITERAL(TMP3181, ", @NI $1Len$2", 13);
STRING_LITERAL(TMP3182, " Result", 7);
STRING_LITERAL(TMP3183, " @Result", 8);
STRING_LITERAL(TMP3184, "void* ClEnv", 11);
STRING_LITERAL(TMP3185, "...", 3);
STRING_LITERAL(TMP3186, "void)", 5);
STRING_LITERAL(TMP3187, ")", 1);
STRING_LITERAL(TMP3188, "(", 1);
STRING_LITERAL(TMP3189, "typedef $1_PTR($2, $3) $4;$n", 28);
STRING_LITERAL(TMP3190, "N_NIMCALL", 9);
STRING_LITERAL(TMP3191, "N_STDCALL", 9);
STRING_LITERAL(TMP3192, "N_CDECL", 7);
STRING_LITERAL(TMP3193, "N_SAFECALL", 10);
STRING_LITERAL(TMP3194, "N_SYSCALL", 9);
STRING_LITERAL(TMP3195, "N_INLINE", 8);
STRING_LITERAL(TMP3196, "N_NOINLINE", 10);
STRING_LITERAL(TMP3197, "N_FASTCALL", 10);
STRING_LITERAL(TMP3198, "N_CLOSURE", 9);
STRING_LITERAL(TMP3199, "N_NOCONV", 8);
NIM_CONST TY188016 callingconvtostr_470350 = {((NimStringDesc*) &TMP3190),
((NimStringDesc*) &TMP3191),
((NimStringDesc*) &TMP3192),
((NimStringDesc*) &TMP3193),
((NimStringDesc*) &TMP3194),
((NimStringDesc*) &TMP3195),
((NimStringDesc*) &TMP3196),
((NimStringDesc*) &TMP3197),
((NimStringDesc*) &TMP3198),
((NimStringDesc*) &TMP3199)}
;
STRING_LITERAL(TMP3200, "typedef struct {$nN_NIMCALL_PTR($2, ClPrc) $3;$nvoid* ClEnv;$n}"
" $1;$n", 69);
STRING_LITERAL(TMP3201, "struct $2 : #TGenericSeq {$n", 28);
STRING_LITERAL(TMP3202, "struct $2 {$n  #TGenericSeq Sup;$n", 34);
STRING_LITERAL(TMP3203, "  $1 data[SEQ_DECL_SIZE];$n};$n", 31);
STRING_LITERAL(TMP3204, "TGenericSeq", 11);
STRING_LITERAL(TMP3205, "typedef $1 $2[$3];$n", 20);
extern NIM_CONST TY169403 cc_169402;
STRING_LITERAL(TMP3206, " {$n", 4);
STRING_LITERAL(TMP3207, " {$n#TNimType* m_type;$n", 24);
STRING_LITERAL(TMP3208, " : public $1 {$n", 16);
STRING_LITERAL(TMP3209, " {$n  $1 Sup;$n", 15);
STRING_LITERAL(TMP3210, "genRecordFieldsAux", 18);
STRING_LITERAL(TMP3211, "$1.$2", 5);
STRING_LITERAL(TMP3212, "union {", 7);
STRING_LITERAL(TMP3213, "S", 1);
STRING_LITERAL(TMP3214, "struct {", 8);
STRING_LITERAL(TMP3215, "} $1;$n", 7);
STRING_LITERAL(TMP3216, "genRecordFieldsAux(record case branch)", 38);
STRING_LITERAL(TMP3217, "mangleRecFieldName", 18);
STRING_LITERAL(TMP3218, "$1 $2[SEQ_DECL_SIZE];$n", 23);
STRING_LITERAL(TMP3219, "genRecordFieldsAux()", 20);
STRING_LITERAL(TMP3220, "char dummy;$n", 13);
STRING_LITERAL(TMP3221, "};", 2);
STRING_LITERAL(TMP3222, "$1 $2 {$n", 9);
STRING_LITERAL(TMP3223, "$1 Field$2;$n", 13);
STRING_LITERAL(TMP3224, "char dummy;", 11);
STRING_LITERAL(TMP3225, "typedef NU8 $1[$2];$n", 21);
STRING_LITERAL(TMP3226, "getTypeDescAux(", 15);
STRING_LITERAL(TMP3227, "Dl_$1", 5);
STRING_LITERAL(TMP3228, "$N#line $2 $1$N", 15);
STRING_LITERAL(TMP3229, "; line $2 \"$1\"$n", 16);
STRING_LITERAL(TMP3231, "N_LIB_IMPORT ", 13);
STRING_LITERAL(TMP3232, "N_LIB_EXPORT ", 13);
STRING_LITERAL(TMP3233, "static ", 7);
STRING_LITERAL(TMP3234, "$1($2, $3)$4", 12);
STRING_LITERAL(TMP3235, " __attribute__((naked))", 23);
STRING_LITERAL(TMP3236, "$1;$n", 5);
STRING_LITERAL(TMP3237, "proc has no result symbol", 25);
STRING_LITERAL(TMP3238, " register", 9);
STRING_LITERAL(TMP3239, " volatile", 9);
STRING_LITERAL(TMP3240, " $1;$n", 6);
STRING_LITERAL(TMP3241, ";$n", 3);
STRING_LITERAL(TMP3242, "&", 1);
STRING_LITERAL(TMP3243, "F.s[$1].address = (void*)$3; F.s[$1].typ = $4; F.s[$1].name = $"
"2;$n", 67);
STRING_LITERAL(TMP3244, "NTI$1", 5);
STRING_LITERAL(TMP3245, "(&", 2);
STRING_LITERAL(TMP3246, "TNimType", 8);
STRING_LITERAL(TMP3247, "TNimNode", 8);
STRING_LITERAL(TMP3248, "extern TNimType $1; /* $2 */$n", 30);
STRING_LITERAL(TMP3249, "0", 1);
STRING_LITERAL(TMP3250, "void*", 5);
STRING_LITERAL(TMP3251, "$1.size = sizeof($2);$n$1.kind = $3;$n$1.base = $4;$n", 53);
STRING_LITERAL(TMP3252, "$1.flags = $2;$n", 16);
STRING_LITERAL(TMP3253, "TNimType $1; /* $2 */$n", 23);
STRING_LITERAL(TMP3254, "$1[$2]", 6);
STRING_LITERAL(TMP3255, "static TNimNode* $1[$2];$n", 26);
STRING_LITERAL(TMP3256, "$1[$2] = &$3;$n", 15);
STRING_LITERAL(TMP3257, "$1.kind = 1;$n$1.offset = offsetof($2, Field$3);$n$1.typ = $4;$"
"n$1.name = \"Field$3\";$n", 86);
STRING_LITERAL(TMP3258, "$1.len = $2; $1.kind = 2; $1.sons = &$3[0];$n", 45);
STRING_LITERAL(TMP3259, "$1.len = $2; $1.kind = 2;$n", 27);
STRING_LITERAL(TMP3260, "$1.node = &$2;$n", 16);
STRING_LITERAL(TMP3261, "TMP$1", 5);
STRING_LITERAL(TMP3262, "#nimGCvisit((void*)$1, op);$n", 29);
STRING_LITERAL(TMP3263, "N_NIMCALL(void, $1)(void* p, NI op)", 35);
STRING_LITERAL(TMP3264, "$1 a;$n", 7);
STRING_LITERAL(TMP3265, "a = ($1)p;$n", 12);
STRING_LITERAL(TMP3266, "%LOC", 4);
STRING_LITERAL(TMP3267, "LOC", 3);
STRING_LITERAL(TMP3268, "$1 = 0;$n", 9);
STRING_LITERAL(TMP3269, "(*$1)", 5);
STRING_LITERAL(TMP3270, "<string.h>", 10);
STRING_LITERAL(TMP3271, "memset((void*)$1, 0, sizeof($2));$n", 35);
STRING_LITERAL(TMP3272, ".Sup", 4);
STRING_LITERAL(TMP3273, "$1.m_type = $2;$n", 17);
STRING_LITERAL(TMP3274, "#objectInit($1, $2);$n", 22);
STRING_LITERAL(TMP3275, "for ($1 = 0; $1 < $2->$3; $1++) {$n", 35);
STRING_LITERAL(TMP3276, "Sup.len", 7);
STRING_LITERAL(TMP3277, "len", 3);
STRING_LITERAL(TMP3278, "for ($1 = 0; $1 < $2; $1++) {$n", 31);
STRING_LITERAL(TMP3279, "}$n", 3);
STRING_LITERAL(TMP3280, "$1.Sup", 6);
STRING_LITERAL(TMP3281, "genTraverseProc", 15);
STRING_LITERAL(TMP3282, "switch ($1.$2) {$n", 18);
STRING_LITERAL(TMP3283, "case $1 ... $2:$n", 17);
STRING_LITERAL(TMP3284, "genLiteral: ty is nil", 21);
STRING_LITERAL(TMP3285, "(-2147483647 -1)", 16);
STRING_LITERAL(TMP3286, "IL64($1)", 8);
STRING_LITERAL(TMP3287, "(IL64(-9223372036854775807) - IL64(1))", 38);
STRING_LITERAL(TMP3288, "NIM_TRUE", 8);
STRING_LITERAL(TMP3289, "NIM_FALSE", 9);
STRING_LITERAL(TMP3290, "(($1) $2)", 9);
STRING_LITERAL(TMP3291, "TMP", 3);
STRING_LITERAL(TMP3292, "static NIM_CONST $1 $2 = {NIM_NIL,NIM_NIL};$n", 45);
STRING_LITERAL(TMP3293, "NIM_NIL", 7);
STRING_LITERAL(TMP3294, "((#NimStringDesc*) &$1)", 23);
STRING_LITERAL(TMP3295, "STRING_LITERAL($1, $2, $3);$n", 29);
STRING_LITERAL(TMP3296, "((#NimStringDesc*) &TMP$1)", 26);
STRING_LITERAL(TMP3301, "genLiteral(", 11);
STRING_LITERAL(TMP3302, "case $1:$n", 10);
STRING_LITERAL(TMP3303, "default:$n", 10);
STRING_LITERAL(TMP3304, "break;$n", 8);
STRING_LITERAL(TMP3305, "} $n", 4);
STRING_LITERAL(TMP3306, "genTraverseProc()", 17);
STRING_LITERAL(TMP3307, "$1.Field$2", 10);
STRING_LITERAL(TMP3308, "$1.ClEnv", 8);
STRING_LITERAL(TMP3309, "$1->data[$2]", 12);
STRING_LITERAL(TMP3310, "a", 1);
STRING_LITERAL(TMP3311, "(*a)", 4);
STRING_LITERAL(TMP3312, "$1 {$n$2$3$4}$n", 15);
STRING_LITERAL(TMP3313, "$1.marker = $2;$n", 17);
STRING_LITERAL(TMP3314, "$1.len = $2; $1.kind = 0;$n$3.node = &$1;$n", 43);
STRING_LITERAL(TMP3315, "$1.offset = $2;$n", 17);
STRING_LITERAL(TMP3316, "NI $1;$n", 8);
STRING_LITERAL(TMP3317, "static char* NIM_CONST $1[$2] = {$n$3};$n", 41);
STRING_LITERAL(TMP3318, "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(TMP3319, "$1.len = $2; $1.kind = 2; $1.sons = &$3[0];$n$4.node = &$1;$n", 61);
STRING_LITERAL(TMP3320, "$1.flags = 1<<2;$n", 18);
STRING_LITERAL(TMP3324, "anonymous obj with discriminator", 32);
STRING_LITERAL(TMP3325, "NimDT_$1_$2", 11);
STRING_LITERAL(TMP3326, "$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(TMP3327, "TNimNode* $1[$2];$n", 19);
STRING_LITERAL(TMP3328, "genObjectFields; nkOfBranch broken", 34);
STRING_LITERAL(TMP3329, "genObjectFields(nkRecCase)", 26);
STRING_LITERAL(TMP3330, "$1.kind = 1;$n$1.offset = offsetof($2, $3);$n$1.typ = $4;$n$1.n"
"ame = $5;$n", 74);
STRING_LITERAL(TMP3331, "genObjectFields", 15);
STRING_LITERAL(TMP3332, "genTypeInfo(", 12);
STRING_LITERAL(TMP3333, "\011return $1;$n", 13);
STRING_LITERAL(TMP3334, "Result", 6);
STRING_LITERAL(TMP3335, "$1 = alloca $3$nstore $3 $2, $3* $1$n", 37);
STRING_LITERAL(TMP3336, "closure generation failed", 25);
STRING_LITERAL(TMP3337, "$1 = ($2) ClEnv;$n", 18);
STRING_LITERAL(TMP3338, "$1 = $2;$n", 10);
STRING_LITERAL(TMP3339, "#asgnRef((void**) $1, $2);$n", 28);
STRING_LITERAL(TMP3340, "#asgnRefNoCycle((void**) $1, $2);$n", 35);
STRING_LITERAL(TMP3341, "#unsureAsgnRef((void**) $1, $2);$n", 34);
STRING_LITERAL(TMP3342, "#genericSeqAssign($1, $2, $3);$n", 32);
STRING_LITERAL(TMP3343, "$1 = #copyString($2);$n", 23);
STRING_LITERAL(TMP3344, "$3 = $1; $1 = #copyStringRC1($2);$n", 35);
STRING_LITERAL(TMP3345, "if ($1) #nimGCunrefNoCycle($1);$n", 33);
STRING_LITERAL(TMP3346, "#unsureAsgnRef((void**) $1, #copyString($2));$n", 47);
STRING_LITERAL(TMP3347, ".", 1);
STRING_LITERAL(TMP3348, "ClEnv", 5);
STRING_LITERAL(TMP3349, "$1.ClPrc = $2.ClPrc;$n", 22);
STRING_LITERAL(TMP3350, "Field$1", 7);
STRING_LITERAL(TMP3351, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($3));$n", 53);
STRING_LITERAL(TMP3352, "#genericShallowAssign((void*)$1, (void*)$2, $3);$n", 50);
STRING_LITERAL(TMP3353, "#genericAssign((void*)$1, (void*)$2, $3);$n", 43);
STRING_LITERAL(TMP3355, "compiler/ccgexprs.nim", 21);
NIM_CONST TY79484 TMP3354 = {((NimStringDesc*) &TMP3355),
324}
;
STRING_LITERAL(TMP3356, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($1));$n", 53);
STRING_LITERAL(TMP3357, "#genericAssignOpenArray((void*)$1, (void*)$2, $1Len0, $3);$n", 60);
STRING_LITERAL(TMP3358, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($1[0])*$1Len0);$n", 63);
STRING_LITERAL(TMP3359, "memcpy((void*)$1, (NIM_CONST void*)$2, $3);$n", 45);
STRING_LITERAL(TMP3360, "genAssignment: ", 15);
STRING_LITERAL(TMP3361, "expr: proc not init ", 20);
STRING_LITERAL(TMP3362, "extern ", 7);
STRING_LITERAL(TMP3363, "NIM_THREADVAR ", 14);
STRING_LITERAL(TMP3364, "NIM_CONST $1 $2 = $3;$n", 23);
STRING_LITERAL(TMP3365, "{$n", 3);
STRING_LITERAL(TMP3366, "0x$1,$n", 7);
STRING_LITERAL(TMP3367, "0x$1, ", 6);
STRING_LITERAL(TMP3368, "0x$1}$n", 7);
STRING_LITERAL(TMP3369, "{{$1, $1}", 9);
STRING_LITERAL(TMP3370, ", {", 3);
STRING_LITERAL(TMP3371, ",$n", 3);
STRING_LITERAL(TMP3372, "}", 1);
STRING_LITERAL(TMP3373, "CNSTSEQ", 7);
STRING_LITERAL(TMP3374, "NIM_CONST struct {$n  #TGenericSeq Sup;$n  $1 data[$2];$n} $3 ="
" $4;$n", 69);
STRING_LITERAL(TMP3375, "(($1)&$2)", 9);
STRING_LITERAL(TMP3376, "{", 1);
STRING_LITERAL(TMP3377, "$1,$n", 5);
STRING_LITERAL(TMP3378, "extern NIM_CONST $1 $2;$n", 25);
STRING_LITERAL(TMP3379, "expr: var not init ", 19);
STRING_LITERAL(TMP3380, "\011NimThreadVars* NimTV;$n", 24);
STRING_LITERAL(TMP3381, "\011NimTV = (NimThreadVars*) #GetThreadLocalVars();$n", 50);
STRING_LITERAL(TMP3382, "NimTV->", 7);
STRING_LITERAL(TMP3383, "expr: temp not init ", 20);
STRING_LITERAL(TMP3384, "expr: param not init ", 21);
STRING_LITERAL(TMP3385, "expr(", 5);
STRING_LITERAL(TMP3386, "); unknown symbol", 17);
STRING_LITERAL(TMP3387, "//", 2);
STRING_LITERAL(TMP3388, "#endb($1, $2);$n", 16);
STRING_LITERAL(TMP3389, "nimln($1, $2);$n", 16);
STRING_LITERAL(TMP3391, "LA", 2);
STRING_LITERAL(TMP3392, "if ($1) goto $2;$n", 18);
STRING_LITERAL(TMP3393, "if (!($1)) goto $2;$n", 21);
STRING_LITERAL(TMP3394, "$1: ;$n", 7);
STRING_LITERAL(TMP3395, "!($1)", 5);
STRING_LITERAL(TMP3396, "$1", 2);
STRING_LITERAL(TMP3397, "($3)((NU$2) ~($1))", 18);
STRING_LITERAL(TMP3398, "-($1)", 5);
STRING_LITERAL(TMP3399, "($1 > 0? ($1) : -($1))", 22);
STRING_LITERAL(TMP3400, "(($3)(NU)(NU8)($1))", 19);
STRING_LITERAL(TMP3401, "(($3)(NU64)(NU8)($1))", 21);
STRING_LITERAL(TMP3402, "(($3)(NU)(NU16)($1))", 20);
STRING_LITERAL(TMP3403, "(($3)(NU64)(NU16)($1))", 22);
STRING_LITERAL(TMP3404, "(($3)(NU64)(NU32)($1))", 22);
STRING_LITERAL(TMP3405, "(($3)(NU64)(NU)($1))", 20);
STRING_LITERAL(TMP3406, "(($3)(NU8)(NU)($1))", 19);
STRING_LITERAL(TMP3407, "(($3)(NU16)(NU)($1))", 20);
STRING_LITERAL(TMP3408, "(($3)(NU32)(NU64)($1))", 22);
STRING_LITERAL(TMP3409, "((double) ($1))", 15);
STRING_LITERAL(TMP3410, "float64ToInt32($1)", 18);
STRING_LITERAL(TMP3411, "float64ToInt64($1)", 18);
NIM_CONST TY492499 unarithtab_492498 = {((NimStringDesc*) &TMP3395),
((NimStringDesc*) &TMP3396),
((NimStringDesc*) &TMP3397),
((NimStringDesc*) &TMP3396),
((NimStringDesc*) &TMP3397),
((NimStringDesc*) &TMP3396),
((NimStringDesc*) &TMP3398),
((NimStringDesc*) &TMP3399),
((NimStringDesc*) &TMP3400),
((NimStringDesc*) &TMP3401),
((NimStringDesc*) &TMP3402),
((NimStringDesc*) &TMP3403),
((NimStringDesc*) &TMP3404),
((NimStringDesc*) &TMP3405),
((NimStringDesc*) &TMP3406),
((NimStringDesc*) &TMP3407),
((NimStringDesc*) &TMP3408),
((NimStringDesc*) &TMP3409),
((NimStringDesc*) &TMP3409),
((NimStringDesc*) &TMP3410),
((NimStringDesc*) &TMP3411)}
;
STRING_LITERAL(TMP3412, "if ($1 == $2) #raiseOverflow();$n", 33);
STRING_LITERAL(TMP3413, "((NI$2)-($1))", 13);
STRING_LITERAL(TMP3414, "(NI$2)abs($1)", 13);
NIM_CONST TY491496 opr_491495 = {((NimStringDesc*) &TMP3413),
((NimStringDesc*) &TMP3398),
((NimStringDesc*) &TMP3414),
((NimStringDesc*) &TMP3399)}
;
STRING_LITERAL(TMP3415, "(($4)($2) $1 ($4)($3))", 22);
STRING_LITERAL(TMP3416, "+", 1);
STRING_LITERAL(TMP3417, "-", 1);
STRING_LITERAL(TMP3418, "/", 1);
NIM_CONST TY498576 opr_498575 = {((NimStringDesc*) &TMP3416),
((NimStringDesc*) &TMP3417),
((NimStringDesc*) &TMP3172),
((NimStringDesc*) &TMP3418)}
;
STRING_LITERAL(TMP3419, "#nanCheck($1);$n", 16);
STRING_LITERAL(TMP3420, "#infCheck($1);$n", 16);
STRING_LITERAL(TMP3421, "(($4)($1) + ($4)($2))", 21);
STRING_LITERAL(TMP3422, "(($4)($1) - ($4)($2))", 21);
STRING_LITERAL(TMP3423, "(($4)($1) * ($4)($2))", 21);
STRING_LITERAL(TMP3424, "(($4)($1) / ($4)($2))", 21);
STRING_LITERAL(TMP3425, "($4)((NU$3)($1) >> (NU$3)($2))", 30);
STRING_LITERAL(TMP3426, "($4)((NU$3)($1) << (NU$3)($2))", 30);
STRING_LITERAL(TMP3427, "($4)($1 & $2)", 13);
STRING_LITERAL(TMP3428, "($4)($1 | $2)", 13);
STRING_LITERAL(TMP3429, "($4)($1 ^ $2)", 13);
STRING_LITERAL(TMP3430, "(($1 <= $2) ? $1 : $2)", 22);
STRING_LITERAL(TMP3431, "(($1 >= $2) ? $1 : $2)", 22);
STRING_LITERAL(TMP3432, "($4)((NU64)($1) >> (NU64)($2))", 30);
STRING_LITERAL(TMP3433, "($4)((NU64)($1) << (NU64)($2))", 30);
STRING_LITERAL(TMP3434, "($4)((NU$3)($1) + (NU$3)($2))", 29);
STRING_LITERAL(TMP3435, "($4)((NU$3)($1) - (NU$3)($2))", 29);
STRING_LITERAL(TMP3436, "($4)((NU$3)($1) * (NU$3)($2))", 29);
STRING_LITERAL(TMP3437, "($4)((NU$3)($1) / (NU$3)($2))", 29);
STRING_LITERAL(TMP3438, "($4)((NU$3)($1) % (NU$3)($2))", 29);
STRING_LITERAL(TMP3439, "($1 == $2)", 10);
STRING_LITERAL(TMP3440, "($1 <= $2)", 10);
STRING_LITERAL(TMP3441, "($1 < $2)", 9);
STRING_LITERAL(TMP3442, "((NU$3)($1) <= (NU$3)($2))", 26);
STRING_LITERAL(TMP3443, "((NU$3)($1) < (NU$3)($2))", 25);
STRING_LITERAL(TMP3444, "((NU64)($1) <= (NU64)($2))", 26);
STRING_LITERAL(TMP3445, "((NU64)($1) < (NU64)($2))", 25);
STRING_LITERAL(TMP3446, "((NU8)($1) == (NU8)($2))", 24);
STRING_LITERAL(TMP3447, "((NU8)($1) <= (NU8)($2))", 24);
STRING_LITERAL(TMP3448, "((NU8)($1) < (NU8)($2))", 23);
STRING_LITERAL(TMP3449, "($1 != $2)", 10);
NIM_CONST TY491648 binarithtab_491647 = {((NimStringDesc*) &TMP3421),
((NimStringDesc*) &TMP3422),
((NimStringDesc*) &TMP3423),
((NimStringDesc*) &TMP3424),
((NimStringDesc*) &TMP3425),
((NimStringDesc*) &TMP3426),
((NimStringDesc*) &TMP3427),
((NimStringDesc*) &TMP3428),
((NimStringDesc*) &TMP3429),
((NimStringDesc*) &TMP3430),
((NimStringDesc*) &TMP3431),
((NimStringDesc*) &TMP3432),
((NimStringDesc*) &TMP3433),
((NimStringDesc*) &TMP3427),
((NimStringDesc*) &TMP3428),
((NimStringDesc*) &TMP3429),
((NimStringDesc*) &TMP3430),
((NimStringDesc*) &TMP3431),
((NimStringDesc*) &TMP3430),
((NimStringDesc*) &TMP3431),
((NimStringDesc*) &TMP3434),
((NimStringDesc*) &TMP3435),
((NimStringDesc*) &TMP3436),
((NimStringDesc*) &TMP3437),
((NimStringDesc*) &TMP3438),
((NimStringDesc*) &TMP3439),
((NimStringDesc*) &TMP3440),
((NimStringDesc*) &TMP3441),
((NimStringDesc*) &TMP3439),
((NimStringDesc*) &TMP3440),
((NimStringDesc*) &TMP3441),
((NimStringDesc*) &TMP3439),
((NimStringDesc*) &TMP3440),
((NimStringDesc*) &TMP3441),
((NimStringDesc*) &TMP3442),
((NimStringDesc*) &TMP3443),
((NimStringDesc*) &TMP3444),
((NimStringDesc*) &TMP3445),
((NimStringDesc*) &TMP3439),
((NimStringDesc*) &TMP3440),
((NimStringDesc*) &TMP3441),
((NimStringDesc*) &TMP3446),
((NimStringDesc*) &TMP3447),
((NimStringDesc*) &TMP3448),
((NimStringDesc*) &TMP3439),
((NimStringDesc*) &TMP3440),
((NimStringDesc*) &TMP3441),
((NimStringDesc*) &TMP3439),
((NimStringDesc*) &TMP3439),
((NimStringDesc*) &TMP3440),
((NimStringDesc*) &TMP3441),
((NimStringDesc*) &TMP3439),
((NimStringDesc*) &TMP3449)}
;
STRING_LITERAL(TMP3450, "($1.ClPrc == $2.ClPrc && $1.ClEnv == $2.ClEnv)", 46);
STRING_LITERAL(TMP3451, "(NI$4)($2 $1 $3)", 16);
NIM_CONST TY491109 opr_491108 = {((NimStringDesc*) &TMP3416),
((NimStringDesc*) &TMP3417),
((NimStringDesc*) &TMP3172),
((NimStringDesc*) &TMP3418),
((NimStringDesc*) &TMP3134),
((NimStringDesc*) &TMP3416),
((NimStringDesc*) &TMP3417),
((NimStringDesc*) &TMP3172),
((NimStringDesc*) &TMP3418),
((NimStringDesc*) &TMP3134)}
;
STRING_LITERAL(TMP3452, "$1 = #$2($3, $4);$n", 19);
STRING_LITERAL(TMP3453, "addInt", 6);
STRING_LITERAL(TMP3454, "subInt", 6);
STRING_LITERAL(TMP3455, "mulInt", 6);
STRING_LITERAL(TMP3456, "divInt", 6);
STRING_LITERAL(TMP3457, "modInt", 6);
STRING_LITERAL(TMP3458, "addInt64", 8);
STRING_LITERAL(TMP3459, "subInt64", 8);
STRING_LITERAL(TMP3460, "mulInt64", 8);
STRING_LITERAL(TMP3461, "divInt64", 8);
STRING_LITERAL(TMP3462, "modInt64", 8);
NIM_CONST TY491109 prc_491103 = {((NimStringDesc*) &TMP3453),
((NimStringDesc*) &TMP3454),
((NimStringDesc*) &TMP3455),
((NimStringDesc*) &TMP3456),
((NimStringDesc*) &TMP3457),
((NimStringDesc*) &TMP3458),
((NimStringDesc*) &TMP3459),
((NimStringDesc*) &TMP3460),
((NimStringDesc*) &TMP3461),
((NimStringDesc*) &TMP3462)}
;
STRING_LITERAL(TMP3463, "if ($1 < $2 || $1 > $3) #raiseOverflow();$n", 43);
STRING_LITERAL(TMP3464, "(NI$1)($2)", 10);
STRING_LITERAL(TMP3465, "#reprInt((NI64)$1)", 18);
STRING_LITERAL(TMP3466, "#reprFloat($1)", 14);
STRING_LITERAL(TMP3467, "#reprBool($1)", 13);
STRING_LITERAL(TMP3468, "#reprChar($1)", 13);
STRING_LITERAL(TMP3469, "#reprEnum($1, $2)", 17);
STRING_LITERAL(TMP3470, "#reprStr($1)", 12);
STRING_LITERAL(TMP3471, "#reprSet($1, $2)", 16);
STRING_LITERAL(TMP3472, "$1, $1Len0", 10);
STRING_LITERAL(TMP3473, "$1->data, $1->$2", 16);
STRING_LITERAL(TMP3474, "$1, $2", 6);
STRING_LITERAL(TMP3475, "genRepr()", 9);
STRING_LITERAL(TMP3476, "#reprOpenArray($1, $2)", 22);
STRING_LITERAL(TMP3477, "#reprAny($1, $2)", 16);
STRING_LITERAL(TMP3478, "$1 - 1", 6);
STRING_LITERAL(TMP3479, "#subInt($1, 1)", 14);
STRING_LITERAL(TMP3480, "$1 - $2", 7);
STRING_LITERAL(TMP3481, "#subInt($1, $2)", 15);
STRING_LITERAL(TMP3482, "$1 + $2", 7);
STRING_LITERAL(TMP3483, "#addInt($1, $2)", 15);
STRING_LITERAL(TMP3484, "binaryStmt", 10);
STRING_LITERAL(TMP3485, "$1 += $2;$n", 11);
STRING_LITERAL(TMP3486, "$1 = #addInt64($1, $2);$n", 25);
STRING_LITERAL(TMP3487, "$1 = #addInt($1, $2);$n", 23);
STRING_LITERAL(TMP3488, "$1 -= $2;$n", 11);
STRING_LITERAL(TMP3489, "$1 = #subInt64($1, $2);$n", 25);
STRING_LITERAL(TMP3490, "$1 = #subInt($1, $2);$n", 23);
STRING_LITERAL(TMP3491, "#appendChar($1, $2);$n", 22);
STRING_LITERAL(TMP3492, "$1->$2 + ", 9);
STRING_LITERAL(TMP3493, "#appendString($1, $2);$n", 24);
STRING_LITERAL(TMP3494, "$1 = #rawNewString($2$3);$n", 27);
STRING_LITERAL(TMP3495, "$1 = #addChar($1, $2);$n", 24);
STRING_LITERAL(TMP3496, "$1 = #resizeString($1, $2$3);$n", 31);
STRING_LITERAL(TMP3497, "$1 = ($2) #incrSeq(&($1)->Sup, sizeof($3));$n", 45);
STRING_LITERAL(TMP3498, "$1 = ($2) #incrSeq($1, sizeof($3));$n", 37);
STRING_LITERAL(TMP3499, "$1->data[$1->$2-1]", 18);
STRING_LITERAL(TMP3500, "(($1) && ($1)->$2 == 0)", 23);
STRING_LITERAL(TMP3501, "#eqStrings($1, $2)", 18);
STRING_LITERAL(TMP3502, "(#cmpStrings($1, $2) <= 0)", 26);
STRING_LITERAL(TMP3503, "(#cmpStrings($1, $2) < 0)", 25);
STRING_LITERAL(TMP3504, "$1.ClPrc == 0", 13);
STRING_LITERAL(TMP3505, "$1 == 0", 7);
STRING_LITERAL(TMP3506, "#nimIntToStr($1)", 16);
STRING_LITERAL(TMP3507, "#nimInt64ToStr($1)", 18);
STRING_LITERAL(TMP3508, "#nimBoolToStr($1)", 17);
STRING_LITERAL(TMP3509, "#nimCharToStr($1)", 17);
STRING_LITERAL(TMP3510, "#nimFloatToStr($1)", 18);
STRING_LITERAL(TMP3511, "#cstrToNimstr($1)", 17);
STRING_LITERAL(TMP3512, "no \'of\' operator available for pure objects", 43);
STRING_LITERAL(TMP3513, "(($1) && #isObj($2.m_type, $3))", 31);
STRING_LITERAL(TMP3514, "#isObj($1.m_type, $2)", 21);
STRING_LITERAL(TMP3515, "sizeof($1)", 10);
STRING_LITERAL(TMP3516, "if ($1) #nimGCunref($1);$n", 26);
STRING_LITERAL(TMP3517, "($1) #newObjRC1($2, $3)", 23);
STRING_LITERAL(TMP3518, "($1) #newObj($2, $3)", 20);
STRING_LITERAL(TMP3519, "$1->finalizer = (void*)$2;$n", 28);
STRING_LITERAL(TMP3520, "($1) #newObj($2, sizeof($3))", 28);
STRING_LITERAL(TMP3521, "($1) #newSeqRC1($2, $3)", 23);
STRING_LITERAL(TMP3522, "($1) #newSeq($2, $3)", 20);
STRING_LITERAL(TMP3523, "((NI)sizeof($1))", 16);
STRING_LITERAL(TMP3524, "(*($1*) ($2))", 13);
STRING_LITERAL(TMP3525, "(($1) ($2))", 11);
STRING_LITERAL(TMP3526, "((NU8)($1))", 11);
STRING_LITERAL(TMP3527, "($1Len0-1)", 10);
STRING_LITERAL(TMP3528, "$1Len0", 6);
STRING_LITERAL(TMP3529, "(strlen($1)-1)", 14);
STRING_LITERAL(TMP3530, "strlen($1)", 10);
STRING_LITERAL(TMP3531, "($1->Sup.len-1)", 15);
STRING_LITERAL(TMP3532, "$1->Sup.len", 11);
STRING_LITERAL(TMP3533, "($1->len-1)", 11);
STRING_LITERAL(TMP3534, "$1->len", 7);
STRING_LITERAL(TMP3535, "genArrayLen()", 13);
STRING_LITERAL(TMP3536, "unaryStmt", 9);
STRING_LITERAL(TMP3537, "#nimGCref($1);$n", 16);
STRING_LITERAL(TMP3538, "#nimGCunref($1);$n", 18);
STRING_LITERAL(TMP3539, "$1 = #setLengthStr($1, $2);$n", 29);
STRING_LITERAL(TMP3540, "$1 = ($3) #setLengthSeq(&($1)->Sup, sizeof($4), $2);$n", 54);
STRING_LITERAL(TMP3541, "$1 = ($3) #setLengthSeq($1, sizeof($4), $2);$n", 46);
STRING_LITERAL(TMP3542, "($1- $2)", 8);
STRING_LITERAL(TMP3543, "$1 |=((", 7);
STRING_LITERAL(TMP3544, ")(1)<<(($2)%(sizeof(", 20);
STRING_LITERAL(TMP3545, ")*8)));$n", 9);
STRING_LITERAL(TMP3546, "$1 &= ~((", 9);
STRING_LITERAL(TMP3547, ")(1) << (($2) % (sizeof(", 24);
STRING_LITERAL(TMP3548, "#countBits32($1)", 16);
STRING_LITERAL(TMP3549, "#countBits64($1)", 16);
STRING_LITERAL(TMP3550, "(($1 & ~ $2 ==0)&&($1 != $2))", 29);
STRING_LITERAL(TMP3551, "(($1 & ~ $2)==0)", 16);
STRING_LITERAL(TMP3552, "($1 & $2)", 9);
STRING_LITERAL(TMP3553, "($1 | $2)", 9);
STRING_LITERAL(TMP3554, "($1 & ~ $2)", 11);
STRING_LITERAL(TMP3555, "($1 ^ $2)", 9);
STRING_LITERAL(TMP3556, "fewCmps", 7);
STRING_LITERAL(TMP3557, "$1 >= $2 && $1 <= $3", 20);
STRING_LITERAL(TMP3558, "$1 == $2", 8);
STRING_LITERAL(TMP3559, " || ", 4);
STRING_LITERAL(TMP3560, "(($1 &(1<<(($2)&7)))!=0)", 24);
STRING_LITERAL(TMP3561, "(($1 &(1<<(($2)&15)))!=0)", 25);
STRING_LITERAL(TMP3562, "(($1 &(1<<(($2)&31)))!=0)", 25);
STRING_LITERAL(TMP3563, "(($1 &(IL64(1)<<(($2)&IL64(63))))!=0)", 37);
STRING_LITERAL(TMP3564, "(($1[$2/8] &(1<<($2%8)))!=0)", 28);
STRING_LITERAL(TMP3565, "genSetOp()", 10);
STRING_LITERAL(TMP3566, "$1[$2/8] |=(1<<($2%8));$n", 25);
STRING_LITERAL(TMP3567, "$1[$2/8] &= ~(1<<($2%8));$n", 27);
STRING_LITERAL(TMP3568, "#cardSet($1, ", 13);
STRING_LITERAL(TMP3569, "for ($1 = 0; $1 < $2; $1++) { $n  $3 = (($4[$1] & ~ $5[$1]) == "
"0);$n  if (!$3) break;}$n", 88);
STRING_LITERAL(TMP3570, "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(TMP3571, "|", 1);
STRING_LITERAL(TMP3572, "& ~", 3);
STRING_LITERAL(TMP3573, "^", 1);
NIM_CONST TY497851 lookupopr_497850 = {((NimStringDesc*) &TMP3569),
((NimStringDesc*) &TMP3570),
((NimStringDesc*) &TMP3242),
((NimStringDesc*) &TMP3571),
((NimStringDesc*) &TMP3572),
((NimStringDesc*) &TMP3573)}
;
STRING_LITERAL(TMP3574, "(memcmp($1, $2, ", 16);
STRING_LITERAL(TMP3575, ")==0)", 5);
STRING_LITERAL(TMP3576, "for ($1 = 0; $1 < $2; $1++) $n  $3[$1] = $4[$1] $6 $5[$1];$n", 60);
STRING_LITERAL(TMP3577, "genSetOp", 8);
STRING_LITERAL(TMP3578, "$1->data", 8);
STRING_LITERAL(TMP3579, "(*$1)->data, (*$1)->$2", 22);
STRING_LITERAL(TMP3580, "openArrayLoc: ", 14);
STRING_LITERAL(TMP3581, "$1.ClPrc($3$1.ClEnv)", 20);
STRING_LITERAL(TMP3582, "$1.ClEnv? $1.ClPrc($3$1.ClEnv):(($4)($1.ClPrc))($2)", 51);
STRING_LITERAL(TMP3583, "#chckNil((void*)$1);$n", 22);
STRING_LITERAL(TMP3584, "#genericReset((void*)$1, $2);$n", 31);
STRING_LITERAL(TMP3585, "->", 2);
STRING_LITERAL(TMP3586, ");$n", 4);
STRING_LITERAL(TMP3587, "[", 1);
STRING_LITERAL(TMP3588, ": ", 2);
STRING_LITERAL(TMP3589, "varargs for objective C method?", 31);
STRING_LITERAL(TMP3590, "Result: ", 8);
STRING_LITERAL(TMP3591, "];$n", 4);
STRING_LITERAL(TMP3592, "]", 1);
STRING_LITERAL(TMP3593, "<stdio.h>", 9);
STRING_LITERAL(TMP3594, ", ($1)->data", 12);
STRING_LITERAL(TMP3595, "printf($1$2);$n", 15);
STRING_LITERAL(TMP3596, "%s", 2);
STRING_LITERAL(TMP3610, "genMagicExpr: ", 14);
STRING_LITERAL(TMP3611, "static NIM_CONST $1 $2 = $3;$n", 30);
STRING_LITERAL(TMP3612, "memset($1, 0, sizeof($1));$n", 28);
STRING_LITERAL(TMP3613, "for ($1 = $3; $1 <= $4; $1++) $n$2[$1/8] |=(1<<($1%8));$n", 57);
STRING_LITERAL(TMP3614, "for ($1 = $3; $1 <= $4; $1++) $n$2 |=(1<<((", 43);
STRING_LITERAL(TMP3615, ")($1)%(sizeof(", 14);
STRING_LITERAL(TMP3616, "$1 |=(1<<((", 11);
STRING_LITERAL(TMP3617, ")($2)%(sizeof(", 14);
STRING_LITERAL(TMP3618, "genObjConstr", 12);
STRING_LITERAL(TMP3619, "if ($1) #raiseFieldError(((#NimStringDesc*) &$2));$n", 52);
STRING_LITERAL(TMP3620, "if (!($1)) #raiseFieldError(((#NimStringDesc*) &$2));$n", 55);
STRING_LITERAL(TMP3621, "LOC$1.source", 12);
STRING_LITERAL(TMP3622, "union { $1 source; $2 dest; } LOC$3;$n", 38);
STRING_LITERAL(TMP3623, "LOC$#.dest", 10);
STRING_LITERAL(TMP3624, "if ((NU)($1) > (NU)($2)) #raiseIndexError();$n", 46);
STRING_LITERAL(TMP3625, "if ($1 < $2 || $1 > $3) #raiseIndexError();$n", 45);
STRING_LITERAL(TMP3626, "$1[($2)- $3]", 12);
STRING_LITERAL(TMP3627, "if ((NU)($1) >= (NU)($2Len0)) #raiseIndexError();$n", 51);
STRING_LITERAL(TMP3628, "if ((NU)($1) > (NU)($2->$3)) #raiseIndexError();$n", 50);
STRING_LITERAL(TMP3629, "if ((NU)($1) >= (NU)($2->$3)) #raiseIndexError();$n", 51);
STRING_LITERAL(TMP3630, "genTupleElem", 12);
STRING_LITERAL(TMP3631, ".Field$1", 8);
STRING_LITERAL(TMP3632, "expr(nkBracketExpr, ", 20);
STRING_LITERAL(TMP3633, "genDeref ", 9);
STRING_LITERAL(TMP3634, "genRecordFieldAux", 17);
STRING_LITERAL(TMP3635, "genRecordField", 14);
STRING_LITERAL(TMP3636, "genRecordField 2 ", 17);
STRING_LITERAL(TMP3637, "genRecordField 3", 16);
STRING_LITERAL(TMP3638, ".$1", 3);
STRING_LITERAL(TMP3639, "genCheckedRecordField", 21);
STRING_LITERAL(TMP3640, "} $1: ;$n", 9);
STRING_LITERAL(TMP3641, "F.len-=$1;$n", 12);
STRING_LITERAL(TMP3642, "F.len+=$1;$n", 12);
STRING_LITERAL(TMP3643, "if (!$1) goto $2;$n", 19);
STRING_LITERAL(TMP3644, "br i1 $1, label %LOC$3, label %$2$nLOC$3: $n", 44);
STRING_LITERAL(TMP3645, "goto $1;$n", 10);
STRING_LITERAL(TMP3646, "br label %$1$n", 14);
STRING_LITERAL(TMP3647, "genIf()", 7);
STRING_LITERAL(TMP3648, "->Sup", 5);
STRING_LITERAL(TMP3649, "if ($1) #chckObj($2.m_type, $3);$n", 34);
STRING_LITERAL(TMP3650, "#chckObj($1.m_type, $2);$n", 26);
STRING_LITERAL(TMP3651, "range check will always fail; empty range", 41);
STRING_LITERAL(TMP3652, "(($1)#$5($2, $3, $4))", 21);
STRING_LITERAL(TMP3653, "chckRangeF", 10);
STRING_LITERAL(TMP3654, "chckRange64", 11);
STRING_LITERAL(TMP3655, "chckRange", 9);
STRING_LITERAL(TMP3656, "$1.ClPrc = $2; $1.ClEnv = $3;$n", 31);
STRING_LITERAL(TMP3657, "while (1) {$n", 13);
STRING_LITERAL(TMP3658, "case statement must be exhaustive for computed goto", 51);
STRING_LITERAL(TMP3659, "case statement has too many cases for computed goto", 51);
STRING_LITERAL(TMP3660, "case statement has to start at 0 for computed goto", 50);
STRING_LITERAL(TMP3661, "no case statement found for computed goto", 41);
STRING_LITERAL(TMP3662, "static void* $#[$#] = {", 23);
STRING_LITERAL(TMP3663, "&&TMP$#, ", 9);
STRING_LITERAL(TMP3664, "&&TMP$#};$n", 11);
STRING_LITERAL(TMP3665, "goto *$#[$#];$n", 15);
STRING_LITERAL(TMP3666, "range notation not available for computed goto", 46);
STRING_LITERAL(TMP3667, "TMP$#:$n", 8);
STRING_LITERAL(TMP3668, "#nimProfile();$n", 16);
STRING_LITERAL(TMP3669, "static void* $1;$n", 18);
STRING_LITERAL(TMP3670, "Dependency: ", 12);
STRING_LITERAL(TMP3671, "||", 2);
STRING_LITERAL(TMP3672, "($1 = #nimLoadLibrary((#NimStringDesc*) &$2))$n", 47);
STRING_LITERAL(TMP3673, "if (!($1)) #nimLoadLibraryError((#NimStringDesc*) &$2);$n", 57);
STRING_LITERAL(TMP3674, "if (!($1 = #nimLoadLibrary($2))) #nimLoadLibraryError($2);$n", 60);
STRING_LITERAL(TMP3675, "loadDynamicLib", 14);
STRING_LITERAL(TMP3676, "$1 = ($2*) #nimGetProcAddr($3, $4);$n", 37);
STRING_LITERAL(TMP3677, "%MOC$1", 6);
STRING_LITERAL(TMP3678, "@MOC$1 = private constant [$2 x i8] $3$n", 40);
STRING_LITERAL(TMP3681, "$1 = getelementptr [$2 x i8]* @MOC$3, %NI 0, %NI 0$n", 52);
STRING_LITERAL(TMP3682, "$2* $1;$n", 9);
STRING_LITERAL(TMP3683, "#dbgRegisterGlobal($1, &$2, $3);$n", 34);
STRING_LITERAL(TMP3684, "%LOC$1", 6);
STRING_LITERAL(TMP3685, "@C$1 = private constant [$2 x i8] $3$n", 38);
STRING_LITERAL(TMP3686, "$1 = getelementptr [$2 x i8]* @C$3, %NI 0, %NI 0$n", 50);
STRING_LITERAL(TMP3687, "#nimGCvisit((void*)$1, 0);$n", 28);
STRING_LITERAL(TMP3688, "N_NIMCALL(void, $1)()", 21);
STRING_LITERAL(TMP3689, "#nimRegisterGlobalMarker($1);$n", 31);
STRING_LITERAL(TMP3690, "genVarTuple", 11);
STRING_LITERAL(TMP3691, "genConstStmt", 12);
STRING_LITERAL(TMP3692, "for statement not eliminated", 28);
STRING_LITERAL(TMP3693, "if (#eqStrings($1, $2)) goto $3;$n", 34);
STRING_LITERAL(TMP3694, "switch (#hashString($1) & $2) {$n", 33);
STRING_LITERAL(TMP3695, "case $1: $n$2break;$n", 21);
STRING_LITERAL(TMP3696, "goto LA$1;$n", 12);
STRING_LITERAL(TMP3697, "LA$1: ;$n", 9);
STRING_LITERAL(TMP3698, "if ($1 >= $2 && $1 <= $3) goto $4;$n", 36);
STRING_LITERAL(TMP3699, "if ($1 == $2) goto $3;$n", 24);
STRING_LITERAL(TMP3700, "switch ($1) {$n", 15);
STRING_LITERAL(TMP3701, "default: __assume(0);$n", 23);
STRING_LITERAL(TMP3702, "#popSafePoint();$n", 18);
STRING_LITERAL(TMP3703, "#popCurrentException();$n", 25);
STRING_LITERAL(TMP3704, "if ($1.status != 0) #popCurrentException();$n", 45);
STRING_LITERAL(TMP3705, "goto BeforeRet;$n", 17);
STRING_LITERAL(TMP3706, "br label %BeforeRet$n", 21);
STRING_LITERAL(TMP3707, "no loop to break", 16);
STRING_LITERAL(TMP3708, "extern $1", 9);
STRING_LITERAL(TMP3709, "#FieldDiscriminantCheck((NI)(NU)($1), (NI)(NU)($2), $3, $4);$n", 62);
STRING_LITERAL(TMP3710, "genAsmOrEmitStmt()", 18);
STRING_LITERAL(TMP3711, "\"", 1);
STRING_LITERAL(TMP3712, "\\n\"\012", 4);
STRING_LITERAL(TMP3713, "E_Base", 6);
STRING_LITERAL(TMP3714, "try {$n", 7);
STRING_LITERAL(TMP3715, "} catch (NimException& $1) {$n", 30);
STRING_LITERAL(TMP3716, "#setFrame((TFrame*)&F);$n", 25);
STRING_LITERAL(TMP3717, "else ", 5);
STRING_LITERAL(TMP3718, "#isObj($1.exp->m_type, $2)", 26);
STRING_LITERAL(TMP3719, "if ($1) ", 8);
STRING_LITERAL(TMP3720, "throw;$n", 8);
STRING_LITERAL(TMP3721, "<setjmp.h>", 10);
STRING_LITERAL(TMP3722, "#TSafePoint $1;$n", 17);
STRING_LITERAL(TMP3723, "#pushSafePoint(&$1);$n", 22);
STRING_LITERAL(TMP3724, "$1.status = setjmp($1.context);$n", 33);
STRING_LITERAL(TMP3725, "if ($1.status == 0) {$n", 23);
STRING_LITERAL(TMP3726, "else {$n", 8);
STRING_LITERAL(TMP3727, "else", 4);
STRING_LITERAL(TMP3728, "$1.status = 0;$n", 16);
STRING_LITERAL(TMP3729, "#isObj(#getCurrentException()->Sup.m_type, $1)", 46);
STRING_LITERAL(TMP3730, "if ($1) {$n", 11);
STRING_LITERAL(TMP3731, "if ($1.status != 0) #reraiseException();$n", 42);
STRING_LITERAL(TMP3732, "throw NimException($1, $2);$n", 29);
STRING_LITERAL(TMP3733, "#raiseException((#E_Base*)$1, $2);$n", 36);
STRING_LITERAL(TMP3734, "#reraiseException();$n", 22);
STRING_LITERAL(TMP3735, "bp", 2);
STRING_LITERAL(TMP3736, "#dbgRegisterBreakpoint($1, (NCSTRING)$2, (NCSTRING)$3);$n", 57);
STRING_LITERAL(TMP3737, "#dbgRegisterWatchpoint($1, (NCSTRING)$2, $3);$n", 47);
STRING_LITERAL(TMP3738, "#pragma omp parallel for $4$nfor ($1 = $2; $1 <= $3; ++$1)", 58);
STRING_LITERAL(TMP3740, "compiler/ccgstmts.nim", 21);
NIM_CONST TY79484 TMP3739 = {((NimStringDesc*) &TMP3740),
117}
;
STRING_LITERAL(TMP3741, "STATE$1: ;$n", 12);
STRING_LITERAL(TMP3742, "case -1: goto BeforeRet;$n", 26);
STRING_LITERAL(TMP3743, "case $1: goto STATE$1;$n", 24);
STRING_LITERAL(TMP3744, "if (((NI*) $1)[0] < 0) break;$n", 31);
STRING_LITERAL(TMP3745, "if ((((NI*) $1.ClEnv)[0]) < 0) break;$n", 39);
STRING_LITERAL(TMP3746, "); unknown node kind", 20);
NIM_CONST TY79484 TMP3747 = {((NimStringDesc*) &TMP3740),
1006}
;
STRING_LITERAL(TMP3748, "__declspec(naked) ", 18);
STRING_LITERAL(TMP3749, "$N$1 {$n$2$3$4}$N$N", 19);
STRING_LITERAL(TMP3750, "$N$1 {$N", 8);
STRING_LITERAL(TMP3751, "struct {$1} GCFRAME;$n", 22);
STRING_LITERAL(TMP3752, "nimFrame", 8);
STRING_LITERAL(TMP3753, "TVarSlot", 8);
STRING_LITERAL(TMP3754, "\011nimfrs($1, $2, $3, $4)$N", 25);
STRING_LITERAL(TMP3755, "\011nimfr($1, $2)$N", 16);
STRING_LITERAL(TMP3756, "\011#nimProfile();$n", 17);
STRING_LITERAL(TMP3757, "\011BeforeRet: ;$n", 15);
STRING_LITERAL(TMP3758, "if (((NU)&GCFRAME) < 4096) #nimGCFrame(&GCFRAME);$n", 51);
STRING_LITERAL(TMP3759, "\011#popFrame();$n", 15);
STRING_LITERAL(TMP3760, "}$N", 3);
STRING_LITERAL(TMP3761, "\011$1 = ($2) ($3$4));$n", 21);
NIM_CONST TY79484 TMP3762 = {((NimStringDesc*) &TMP3126),
668}
;
STRING_LITERAL(TMP3763, "wrong index: ", 13);
STRING_LITERAL(TMP3764, "\011$1 = ($2) #nimGetProcAddr($3, $4);$n", 37);
STRING_LITERAL(TMP3765, "$2 $1;$n", 8);
STRING_LITERAL(TMP3766, "$1 = linkonce global $2 zeroinitializer$n", 41);
STRING_LITERAL(TMP3767, "cgsym: ", 7);
STRING_LITERAL(TMP3768, "added pending module twice: ", 28);
STRING_LITERAL(TMP3769, ".h", 2);
STRING_LITERAL(TMP3779, "Init", 4);
STRING_LITERAL(TMP3780, "DatInit", 7);
STRING_LITERAL(TMP3781, "N_NOINLINE(void, $1)(void);$N", 29);
STRING_LITERAL(TMP3782, "declare void $1() noinline$N", 28);
STRING_LITERAL(TMP3783, "\011$1();$N", 8);
STRING_LITERAL(TMP3784, "call void ()* $1$n", 18);
STRING_LITERAL(TMP3787, "N_CDECL(void, NimMain)(void) {$N\011PreMain();$N$1}$N$N", 52);
STRING_LITERAL(TMP3788, "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(TMP3789, "N_LIB_EXPORT N_CDECL(void, NimMain)(void) {$N\011PreMain();$N$1}$N"
"$N", 65);
STRING_LITERAL(TMP3790, "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(TMP3791, "<windows.h>", 11);
STRING_LITERAL(TMP3792, "void NIM_POSIX_INIT NimMainInit(void) {$N\011NimMain();$N}$N$N", 59);
STRING_LITERAL(TMP3793, "int cmdCount;$Nchar** cmdLine;$Nchar** gEnv;$NN_CDECL(void, Nim"
"Main)(void) {$N\011PreMain();$N$1}$N$N", 98);
STRING_LITERAL(TMP3794, "int main(void) {$N\011NimMain();$N\011return 0;$N}$N$N", 48);
STRING_LITERAL(TMP3795, "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(TMP3796, "dbgRegisterBreakpoint", 21);
STRING_LITERAL(TMP3797, "dbgRegisterFilename", 19);
STRING_LITERAL(TMP3798, "dbgRegisterFilename($1);$N", 26);
STRING_LITERAL(TMP3799, "\011#initStackBottom();$N", 22);
STRING_LITERAL(TMP3800, "void PreMain() {$N\011systemDatInit();$N\011systemInit();$N$1$2$3$4}$"
"N$N", 66);
STRING_LITERAL(TMP3843, "still forwarded: ", 17);
STRING_LITERAL(TMP3869, "N_NOINLINE(void, $1)(void) {$N", 30);
STRING_LITERAL(TMP3870, "define void $1() noinline {$n", 29);
STRING_LITERAL(TMP3871, "static #TNimNode $1[$2];$n", 26);
STRING_LITERAL(TMP3872, "static #TNimType $1[$2];$n", 26);
STRING_LITERAL(TMP3875, "\011TFrame F; F.len = 0;$N", 23);
STRING_LITERAL(TMP3876, "}$N$N", 5);
STRING_LITERAL(TMP3877, "N_NIMCALL(void, nimLoadProcs$1)(void) {$2}$N$N", 46);
STRING_LITERAL(TMP3878, "/* Generated by Nimrod Compiler v$1 */$N/*   (c) 2014 Andreas R"
"umpf */$N/* The generated code is subject to the original licens"
"e. */$N", 134);
STRING_LITERAL(TMP3879, "; Generated by Nimrod Compiler v$1$N;   (c) 2012 Andreas Rumpf$"
"N", 64);
STRING_LITERAL(TMP3880, "0.9.5", 5);
STRING_LITERAL(TMP3881, "/* Generated by Nimrod Compiler v$1 */$N/*   (c) 2014 Andreas R"
"umpf */$N/* The generated code is subject to the original licens"
"e. */$N/* Compiled for: $2, $3, $4 */$N/* Command for C compiler"
":$n   $5 */$N", 204);
STRING_LITERAL(TMP3882, "; Generated by Nimrod Compiler v$1$N;   (c) 2014 Andreas Rumpf$"
"N; Compiled for: $2, $3, $4$N; Command for LLVM compiler:$N   $5"
"$N", 129);
extern NIM_CONST TY142064 os_142063;
extern NIM_CONST TY142469 cpu_142468;
STRING_LITERAL(TMP3883, "#define NIM_INTBITS $1", 22);
STRING_LITERAL(TMP3891, "#include \"nimbase.h\"", 20);
STRING_LITERAL(TMP3892, "$N#include \"$1\"$N", 17);
STRING_LITERAL(TMP3893, "$N#include $1$N", 15);
STRING_LITERAL(TMP3894, "typedef struct {$1} NimThreadVars;$n", 36);
STRING_LITERAL(TMP3896, "NI NimThreadVarsSize(){return (NI)sizeof(NimThreadVars);}", 57);
STRING_LITERAL(TMP3906, "__$1__", 6);
STRING_LITERAL(TMP3907, "#ifndef $1$n#define $1$n", 24);
STRING_LITERAL(TMP3908, "N_CDECL(void, NimMain)(void);$n", 31);
STRING_LITERAL(TMP3909, "#endif /* $1 */$n", 17);
tcgen465030* generatedheader_468202;
trope145007* indent_469031;
extern tgcheap43016 gch_43044;
trope145007* nimtv_475937;
ttypeseq188835* nimtvdeps_475959;
extern TNimType NTI188835; /* TTypeSeq */
tintset185047 nimtvdeclared_475960;
extern TNimType NTI185047; /* TIntSet */
NI breakpointid_487867;
trope145007* gbreakpoints_487868;
extern TY465142* gmodules_465163;
extern TNimType NTI465020; /* BModule */
extern TNimType NTI465030; /* TCGen */
extern NU32 goptions_137108;
extern TNimType NTI188805; /* TSymSeq */
extern trope145007* rnl_146434;
extern NU8 gcmd_137113;
extern NI gforwardedprocscounter_465164;
extern TNimType NTI188240; /* TTypeKind */
extern NI floatsize_142591;
extern NU8 ccompiler_169425;
extern NimStringDesc* tnl_142593;
extern NU8 gselectedgc_137114;
extern NI gbackendid_187008;
extern TNimType NTI188023; /* TNodeKind */
extern TNimType NTI188817; /* TLoc */
extern NU32 gglobaloptions_137111;
extern TNimType NTI188441; /* TSymKind */
extern NI intsize_142590;
extern TNimType NTI188521; /* TMagic */
extern TNimType NTI110805; /* seq[string] */
extern NI gverbosity_137120;
extern TNimType NTI163540; /* seq[PRope] */
extern TNimType NTI188797; /* TNodeSeq */
extern NimStringDesc* headerfile_137119;
extern NimStringDesc* gprojectfull_137208;
extern NimStringDesc* cext_169426;
extern NI gerrorcounter_164182;
extern trope145007* mainmodprocs_465137;
extern trope145007* maindatinit_465140;
extern trope145007* mainmodinit_465138;
extern trope145007* othermodsinit_465139;
extern NU8 targetos_142575;
extern TY163619* fileinfos_163640;
extern NU8 targetcpu_142573;
extern trope145007* gmapping_465141;

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

static N_INLINE(void, rtladdzct_46002)(tcell41090* c) {
	addzct_44418(&gch_43044.Zct, c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tcell41090* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_44443(src);
		(*c).Refcount += 8;
	}
	LA3: ;
	{
		tcell41090* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_44443((*dest));
		{
			(*c).Refcount -= 8;
			if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA11;
			rtladdzct_46002(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tcell41090* c;
	c = usrtocell_44443(p);
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		rtladdzct_46002(c);
	}
	LA3: ;
}

N_NIMCALL(tcgen465030*, getcgenmodule_468282)(tsym188833* s) {
	tcgen465030* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (0 <= (*s).Position);
		if (!(LOC3)) goto LA4;
		LOC3 = ((*s).Position < gmodules_465163->Sup.len);
		LA4: ;
		if (!LOC3) goto LA5;
		result = gmodules_465163->data[(*s).Position];
	}
	goto LA1;
	LA5: ;
	{
		result = NIM_NIL;
	}
	LA1: ;
	return result;
}

static N_INLINE(NIM_BOOL, canbecycleroot_44462)(tcell41090* c) {
	NIM_BOOL result;
	result = 0;
	result = !((((*(*c).Typ).flags &(1<<((((NU8) 1))&7)))!=0));
	return result;
}

static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c) {
	{
		if (!!((((NI) ((NI)((*c).Refcount & 3))) == 3))) goto LA3;
		(*c).Refcount = (NI)((NI)((*c).Refcount & -4) | 3);
		incl_41855(&gch_43044.Cycleroots, c);
	}
	LA3: ;
}

static N_INLINE(void, incref_46827)(tcell41090* c) {
	(*c).Refcount = (NI)((NU32)((*c).Refcount) + (NU32)(8));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_44462(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_45235(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_46402)(tcell41090* c) {
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		rtladdzct_46002(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_44462(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_45235(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tcell41090* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_44443(src);
		incref_46827(LOC5);
	}
	LA3: ;
	{
		tcell41090* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_44443((*dest));
		decref_46402(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

N_NIMCALL(NU32, initprocoptions_505190)(tcgen465030* m) {
	NU32 result;
	memset((void*)&result, 0, sizeof(result));
	{
		if (!(((*(*m).Module).Flags &(1<<((((NU8) 13))&31)))!=0)) goto LA3;
		result = (goptions_137108 & ~ 32768);
	}
	goto LA1;
	LA3: ;
	{
		result = goptions_137108;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tcproc465026*, newpreinitproc_505176)(tcgen465030* m) {
	tcproc465026* result;
	result = 0;
	result = newproc_465208(NIM_NIL, m);
	(*result).Labels = 100000;
	return result;
}

N_NIMCALL(tcproc465026*, newpostinitproc_505183)(tcgen465030* m) {
	tcproc465026* result;
	result = 0;
	result = newproc_465208(NIM_NIL, m);
	(*result).Labels = 200000;
	return result;
}

static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	memcpy(((NCSTRING) (&(*dest).data[((*dest).Sup.len)- 0])), ((NCSTRING) ((*src).data)), (NI32)((*src).Sup.len + 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[((NI32)((*dest).Sup.len + 1))- 0] = 0;
	(*dest).Sup.len += 1;
}

N_NIMCALL(NIM_BOOL, isactivated_503840)(tsym188833* prc) {
	NIM_BOOL result;
	result = 0;
	result = !(((*prc).Typ == NIM_NIL));
	return result;
}

N_NIMCALL(void, fillloc_468351)(tloc188817* a, NU8 k, ttype188837* typ, trope145007* r, NU8 s) {
	{
		if (!((*a).K == ((NU8) 0))) goto LA3;
		(*a).K = k;
		unsureAsgnRef((void**) &(*a).T, getuniquetype_464401(typ));
		(*a).A = -1;
		(*a).S = s;
		{
			if (!((*a).R == NIM_NIL)) goto LA7;
			unsureAsgnRef((void**) &(*a).R, r);
		}
		LA7: ;
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, iskeyword_469856)(tident167019* w) {
	NIM_BOOL result;
	result = 0;
	switch ((*w).Sup.Id) {
	case 189 ... 251:
	case 4 ... 68:
	case 130:
	{
		result = NIM_TRUE;
		goto BeforeRet;
	}
	break;
	default:
	{
		result = NIM_FALSE;
		goto BeforeRet;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(NimStringDesc*, mangle_469704)(NimStringDesc* name) {
	NimStringDesc* result;
	NI i_469813;
	NI HEX3Atmp_469850;
	NI res_469852;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP3136));
	i_469813 = 0;
	HEX3Atmp_469850 = 0;
	HEX3Atmp_469850 = (NI32)(name->Sup.len - 1);
	res_469852 = 0;
	while (1) {
		if (!(res_469852 <= HEX3Atmp_469850)) goto LA1;
		i_469813 = res_469852;
		switch (((NU8)(name->data[i_469813]))) {
		case 65 ... 90:
		{
			result = addChar(result, ((NIM_CHAR) (((NI) ((NI32)(((NI) ((NI32)(((NI) (((NU8)(name->data[i_469813])))) - 65))) + 97))))));
		}
		break;
		case 95:
		{
		}
		break;
		case 97 ... 122:
		case 48 ... 57:
		{
			result = addChar(result, name->data[i_469813]);
		}
		break;
		default:
		{
			NimStringDesc* LOC6;
			result = resizeString(result, 3);
appendString(result, ((NimStringDesc*) &TMP3137));
			LOC6 = 0;
			LOC6 = nsuToHex(((NI64) (((NU8)(name->data[i_469813])))), 2);
			result = resizeString(result, LOC6->Sup.len + 0);
appendString(result, LOC6);
		}
		break;
		}
		res_469852 += 1;
	} LA1: ;
	return result;
}

N_NIMCALL(trope145007*, manglename_469870)(tsym188833* s) {
	trope145007* result;
	result = 0;
	result = (*s).Loc.R;
	{
		NIM_BOOL keeporigname;
		NIM_BOOL LOC22;
		NIM_BOOL LOC23;
		NIM_BOOL LOC26;
		if (!(result == NIM_NIL)) goto LA3;
		{
			if (!(gcmd_137113 == ((NU8) 5))) goto LA7;
			switch ((*s).Kind) {
			case ((NU8) 12):
			case ((NU8) 13):
			case ((NU8) 16):
			case ((NU8) 10):
			case ((NU8) 14):
			case ((NU8) 15):
			{
				TY469906 LOC10;
				memset((void*)LOC10, 0, sizeof(LOC10));
				result = ropef_145079(((NimStringDesc*) &TMP3133), LOC10, 0);
			}
			break;
			case ((NU8) 8):
			case ((NU8) 21):
			case ((NU8) 11):
			case ((NU8) 9):
			{
				{
					TY469906 LOC16;
					if (!(((*s).Flags &(1<<((((NU8) 3))&31)))!=0)) goto LA14;
					memset((void*)LOC16, 0, sizeof(LOC16));
					result = ropef_145079(((NimStringDesc*) &TMP3133), LOC16, 0);
				}
				goto LA12;
				LA14: ;
				{
					TY469906 LOC18;
					memset((void*)LOC18, 0, sizeof(LOC18));
					result = ropef_145079(((NimStringDesc*) &TMP3134), LOC18, 0);
				}
				LA12: ;
			}
			break;
			case ((NU8) 5):
			case ((NU8) 3):
			case ((NU8) 7):
			case ((NU8) 20):
			case ((NU8) 6):
			{
				TY469906 LOC20;
				memset((void*)LOC20, 0, sizeof(LOC20));
				result = ropef_145079(((NimStringDesc*) &TMP3134), LOC20, 0);
			}
			break;
			default:
			{
				internalerror_165591((*s).Info, ((NimStringDesc*) &TMP3135));
			}
			break;
			}
		}
		LA7: ;
		LOC22 = 0;
		LOC23 = 0;
		LOC23 = ((2824 &(1<<(((*s).Kind)&31)))!=0);
		if (!(LOC23)) goto LA24;
		LOC23 = ((IL64(2149580812) & (*s).Flags) == 0);
		LA24: ;
		LOC22 = LOC23;
		if (!(LOC22)) goto LA25;
		LOC26 = 0;
		LOC26 = iskeyword_469856((*s).Name);
		LOC22 = !(LOC26);
		LA25: ;
		keeporigname = LOC22;
		{
			NimStringDesc* LOC31;
			if (!keeporigname) goto LA29;
			LOC31 = 0;
			LOC31 = mangle_469704((*(*s).Name).S);
			result = newrope_145135(LOC31);
		}
		goto LA27;
		LA29: ;
		{
			NimStringDesc* LOC33;
			trope145007* LOC34;
			TY469906 LOC35;
			trope145007* LOC36;
			trope145007* LOC37;
			LOC33 = 0;
			LOC33 = mangle_469704((*(*s).Name).S);
			LOC34 = 0;
			LOC34 = newrope_145135(LOC33);
			app_145040(&result, LOC34);
			memset((void*)LOC35, 0, sizeof(LOC35));
			LOC36 = 0;
			LOC36 = ropef_145079(((NimStringDesc*) &TMP3138), LOC35, 0);
			app_145040(&result, LOC36);
			LOC37 = 0;
			LOC37 = torope_145062(((NI64) ((*s).Sup.Id)));
			app_145040(&result, LOC37);
		}
		LA27: ;
		asgnRefNoCycle((void**) &(*s).Loc.R, result);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, fillprocloc_476425)(tsym188833* sym) {
	{
		trope145007* LOC5;
		if (!((*sym).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_469870(sym);
		fillloc_468351(&(*sym).Loc, ((NU8) 8), (*sym).Typ, LOC5, ((NU8) 1));
	}
	LA3: ;
}

N_NIMCALL(void, addforwardedproc_468242)(tcgen465030* m, tsym188833* prc) {
	(*m).Forwardedprocs = (tsymseq188805*) incrSeq(&((*m).Forwardedprocs)->Sup, sizeof(tsym188833*));
	asgnRefNoCycle((void**) &(*m).Forwardedprocs->data[(*m).Forwardedprocs->Sup.len-1], prc);
	gforwardedprocscounter_465164 += 1;
}

N_NIMCALL(void, useheader_468432)(tcgen465030* m, tsym188833* sym) {
	{
		NimStringDesc* LOC5;
		NIM_BOOL LOC6;
		if (!(((*sym).Loc.Flags &(1<<((((NU8) 6))&7)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = getstr_194873((*(*sym).Annex).Path);
		LOC6 = 0;
		LOC6 = includestr_118275(&(*m).Headerfiles, LOC5);
	}
	LA3: ;
}

N_NIMCALL(trope145007*, typename_470081)(ttype188837* typ) {
	trope145007* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!!(((*typ).Sym == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = mangle_469704((*(*(*typ).Sym).Name).S);
		result = torope_145058(LOC5);
	}
	goto LA1;
	LA3: ;
	{
		TY469906 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		result = ropef_145079(((NimStringDesc*) &TMP3142), LOC7, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope145007*, gettypename_470110)(ttype188837* typ) {
	trope145007* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = !(((*typ).Sym == NIM_NIL));
		if (!(LOC4)) goto LA5;
		LOC4 = !(((96 & (*(*typ).Sym).Flags) == 0));
		LA5: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA6;
		LOC3 = !((gcmd_137113 == ((NU8) 5)));
		LA6: ;
		if (!LOC3) goto LA7;
		result = (*(*typ).Sym).Loc.R;
	}
	goto LA1;
	LA7: ;
	{
		{
			if (!((*typ).Loc.R == NIM_NIL)) goto LA12;
			{
				trope145007* LOC18;
				trope145007* LOC19;
				if (!!((gcmd_137113 == ((NU8) 5)))) goto LA16;
				LOC18 = 0;
				LOC18 = typename_470081(typ);
				LOC19 = 0;
				LOC19 = torope_145062(((NI64) ((*typ).Sup.Id)));
				asgnRefNoCycle((void**) &(*typ).Loc.R, con_145020(LOC18, LOC19));
			}
			goto LA14;
			LA16: ;
			{
				TY470214 LOC21;
				TY469906 LOC22;
				memset((void*)LOC21, 0, sizeof(LOC21));
				memset((void*)LOC22, 0, sizeof(LOC22));
				LOC21[0] = ropef_145079(((NimStringDesc*) &TMP3134), LOC22, 0);
				LOC21[1] = typename_470081(typ);
				LOC21[2] = torope_145062(((NI64) ((*typ).Sup.Id)));
				asgnRefNoCycle((void**) &(*typ).Loc.R, con_145035(LOC21, 3));
			}
			LA14: ;
		}
		LA12: ;
		result = (*typ).Loc.R;
	}
	LA1: ;
	{
		NimStringDesc* LOC27;
		if (!(result == NIM_NIL)) goto LA25;
		LOC27 = 0;
		LOC27 = rawNewString(reprEnum((*typ).Kind, (&NTI188240))->Sup.len + 13);
appendString(LOC27, ((NimStringDesc*) &TMP3143));
appendString(LOC27, reprEnum((*typ).Kind, (&NTI188240)));
		internalerror_165606(LOC27);
	}
	LA25: ;
	return result;
}

N_NIMCALL(trope145007*, typenameorliteral_471016)(ttype188837* t, NimStringDesc* literal) {
	trope145007* 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 &(1<<((((NU8) 5))&31)))!=0);
		LA5: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA6;
		LOC3 = ((*(*t).Sym).Magic == ((NU16) 0));
		LA6: ;
		if (!LOC3) goto LA7;
		result = gettypename_470110(t);
	}
	goto LA1;
	LA7: ;
	{
		result = torope_145058(literal);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope145007*, getsimpletypedesc_471061)(tcgen465030* m, ttype188837* typ) {
	trope145007* result;
	result = 0;
	switch ((*typ).Kind) {
	case ((NU8) 26):
	{
		result = typenameorliteral_471016(typ, ((NimStringDesc*) &TMP3144));
	}
	break;
	case ((NU8) 14):
	{
		{
			NI64 LOC5;
			LOC5 = 0;
			LOC5 = firstord_223002(typ);
			if (!(LOC5 < 0)) goto LA6;
			result = typenameorliteral_471016(typ, ((NimStringDesc*) &TMP3145));
		}
		goto LA3;
		LA6: ;
		{
			NI64 LOC9;
			LOC9 = 0;
			LOC9 = getsize_223158(typ);
			switch (((NI) (LOC9))) {
			case 1:
			{
				result = typenameorliteral_471016(typ, ((NimStringDesc*) &TMP3146));
			}
			break;
			case 2:
			{
				result = typenameorliteral_471016(typ, ((NimStringDesc*) &TMP3147));
			}
			break;
			case 4:
			{
				result = typenameorliteral_471016(typ, ((NimStringDesc*) &TMP3145));
			}
			break;
			case 8:
			{
				result = typenameorliteral_471016(typ, ((NimStringDesc*) &TMP3148));
			}
			break;
			default:
			{
				NimStringDesc* LOC15;
				NI64 LOC16;
				NimStringDesc* LOC17;
				LOC15 = 0;
				LOC16 = 0;
				LOC16 = getsize_223158(typ);
				LOC17 = 0;
				LOC17 = nimInt64ToStr(LOC16);
				LOC15 = rawNewString(LOC17->Sup.len + 19);
appendString(LOC15, ((NimStringDesc*) &TMP3149));
appendString(LOC15, LOC17);
				internalerror_165591((*(*typ).Sym).Info, LOC15);
				result = NIM_NIL;
			}
			break;
			}
		}
		LA3: ;
	}
	break;
	case ((NU8) 28):
	{
		trope145007* LOC19;
		LOC19 = 0;
		LOC19 = cgsym_468604(m, ((NimStringDesc*) &TMP3150));
		result = typenameorliteral_471016(typ, ((NimStringDesc*) &TMP3151));
	}
	break;
	case ((NU8) 29):
	{
		result = typenameorliteral_471016(typ, ((NimStringDesc*) &TMP3152));
	}
	break;
	case ((NU8) 1):
	{
		result = typenameorliteral_471016(typ, ((NimStringDesc*) &TMP3153));
	}
	break;
	case ((NU8) 2):
	{
		result = typenameorliteral_471016(typ, ((NimStringDesc*) &TMP3154));
	}
	break;
	case ((NU8) 5):
	{
		result = typenameorliteral_471016(typ, ((NimStringDesc*) &TMP3155));
	}
	break;
	case ((NU8) 31) ... ((NU8) 44):
	{
		result = typenameorliteral_471016(typ, numericaltypetostr_471066[((*typ).Kind)- 31]);
	}
	break;
	case ((NU8) 20):
	{
		result = getsimpletypedesc_471061(m, (*typ).Sons->data[0]);
	}
	break;
	default:
	{
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(trope145007*, cachegettype_470362)(tidtable188849 tab, ttype188837* key) {
	trope145007* result;
	TNimObject* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = idtableget_197137(tab, &key->Sup);
	result = ((trope145007*) (LOC1));
	return result;
}

N_NIMCALL(trope145007*, gettypepre_471074)(tcgen465030* m, ttype188837* typ) {
	trope145007* result;
	result = 0;
	{
		if (!(typ == NIM_NIL)) goto LA3;
		result = torope_145058(((NimStringDesc*) &TMP3141));
	}
	goto LA1;
	LA3: ;
	{
		result = getsimpletypedesc_471061(m, typ);
		{
			if (!(result == NIM_NIL)) goto LA8;
			result = cachegettype_470362((*m).Typecache, typ);
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

static N_INLINE(NI, sonslen_189185)(ttype188837* n) {
	NI result;
	result = 0;
	{
		if (!(*n).Sons == 0) goto LA3;
		result = 0;
	}
	goto LA1;
	LA3: ;
	{
		result = (*n).Sons->Sup.len;
	}
	LA1: ;
	return result;
}

static N_INLINE(ttype188837*, lastson_189193)(ttype188837* n) {
	ttype188837* result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = sonslen_189185(n);
	result = (*n).Sons->data[(NI32)(LOC1 - 1)];
	return result;
}

N_NIMCALL(NIM_BOOL, isimportedtype_470981)(ttype188837* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = !(((*t).Sym == NIM_NIL));
	if (!(LOC1)) goto LA2;
	LOC1 = (((*(*t).Sym).Flags &(1<<((((NU8) 5))&31)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NimStringDesc*, getforwardstructformat_471132)(void) {
	NimStringDesc* result;
	result = 0;
	{
		if (!(gcmd_137113 == ((NU8) 2))) goto LA3;
		result = copyString(((NimStringDesc*) &TMP3167));
	}
	goto LA1;
	LA3: ;
	{
		result = copyString(((NimStringDesc*) &TMP3168));
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope145007*, structorunion_471114)(ttype188837* t) {
	trope145007* result;
	result = 0;
	{
		if (!(((*t).Flags &(1<<((((NU8) 1))&31)))!=0)) goto LA3;
		result = torope_145058(((NimStringDesc*) &TMP3169));
	}
	goto LA1;
	LA3: ;
	{
		result = torope_145058(((NimStringDesc*) &TMP3170));
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope145007*, gettypeforward_471145)(tcgen465030* m, ttype188837* typ) {
	trope145007* result;
	result = 0;
	result = cachegettype_470362((*m).Forwtypecache, typ);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = gettypepre_471074(m, typ);
	{
		if (!!((result == NIM_NIL))) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	switch ((*typ).Kind) {
	case ((NU8) 24):
	case ((NU8) 18):
	case ((NU8) 17):
	{
		result = gettypename_470110(typ);
		{
			NIM_BOOL LOC12;
			NimStringDesc* LOC15;
			TY503234 LOC16;
			LOC12 = 0;
			LOC12 = isimportedtype_470981(typ);
			if (!!(LOC12)) goto LA13;
			LOC15 = 0;
			LOC15 = getforwardstructformat_471132();
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = structorunion_471114(typ);
			LOC16[1] = result;
			appf_145085(&(*m).S[(((NU8) 2))- 0], LOC15, LOC16, 2);
		}
		LA13: ;
		idtableput_197147(&(*m).Forwtypecache, &typ->Sup, &result->Sup);
	}
	break;
	default:
	{
		NimStringDesc* LOC18;
		LOC18 = 0;
		LOC18 = rawNewString(reprEnum((*typ).Kind, (&NTI188240))->Sup.len + 16);
appendString(LOC18, ((NimStringDesc*) &TMP3171));
appendString(LOC18, reprEnum((*typ).Kind, (&NTI188240)));
appendChar(LOC18, 41);
		internalerror_165606(LOC18);
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, pushtype_471814)(tcgen465030* m, ttype188837* typ) {
	(*m).Typestack = (ttypeseq188835*) incrSeq(&((*m).Typestack)->Sup, sizeof(ttype188837*));
	asgnRefNoCycle((void**) &(*m).Typestack->data[(*m).Typestack->Sup.len-1], typ);
}

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

N_NIMCALL(NU8, maptype_470246)(ttype188837* 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_470241(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):
	{
		ttype188837* LOC8;
		LOC8 = 0;
		LOC8 = lastson_189193(typ);
		result = maptype_470246(LOC8);
	}
	break;
	case ((NU8) 14):
	{
		{
			NI64 LOC12;
			LOC12 = 0;
			LOC12 = firstord_223002(typ);
			if (!(LOC12 < 0)) goto LA13;
			result = ((NU8) 6);
		}
		goto LA10;
		LA13: ;
		{
			NI64 LOC16;
			LOC16 = 0;
			LOC16 = getsize_223158(typ);
			switch (((NI) (LOC16))) {
			case 1:
			{
				result = ((NU8) 13);
			}
			break;
			case 2:
			{
				result = ((NU8) 14);
			}
			break;
			case 4:
			{
				result = ((NU8) 6);
			}
			break;
			case 8:
			{
				result = ((NU8) 7);
			}
			break;
			default:
			{
				internalerror_165606(((NimStringDesc*) &TMP3174));
			}
			break;
			}
		}
		LA10: ;
	}
	break;
	case ((NU8) 20):
	{
		result = maptype_470246((*typ).Sons->data[0]);
	}
	break;
	case ((NU8) 21):
	case ((NU8) 23):
	case ((NU8) 22):
	{
		ttype188837* base;
		ttype188837* LOC24;
		LOC24 = 0;
		LOC24 = lastson_189193(typ);
		base = skiptypes_192793(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) ((NI32)(((NI) ((NI32)(((NI) ((*typ).Kind)) - 31))) + 3)));
	}
	break;
	default:
	{
		internalerror_165606(((NimStringDesc*) &TMP3174));
	}
	break;
	}
	return result;
}

N_NIMCALL(NIM_BOOL, needscomplexassignment_470309)(ttype188837* typ) {
	NIM_BOOL result;
	result = 0;
	result = containsgarbagecollectedref_223134(typ);
	return result;
}

N_NIMCALL(NIM_BOOL, isinvalidreturntype_470314)(ttype188837* rettype) {
	NIM_BOOL result;
	result = 0;
	{
		if (!(rettype == NIM_NIL)) goto LA3;
		result = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		NU8 LOC6;
		LOC6 = 0;
		LOC6 = maptype_470246(rettype);
		switch (LOC6) {
		case ((NU8) 17):
		{
			ttype188837* LOC8;
			LOC8 = 0;
			LOC8 = skiptypes_192793(rettype, IL64(211106232576256));
			result = !(((*LOC8).Kind == ((NU8) 23) || (*LOC8).Kind == ((NU8) 22) || (*LOC8).Kind == ((NU8) 21)));
		}
		break;
		case ((NU8) 19):
		{
			ttype188837* LOC10;
			LOC10 = 0;
			LOC10 = skiptypes_192793(rettype, IL64(211106232576256));
			result = needscomplexassignment_470309(LOC10);
		}
		break;
		default:
		{
			result = NIM_FALSE;
		}
		break;
		}
	}
	LA1: ;
	return result;
}

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

static N_INLINE(NIM_BOOL, iscompiletimeonly_233237)(ttype188837* t) {
	NIM_BOOL result;
	result = 0;
	result = ((*t).Kind == ((NU8) 8) || (*t).Kind == ((NU8) 59));
	return result;
}

N_NIMCALL(NU8, paramstorageloc_470602)(tsym188833* param) {
	NU8 result;
	result = 0;
	{
		ttype188837* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_192793((*param).Typ, 8388864);
		if (!!(((*LOC3).Kind == ((NU8) 16) || (*LOC3).Kind == ((NU8) 27)))) goto LA4;
		result = ((NU8) 1);
	}
	goto LA1;
	LA4: ;
	{
		result = ((NU8) 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope145007*, getparamtypedesc_470523)(tcgen465030* m, ttype188837* t, tintset185047* check) {
	trope145007* result;
	result = 0;
	result = gettypedescaux_470303(m, t, check);
	return result;
}

N_NIMCALL(NIM_BOOL, ccgintroducedptr_470384)(tsym188833* s) {
	NIM_BOOL result;
	ttype188837* pt;
	result = 0;
	pt = skiptypes_192793((*s).Typ, IL64(211106232576256));
	{
		if (!(((*pt).Flags &(1<<((((NU8) 13))&31)))!=0)) goto LA3;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	goto LA1;
	LA3: ;
	{
		if (!(((*pt).Flags &(1<<((((NU8) 12))&31)))!=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 &(1<<((((NU8) 18))&31)))!=0);
			if (LOC11) goto LA12;
			LOC13 = 0;
			LOC13 = getsize_223158(pt);
			LOC11 = (((NI64) ((NI32)(floatsize_142591 * 2))) < LOC13);
			LA12: ;
			if (!LOC11) goto LA14;
			result = NIM_TRUE;
		}
		goto LA9;
		LA14: ;
		{
			NIM_BOOL LOC17;
			LOC17 = 0;
			LOC17 = (((*pt).Flags &(1<<((((NU8) 2))&31)))!=0);
			if (!(LOC17)) goto LA18;
			LOC17 = ((*pt).Sons->data[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_223158(pt);
		LOC23 = (((NI64) ((NI32)(floatsize_142591 * 2))) < LOC24);
		if (LOC23) goto LA25;
		LOC23 = (((*s).Options &(1<<((((NU8) 18))&31)))!=0);
		LA25: ;
		result = LOC23;
	}
	break;
	default:
	{
		result = NIM_FALSE;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, appff_468223)(trope145007** dest, NimStringDesc* cformat, NimStringDesc* llvmformat, trope145007** args, NI argsLen0) {
	{
		if (!(gcmd_137113 == ((NU8) 5))) goto LA3;
		appf_145085(dest, llvmformat, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		appf_145085(dest, cformat, args, argsLen0);
	}
	LA1: ;
}

N_NIMCALL(NU8, mapreturntype_470289)(ttype188837* typ) {
	NU8 result;
	result = 0;
	{
		ttype188837* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_192793(typ, IL64(211106232576256));
		if (!((*LOC3).Kind == ((NU8) 16))) goto LA4;
		result = ((NU8) 20);
	}
	goto LA1;
	LA4: ;
	{
		result = maptype_470246(typ);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genprocparams_470622)(tcgen465030* m, ttype188837* t, trope145007** rettype, trope145007** params, tintset185047* check, NIM_BOOL declareenvironment) {
	NI i_470668;
	NI HEX3Atmp_470973;
	NI LOC9;
	NI res_470975;
	unsureAsgnRef((void**) &(*params), NIM_NIL);
	{
		NIM_BOOL LOC3;
		TY469906 LOC7;
		LOC3 = 0;
		LOC3 = ((*t).Sons->data[0] == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = isinvalidreturntype_470314((*t).Sons->data[0]);
		LA4: ;
		if (!LOC3) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		unsureAsgnRef((void**) &(*rettype), ropef_145079(((NimStringDesc*) &TMP3141), LOC7, 0));
	}
	goto LA1;
	LA5: ;
	{
		unsureAsgnRef((void**) &(*rettype), gettypedescaux_470303(m, (*t).Sons->data[0], check));
	}
	LA1: ;
	i_470668 = 0;
	HEX3Atmp_470973 = 0;
	LOC9 = 0;
	LOC9 = sonslen_189181((*t).N);
	HEX3Atmp_470973 = (NI32)(LOC9 - 1);
	res_470975 = 1;
	while (1) {
		if (!(res_470975 <= HEX3Atmp_470973)) goto LA10;
		i_470668 = res_470975;
		{
			tsym188833* param;
			trope145007* LOC27;
			NU8 LOC28;
			trope145007* LOC29;
			TY469906 LOC37;
			trope145007* LOC38;
			ttype188837* arr;
			NI j;
			{
				if (!!(((*(*(*t).N).kindU.S6.Sons->data[i_470668]).Kind == ((NU8) 3)))) goto LA14;
				internalerror_165591((*(*t).N).Info, ((NimStringDesc*) &TMP3177));
			}
			LA14: ;
			param = (*(*(*t).N).kindU.S6.Sons->data[i_470668]).kindU.S4.Sym;
			{
				NIM_BOOL LOC18;
				LOC18 = 0;
				LOC18 = iscompiletimeonly_233237((*param).Typ);
				if (!LOC18) goto LA19;
				goto LA11;
			}
			LA19: ;
			{
				TY469906 LOC25;
				trope145007* LOC26;
				if (!!(((*params) == NIM_NIL))) goto LA23;
				memset((void*)LOC25, 0, sizeof(LOC25));
				LOC26 = 0;
				LOC26 = ropef_145079(((NimStringDesc*) &TMP3178), LOC25, 0);
				app_145040(params, LOC26);
			}
			LA23: ;
			LOC27 = 0;
			LOC27 = manglename_469870(param);
			LOC28 = 0;
			LOC28 = paramstorageloc_470602(param);
			fillloc_468351(&(*param).Loc, ((NU8) 4), (*param).Typ, LOC27, LOC28);
			LOC29 = 0;
			LOC29 = getparamtypedesc_470523(m, (*param).Typ, check);
			app_145040(params, LOC29);
			{
				NIM_BOOL LOC32;
				TY469906 LOC35;
				trope145007* LOC36;
				LOC32 = 0;
				LOC32 = ccgintroducedptr_470384(param);
				if (!LOC32) goto LA33;
				memset((void*)LOC35, 0, sizeof(LOC35));
				LOC36 = 0;
				LOC36 = ropef_145079(((NimStringDesc*) &TMP3172), LOC35, 0);
				app_145040(params, LOC36);
				(*param).Loc.Flags |=((NI8)(1)<<((((NU8) 0))%(sizeof(NI8)*8)));
				(*param).Loc.S = ((NU8) 0);
			}
			LA33: ;
			memset((void*)LOC37, 0, sizeof(LOC37));
			LOC38 = 0;
			LOC38 = ropef_145079(((NimStringDesc*) &TMP3179), LOC37, 0);
			app_145040(params, LOC38);
			app_145040(params, (*param).Loc.R);
			arr = (*param).Typ;
			{
				if (!((*arr).Kind == ((NU8) 23))) goto LA41;
				arr = (*arr).Sons->data[0];
			}
			LA41: ;
			j = 0;
			while (1) {
				TY503234 LOC48;
				if (!((*arr).Kind == ((NU8) 27) || (*arr).Kind == ((NU8) 48))) goto LA43;
				{
					if (!((*(*param).Typ).Kind == ((NU8) 23))) goto LA46;
					(*param).Loc.S = ((NU8) 0);
				}
				LA46: ;
				memset((void*)LOC48, 0, sizeof(LOC48));
				LOC48[0] = (*param).Loc.R;
				LOC48[1] = torope_145062(((NI64) (j)));
				appff_468223(params, ((NimStringDesc*) &TMP3180), ((NimStringDesc*) &TMP3181), LOC48, 2);
				j += 1;
				arr = (*arr).Sons->data[0];
			} LA43: ;
		} LA11: ;
		res_470975 += 1;
	} LA10: ;
	{
		NIM_BOOL LOC51;
		ttype188837* arr;
		trope145007* LOC59;
		TY469906 LOC67;
		LOC51 = 0;
		LOC51 = !(((*t).Sons->data[0] == NIM_NIL));
		if (!(LOC51)) goto LA52;
		LOC51 = isinvalidreturntype_470314((*t).Sons->data[0]);
		LA52: ;
		if (!LOC51) goto LA53;
		arr = (*t).Sons->data[0];
		{
			if (!!(((*params) == NIM_NIL))) goto LA57;
			app_145046(params, ((NimStringDesc*) &TMP3178));
		}
		LA57: ;
		LOC59 = 0;
		LOC59 = gettypedescaux_470303(m, arr, check);
		app_145040(params, LOC59);
		{
			NIM_BOOL LOC62;
			NU8 LOC63;
			LOC62 = 0;
			LOC63 = 0;
			LOC63 = mapreturntype_470289((*t).Sons->data[0]);
			LOC62 = !((LOC63 == ((NU8) 17)));
			if (LOC62) goto LA64;
			LOC62 = (gcmd_137113 == ((NU8) 5));
			LA64: ;
			if (!LOC62) goto LA65;
			app_145046(params, ((NimStringDesc*) &TMP3172));
		}
		LA65: ;
		memset((void*)LOC67, 0, sizeof(LOC67));
		appff_468223(params, ((NimStringDesc*) &TMP3182), ((NimStringDesc*) &TMP3183), LOC67, 0);
	}
	LA53: ;
	{
		NIM_BOOL LOC70;
		LOC70 = 0;
		LOC70 = ((*t).Callconv == ((NU8) 8));
		if (!(LOC70)) goto LA71;
		LOC70 = declareenvironment;
		LA71: ;
		if (!LOC70) goto LA72;
		{
			if (!!(((*params) == NIM_NIL))) goto LA76;
			app_145046(params, ((NimStringDesc*) &TMP3178));
		}
		LA76: ;
		app_145046(params, ((NimStringDesc*) &TMP3184));
	}
	LA72: ;
	{
		if (!(((*t).Flags &(1<<((((NU8) 0))&31)))!=0)) goto LA80;
		{
			if (!!(((*params) == NIM_NIL))) goto LA84;
			app_145046(params, ((NimStringDesc*) &TMP3178));
		}
		LA84: ;
		app_145046(params, ((NimStringDesc*) &TMP3185));
	}
	LA80: ;
	{
		NIM_BOOL LOC88;
		LOC88 = 0;
		LOC88 = ((*params) == NIM_NIL);
		if (!(LOC88)) goto LA89;
		LOC88 = !((gcmd_137113 == ((NU8) 5)));
		LA89: ;
		if (!LOC88) goto LA90;
		app_145046(params, ((NimStringDesc*) &TMP3186));
	}
	goto LA86;
	LA90: ;
	{
		app_145046(params, ((NimStringDesc*) &TMP3187));
	}
	LA86: ;
	unsureAsgnRef((void**) &(*params), con_145030(((NimStringDesc*) &TMP3188), (*params)));
}

N_NIMCALL(void, appcg_469002)(tcgen465030* m, trope145007** c, NimStringDesc* frmt, trope145007** args, NI argsLen0) {
	trope145007* LOC1;
	LOC1 = 0;
	LOC1 = ropecg_468609(m, frmt, args, argsLen0);
	app_145040(c, LOC1);
}

static N_INLINE(tnode188803*, lastson_189189)(tnode188803* n) {
	tnode188803* result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	result = (*n).kindU.S6.Sons->data[(NI32)(LOC1 - 1)];
	return result;
}

N_NIMCALL(NimStringDesc*, manglefield_469609)(NimStringDesc* name) {
	NimStringDesc* result;
	NI i_469661;
	NI HEX3Atmp_469698;
	NI res_469700;
	result = 0;
	switch (((NU8)(name->data[0]))) {
	case 97 ... 122:
	{
		result = copyString(((NimStringDesc*) &TMP3136));
		result = addChar(result, ((NIM_CHAR) (((NI) ((NI32)(((NI) ((NI32)(((NI) (((NU8)(name->data[0])))) - 97))) + 65))))));
	}
	break;
	case 48 ... 57:
	case 65 ... 90:
	{
		result = copyString(((NimStringDesc*) &TMP3136));
		result = addChar(result, name->data[0]);
	}
	break;
	default:
	{
		NimStringDesc* LOC4;
		NimStringDesc* LOC5;
		LOC4 = 0;
		LOC5 = 0;
		LOC5 = nsuToHex(((NI64) (((NU8)(name->data[0])))), 2);
		LOC4 = rawNewString(LOC5->Sup.len + 3);
appendString(LOC4, ((NimStringDesc*) &TMP3137));
appendString(LOC4, LOC5);
		result = LOC4;
	}
	break;
	}
	i_469661 = 0;
	HEX3Atmp_469698 = 0;
	HEX3Atmp_469698 = (NI32)(name->Sup.len - 1);
	res_469700 = 1;
	while (1) {
		if (!(res_469700 <= HEX3Atmp_469698)) goto LA6;
		i_469661 = res_469700;
		switch (((NU8)(name->data[i_469661]))) {
		case 65 ... 90:
		{
			result = addChar(result, ((NIM_CHAR) (((NI) ((NI32)(((NI) ((NI32)(((NI) (((NU8)(name->data[i_469661])))) - 65))) + 97))))));
		}
		break;
		case 95:
		{
		}
		break;
		case 97 ... 122:
		case 48 ... 57:
		{
			result = addChar(result, name->data[i_469661]);
		}
		break;
		default:
		{
			NimStringDesc* LOC11;
			result = resizeString(result, 3);
appendString(result, ((NimStringDesc*) &TMP3137));
			LOC11 = 0;
			LOC11 = nsuToHex(((NI64) (((NU8)(name->data[i_469661])))), 2);
			result = resizeString(result, LOC11->Sup.len + 0);
appendString(result, LOC11);
		}
		break;
		}
		res_469700 += 1;
	} LA6: ;
	return result;
}

N_NIMCALL(trope145007*, manglerecfieldname_471198)(tsym188833* field, ttype188837* rectype) {
	trope145007* 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_469609((*(*field).Name).S);
		result = torope_145058(LOC8);
	}
	LA1: ;
	{
		if (!(result == NIM_NIL)) goto LA11;
		internalerror_165591((*field).Info, ((NimStringDesc*) &TMP3217));
	}
	LA11: ;
	return result;
}

N_NIMCALL(trope145007*, genrecordfieldsaux_471275)(tcgen465030* m, tnode188803* n, trope145007* accessexpr, ttype188837* rectype, tintset185047* check) {
	trope145007* result;
	trope145007* ae;
	trope145007* uname;
	trope145007* sname;
	trope145007* a;
	tnode188803* k;
	tsym188833* field;
	result = 0;
	ae = 0;
	uname = 0;
	sname = 0;
	a = 0;
	k = 0;
	field = 0;
	result = NIM_NIL;
	switch ((*n).Kind) {
	case ((NU8) 136):
	{
		NI i_471302;
		NI HEX3Atmp_471574;
		NI LOC2;
		NI res_471576;
		i_471302 = 0;
		HEX3Atmp_471574 = 0;
		LOC2 = 0;
		LOC2 = sonslen_189181(n);
		HEX3Atmp_471574 = (NI32)(LOC2 - 1);
		res_471576 = 0;
		while (1) {
			trope145007* LOC4;
			if (!(res_471576 <= HEX3Atmp_471574)) goto LA3;
			i_471302 = res_471576;
			LOC4 = 0;
			LOC4 = genrecordfieldsaux_471275(m, (*n).kindU.S6.Sons->data[i_471302], accessexpr, rectype, check);
			app_145040(&result, LOC4);
			res_471576 += 1;
		} LA3: ;
	}
	break;
	case ((NU8) 137):
	{
		trope145007* LOC10;
		NimStringDesc* LOC11;
		NimStringDesc* LOC12;
		NimStringDesc* LOC19;
		NI i_471418;
		NI HEX3Atmp_471578;
		NI LOC20;
		NI res_471580;
		TY145497 LOC38;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA8;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3210));
		}
		LA8: ;
		LOC10 = 0;
		LOC10 = genrecordfieldsaux_471275(m, (*n).kindU.S6.Sons->data[0], accessexpr, rectype, check);
		app_145040(&result, LOC10);
		LOC11 = 0;
		LOC12 = 0;
		LOC12 = mangle_469704((*(*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
		LOC11 = rawNewString(LOC12->Sup.len + 1);
appendString(LOC11, LOC12);
appendChar(LOC11, 85);
		uname = torope_145058(LOC11);
		{
			TY503234 LOC17;
			if (!!((accessexpr == NIM_NIL))) goto LA15;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = accessexpr;
			LOC17[1] = uname;
			ae = ropef_145079(((NimStringDesc*) &TMP3211), LOC17, 2);
		}
		goto LA13;
		LA15: ;
		{
			ae = uname;
		}
		LA13: ;
		LOC19 = 0;
		LOC19 = rawNewString(tnl_142593->Sup.len + 7);
appendString(LOC19, ((NimStringDesc*) &TMP3212));
appendString(LOC19, tnl_142593);
		app_145046(&result, LOC19);
		i_471418 = 0;
		HEX3Atmp_471578 = 0;
		LOC20 = 0;
		LOC20 = sonslen_189181(n);
		HEX3Atmp_471578 = (NI32)(LOC20 - 1);
		res_471580 = 1;
		while (1) {
			if (!(res_471580 <= HEX3Atmp_471578)) goto LA21;
			i_471418 = res_471580;
			switch ((*(*n).kindU.S6.Sons->data[i_471418]).Kind) {
			case ((NU8) 85):
			case ((NU8) 88):
			{
				k = lastson_189189((*n).kindU.S6.Sons->data[i_471418]);
				{
					trope145007* LOC27;
					TY503234 LOC28;
					trope145007* LOC29;
					if (!!(((*k).Kind == ((NU8) 3)))) goto LA25;
					LOC27 = 0;
					LOC27 = torope_145062(((NI64) (i_471418)));
					sname = con_145030(((NimStringDesc*) &TMP3213), LOC27);
					memset((void*)LOC28, 0, sizeof(LOC28));
					LOC28[0] = ae;
					LOC28[1] = sname;
					LOC29 = 0;
					LOC29 = ropef_145079(((NimStringDesc*) &TMP3211), LOC28, 2);
					a = genrecordfieldsaux_471275(m, k, LOC29, rectype, check);
					{
						TY145497 LOC34;
						if (!!((a == NIM_NIL))) goto LA32;
						app_145046(&result, ((NimStringDesc*) &TMP3214));
						app_145040(&result, a);
						memset((void*)LOC34, 0, sizeof(LOC34));
						LOC34[0] = sname;
						appf_145085(&result, ((NimStringDesc*) &TMP3215), LOC34, 1);
					}
					LA32: ;
				}
				goto LA23;
				LA25: ;
				{
					trope145007* LOC36;
					LOC36 = 0;
					LOC36 = genrecordfieldsaux_471275(m, k, ae, rectype, check);
					app_145040(&result, LOC36);
				}
				LA23: ;
			}
			break;
			default:
			{
				internalerror_165606(((NimStringDesc*) &TMP3216));
			}
			break;
			}
			res_471580 += 1;
		} LA21: ;
		memset((void*)LOC38, 0, sizeof(LOC38));
		LOC38[0] = uname;
		appf_145085(&result, ((NimStringDesc*) &TMP3215), LOC38, 1);
	}
	break;
	case ((NU8) 3):
	{
		ttype188837* fieldtype;
		field = (*n).kindU.S4.Sym;
		{
			if (!((*(*field).Typ).Kind == ((NU8) 3))) goto LA42;
			goto BeforeRet;
		}
		LA42: ;
		sname = manglerecfieldname_471198(field, rectype);
		{
			TY503234 LOC48;
			if (!!((accessexpr == NIM_NIL))) goto LA46;
			memset((void*)LOC48, 0, sizeof(LOC48));
			LOC48[0] = accessexpr;
			LOC48[1] = sname;
			ae = ropef_145079(((NimStringDesc*) &TMP3211), LOC48, 2);
		}
		goto LA44;
		LA46: ;
		{
			ae = sname;
		}
		LA44: ;
		fillloc_468351(&(*field).Loc, ((NU8) 5), (*field).Typ, ae, ((NU8) 0));
		fieldtype = (*field).Loc.T;
		{
			NIM_BOOL LOC52;
			TY503234 LOC56;
			ttype188837* LOC57;
			LOC52 = 0;
			LOC52 = ((*fieldtype).Kind == ((NU8) 16));
			if (!(LOC52)) goto LA53;
			LOC52 = (((*fieldtype).Flags &(1<<((((NU8) 0))&31)))!=0);
			LA53: ;
			if (!LOC52) goto LA54;
			memset((void*)LOC56, 0, sizeof(LOC56));
			LOC57 = 0;
			LOC57 = elemtype_223559(fieldtype);
			LOC56[0] = gettypedescaux_470303(m, LOC57, check);
			LOC56[1] = sname;
			appf_145085(&result, ((NimStringDesc*) &TMP3218), LOC56, 2);
		}
		goto LA50;
		LA54: ;
		{
			TY503234 LOC59;
			memset((void*)LOC59, 0, sizeof(LOC59));
			LOC59[0] = gettypedescaux_470303(m, fieldtype, check);
			LOC59[1] = sname;
			appf_145085(&result, ((NimStringDesc*) &TMP3167), LOC59, 2);
		}
		LA50: ;
	}
	break;
	default:
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3219));
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope145007*, getrecordfields_471585)(tcgen465030* m, ttype188837* typ, tintset185047* check) {
	trope145007* result;
	result = 0;
	result = genrecordfieldsaux_471275(m, (*typ).N, NIM_NIL, typ, check);
	return result;
}

N_NIMCALL(trope145007*, getrecorddesc_471593)(tcgen465030* m, ttype188837* typ, trope145007* name, tintset185047* check) {
	trope145007* result;
	NIM_BOOL hasfield;
	trope145007* attribute;
	TY470214 LOC6;
	trope145007* desc;
	NimStringDesc* LOC42;
	result = 0;
	hasfield = NIM_FALSE;
	{
		if (!(((*typ).Flags &(1<<((((NU8) 21))&31)))!=0)) goto LA3;
		attribute = torope_145058(cc_169402[(ccompiler_169425)- 1].Field19);
	}
	goto LA1;
	LA3: ;
	{
		attribute = NIM_NIL;
	}
	LA1: ;
	memset((void*)LOC6, 0, sizeof(LOC6));
	LOC6[0] = structorunion_471114(typ);
	LOC6[1] = name;
	LOC6[2] = attribute;
	result = ropecg_468609(m, cc_169402[(ccompiler_169425)- 1].Field18, LOC6, 3);
	{
		if (!((*typ).Kind == ((NU8) 17))) goto LA9;
		{
			if (!((*typ).Sons->data[0] == NIM_NIL)) goto LA13;
			{
				NIM_BOOL LOC17;
				NIM_BOOL LOC18;
				TY469906 LOC23;
				LOC17 = 0;
				LOC18 = 0;
				LOC18 = !(((*typ).Sym == NIM_NIL));
				if (!(LOC18)) goto LA19;
				LOC18 = (((*(*typ).Sym).Flags &(1<<((((NU8) 9))&31)))!=0);
				LA19: ;
				LOC17 = LOC18;
				if (LOC17) goto LA20;
				LOC17 = (((*typ).Flags &(1<<((((NU8) 2))&31)))!=0);
				LA20: ;
				if (!LOC17) goto LA21;
				memset((void*)LOC23, 0, sizeof(LOC23));
				appcg_469002(m, &result, ((NimStringDesc*) &TMP3206), LOC23, 0);
			}
			goto LA15;
			LA21: ;
			{
				TY503234 LOC25;
				memset((void*)LOC25, 0, sizeof(LOC25));
				LOC25[0] = name;
				LOC25[1] = attribute;
				appcg_469002(m, &result, ((NimStringDesc*) &TMP3207), LOC25, 2);
				hasfield = NIM_TRUE;
			}
			LA15: ;
		}
		goto LA11;
		LA13: ;
		{
			TY145497 LOC29;
			if (!(gcmd_137113 == ((NU8) 2))) goto LA27;
			memset((void*)LOC29, 0, sizeof(LOC29));
			LOC29[0] = gettypedescaux_470303(m, (*typ).Sons->data[0], check);
			appcg_469002(m, &result, ((NimStringDesc*) &TMP3208), LOC29, 1);
			hasfield = NIM_TRUE;
		}
		goto LA11;
		LA27: ;
		{
			TY145497 LOC31;
			memset((void*)LOC31, 0, sizeof(LOC31));
			LOC31[0] = gettypedescaux_470303(m, (*typ).Sons->data[0], check);
			appcg_469002(m, &result, ((NimStringDesc*) &TMP3209), LOC31, 1);
			hasfield = NIM_TRUE;
		}
		LA11: ;
	}
	goto LA7;
	LA9: ;
	{
		TY145497 LOC33;
		memset((void*)LOC33, 0, sizeof(LOC33));
		LOC33[0] = name;
		appf_145085(&result, ((NimStringDesc*) &TMP3206), LOC33, 1);
	}
	LA7: ;
	desc = getrecordfields_471585(m, typ, check);
	{
		NIM_BOOL LOC36;
		TY469906 LOC40;
		LOC36 = 0;
		LOC36 = (desc == NIM_NIL);
		if (!(LOC36)) goto LA37;
		LOC36 = !(hasfield);
		LA37: ;
		if (!LOC36) goto LA38;
		memset((void*)LOC40, 0, sizeof(LOC40));
		appf_145085(&result, ((NimStringDesc*) &TMP3220), LOC40, 0);
	}
	goto LA34;
	LA38: ;
	{
		app_145040(&result, desc);
	}
	LA34: ;
	LOC42 = 0;
	LOC42 = rawNewString(tnl_142593->Sup.len + 2);
appendString(LOC42, ((NimStringDesc*) &TMP3221));
appendString(LOC42, tnl_142593);
	app_145046(&result, LOC42);
	return result;
}

N_NIMCALL(trope145007*, gettupledesc_471756)(tcgen465030* m, ttype188837* typ, trope145007* name, tintset185047* check) {
	trope145007* result;
	TY503234 LOC1;
	trope145007* desc;
	NI i_471781;
	NI HEX3Atmp_471808;
	NI LOC2;
	NI res_471810;
	NimStringDesc* LOC11;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = structorunion_471114(typ);
	LOC1[1] = name;
	result = ropef_145079(((NimStringDesc*) &TMP3222), LOC1, 2);
	desc = NIM_NIL;
	i_471781 = 0;
	HEX3Atmp_471808 = 0;
	LOC2 = 0;
	LOC2 = sonslen_189185(typ);
	HEX3Atmp_471808 = (NI32)(LOC2 - 1);
	res_471810 = 0;
	while (1) {
		TY503234 LOC4;
		if (!(res_471810 <= HEX3Atmp_471808)) goto LA3;
		i_471781 = res_471810;
		memset((void*)LOC4, 0, sizeof(LOC4));
		LOC4[0] = gettypedescaux_470303(m, (*typ).Sons->data[i_471781], check);
		LOC4[1] = torope_145062(((NI64) (i_471781)));
		appf_145085(&desc, ((NimStringDesc*) &TMP3223), LOC4, 2);
		res_471810 += 1;
	} LA3: ;
	{
		NimStringDesc* LOC9;
		if (!(desc == NIM_NIL)) goto LA7;
		LOC9 = 0;
		LOC9 = rawNewString(tnl_142593->Sup.len + 11);
appendString(LOC9, ((NimStringDesc*) &TMP3224));
appendString(LOC9, tnl_142593);
		app_145046(&result, LOC9);
	}
	goto LA5;
	LA7: ;
	{
		app_145040(&result, desc);
	}
	LA5: ;
	LOC11 = 0;
	LOC11 = rawNewString(tnl_142593->Sup.len + 2);
appendString(LOC11, ((NimStringDesc*) &TMP3221));
appendString(LOC11, tnl_142593);
	app_145046(&result, LOC11);
	return result;
}

N_NIMCALL(trope145007*, gettypedescaux_470303)(tcgen465030* m, ttype188837* typ, tintset185047* check) {
	trope145007* result;
	trope145007* name;
	trope145007* rettype;
	trope145007* desc;
	trope145007* recdesc;
	NI64 n;
	ttype188837* t;
	ttype188837* et;
	result = 0;
	name = 0;
	rettype = 0;
	desc = 0;
	recdesc = 0;
	n = 0;
	t = 0;
	et = 0;
	t = getuniquetype_464401(typ);
	{
		if (!(t == NIM_NIL)) goto LA3;
		internalerror_165606(((NimStringDesc*) &TMP3140));
	}
	LA3: ;
	{
		if (!!(((*t).Sym == NIM_NIL))) goto LA7;
		useheader_468432(m, (*t).Sym);
	}
	LA7: ;
	result = gettypepre_471074(m, t);
	{
		if (!!((result == NIM_NIL))) goto LA11;
		goto BeforeRet;
	}
	LA11: ;
	{
		NIM_BOOL LOC15;
		NimStringDesc* LOC18;
		NimStringDesc* LOC19;
		LOC15 = 0;
		LOC15 = containsorincl_185888(check, (*t).Sup.Id);
		if (!LOC15) goto LA16;
		LOC18 = 0;
		LOC19 = 0;
		LOC19 = typetostring_223020(typ, ((NU8) 0));
		LOC18 = rawNewString(LOC19->Sup.len + 28);
appendString(LOC18, ((NimStringDesc*) &TMP3166));
appendString(LOC18, LOC19);
		internalerror_165606(LOC18);
	}
	LA16: ;
	switch ((*t).Kind) {
	case ((NU8) 22):
	case ((NU8) 21):
	case ((NU8) 23):
	{
		ttype188837* LOC21;
		LOC21 = 0;
		LOC21 = lastson_189193(t);
		et = getuniquetype_464401(LOC21);
		{
			ttype188837* LOC26;
			if (!((*et).Kind == ((NU8) 4) || (*et).Kind == ((NU8) 16) || (*et).Kind == ((NU8) 27) || (*et).Kind == ((NU8) 48))) goto LA24;
			LOC26 = 0;
			LOC26 = elemtype_223559(et);
			et = getuniquetype_464401(LOC26);
		}
		LA24: ;
		switch ((*et).Kind) {
		case ((NU8) 17):
		case ((NU8) 18):
		{
			name = gettypeforward_471145(m, et);
			result = con_145025(name, ((NimStringDesc*) &TMP3172));
			idtableput_197147(&(*m).Typecache, &t->Sup, &result->Sup);
			pushtype_471814(m, et);
		}
		break;
		case ((NU8) 24):
		{
			name = gettypeforward_471145(m, et);
			result = con_145025(name, ((NimStringDesc*) &TMP3173));
			idtableput_197147(&(*m).Typecache, &t->Sup, &result->Sup);
			pushtype_471814(m, et);
		}
		break;
		default:
		{
			trope145007* LOC30;
			LOC30 = 0;
			LOC30 = gettypedescaux_470303(m, et, check);
			result = con_145025(LOC30, ((NimStringDesc*) &TMP3172));
			idtableput_197147(&(*m).Typecache, &t->Sup, &result->Sup);
		}
		break;
		}
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		trope145007* LOC32;
		et = getuniquetype_464401((*t).Sons->data[0]);
		LOC32 = 0;
		LOC32 = gettypedescaux_470303(m, et, check);
		result = con_145025(LOC32, ((NimStringDesc*) &TMP3172));
		idtableput_197147(&(*m).Typecache, &t->Sup, &result->Sup);
	}
	break;
	case ((NU8) 25):
	{
		result = gettypename_470110(t);
		idtableput_197147(&(*m).Typecache, &t->Sup, &result->Sup);
		genprocparams_470622(m, t, &rettype, &desc, check, NIM_TRUE);
		{
			NIM_BOOL LOC36;
			LOC36 = 0;
			LOC36 = isimportedtype_470981(t);
			if (!!(LOC36)) goto LA37;
			{
				TY471942 LOC43;
				if (!!(((*t).Callconv == ((NU8) 8)))) goto LA41;
				memset((void*)LOC43, 0, sizeof(LOC43));
				LOC43[0] = torope_145058(callingconvtostr_470350[((*t).Callconv)- 0]);
				LOC43[1] = rettype;
				LOC43[2] = result;
				LOC43[3] = desc;
				appf_145085(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3189), LOC43, 4);
			}
			goto LA39;
			LA41: ;
			{
				TY470214 LOC45;
				memset((void*)LOC45, 0, sizeof(LOC45));
				LOC45[0] = result;
				LOC45[1] = rettype;
				LOC45[2] = desc;
				appf_145085(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3200), LOC45, 3);
			}
			LA39: ;
		}
		LA37: ;
	}
	break;
	case ((NU8) 24):
	{
		trope145007* LOC58;
		result = cachegettype_470362((*m).Forwtypecache, t);
		{
			if (!(result == NIM_NIL)) goto LA49;
			result = gettypename_470110(t);
			{
				NIM_BOOL LOC53;
				NimStringDesc* LOC56;
				TY503234 LOC57;
				LOC53 = 0;
				LOC53 = isimportedtype_470981(t);
				if (!!(LOC53)) goto LA54;
				LOC56 = 0;
				LOC56 = getforwardstructformat_471132();
				memset((void*)LOC57, 0, sizeof(LOC57));
				LOC57[0] = structorunion_471114(t);
				LOC57[1] = result;
				appf_145085(&(*m).S[(((NU8) 2))- 0], LOC56, LOC57, 2);
			}
			LA54: ;
			idtableput_197147(&(*m).Forwtypecache, &t->Sup, &result->Sup);
		}
		LA49: ;
		LOC58 = 0;
		LOC58 = con_145025(result, ((NimStringDesc*) &TMP3172));
		idtableput_197147(&(*m).Typecache, &t->Sup, &LOC58->Sup);
		{
			NIM_BOOL LOC61;
			LOC61 = 0;
			LOC61 = isimportedtype_470981(t);
			if (!!(LOC61)) goto LA62;
			{
				ttype188837* LOC66;
				NimStringDesc* LOC69;
				NimStringDesc* LOC70;
				TY503234 LOC76;
				LOC66 = 0;
				LOC66 = skiptypes_192793((*t).Sons->data[0], IL64(211106232576256));
				if (!!(((*LOC66).Kind == ((NU8) 3)))) goto LA67;
				LOC69 = 0;
				LOC70 = 0;
				{
					if (!(gcmd_137113 == ((NU8) 2))) goto LA73;
					LOC70 = copyString(((NimStringDesc*) &TMP3201));
				}
				goto LA71;
				LA73: ;
				{
					LOC70 = copyString(((NimStringDesc*) &TMP3202));
				}
				LA71: ;
				LOC69 = rawNewString(LOC70->Sup.len + 31);
appendString(LOC69, LOC70);
appendString(LOC69, ((NimStringDesc*) &TMP3203));
				memset((void*)LOC76, 0, sizeof(LOC76));
				LOC76[0] = gettypedescaux_470303(m, (*t).Sons->data[0], check);
				LOC76[1] = result;
				appcg_469002(m, &(*m).S[(((NU8) 4))- 0], LOC69, LOC76, 2);
			}
			goto LA64;
			LA67: ;
			{
				result = torope_145058(((NimStringDesc*) &TMP3204));
			}
			LA64: ;
		}
		LA62: ;
		app_145046(&result, ((NimStringDesc*) &TMP3172));
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		n = lengthord_223010(t);
		{
			if (!(n <= 0)) goto LA81;
			n = 1;
		}
		LA81: ;
		result = gettypename_470110(t);
		idtableput_197147(&(*m).Typecache, &t->Sup, &result->Sup);
		{
			NIM_BOOL LOC85;
			TY470214 LOC88;
			LOC85 = 0;
			LOC85 = isimportedtype_470981(t);
			if (!!(LOC85)) goto LA86;
			memset((void*)LOC88, 0, sizeof(LOC88));
			LOC88[0] = gettypedescaux_470303(m, (*t).Sons->data[1], check);
			LOC88[1] = result;
			LOC88[2] = torope_145062(n);
			appf_145085(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3205), LOC88, 3);
		}
		LA86: ;
	}
	break;
	case ((NU8) 17):
	case ((NU8) 18):
	{
		result = cachegettype_470362((*m).Forwtypecache, t);
		{
			if (!(result == NIM_NIL)) goto LA92;
			result = gettypename_470110(t);
			{
				NIM_BOOL LOC96;
				NimStringDesc* LOC99;
				TY503234 LOC100;
				LOC96 = 0;
				LOC96 = isimportedtype_470981(t);
				if (!!(LOC96)) goto LA97;
				LOC99 = 0;
				LOC99 = getforwardstructformat_471132();
				memset((void*)LOC100, 0, sizeof(LOC100));
				LOC100[0] = structorunion_471114(t);
				LOC100[1] = result;
				appf_145085(&(*m).S[(((NU8) 2))- 0], LOC99, LOC100, 2);
			}
			LA97: ;
			idtableput_197147(&(*m).Forwtypecache, &t->Sup, &result->Sup);
		}
		LA92: ;
		idtableput_197147(&(*m).Typecache, &t->Sup, &result->Sup);
		{
			if (!!(((*t).Kind == ((NU8) 18)))) goto LA103;
			recdesc = getrecorddesc_471593(m, t, result, check);
		}
		goto LA101;
		LA103: ;
		{
			recdesc = gettupledesc_471756(m, t, result, check);
		}
		LA101: ;
		{
			NIM_BOOL LOC108;
			LOC108 = 0;
			LOC108 = isimportedtype_470981(t);
			if (!!(LOC108)) goto LA109;
			app_145040(&(*m).S[(((NU8) 3))- 0], recdesc);
		}
		LA109: ;
	}
	break;
	case ((NU8) 19):
	{
		NI64 LOC112;
		LOC112 = 0;
		LOC112 = getsize_223158(t);
		switch (((NI) (LOC112))) {
		case 1:
		{
			result = torope_145058(((NimStringDesc*) &TMP3146));
		}
		break;
		case 2:
		{
			result = torope_145058(((NimStringDesc*) &TMP3147));
		}
		break;
		case 4:
		{
			result = torope_145058(((NimStringDesc*) &TMP3164));
		}
		break;
		case 8:
		{
			result = torope_145058(((NimStringDesc*) &TMP3165));
		}
		break;
		default:
		{
			result = gettypename_470110(t);
			idtableput_197147(&(*m).Typecache, &t->Sup, &result->Sup);
			{
				NIM_BOOL LOC120;
				TY503234 LOC123;
				NI64 LOC124;
				LOC120 = 0;
				LOC120 = isimportedtype_470981(t);
				if (!!(LOC120)) goto LA121;
				memset((void*)LOC123, 0, sizeof(LOC123));
				LOC123[0] = result;
				LOC124 = 0;
				LOC124 = getsize_223158(t);
				LOC123[1] = torope_145062(LOC124);
				appf_145085(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3225), LOC123, 2);
			}
			LA121: ;
		}
		break;
		}
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	case ((NU8) 15):
	case ((NU8) 46):
	case ((NU8) 47):
	case ((NU8) 49):
	case ((NU8) 8):
	{
		ttype188837* LOC126;
		LOC126 = 0;
		LOC126 = lastson_189193(t);
		result = gettypedescaux_470303(m, LOC126, check);
	}
	break;
	default:
	{
		NimStringDesc* LOC128;
		LOC128 = 0;
		LOC128 = rawNewString(reprEnum((*t).Kind, (&NTI188240))->Sup.len + 16);
appendString(LOC128, ((NimStringDesc*) &TMP3226));
appendString(LOC128, reprEnum((*t).Kind, (&NTI188240)));
appendChar(LOC128, 41);
		internalerror_165606(LOC128);
		result = NIM_NIL;
	}
	break;
	}
	excl_185860(check, (*t).Sup.Id);
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope145007*, gettypedesc_472091)(tcgen465030* m, ttype188837* typ) {
	trope145007* result;
	tintset185047 check;
	result = 0;
	chckNil((void*)&check);
	memset((void*)&check, 0, sizeof(check));
	initintset_185918(&check);
	result = gettypedescaux_470303(m, typ, &check);
	return result;
}

N_NIMCALL(trope145007*, mangledynlibproc_476099)(tsym188833* sym) {
	trope145007* result;
	result = 0;
	{
		if (!(((*sym).Flags &(1<<((((NU8) 16))&31)))!=0)) goto LA3;
		result = torope_145058((*(*sym).Name).S);
	}
	goto LA1;
	LA3: ;
	{
		TY145497 LOC6;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = torope_145062(((NI64) ((*sym).Sup.Id)));
		result = ropef_145079(((NimStringDesc*) &TMP3227), LOC6, 1);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genclinedir_469238)(trope145007** r, NimStringDesc* filename, NI line) {
	{
		TY503234 LOC5;
		NimStringDesc* LOC6;
		if (!((goptions_137108 &(1<<((((NU8) 10))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC6 = 0;
		LOC6 = makesinglelinecstring_464672(filename);
		LOC5[0] = torope_145058(LOC6);
		LOC5[1] = torope_145062(((NI64) (line)));
		appff_468223(r, ((NimStringDesc*) &TMP3228), ((NimStringDesc*) &TMP3229), LOC5, 2);
	}
	LA3: ;
}

static N_INLINE(NI, tolinenumber_164812)(tlineinfo163527 info) {
	NI result;
	result = 0;
	result = ((NI) (info.Line));
	return result;
}

N_NIMCALL(NI, safelinenm_469231)(tlineinfo163527 info) {
	NI result;
	result = 0;
	result = tolinenumber_164812(info);
	{
		if (!(result < 0)) goto LA3;
		result = 0;
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, genclinedir_469420)(trope145007** r, tlineinfo163527 info) {
	NimStringDesc* LOC1;
	NI LOC2;
	LOC1 = 0;
	LOC1 = tofullpath_164788(info.Fileindex);
	LOC2 = 0;
	LOC2 = safelinenm_469231(info);
	genclinedir_469238(r, LOC1, LOC2);
}

N_NIMCALL(trope145007*, genprocheader_472308)(tcgen465030* m, tsym188833* prc) {
	trope145007* result;
	trope145007* rettype;
	trope145007* params;
	tintset185047 check;
	trope145007* LOC15;
	result = 0;
	rettype = 0;
	params = 0;
	genclinedir_469420(&result, (*prc).Info);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !((gcmd_137113 == ((NU8) 5)));
		if (!(LOC3)) goto LA4;
		LOC3 = (((*prc).Loc.Flags &(1<<((((NU8) 5))&7)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!(*m).Isheaderfile) goto LA9;
			app_145046(&result, ((NimStringDesc*) &TMP3231));
		}
		goto LA7;
		LA9: ;
		{
			app_145046(&result, ((NimStringDesc*) &TMP3232));
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		if (!((*(*prc).Typ).Callconv == ((NU8) 5))) goto LA13;
		app_145046(&result, ((NimStringDesc*) &TMP3233));
	}
	goto LA1;
	LA13: ;
	LA1: ;
	chckNil((void*)&check);
	memset((void*)&check, 0, sizeof(check));
	initintset_185918(&check);
	LOC15 = 0;
	LOC15 = manglename_469870(prc);
	fillloc_468351(&(*prc).Loc, ((NU8) 8), (*prc).Typ, LOC15, ((NU8) 0));
	genprocparams_470622(m, (*prc).Typ, &rettype, &params, &check, NIM_TRUE);
	{
		TY471942 LOC20;
		if (!(*prc).Constraint == 0) goto LA18;
		memset((void*)LOC20, 0, sizeof(LOC20));
		LOC20[0] = torope_145058(callingconvtostr_470350[((*(*prc).Typ).Callconv)- 0]);
		LOC20[1] = rettype;
		LOC20[2] = (*prc).Loc.R;
		LOC20[3] = params;
		appf_145085(&result, ((NimStringDesc*) &TMP3234), LOC20, 4);
	}
	goto LA16;
	LA18: ;
	{
		TY470214 LOC22;
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = rettype;
		LOC22[1] = (*prc).Loc.R;
		LOC22[2] = params;
		result = ropef_145079((*(*prc).Constraint).kindU.S3.Strval, LOC22, 3);
	}
	LA16: ;
	return result;
}

N_NIMCALL(void, genprocprototype_476499)(tcgen465030* m, tsym188833* sym) {
	useheader_468432(m, sym);
	{
		if (!(((*sym).Loc.Flags &(1<<((((NU8) 3))&7)))!=0)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(((*sym).Loc.Flags &(1<<((((NU8) 4))&7)))!=0)) goto LA7;
		{
			NIM_BOOL LOC11;
			tsym188833* LOC12;
			NIM_BOOL LOC14;
			TY503234 LOC17;
			trope145007* LOC18;
			LOC11 = 0;
			LOC12 = 0;
			LOC12 = getmodule_197183(sym);
			LOC11 = !(((*LOC12).Sup.Id == (*(*m).Module).Sup.Id));
			if (!(LOC11)) goto LA13;
			LOC14 = 0;
			LOC14 = containsorincl_185888(&(*m).Declaredthings, (*sym).Sup.Id);
			LOC11 = !(LOC14);
			LA13: ;
			if (!LOC11) goto LA15;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = gettypedesc_472091(m, (*sym).Loc.T);
			LOC17[1] = mangledynlibproc_476099(sym);
			LOC18 = 0;
			LOC18 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3139), LOC17, 2);
			app_145040(&(*m).S[(((NU8) 9))- 0], LOC18);
			{
				if (!(gcmd_137113 == ((NU8) 5))) goto LA21;
				(*sym).Loc.Flags |=((NI8)(1)<<((((NU8) 0))%(sizeof(NI8)*8)));
			}
			LA21: ;
		}
		LA15: ;
	}
	goto LA5;
	LA7: ;
	{
		NIM_BOOL LOC24;
		trope145007* header;
		TY145497 LOC33;
		trope145007* LOC34;
		LOC24 = 0;
		LOC24 = containsorincl_185888(&(*m).Declaredprotos, (*sym).Sup.Id);
		if (!!(LOC24)) goto LA25;
		header = genprocheader_472308(m, sym);
		{
			NIM_BOOL LOC29;
			LOC29 = 0;
			LOC29 = (((*sym).Flags &(1<<((((NU8) 9))&31)))!=0);
			if (!(LOC29)) goto LA30;
			LOC29 = ((cc_169402[(ccompiler_169425)- 1].Field20 &(1<<((((NU8) 7))&7)))!=0);
			LA30: ;
			if (!LOC29) goto LA31;
			app_145046(&header, ((NimStringDesc*) &TMP3235));
		}
		LA31: ;
		memset((void*)LOC33, 0, sizeof(LOC33));
		LOC33[0] = header;
		LOC34 = 0;
		LOC34 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3236), LOC33, 1);
		app_145040(&(*m).S[(((NU8) 7))- 0], LOC34);
	}
	goto LA5;
	LA25: ;
	LA5: ;
	BeforeRet: ;
}

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

static N_INLINE(trope145007**, s_465173)(tcproc465026* p, NU8 s) {
	trope145007** result;
	result = 0;
	result = &(*p).Blocks->data[(NI32)((*p).Blocks->Sup.len - 1)].Sections[(s)- 0];
	return result;
}

N_NIMCALL(trope145007*, indentline_469033)(tcproc465026* p, trope145007* r) {
	trope145007* result;
	NI i_469061;
	NI HEX3Atmp_469063;
	NI res_469065;
	result = 0;
	result = r;
	i_469061 = 0;
	HEX3Atmp_469063 = 0;
	HEX3Atmp_469063 = (NI32)((*p).Blocks->Sup.len - 1);
	res_469065 = 0;
	while (1) {
		if (!(res_469065 <= HEX3Atmp_469063)) goto LA1;
		i_469061 = res_469065;
		prepend_145052(&result, indent_469031);
		res_469065 += 1;
	} LA1: ;
	return result;
}

N_NIMCALL(void, line_469070)(tcproc465026* p, NU8 s, trope145007* r) {
	trope145007** LOC1;
	trope145007* LOC2;
	LOC1 = 0;
	LOC1 = s_465173(p, s);
	LOC2 = 0;
	LOC2 = indentline_469033(p, r);
	app_145040(LOC1, LOC2);
}

N_NIMCALL(void, linef_469084)(tcproc465026* p, NU8 s, NimStringDesc* frmt, trope145007** args, NI argsLen0) {
	trope145007** LOC1;
	trope145007* LOC2;
	trope145007* LOC3;
	LOC1 = 0;
	LOC1 = s_465173(p, s);
	LOC2 = 0;
	LOC2 = ropef_145079(frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_469033(p, LOC2);
	app_145040(LOC1, LOC3);
}

static N_INLINE(NIM_BOOL, isobjlackingtypefield_472601)(ttype188837* 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 &(1<<((((NU8) 2))&31)))!=0);
	if (!(LOC4)) goto LA5;
	LOC4 = ((*typ).Sons->data[0] == NIM_NIL);
	LA5: ;
	LOC3 = LOC4;
	if (LOC3) goto LA6;
	LOC3 = ispureobject_223162(typ);
	LA6: ;
	LOC1 = LOC3;
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, gentypeinfoauxbase_472645)(tcgen465030* m, ttype188837* typ, trope145007* name, trope145007* base) {
	NI nimtypekind;
	trope145007* size;
	TY471942 LOC12;
	NI flags;
	trope145007* LOC28;
	TY503234 LOC29;
	NimStringDesc* LOC30;
	nimtypekind = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isobjlackingtypefield_472601(typ);
		if (!LOC3) goto LA4;
		nimtypekind = 18;
	}
	goto LA1;
	LA4: ;
	{
		nimtypekind = ((NI) ((*typ).Kind));
	}
	LA1: ;
	size = 0;
	{
		if (!(((*typ).Flags &(1<<((((NU8) 0))&31)))!=0)) goto LA9;
		size = torope_145058(((NimStringDesc*) &TMP3250));
	}
	goto LA7;
	LA9: ;
	{
		size = gettypedesc_472091(m, typ);
	}
	LA7: ;
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = name;
	LOC12[1] = size;
	LOC12[2] = torope_145062(((NI64) (nimtypekind)));
	LOC12[3] = base;
	appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3251), LOC12, 4);
	flags = 0;
	{
		NIM_BOOL LOC15;
		LOC15 = 0;
		LOC15 = containsgarbagecollectedref_223134(typ);
		if (!!(LOC15)) goto LA16;
		flags = (NI)(flags | 1);
	}
	LA16: ;
	{
		NIM_BOOL LOC20;
		LOC20 = 0;
		LOC20 = canformacycle_223142(typ);
		if (!!(LOC20)) goto LA21;
		flags = (NI)(flags | 2);
	}
	LA21: ;
	{
		TY503234 LOC27;
		if (!!((flags == 0))) goto LA25;
		memset((void*)LOC27, 0, sizeof(LOC27));
		LOC27[0] = name;
		LOC27[1] = torope_145062(((NI64) (flags)));
		appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3252), LOC27, 2);
	}
	LA25: ;
	LOC28 = 0;
	LOC28 = cgsym_468604(m, ((NimStringDesc*) &TMP3246));
	memset((void*)LOC29, 0, sizeof(LOC29));
	LOC29[0] = name;
	LOC30 = 0;
	LOC30 = typetostring_223020(typ, ((NU8) 0));
	LOC29[1] = torope_145058(LOC30);
	appf_145085(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3253), LOC29, 2);
}

N_NIMCALL(trope145007*, getnimnode_472396)(tcgen465030* m) {
	trope145007* result;
	TY503234 LOC1;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = (*m).Typenodesname;
	LOC1[1] = torope_145062(((NI64) ((*m).Typenodes)));
	result = ropef_145079(((NimStringDesc*) &TMP3254), LOC1, 2);
	(*m).Typenodes += 1;
	return result;
}

N_NIMCALL(void, gentupleinfo_473438)(tcgen465030* m, ttype188837* typ, trope145007* name) {
	trope145007* LOC1;
	trope145007* expr;
	NI length;
	TY503234 LOC13;
	LOC1 = 0;
	LOC1 = torope_145058(((NimStringDesc*) &TMP3155));
	gentypeinfoauxbase_472645(m, typ, name, LOC1);
	expr = getnimnode_472396(m);
	length = sonslen_189185(typ);
	{
		trope145007* tmp;
		TY503234 LOC6;
		NI i_473464;
		NI HEX3Atmp_473492;
		NI res_473494;
		TY470214 LOC10;
		if (!(0 < length)) goto LA4;
		tmp = gettempname_470368();
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = tmp;
		LOC6[1] = torope_145062(((NI64) (length)));
		appf_145085(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3255), LOC6, 2);
		i_473464 = 0;
		HEX3Atmp_473492 = 0;
		HEX3Atmp_473492 = (NI32)(length - 1);
		res_473494 = 0;
		while (1) {
			ttype188837* a;
			trope145007* tmp2;
			TY470214 LOC8;
			TY471942 LOC9;
			if (!(res_473494 <= HEX3Atmp_473492)) goto LA7;
			i_473464 = res_473494;
			a = (*typ).Sons->data[i_473464];
			tmp2 = getnimnode_472396(m);
			memset((void*)LOC8, 0, sizeof(LOC8));
			LOC8[0] = tmp;
			LOC8[1] = torope_145062(((NI64) (i_473464)));
			LOC8[2] = tmp2;
			appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3256), LOC8, 3);
			memset((void*)LOC9, 0, sizeof(LOC9));
			LOC9[0] = tmp2;
			LOC9[1] = gettypedesc_472091(m, typ);
			LOC9[2] = torope_145062(((NI64) (i_473464)));
			LOC9[3] = gentypeinfo_472392(m, a);
			appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3257), LOC9, 4);
			res_473494 += 1;
		} LA7: ;
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC10[0] = expr;
		LOC10[1] = torope_145062(((NI64) (length)));
		LOC10[2] = tmp;
		appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3258), LOC10, 3);
	}
	goto LA2;
	LA4: ;
	{
		TY503234 LOC12;
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = expr;
		LOC12[1] = torope_145062(((NI64) (length)));
		appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3259), LOC12, 2);
	}
	LA2: ;
	memset((void*)LOC13, 0, sizeof(LOC13));
	LOC13[0] = name;
	LOC13[1] = expr;
	appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3260), LOC13, 2);
}

N_NIMCALL(ttype188837*, fakeclosuretype_473814)(tsym188833* owner) {
	ttype188837* result;
	ttype188837* LOC1;
	ttype188837* r;
	ttype188837* LOC2;
	result = 0;
	result = newtype_189060(((NU8) 18), owner);
	LOC1 = 0;
	LOC1 = newtype_189060(((NU8) 26), owner);
	rawaddson_193092(result, LOC1);
	r = newtype_189060(((NU8) 22), owner);
	LOC2 = 0;
	LOC2 = newtype_189060(((NU8) 18), owner);
	rawaddson_193092(r, LOC2);
	rawaddson_193092(result, r);
	return result;
}

N_NIMCALL(void, gentypeinfoaux_472701)(tcgen465030* m, ttype188837* typ, trope145007* name) {
	trope145007* base;
	base = 0;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_189185(typ);
		LOC3 = (0 < LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = !(((*typ).Sons->data[0] == NIM_NIL));
		LA5: ;
		if (!LOC3) goto LA6;
		base = gentypeinfo_472392(m, (*typ).Sons->data[0]);
	}
	goto LA1;
	LA6: ;
	{
		base = torope_145058(((NimStringDesc*) &TMP3155));
	}
	LA1: ;
	gentypeinfoauxbase_472645(m, typ, name, base);
}

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

N_NIMCALL(trope145007*, getglobaltempname_470376)(void) {
	trope145007* result;
	TY145497 LOC1;
	NI LOC2;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = backendid_187423();
	LOC1[0] = torope_145062(((NI64) (LOC2)));
	result = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3261), LOC1, 1);
	return result;
}

N_NIMCALL(void, linefmt_469102)(tcproc465026* p, NU8 s, NimStringDesc* frmt, trope145007** args, NI argsLen0) {
	trope145007** LOC1;
	trope145007* LOC2;
	trope145007* LOC3;
	LOC1 = 0;
	LOC1 = s_465173(p, s);
	LOC2 = 0;
	LOC2 = ropecg_468609((*p).Module, frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_469033(p, LOC2);
	app_145040(LOC1, LOC3);
}

static N_INLINE(NIM_BOOL, iscomplexvaluetype_475114)(ttype188837* 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(trope145007*, rdloc_474964)(tloc188817* a) {
	trope145007* result;
	result = 0;
	result = (*a).R;
	{
		TY145497 LOC5;
		if (!(((*a).Flags &(1<<((((NU8) 0))&7)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = result;
		result = ropef_145079(((NimStringDesc*) &TMP3269), LOC5, 1);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, usestringh_468426)(tcgen465030* m) {
	{
		NIM_BOOL LOC5;
		if (!!((*m).Includesstringh)) goto LA3;
		(*m).Includesstringh = NIM_TRUE;
		LOC5 = 0;
		LOC5 = includestr_118275(&(*m).Headerfiles, ((NimStringDesc*) &TMP3270));
	}
	LA3: ;
}

N_NIMCALL(trope145007*, addrloc_474987)(tloc188817* a) {
	trope145007* result;
	result = 0;
	result = (*a).R;
	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		LOC3 = 0;
		LOC3 = !((((*a).Flags &(1<<((((NU8) 0))&7)))!=0));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = maptype_470246((*a).T);
		LOC3 = !((LOC5 == ((NU8) 17)));
		LA4: ;
		if (!LOC3) goto LA6;
		result = con_145030(((NimStringDesc*) &TMP3242), result);
	}
	LA6: ;
	return result;
}

N_NIMCALL(void, genobjectinit_475034)(tcproc465026* p, NU8 section, ttype188837* t, tloc188817* a, NIM_BOOL takeaddr) {
	NU8 LOC1;
	LOC1 = 0;
	LOC1 = analyseobjectwithtypefield_223176(t);
	switch (LOC1) {
	case ((NU8) 0):
	{
	}
	break;
	case ((NU8) 1):
	{
		trope145007* r;
		ttype188837* s;
		TY503234 LOC16;
		r = rdloc_474964(a);
		{
			TY145497 LOC8;
			if (!!(takeaddr)) goto LA6;
			memset((void*)LOC8, 0, sizeof(LOC8));
			LOC8[0] = r;
			r = ropef_145079(((NimStringDesc*) &TMP3269), LOC8, 1);
		}
		LA6: ;
		s = skiptypes_192793(t, IL64(211106232576256));
		{
			if (!!((gcmd_137113 == ((NU8) 2)))) goto LA11;
			while (1) {
				NIM_BOOL LOC14;
				LOC14 = 0;
				LOC14 = ((*s).Kind == ((NU8) 17));
				if (!(LOC14)) goto LA15;
				LOC14 = !(((*s).Sons->data[0] == NIM_NIL));
				LA15: ;
				if (!LOC14) goto LA13;
				app_145046(&r, ((NimStringDesc*) &TMP3272));
				s = skiptypes_192793((*s).Sons->data[0], IL64(211106232576256));
			} LA13: ;
		}
		LA11: ;
		memset((void*)LOC16, 0, sizeof(LOC16));
		LOC16[0] = r;
		LOC16[1] = gentypeinfo_472392((*p).Module, t);
		linefmt_469102(p, section, ((NimStringDesc*) &TMP3273), LOC16, 2);
	}
	break;
	case ((NU8) 2):
	{
		trope145007* r;
		TY503234 LOC23;
		{
			if (!takeaddr) goto LA20;
			r = addrloc_474987(a);
		}
		goto LA18;
		LA20: ;
		{
			r = rdloc_474964(a);
		}
		LA18: ;
		memset((void*)LOC23, 0, sizeof(LOC23));
		LOC23[0] = r;
		LOC23[1] = gentypeinfo_472392((*p).Module, t);
		linefmt_469102(p, section, ((NimStringDesc*) &TMP3274), LOC23, 2);
	}
	break;
	}
}

N_NIMCALL(void, constructloc_475202)(tcproc465026* p, tloc188817* loc, NIM_BOOL istemp) {
	{
		ttype188837* LOC3;
		NIM_BOOL LOC4;
		TY145497 LOC7;
		LOC3 = 0;
		LOC3 = skiptypes_192793((*loc).T, IL64(211106233624832));
		LOC4 = 0;
		LOC4 = iscomplexvaluetype_475114(LOC3);
		if (!!(LOC4)) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_474964(loc);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3268), LOC7, 1);
	}
	goto LA1;
	LA5: ;
	{
		{
			NIM_BOOL LOC11;
			TY503234 LOC15;
			LOC11 = 0;
			LOC11 = !(istemp);
			if (LOC11) goto LA12;
			LOC11 = containsgarbagecollectedref_223134((*loc).T);
			LA12: ;
			if (!LOC11) goto LA13;
			usestringh_468426((*p).Module);
			memset((void*)LOC15, 0, sizeof(LOC15));
			LOC15[0] = addrloc_474987(loc);
			LOC15[1] = rdloc_474964(loc);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3271), LOC15, 2);
		}
		LA13: ;
		genobjectinit_475034(p, ((NU8) 2), (*loc).T, loc, NIM_TRUE);
	}
	LA1: ;
}

N_NIMCALL(void, gettemp_473840)(tcproc465026* p, ttype188837* t, tloc188817* result) {
	(*p).Labels += 1;
	{
		trope145007* LOC5;
		if (!(gcmd_137113 == ((NU8) 5))) goto LA3;
		LOC5 = 0;
		LOC5 = torope_145062(((NI64) ((*p).Labels)));
		unsureAsgnRef((void**) &(*result).R, con_145030(((NimStringDesc*) &TMP3266), LOC5));
	}
	goto LA1;
	LA3: ;
	{
		trope145007* LOC7;
		TY503234 LOC8;
		LOC7 = 0;
		LOC7 = torope_145062(((NI64) ((*p).Labels)));
		unsureAsgnRef((void**) &(*result).R, con_145030(((NimStringDesc*) &TMP3267), LOC7));
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = gettypedesc_472091((*p).Module, t);
		LOC8[1] = (*result).R;
		linefmt_469102(p, ((NU8) 0), ((NimStringDesc*) &TMP3167), LOC8, 2);
	}
	LA1: ;
	(*result).K = ((NU8) 1);
	(*result).A = -1;
	unsureAsgnRef((void**) &(*result).T, getuniquetype_464401(t));
	(*result).S = ((NU8) 1);
	(*result).Flags = 0;
	constructloc_475202(p, &(*result), NIM_TRUE);
}

static N_INLINE(trope145007*, parentobj_474078)(trope145007* accessor) {
	trope145007* result;
	result = 0;
	{
		TY145497 LOC5;
		if (!!((gcmd_137113 == ((NU8) 2)))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = accessor;
		result = ropef_145079(((NimStringDesc*) &TMP3280), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		result = accessor;
	}
	LA1: ;
	return result;
}

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

N_NIMCALL(trope145007*, intliteral_476518)(NI64 i) {
	trope145007* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((-2147483647 -1) < i);
		if (!(LOC3)) goto LA4;
		LOC3 = (i <= 2147483647);
		LA4: ;
		if (!LOC3) goto LA5;
		result = torope_145062(i);
	}
	goto LA1;
	LA5: ;
	{
		TY469906 LOC10;
		if (!(i == (-2147483647 -1))) goto LA8;
		memset((void*)LOC10, 0, sizeof(LOC10));
		result = ropef_145079(((NimStringDesc*) &TMP3285), LOC10, 0);
	}
	goto LA1;
	LA8: ;
	{
		TY145497 LOC14;
		if (!((IL64(-9223372036854775807) - IL64(1)) < i)) goto LA12;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = torope_145062(i);
		result = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3286), LOC14, 1);
	}
	goto LA1;
	LA12: ;
	{
		TY469906 LOC16;
		memset((void*)LOC16, 0, sizeof(LOC16));
		result = ropef_145079(((NimStringDesc*) &TMP3287), LOC16, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope145007*, int32literal_488708)(NI i) {
	trope145007* result;
	result = 0;
	{
		TY469906 LOC5;
		if (!(i == (-2147483647 -1))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		result = ropef_145079(((NimStringDesc*) &TMP3285), LOC5, 0);
	}
	goto LA1;
	LA3: ;
	{
		result = torope_145062(((NI64) (i)));
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope145007*, getstrlit_488756)(tcgen465030* m, NimStringDesc* s) {
	trope145007* result;
	trope145007* LOC1;
	NI LOC2;
	trope145007* LOC3;
	TY470214 LOC4;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_468604(m, ((NimStringDesc*) &TMP3204));
	LOC2 = 0;
	LOC2 = backendid_187423();
	LOC3 = 0;
	LOC3 = torope_145062(((NI64) (LOC2)));
	result = con_145030(((NimStringDesc*) &TMP3291), LOC3);
	memset((void*)LOC4, 0, sizeof(LOC4));
	LOC4[0] = result;
	LOC4[1] = makecstring_163651(s);
	LOC4[2] = torope_145062(((NI64) (s->Sup.len)));
	appf_145085(&(*m).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3295), LOC4, 3);
	return result;
}

N_NIMCALL(trope145007*, genliteral_488767)(tcproc465026* p, tnode188803* n, ttype188837* ty) {
	trope145007* result;
	result = 0;
	{
		if (!(ty == NIM_NIL)) goto LA3;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3284));
	}
	LA3: ;
	switch ((*n).Kind) {
	case ((NU8) 5) ... ((NU8) 15):
	{
		ttype188837* LOC6;
		LOC6 = 0;
		LOC6 = skiptypes_192793(ty, IL64(211106242013440));
		switch ((*LOC6).Kind) {
		case ((NU8) 2):
		case ((NU8) 35):
		case ((NU8) 5):
		{
			result = intliteral_476518((*n).kindU.S1.Intval);
		}
		break;
		case ((NU8) 31):
		{
			{
				NIM_BOOL LOC11;
				LOC11 = 0;
				LOC11 = ((-2147483647 -1) <= (*n).kindU.S1.Intval);
				if (!(LOC11)) goto LA12;
				LOC11 = ((*n).kindU.S1.Intval <= 2147483647);
				LA12: ;
				if (!LOC11) goto LA13;
				result = int32literal_488708(((NI) (((NI32) ((*n).kindU.S1.Intval)))));
			}
			goto LA9;
			LA13: ;
			{
				result = intliteral_476518((*n).kindU.S1.Intval);
			}
			LA9: ;
		}
		break;
		case ((NU8) 1):
		{
			{
				TY469906 LOC21;
				if (!!(((*n).kindU.S1.Intval == 0))) goto LA19;
				memset((void*)LOC21, 0, sizeof(LOC21));
				result = ropef_145079(((NimStringDesc*) &TMP3288), LOC21, 0);
			}
			goto LA17;
			LA19: ;
			{
				TY469906 LOC23;
				memset((void*)LOC23, 0, sizeof(LOC23));
				result = ropef_145079(((NimStringDesc*) &TMP3289), LOC23, 0);
			}
			LA17: ;
		}
		break;
		default:
		{
			TY503234 LOC25;
			ttype188837* LOC26;
			memset((void*)LOC25, 0, sizeof(LOC25));
			LOC26 = 0;
			LOC26 = skiptypes_192793(ty, IL64(211106242013440));
			LOC25[0] = gettypedesc_472091((*p).Module, LOC26);
			LOC25[1] = intliteral_476518((*n).kindU.S1.Intval);
			result = ropef_145079(((NimStringDesc*) &TMP3290), LOC25, 2);
		}
		break;
		}
	}
	break;
	case ((NU8) 23):
	{
		ttype188837* t;
		t = skiptypes_192793(ty, IL64(211106242013440));
		{
			NIM_BOOL LOC30;
			NI id;
			trope145007* LOC34;
			LOC30 = 0;
			LOC30 = ((*t).Kind == ((NU8) 25));
			if (!(LOC30)) goto LA31;
			LOC30 = ((*t).Callconv == ((NU8) 8));
			LA31: ;
			if (!LOC30) goto LA32;
			id = nodetabletestorset_247911(&(*(*p).Module).Datacache, n, gbackendid_187008);
			LOC34 = 0;
			LOC34 = torope_145062(((NI64) (id)));
			result = con_145030(((NimStringDesc*) &TMP3291), LOC34);
			{
				TY503234 LOC39;
				if (!(id == gbackendid_187008)) goto LA37;
				gbackendid_187008 += 1;
				memset((void*)LOC39, 0, sizeof(LOC39));
				LOC39[0] = gettypedesc_472091((*p).Module, t);
				LOC39[1] = result;
				appf_145085(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3292), LOC39, 2);
			}
			LA37: ;
		}
		goto LA28;
		LA32: ;
		{
			result = torope_145058(((NimStringDesc*) &TMP3293));
		}
		LA28: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		{
			ttype188837* LOC44;
			NI id;
			LOC44 = 0;
			LOC44 = skiptypes_192793(ty, IL64(211106242013440));
			if (!((*LOC44).Kind == ((NU8) 28))) goto LA45;
			id = nodetabletestorset_247911(&(*(*p).Module).Datacache, n, gbackendid_187008);
			{
				TY145497 LOC51;
				if (!(id == gbackendid_187008)) goto LA49;
				memset((void*)LOC51, 0, sizeof(LOC51));
				LOC51[0] = getstrlit_488756((*p).Module, (*n).kindU.S3.Strval);
				result = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3294), LOC51, 1);
			}
			goto LA47;
			LA49: ;
			{
				TY145497 LOC53;
				memset((void*)LOC53, 0, sizeof(LOC53));
				LOC53[0] = torope_145062(((NI64) (id)));
				result = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3296), LOC53, 1);
			}
			LA47: ;
		}
		goto LA42;
		LA45: ;
		{
			result = makecstring_163651((*n).kindU.S3.Strval);
		}
		LA42: ;
	}
	break;
	case ((NU8) 16) ... ((NU8) 18):
	{
		NimStringDesc* LOC56;
		LOC56 = 0;
		LOC56 = tostrmaxprecision_196017((*n).kindU.S2.Floatval);
		result = torope_145058(LOC56);
	}
	break;
	default:
	{
		NimStringDesc* LOC58;
		LOC58 = 0;
		LOC58 = rawNewString(reprEnum((*n).Kind, (&NTI188023))->Sup.len + 12);
appendString(LOC58, ((NimStringDesc*) &TMP3301));
appendString(LOC58, reprEnum((*n).Kind, (&NTI188023)));
appendChar(LOC58, 41);
		internalerror_165591((*n).Info, LOC58);
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(trope145007*, genliteral_476522)(tcproc465026* p, tnode188803* n) {
	trope145007* result;
	result = 0;
	result = genliteral_488767(p, n, (*n).Typ);
	return result;
}

N_NIMCALL(void, gencaserange_473836)(tcproc465026* p, tnode188803* branch) {
	NI length;
	NI j_485902;
	NI HEX3Atmp_485996;
	NI res_485998;
	length = len_189264(branch);
	j_485902 = 0;
	HEX3Atmp_485996 = 0;
	HEX3Atmp_485996 = (NI32)(length - 2);
	res_485998 = 0;
	while (1) {
		if (!(res_485998 <= HEX3Atmp_485996)) goto LA1;
		j_485902 = res_485998;
		{
			tnode188803* LOC4;
			LOC4 = 0;
			LOC4 = HEX5BHEX5D_189694(branch, j_485902);
			if (!((*LOC4).Kind == ((NU8) 44))) goto LA5;
			{
				TY503234 LOC11;
				tnode188803* LOC12;
				tnode188803* LOC13;
				tnode188803* LOC14;
				tnode188803* LOC15;
				if (!((cc_169402[(ccompiler_169425)- 1].Field20 &(1<<((((NU8) 0))&7)))!=0)) goto LA9;
				memset((void*)LOC11, 0, sizeof(LOC11));
				LOC12 = 0;
				LOC12 = HEX5BHEX5D_189694(branch, j_485902);
				LOC13 = 0;
				LOC13 = HEX5BHEX5D_189694(LOC12, 0);
				LOC11[0] = genliteral_476522(p, LOC13);
				LOC14 = 0;
				LOC14 = HEX5BHEX5D_189694(branch, j_485902);
				LOC15 = 0;
				LOC15 = HEX5BHEX5D_189694(LOC14, 1);
				LOC11[1] = genliteral_476522(p, LOC15);
				linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3283), LOC11, 2);
			}
			goto LA7;
			LA9: ;
			{
				tnode188803* v;
				tnode188803* LOC17;
				tnode188803* LOC18;
				LOC17 = 0;
				LOC17 = HEX5BHEX5D_189694(branch, j_485902);
				LOC18 = 0;
				LOC18 = HEX5BHEX5D_189694(LOC17, 0);
				v = copynode_189233(LOC18);
				while (1) {
					tnode188803* LOC20;
					tnode188803* LOC21;
					TY145497 LOC22;
					LOC20 = 0;
					LOC20 = HEX5BHEX5D_189694(branch, j_485902);
					LOC21 = 0;
					LOC21 = HEX5BHEX5D_189694(LOC20, 1);
					if (!((*v).kindU.S1.Intval <= (*LOC21).kindU.S1.Intval)) goto LA19;
					memset((void*)LOC22, 0, sizeof(LOC22));
					LOC22[0] = genliteral_476522(p, v);
					linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3302), LOC22, 1);
					(*v).kindU.S1.Intval += 1;
				} LA19: ;
			}
			LA7: ;
		}
		goto LA2;
		LA5: ;
		{
			TY145497 LOC24;
			tnode188803* LOC25;
			memset((void*)LOC24, 0, sizeof(LOC24));
			LOC25 = 0;
			LOC25 = HEX5BHEX5D_189694(branch, j_485902);
			LOC24[0] = genliteral_476522(p, LOC25);
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3302), LOC24, 1);
		}
		LA2: ;
		res_485998 += 1;
	} LA1: ;
}

N_NIMCALL(void, gentraverseproc_473846)(ttraversalclosure473827* c, trope145007* accessor, tnode188803* n) {
	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).Kind) {
	case ((NU8) 136):
	{
		NI i_473881;
		NI HEX3Atmp_474067;
		NI LOC6;
		NI res_474069;
		i_473881 = 0;
		HEX3Atmp_474067 = 0;
		LOC6 = 0;
		LOC6 = sonslen_189181(n);
		HEX3Atmp_474067 = (NI32)(LOC6 - 1);
		res_474069 = 0;
		while (1) {
			if (!(res_474069 <= HEX3Atmp_474067)) goto LA7;
			i_473881 = res_474069;
			gentraverseproc_473846(c, accessor, (*n).kindU.S6.Sons->data[i_473881]);
			res_474069 += 1;
		} LA7: ;
	}
	break;
	case ((NU8) 137):
	{
		tcproc465026* p;
		tsym188833* disc;
		TY503234 LOC13;
		NI i_473965;
		NI HEX3Atmp_474071;
		NI LOC14;
		NI res_474073;
		TY469906 LOC24;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA11;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3281));
		}
		LA11: ;
		p = (*c).P;
		disc = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = accessor;
		LOC13[1] = (*disc).Loc.R;
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3282), LOC13, 2);
		i_473965 = 0;
		HEX3Atmp_474071 = 0;
		LOC14 = 0;
		LOC14 = sonslen_189181(n);
		HEX3Atmp_474071 = (NI32)(LOC14 - 1);
		res_474073 = 1;
		while (1) {
			tnode188803* branch;
			tnode188803* LOC22;
			TY469906 LOC23;
			if (!(res_474073 <= HEX3Atmp_474071)) goto LA15;
			i_473965 = res_474073;
			branch = (*n).kindU.S6.Sons->data[i_473965];
			{
				if (!((*branch).Kind == ((NU8) 85))) goto LA18;
				gencaserange_473836((*c).P, branch);
			}
			goto LA16;
			LA18: ;
			{
				TY469906 LOC21;
				memset((void*)LOC21, 0, sizeof(LOC21));
				linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3303), LOC21, 0);
			}
			LA16: ;
			LOC22 = 0;
			LOC22 = lastson_189189(branch);
			gentraverseproc_473846(c, accessor, LOC22);
			memset((void*)LOC23, 0, sizeof(LOC23));
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3304), LOC23, 0);
			res_474073 += 1;
		} LA15: ;
		memset((void*)LOC24, 0, sizeof(LOC24));
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3305), LOC24, 0);
	}
	break;
	case ((NU8) 3):
	{
		tsym188833* field;
		TY503234 LOC30;
		trope145007* LOC31;
		field = (*n).kindU.S4.Sym;
		{
			if (!((*field).Loc.T == NIM_NIL)) goto LA28;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3306));
		}
		LA28: ;
		memset((void*)LOC30, 0, sizeof(LOC30));
		LOC30[0] = accessor;
		LOC30[1] = (*field).Loc.R;
		LOC31 = 0;
		LOC31 = ropef_145079(((NimStringDesc*) &TMP3211), LOC30, 2);
		gentraverseproc_473830(c, LOC31, (*field).Loc.T);
	}
	break;
	default:
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3306));
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, linecg_469093)(tcproc465026* p, NU8 s, NimStringDesc* frmt, trope145007** args, NI argsLen0) {
	trope145007** LOC1;
	trope145007* LOC2;
	trope145007* LOC3;
	LOC1 = 0;
	LOC1 = s_465173(p, s);
	LOC2 = 0;
	LOC2 = ropecg_468609((*p).Module, frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_469033(p, LOC2);
	app_145040(LOC1, LOC3);
}

N_NIMCALL(void, gentraverseproc_473830)(ttraversalclosure473827* c, trope145007* accessor, ttype188837* typ_473835) {
	tcproc465026* p;
	{
		if (!(typ_473835 == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	p = (*c).P;
	switch ((*typ_473835).Kind) {
	case ((NU8) 11):
	case ((NU8) 10):
	case ((NU8) 8):
	{
		ttype188837* LOC6;
		LOC6 = 0;
		LOC6 = lastson_189193(typ_473835);
		gentraverseproc_473830(c, accessor, LOC6);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		NI64 arraysize;
		tloc188817 i;
		ttype188837* LOC8;
		TY503234 LOC9;
		TY503234 LOC10;
		trope145007* LOC11;
		TY469906 LOC12;
		arraysize = lengthord_223010((*typ_473835).Sons->data[0]);
		memset((void*)&i, 0, sizeof(i));
		LOC8 = 0;
		LOC8 = getsystype_242024(((NU8) 31));
		gettemp_473840(p, LOC8, &i);
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = i.R;
		LOC9[1] = torope_145062(arraysize);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3278), LOC9, 2);
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC10[0] = accessor;
		LOC10[1] = i.R;
		LOC11 = 0;
		LOC11 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3254), LOC10, 2);
		gentraverseproc_473830(c, LOC11, (*typ_473835).Sons->data[1]);
		memset((void*)LOC12, 0, sizeof(LOC12));
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3279), LOC12, 0);
	}
	break;
	case ((NU8) 17):
	{
		NI i_474150;
		NI HEX3Atmp_474208;
		NI LOC14;
		NI res_474210;
		i_474150 = 0;
		HEX3Atmp_474208 = 0;
		LOC14 = 0;
		LOC14 = sonslen_189185(typ_473835);
		HEX3Atmp_474208 = (NI32)(LOC14 - 1);
		res_474210 = 0;
		while (1) {
			trope145007* LOC16;
			if (!(res_474210 <= HEX3Atmp_474208)) goto LA15;
			i_474150 = res_474210;
			LOC16 = 0;
			LOC16 = parentobj_474078(accessor);
			gentraverseproc_473830(c, LOC16, (*typ_473835).Sons->data[i_474150]);
			res_474210 += 1;
		} LA15: ;
		{
			if (!!(((*typ_473835).N == NIM_NIL))) goto LA19;
			gentraverseproc_473846(c, accessor, (*typ_473835).N);
		}
		LA19: ;
	}
	break;
	case ((NU8) 18):
	{
		ttype188837* typ;
		NI i_474181;
		NI HEX3Atmp_474212;
		NI LOC22;
		NI res_474214;
		typ = getuniquetype_464401(typ_473835);
		i_474181 = 0;
		HEX3Atmp_474212 = 0;
		LOC22 = 0;
		LOC22 = sonslen_189185(typ);
		HEX3Atmp_474212 = (NI32)(LOC22 - 1);
		res_474214 = 0;
		while (1) {
			TY503234 LOC24;
			trope145007* LOC25;
			if (!(res_474214 <= HEX3Atmp_474212)) goto LA23;
			i_474181 = res_474214;
			memset((void*)LOC24, 0, sizeof(LOC24));
			LOC24[0] = accessor;
			LOC24[1] = torope_145062(((NI64) (i_474181)));
			LOC25 = 0;
			LOC25 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3307), LOC24, 2);
			gentraverseproc_473830(c, LOC25, (*typ).Sons->data[i_474181]);
			res_474214 += 1;
		} LA23: ;
	}
	break;
	case ((NU8) 22):
	case ((NU8) 28):
	case ((NU8) 24):
	{
		TY145497 LOC27;
		memset((void*)LOC27, 0, sizeof(LOC27));
		LOC27[0] = accessor;
		linecg_469093(p, ((NU8) 2), (*c).Visitorfrmt, LOC27, 1);
	}
	break;
	case ((NU8) 25):
	{
		{
			TY145497 LOC33;
			TY145497 LOC34;
			if (!((*typ_473835).Callconv == ((NU8) 8))) goto LA31;
			memset((void*)LOC33, 0, sizeof(LOC33));
			memset((void*)LOC34, 0, sizeof(LOC34));
			LOC34[0] = accessor;
			LOC33[0] = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3308), LOC34, 1);
			linecg_469093(p, ((NU8) 2), (*c).Visitorfrmt, LOC33, 1);
		}
		LA31: ;
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, gentraverseprocseq_474219)(ttraversalclosure473827* c, trope145007* accessor, ttype188837* typ) {
	tcproc465026* p;
	tloc188817 i;
	ttype188837* LOC1;
	TY470214 LOC2;
	NimStringDesc* LOC3;
	TY503234 LOC9;
	trope145007* LOC10;
	TY469906 LOC11;
	p = (*c).P;
	memset((void*)&i, 0, sizeof(i));
	LOC1 = 0;
	LOC1 = getsystype_242024(((NU8) 31));
	gettemp_473840(p, LOC1, &i);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = i.R;
	LOC2[1] = accessor;
	LOC3 = 0;
	{
		if (!!((gcmd_137113 == ((NU8) 2)))) goto LA6;
		LOC3 = copyString(((NimStringDesc*) &TMP3276));
	}
	goto LA4;
	LA6: ;
	{
		LOC3 = copyString(((NimStringDesc*) &TMP3277));
	}
	LA4: ;
	LOC2[2] = torope_145058(LOC3);
	linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3275), LOC2, 3);
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC9[0] = accessor;
	LOC9[1] = i.R;
	LOC10 = 0;
	LOC10 = ropef_145079(((NimStringDesc*) &TMP3309), LOC9, 2);
	gentraverseproc_473830(c, LOC10, (*typ).Sons->data[0]);
	memset((void*)LOC11, 0, sizeof(LOC11));
	linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3279), LOC11, 0);
}

N_NIMCALL(trope145007*, gentraverseproc_474429)(tcgen465030* m, ttype188837* typ, NU8 reason) {
	trope145007* result;
	ttraversalclosure473827 c;
	tcproc465026* p;
	trope145007* header;
	TY145497 LOC3;
	trope145007* t;
	TY145497 LOC4;
	TY145497 LOC5;
	trope145007* generatedproc;
	TY471942 LOC20;
	trope145007** LOC21;
	trope145007** LOC22;
	trope145007** LOC23;
	TY145497 LOC24;
	result = 0;
	memset((void*)&c, 0, sizeof(c));
	p = newproc_465208(NIM_NIL, m);
	result = getglobaltempname_470376();
	switch (reason) {
	case ((NU8) 0):
	{
		c.Visitorfrmt = copyString(((NimStringDesc*) &TMP3262));
	}
	break;
	default:
	{
	}
	break;
	}
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = result;
	header = ropef_145079(((NimStringDesc*) &TMP3263), LOC3, 1);
	t = gettypedesc_472091(m, typ);
	memset((void*)LOC4, 0, sizeof(LOC4));
	LOC4[0] = t;
	linef_469084(p, ((NU8) 0), ((NimStringDesc*) &TMP3264), LOC4, 1);
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = t;
	linef_469084(p, ((NU8) 1), ((NimStringDesc*) &TMP3265), LOC5, 1);
	c.P = p;
	{
		trope145007* LOC10;
		if (!((*typ).Kind == ((NU8) 24))) goto LA8;
		LOC10 = 0;
		LOC10 = torope_145058(((NimStringDesc*) &TMP3310));
		gentraverseprocseq_474219(&c, LOC10, typ);
	}
	goto LA6;
	LA8: ;
	{
		{
			ttype188837* LOC14;
			trope145007* LOC17;
			LOC14 = 0;
			LOC14 = skiptypes_192793((*typ).Sons->data[0], IL64(211106232576256));
			if (!((*LOC14).Kind == ((NU8) 4) || (*LOC14).Kind == ((NU8) 16))) goto LA15;
			LOC17 = 0;
			LOC17 = torope_145058(((NimStringDesc*) &TMP3310));
			gentraverseproc_473830(&c, LOC17, (*typ).Sons->data[0]);
		}
		goto LA12;
		LA15: ;
		{
			trope145007* LOC19;
			LOC19 = 0;
			LOC19 = torope_145058(((NimStringDesc*) &TMP3311));
			gentraverseproc_473830(&c, LOC19, (*typ).Sons->data[0]);
		}
		LA12: ;
	}
	LA6: ;
	memset((void*)LOC20, 0, sizeof(LOC20));
	LOC20[0] = header;
	LOC21 = 0;
	LOC21 = s_465173(p, ((NU8) 0));
	unsureAsgnRef((void**) &LOC20[1], (*LOC21));
	LOC22 = 0;
	LOC22 = s_465173(p, ((NU8) 1));
	unsureAsgnRef((void**) &LOC20[2], (*LOC22));
	LOC23 = 0;
	LOC23 = s_465173(p, ((NU8) 2));
	unsureAsgnRef((void**) &LOC20[3], (*LOC23));
	generatedproc = ropef_145079(((NimStringDesc*) &TMP3312), LOC20, 4);
	memset((void*)LOC24, 0, sizeof(LOC24));
	LOC24[0] = header;
	appf_145085(&(*m).S[(((NU8) 7))- 0], ((NimStringDesc*) &TMP3236), LOC24, 1);
	app_145040(&(*m).S[(((NU8) 10))- 0], generatedproc);
	return result;
}

N_NIMCALL(void, genarrayinfo_473808)(tcgen465030* m, ttype188837* typ, trope145007* name) {
	trope145007* LOC1;
	LOC1 = 0;
	LOC1 = gentypeinfo_472392(m, (*typ).Sons->data[1]);
	gentypeinfoauxbase_472645(m, typ, name, LOC1);
}

N_NIMCALL(void, gensetinfo_473720)(tcgen465030* m, ttype188837* typ, trope145007* name) {
	trope145007* tmp;
	TY470214 LOC1;
	NI64 LOC2;
	gentypeinfoaux_472701(m, typ, name);
	tmp = getnimnode_472396(m);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = tmp;
	LOC2 = 0;
	LOC2 = firstord_223002(typ);
	LOC1[1] = torope_145062(LOC2);
	LOC1[2] = name;
	appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3314), LOC1, 3);
}

N_NIMCALL(void, genenuminfo_473498)(tcgen465030* m, ttype188837* typ, trope145007* name) {
	trope145007* nodeptrs;
	NI length;
	TY503234 LOC1;
	trope145007* enumnames;
	trope145007* specialcases;
	NI firstnimnode;
	NIM_BOOL hasholes;
	NI i_473526;
	NI HEX3Atmp_473714;
	NI res_473716;
	trope145007* enumarray;
	trope145007* counter;
	TY145497 LOC22;
	TY470214 LOC23;
	TY473698 LOC24;
	TY471942 LOC25;
	gentypeinfoaux_472701(m, typ, name);
	nodeptrs = gettempname_470368();
	length = sonslen_189181((*typ).N);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = nodeptrs;
	LOC1[1] = torope_145062(((NI64) (length)));
	appf_145085(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3255), LOC1, 2);
	enumnames = 0;
	specialcases = 0;
	firstnimnode = (*m).Typenodes;
	hasholes = NIM_FALSE;
	i_473526 = 0;
	HEX3Atmp_473714 = 0;
	HEX3Atmp_473714 = (NI32)(length - 1);
	res_473716 = 0;
	while (1) {
		tsym188833* field;
		trope145007* elemnode;
		if (!(res_473716 <= HEX3Atmp_473714)) goto LA2;
		i_473526 = res_473716;
		field = (*(*(*typ).N).kindU.S6.Sons->data[i_473526]).kindU.S4.Sym;
		elemnode = getnimnode_472396(m);
		{
			trope145007* LOC7;
			if (!((*field).Ast == NIM_NIL)) goto LA5;
			LOC7 = 0;
			LOC7 = makecstring_163651((*(*field).Name).S);
			app_145040(&enumnames, LOC7);
		}
		goto LA3;
		LA5: ;
		{
			trope145007* LOC9;
			LOC9 = 0;
			LOC9 = makecstring_163651((*(*field).Ast).kindU.S3.Strval);
			app_145040(&enumnames, LOC9);
		}
		LA3: ;
		{
			NimStringDesc* LOC14;
			if (!(i_473526 < (NI32)(length - 1))) goto LA12;
			LOC14 = 0;
			LOC14 = rawNewString(tnl_142593->Sup.len + 2);
appendString(LOC14, ((NimStringDesc*) &TMP3178));
appendString(LOC14, tnl_142593);
			app_145046(&enumnames, LOC14);
		}
		LA12: ;
		{
			NIM_BOOL LOC17;
			TY503234 LOC21;
			LOC17 = 0;
			LOC17 = !(((*field).Position == i_473526));
			if (LOC17) goto LA18;
			LOC17 = (((*typ).Flags &(1<<((((NU8) 5))&31)))!=0);
			LA18: ;
			if (!LOC17) goto LA19;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = elemnode;
			LOC21[1] = torope_145062(((NI64) ((*field).Position)));
			appf_145085(&specialcases, ((NimStringDesc*) &TMP3315), LOC21, 2);
			hasholes = NIM_TRUE;
		}
		LA19: ;
		res_473716 += 1;
	} LA2: ;
	enumarray = gettempname_470368();
	counter = gettempname_470368();
	memset((void*)LOC22, 0, sizeof(LOC22));
	LOC22[0] = counter;
	appf_145085(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3316), LOC22, 1);
	memset((void*)LOC23, 0, sizeof(LOC23));
	LOC23[0] = enumarray;
	LOC23[1] = torope_145062(((NI64) (length)));
	LOC23[2] = enumnames;
	appf_145085(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3317), LOC23, 3);
	memset((void*)LOC24, 0, sizeof(LOC24));
	LOC24[0] = counter;
	LOC24[1] = torope_145062(((NI64) (length)));
	LOC24[2] = (*m).Typenodesname;
	LOC24[3] = torope_145062(((NI64) (firstnimnode)));
	LOC24[4] = enumarray;
	LOC24[5] = nodeptrs;
	appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3318), LOC24, 6);
	app_145040(&(*m).S[(((NU8) 14))- 0], specialcases);
	memset((void*)LOC25, 0, sizeof(LOC25));
	LOC25[0] = getnimnode_472396(m);
	LOC25[1] = torope_145062(((NI64) (length)));
	LOC25[2] = nodeptrs;
	LOC25[3] = name;
	appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3319), LOC25, 4);
	{
		TY145497 LOC30;
		if (!hasholes) goto LA28;
		memset((void*)LOC30, 0, sizeof(LOC30));
		LOC30[0] = name;
		appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3320), LOC30, 1);
	}
	LA28: ;
}

N_NIMCALL(trope145007*, discriminatortablename_472727)(tcgen465030* m, ttype188837* objtype_472730, tsym188833* d) {
	trope145007* result;
	ttype188837* objtype;
	TY503234 LOC7;
	NimStringDesc* LOC8;
	NimStringDesc* LOC9;
	result = 0;
	objtype = objtype_472730;
	while (1) {
		tsym188833* LOC2;
		LOC2 = 0;
		LOC2 = lookupinrecord_197178((*objtype).N, (*d).Name);
		if (!(LOC2 == NIM_NIL)) goto LA1;
		objtype = (*objtype).Sons->data[0];
	} LA1: ;
	{
		if (!((*objtype).Sym == NIM_NIL)) goto LA5;
		internalerror_165591((*d).Info, ((NimStringDesc*) &TMP3324));
	}
	LA5: ;
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC8 = 0;
	LOC8 = mangle_469704((*(*(*objtype).Sym).Name).S);
	LOC7[0] = torope_145058(LOC8);
	LOC9 = 0;
	LOC9 = mangle_469704((*(*d).Name).S);
	LOC7[1] = torope_145058(LOC9);
	result = ropef_145079(((NimStringDesc*) &TMP3325), LOC7, 2);
	return result;
}

N_NIMCALL(void, genobjectfields_472786)(tcgen465030* m, ttype188837* typ, tnode188803* n, trope145007* expr) {
	switch ((*n).Kind) {
	case ((NU8) 136):
	{
		NI l;
		l = sonslen_189181(n);
		{
			if (!(l == 1)) goto LA4;
			genobjectfields_472786(m, typ, (*n).kindU.S6.Sons->data[0], expr);
		}
		goto LA2;
		LA4: ;
		{
			trope145007* tmp;
			TY503234 LOC9;
			NI i_472826;
			NI HEX3Atmp_473400;
			NI res_473402;
			TY470214 LOC12;
			if (!(0 < l)) goto LA7;
			tmp = gettempname_470368();
			memset((void*)LOC9, 0, sizeof(LOC9));
			LOC9[0] = tmp;
			LOC9[1] = torope_145062(((NI64) (l)));
			appf_145085(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3255), LOC9, 2);
			i_472826 = 0;
			HEX3Atmp_473400 = 0;
			HEX3Atmp_473400 = (NI32)(l - 1);
			res_473402 = 0;
			while (1) {
				trope145007* tmp2;
				TY470214 LOC11;
				if (!(res_473402 <= HEX3Atmp_473400)) goto LA10;
				i_472826 = res_473402;
				tmp2 = getnimnode_472396(m);
				memset((void*)LOC11, 0, sizeof(LOC11));
				LOC11[0] = tmp;
				LOC11[1] = torope_145062(((NI64) (i_472826)));
				LOC11[2] = tmp2;
				appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3256), LOC11, 3);
				genobjectfields_472786(m, typ, (*n).kindU.S6.Sons->data[i_472826], tmp2);
				res_473402 += 1;
			} LA10: ;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = expr;
			LOC12[1] = torope_145062(((NI64) (l)));
			LOC12[2] = tmp;
			appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3258), LOC12, 3);
		}
		goto LA2;
		LA7: ;
		{
			TY503234 LOC14;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = expr;
			LOC14[1] = torope_145062(((NI64) (l)));
			appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3259), LOC14, 2);
		}
		LA2: ;
	}
	break;
	case ((NU8) 137):
	{
		tsym188833* field;
		trope145007* tmp;
		NI64 l;
		TY473203 LOC16;
		TY503234 LOC17;
		NI i_473223;
		NI HEX3Atmp_473408;
		NI LOC18;
		NI res_473410;
		field = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		tmp = discriminatortablename_472727(m, typ, field);
		l = lengthord_223010((*field).Typ);
		memset((void*)LOC16, 0, sizeof(LOC16));
		LOC16[0] = expr;
		LOC16[1] = gettypedesc_472091(m, typ);
		LOC16[2] = (*field).Loc.R;
		LOC16[3] = gentypeinfo_472392(m, (*field).Typ);
		LOC16[4] = makecstring_163651((*(*field).Name).S);
		LOC16[5] = tmp;
		LOC16[6] = torope_145062(l);
		appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3326), LOC16, 7);
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = tmp;
		LOC17[1] = torope_145062((NI64)(l + 1));
		appf_145085(&(*m).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3327), LOC17, 2);
		i_473223 = 0;
		HEX3Atmp_473408 = 0;
		LOC18 = 0;
		LOC18 = sonslen_189181(n);
		HEX3Atmp_473408 = (NI32)(LOC18 - 1);
		res_473410 = 1;
		while (1) {
			tnode188803* b;
			trope145007* tmp2;
			tnode188803* LOC20;
			if (!(res_473410 <= HEX3Atmp_473408)) goto LA19;
			i_473223 = res_473410;
			b = (*n).kindU.S6.Sons->data[i_473223];
			tmp2 = getnimnode_472396(m);
			LOC20 = 0;
			LOC20 = lastson_189189(b);
			genobjectfields_472786(m, typ, LOC20, tmp2);
			switch ((*b).Kind) {
			case ((NU8) 85):
			{
				NI j_473253;
				NI HEX3Atmp_473404;
				NI LOC27;
				NI res_473406;
				{
					NI LOC24;
					LOC24 = 0;
					LOC24 = sonslen_189181(b);
					if (!(LOC24 < 2)) goto LA25;
					internalerror_165591((*b).Info, ((NimStringDesc*) &TMP3328));
				}
				LA25: ;
				j_473253 = 0;
				HEX3Atmp_473404 = 0;
				LOC27 = 0;
				LOC27 = sonslen_189181(b);
				HEX3Atmp_473404 = (NI32)(LOC27 - 2);
				res_473406 = 0;
				while (1) {
					if (!(res_473406 <= HEX3Atmp_473404)) goto LA28;
					j_473253 = res_473406;
					{
						NI x;
						NI64 LOC33;
						NI y;
						NI64 LOC34;
						if (!((*(*b).kindU.S6.Sons->data[j_473253]).Kind == ((NU8) 44))) goto LA31;
						LOC33 = 0;
						LOC33 = getordvalue_223150((*(*b).kindU.S6.Sons->data[j_473253]).kindU.S6.Sons->data[0]);
						x = ((NI) (LOC33));
						LOC34 = 0;
						LOC34 = getordvalue_223150((*(*b).kindU.S6.Sons->data[j_473253]).kindU.S6.Sons->data[1]);
						y = ((NI) (LOC34));
						while (1) {
							TY470214 LOC36;
							if (!(x <= y)) goto LA35;
							memset((void*)LOC36, 0, sizeof(LOC36));
							LOC36[0] = tmp;
							LOC36[1] = torope_145062(((NI64) (x)));
							LOC36[2] = tmp2;
							appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3256), LOC36, 3);
							x += 1;
						} LA35: ;
					}
					goto LA29;
					LA31: ;
					{
						TY470214 LOC38;
						NI64 LOC39;
						memset((void*)LOC38, 0, sizeof(LOC38));
						LOC38[0] = tmp;
						LOC39 = 0;
						LOC39 = getordvalue_223150((*b).kindU.S6.Sons->data[j_473253]);
						LOC38[1] = torope_145062(LOC39);
						LOC38[2] = tmp2;
						appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3256), LOC38, 3);
					}
					LA29: ;
					res_473406 += 1;
				} LA28: ;
			}
			break;
			case ((NU8) 88):
			{
				TY470214 LOC41;
				memset((void*)LOC41, 0, sizeof(LOC41));
				LOC41[0] = tmp;
				LOC41[1] = torope_145062(l);
				LOC41[2] = tmp2;
				appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3256), LOC41, 3);
			}
			break;
			default:
			{
				internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3329));
			}
			break;
			}
			res_473410 += 1;
		} LA19: ;
	}
	break;
	case ((NU8) 3):
	{
		tsym188833* field;
		TY473397 LOC44;
		field = (*n).kindU.S4.Sym;
		memset((void*)LOC44, 0, sizeof(LOC44));
		LOC44[0] = expr;
		LOC44[1] = gettypedesc_472091(m, typ);
		LOC44[2] = (*field).Loc.R;
		LOC44[3] = gentypeinfo_472392(m, (*field).Typ);
		LOC44[4] = makecstring_163651((*(*field).Name).S);
		appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3330), LOC44, 5);
	}
	break;
	default:
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3331));
	}
	break;
	}
}

N_NIMCALL(void, genobjectinfo_473417)(tcgen465030* m, ttype188837* typ, trope145007* name) {
	trope145007* tmp;
	TY503234 LOC7;
	{
		if (!((*typ).Kind == ((NU8) 17))) goto LA3;
		gentypeinfoaux_472701(m, typ, name);
	}
	goto LA1;
	LA3: ;
	{
		trope145007* LOC6;
		LOC6 = 0;
		LOC6 = torope_145058(((NimStringDesc*) &TMP3155));
		gentypeinfoauxbase_472645(m, typ, name, LOC6);
	}
	LA1: ;
	tmp = getnimnode_472396(m);
	genobjectfields_472786(m, typ, (*typ).N, tmp);
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = name;
	LOC7[1] = tmp;
	appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3260), LOC7, 2);
}

N_NIMCALL(trope145007*, gentypeinfo_472392)(tcgen465030* m, ttype188837* t_472395) {
	trope145007* result;
	ttype188837* t;
	TY145497 LOC1;
	tsym188833* owner;
	ttype188837* LOC8;
	TY470214 LOC45;
	result = 0;
	t = getuniquetype_464401(t_472395);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = torope_145062(((NI64) ((*t).Sup.Id)));
	result = ropef_145079(((NimStringDesc*) &TMP3244), LOC1, 1);
	{
		NIM_BOOL LOC4;
		TY470214 LOC7;
		LOC4 = 0;
		LOC4 = containsorincl_185888(&(*m).Typeinfomarker, (*t).Sup.Id);
		if (!LOC4) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = torope_145058(((NimStringDesc*) &TMP3245));
		LOC7[1] = result;
		LOC7[2] = torope_145058(((NimStringDesc*) &TMP3187));
		result = con_145035(LOC7, 3);
		goto BeforeRet;
	}
	LA5: ;
	LOC8 = 0;
	LOC8 = skiptypes_192793(t, IL64(211106247256320));
	owner = getmodule_197183((*LOC8).Owner);
	{
		tcgen465030* LOC13;
		trope145007* LOC14;
		trope145007* LOC15;
		trope145007* LOC16;
		TY503234 LOC17;
		NimStringDesc* LOC18;
		TY470214 LOC19;
		if (!!((owner == (*m).Module))) goto LA11;
		LOC13 = 0;
		LOC13 = bmod_465202(owner);
		LOC14 = 0;
		LOC14 = gentypeinfo_472392(LOC13, t);
		LOC15 = 0;
		LOC15 = cgsym_468604(m, ((NimStringDesc*) &TMP3246));
		LOC16 = 0;
		LOC16 = cgsym_468604(m, ((NimStringDesc*) &TMP3247));
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = result;
		LOC18 = 0;
		LOC18 = typetostring_223020(t, ((NU8) 0));
		LOC17[1] = torope_145058(LOC18);
		appf_145085(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3248), LOC17, 2);
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = torope_145058(((NimStringDesc*) &TMP3245));
		LOC19[1] = result;
		LOC19[2] = torope_145058(((NimStringDesc*) &TMP3187));
		result = con_145035(LOC19, 3);
		goto BeforeRet;
	}
	LA11: ;
	switch ((*t).Kind) {
	case ((NU8) 3):
	{
		result = torope_145058(((NimStringDesc*) &TMP3249));
	}
	break;
	case ((NU8) 26):
	case ((NU8) 1):
	case ((NU8) 2):
	case ((NU8) 29):
	case ((NU8) 28):
	case ((NU8) 31) ... ((NU8) 44):
	case ((NU8) 23):
	{
		trope145007* LOC22;
		LOC22 = 0;
		LOC22 = torope_145058(((NimStringDesc*) &TMP3249));
		gentypeinfoauxbase_472645(m, t, result, LOC22);
	}
	break;
	case ((NU8) 25):
	{
		{
			trope145007* LOC28;
			if (!!(((*t).Callconv == ((NU8) 8)))) goto LA26;
			LOC28 = 0;
			LOC28 = torope_145058(((NimStringDesc*) &TMP3249));
			gentypeinfoauxbase_472645(m, t, result, LOC28);
		}
		goto LA24;
		LA26: ;
		{
			ttype188837* LOC30;
			LOC30 = 0;
			LOC30 = fakeclosuretype_473814((*t).Owner);
			gentupleinfo_473438(m, LOC30, result);
		}
		LA24: ;
	}
	break;
	case ((NU8) 24):
	case ((NU8) 22):
	{
		gentypeinfoaux_472701(m, t, result);
		{
			trope145007* markerproc;
			TY503234 LOC36;
			if (!(((NU8) 2) <= gselectedgc_137114)) goto LA34;
			markerproc = gentraverseproc_474429(m, t, ((NU8) 0));
			memset((void*)LOC36, 0, sizeof(LOC36));
			LOC36[0] = result;
			LOC36[1] = markerproc;
			appf_145085(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3313), LOC36, 2);
		}
		LA34: ;
	}
	break;
	case ((NU8) 21):
	case ((NU8) 20):
	{
		gentypeinfoaux_472701(m, t, result);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		genarrayinfo_473808(m, t, result);
	}
	break;
	case ((NU8) 19):
	{
		gensetinfo_473720(m, t, result);
	}
	break;
	case ((NU8) 14):
	{
		genenuminfo_473498(m, t, result);
	}
	break;
	case ((NU8) 17):
	{
		genobjectinfo_473417(m, t, result);
	}
	break;
	case ((NU8) 18):
	{
		gentupleinfo_473438(m, t, result);
	}
	break;
	default:
	{
		NimStringDesc* LOC44;
		LOC44 = 0;
		LOC44 = rawNewString(reprEnum((*t).Kind, (&NTI188240))->Sup.len + 13);
appendString(LOC44, ((NimStringDesc*) &TMP3332));
appendString(LOC44, reprEnum((*t).Kind, (&NTI188240)));
appendChar(LOC44, 41);
		internalerror_165606(LOC44);
	}
	break;
	}
	memset((void*)LOC45, 0, sizeof(LOC45));
	LOC45[0] = torope_145058(((NimStringDesc*) &TMP3245));
	LOC45[1] = result;
	LOC45[2] = torope_145058(((NimStringDesc*) &TMP3187));
	result = con_145035(LOC45, 3);
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, localdebuginfo_475669)(tcproc465026* p, tsym188833* s) {
	trope145007* a;
	TY471942 LOC16;
	NimStringDesc* LOC17;
	{
		if (!!(((163840 & (*p).Options) == 163840))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		ttype188837* LOC7;
		LOC7 = 0;
		LOC7 = skiptypes_192793((*s).Typ, IL64(211106240964864));
		if (!((*LOC7).Kind == ((NU8) 27) || (*LOC7).Kind == ((NU8) 48))) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	a = con_145030(((NimStringDesc*) &TMP3242), (*s).Loc.R);
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = ((*s).Kind == ((NU8) 3));
		if (!(LOC12)) goto LA13;
		LOC12 = ccgintroducedptr_470384(s);
		LA13: ;
		if (!LOC12) goto LA14;
		a = (*s).Loc.R;
	}
	LA14: ;
	memset((void*)LOC16, 0, sizeof(LOC16));
	LOC16[0] = torope_145062(((NI64) ((*p).Maxframelen)));
	LOC17 = 0;
	LOC17 = nsuNormalize((*(*s).Name).S);
	LOC16[1] = makecstring_163651(LOC17);
	LOC16[2] = a;
	LOC16[3] = gentypeinfo_472392((*p).Module, (*s).Loc.T);
	linef_469084(p, ((NU8) 1), ((NimStringDesc*) &TMP3243), LOC16, 4);
	(*p).Maxframelen += 1;
	(*p).Blocks->data[(NI32)((*p).Blocks->Sup.len - 1)].Framelen += 1;
	BeforeRet: ;
}

N_NIMCALL(void, assignlocalvar_475781)(tcproc465026* p, tsym188833* s) {
	trope145007* decl;
	{
		trope145007* LOC5;
		if (!((*s).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_469870(s);
		fillloc_468351(&(*s).Loc, ((NU8) 2), (*s).Typ, LOC5, ((NU8) 1));
		{
			if (!((*s).Kind == ((NU8) 9))) goto LA8;
			(*s).Loc.Flags |=((NI8)(1)<<((((NU8) 2))%(sizeof(NI8)*8)));
		}
		LA8: ;
	}
	LA3: ;
	decl = gettypedesc_472091((*p).Module, (*s).Loc.T);
	{
		TY145497 LOC24;
		if (!(*s).Constraint == 0) goto LA12;
		{
			if (!(((*s).Flags &(1<<((((NU8) 8))&31)))!=0)) goto LA16;
			app_145046(&decl, ((NimStringDesc*) &TMP3238));
		}
		LA16: ;
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = (((*s).Flags &(1<<((((NU8) 7))&31)))!=0);
			if (LOC20) goto LA21;
			LOC20 = (0 < (*p).Nestedtrystmts->Sup.len);
			LA21: ;
			if (!LOC20) goto LA22;
			app_145046(&decl, ((NimStringDesc*) &TMP3239));
		}
		LA22: ;
		memset((void*)LOC24, 0, sizeof(LOC24));
		LOC24[0] = (*s).Loc.R;
		appf_145085(&decl, ((NimStringDesc*) &TMP3240), LOC24, 1);
	}
	goto LA10;
	LA12: ;
	{
		NimStringDesc* LOC26;
		TY503234 LOC27;
		LOC26 = 0;
		LOC26 = rawNewString((*(*s).Constraint).kindU.S3.Strval->Sup.len + 3);
appendString(LOC26, (*(*s).Constraint).kindU.S3.Strval);
appendString(LOC26, ((NimStringDesc*) &TMP3241));
		memset((void*)LOC27, 0, sizeof(LOC27));
		LOC27[0] = decl;
		LOC27[1] = (*s).Loc.R;
		decl = ropef_145079(LOC26, LOC27, 2);
	}
	LA10: ;
	line_469070(p, ((NU8) 0), decl);
	localdebuginfo_475669(p, s);
}

N_NIMCALL(void, initlocalvar_475217)(tcproc465026* p, tsym188833* v, NIM_BOOL immediateasgn) {
	{
		if (!!((((*v).Flags &(1<<((((NU8) 12))&31)))!=0))) goto LA3;
		{
			if (!!(immediateasgn)) goto LA7;
			constructloc_475202(p, &(*v).Loc, NIM_FALSE);
		}
		LA7: ;
	}
	LA3: ;
}

N_NIMCALL(void, fillresult_470486)(tsym188833* param) {
	TY469906 LOC1;
	trope145007* LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = ropef_145079(((NimStringDesc*) &TMP3334), LOC1, 0);
	fillloc_468351(&(*param).Loc, ((NU8) 4), (*param).Typ, LOC2, ((NU8) 1));
	{
		NIM_BOOL LOC5;
		NU8 LOC6;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = mapreturntype_470289((*param).Typ);
		LOC5 = !((LOC6 == ((NU8) 17)));
		if (!(LOC5)) goto LA7;
		LOC5 = isinvalidreturntype_470314((*param).Typ);
		LA7: ;
		if (!LOC5) goto LA8;
		(*param).Loc.Flags |=((NI8)(1)<<((((NU8) 0))%(sizeof(NI8)*8)));
		(*param).Loc.S = ((NU8) 0);
	}
	LA8: ;
}

N_NIMCALL(void, allocparam_475538)(tcproc465026* p, tsym188833* s) {
	{
		trope145007* tmp;
		trope145007* LOC5;
		TY470214 LOC6;
		if (!!((((*s).Loc.Flags &(1<<((((NU8) 1))&7)))!=0))) goto LA3;
		(*p).Labels += 1;
		LOC5 = 0;
		LOC5 = torope_145062(((NI64) ((*p).Labels)));
		tmp = con_145030(((NimStringDesc*) &TMP3266), LOC5);
		(*s).Loc.Flags |=((NI8)(1)<<((((NU8) 1))%(sizeof(NI8)*8)));
		(*s).Loc.Flags |=((NI8)(1)<<((((NU8) 0))%(sizeof(NI8)*8)));
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = tmp;
		LOC6[1] = (*s).Loc.R;
		LOC6[2] = gettypedesc_472091((*p).Module, (*s).Loc.T);
		linef_469084(p, ((NU8) 1), ((NimStringDesc*) &TMP3335), LOC6, 3);
		asgnRefNoCycle((void**) &(*s).Loc.R, tmp);
	}
	LA3: ;
}

N_NIMCALL(void, assignparam_476314)(tcproc465026* p, tsym188833* s) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*s).Flags &(1<<((((NU8) 15))&31)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = (gcmd_137113 == ((NU8) 5));
		LA4: ;
		if (!LOC3) goto LA5;
		allocparam_475538(p, s);
	}
	LA5: ;
	localdebuginfo_475669(p, s);
}

N_NIMCALL(void, closuresetup_502563)(tcproc465026* p, tsym188833* prc) {
	tnode188803* ls;
	tnode188803* LOC5;
	tsym188833* env;
	TY503234 LOC10;
	{
		if (!!((((*(*prc).Typ).Flags &(1<<((((NU8) 11))&31)))!=0))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = HEX5BHEX5D_189694((*prc).Ast, 3);
	ls = lastson_189189(LOC5);
	{
		if (!!(((*ls).Kind == ((NU8) 3)))) goto LA8;
		internalerror_165591((*prc).Info, ((NimStringDesc*) &TMP3336));
	}
	LA8: ;
	env = (*ls).kindU.S4.Sym;
	assignlocalvar_475781(p, env);
	memset((void*)LOC10, 0, sizeof(LOC10));
	LOC10[0] = rdloc_474964(&(*env).Loc);
	LOC10[1] = gettypedesc_472091((*p).Module, (*env).Typ);
	linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3337), LOC10, 2);
	BeforeRet: ;
}

static N_INLINE(NIM_BOOL, usesnativegc_137164)(void) {
	NIM_BOOL result;
	result = 0;
	result = (((NU8) 3) <= gselectedgc_137114);
	return result;
}

N_NIMCALL(void, keepalive_475276)(tcproc465026* p, tloc188817* tokeepalive) {
}

N_NIMCALL(void, genrefassign_475107)(tcproc465026* p, tloc188817* dest, tloc188817* src, NU8 flags) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		TY503234 LOC8;
		LOC3 = 0;
		LOC3 = ((*dest).S == ((NU8) 1));
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = usesnativegc_137164();
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_474964(dest);
		LOC8[1] = rdloc_474964(src);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3338), LOC8, 2);
		{
			if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA11;
			keepalive_475276(p, dest);
		}
		LA11: ;
	}
	goto LA1;
	LA6: ;
	{
		if (!((*dest).S == ((NU8) 2))) goto LA14;
		{
			NIM_BOOL LOC18;
			TY503234 LOC21;
			LOC18 = 0;
			LOC18 = canformacycle_223142((*dest).T);
			if (!LOC18) goto LA19;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = addrloc_474987(dest);
			LOC21[1] = rdloc_474964(src);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3339), LOC21, 2);
		}
		goto LA16;
		LA19: ;
		{
			TY503234 LOC23;
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = addrloc_474987(dest);
			LOC23[1] = rdloc_474964(src);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3340), LOC23, 2);
		}
		LA16: ;
	}
	goto LA1;
	LA14: ;
	{
		TY503234 LOC25;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = addrloc_474987(dest);
		LOC25[1] = rdloc_474964(src);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3341), LOC25, 2);
		{
			if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA28;
			keepalive_475276(p, dest);
		}
		LA28: ;
	}
	LA1: ;
}

N_NIMCALL(void, optasgnloc_489518)(tloc188817* a, ttype188837* t, trope145007* field, tloc188817* Result) {
	trope145007* LOC1;
	trope145007* LOC2;
	(*Result).K = ((NU8) 5);
	(*Result).S = (*a).S;
	unsureAsgnRef((void**) &(*Result).T, t);
	LOC1 = 0;
	LOC1 = rdloc_474964(a);
	LOC2 = 0;
	LOC2 = con_145025(LOC1, ((NimStringDesc*) &TMP3347));
	unsureAsgnRef((void**) &(*Result).R, con_145020(LOC2, field));
	unsureAsgnRef((void**) &(*Result).Heaproot, (*a).Heaproot);
}

N_NIMCALL(void, genoptasgntuple_489529)(tcproc465026* p, tloc188817* dest, tloc188817* src, NU8 flags) {
	NU8 newflags;
	NI i_489615;
	NI HEX3Atmp_489622;
	NI LOC9;
	NI res_489624;
	{
		if (!((*src).K == ((NU8) 9))) goto LA3;
		newflags = (flags | 1);
	}
	goto LA1;
	LA3: ;
	{
		if (!(((*(*dest).T).Flags &(1<<((((NU8) 6))&31)))!=0)) goto LA6;
		newflags = (flags & ~ 1);
	}
	goto LA1;
	LA6: ;
	{
		newflags = flags;
	}
	LA1: ;
	i_489615 = 0;
	HEX3Atmp_489622 = 0;
	LOC9 = 0;
	LOC9 = len_192569((*dest).T);
	HEX3Atmp_489622 = LOC9 - 1;
	res_489624 = 0;
	while (1) {
		ttype188837* t;
		trope145007* field;
		TY145497 LOC11;
		tloc188817 LOC12;
		tloc188817 LOC13;
		if (!(res_489624 <= HEX3Atmp_489622)) goto LA10;
		i_489615 = res_489624;
		t = (*(*dest).T).Sons->data[i_489615];
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = torope_145062(((NI64) (i_489615)));
		field = ropef_145079(((NimStringDesc*) &TMP3350), LOC11, 1);
		memset((void*)&LOC12, 0, sizeof(LOC12));
		optasgnloc_489518(dest, t, field, &LOC12);
		memset((void*)&LOC13, 0, sizeof(LOC13));
		optasgnloc_489518(src, t, field, &LOC13);
		genassignment_476511(p, &LOC12, &LOC13, newflags);
		res_489624 += 1;
	} LA10: ;
}

N_NIMCALL(void, gengenericasgn_489735)(tcproc465026* p, tloc188817* dest, tloc188817* src, NU8 flags) {
	{
		NIM_BOOL LOC3;
		ttype188837* LOC5;
		LOC3 = 0;
		LOC3 = !(((flags &(1<<((((NU8) 0))&7)))!=0));
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = skiptypes_192793((*dest).T, IL64(211106242013440));
		LOC3 = (((*LOC5).Flags &(1<<((((NU8) 6))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA6;
		{
			NIM_BOOL LOC10;
			NIM_BOOL LOC12;
			TY470214 LOC15;
			LOC10 = 0;
			LOC10 = ((*dest).S == ((NU8) 1));
			if (LOC10) goto LA11;
			LOC12 = 0;
			LOC12 = usesnativegc_137164();
			LOC10 = !(LOC12);
			LA11: ;
			if (!LOC10) goto LA13;
			usestringh_468426((*p).Module);
			memset((void*)LOC15, 0, sizeof(LOC15));
			LOC15[0] = addrloc_474987(dest);
			LOC15[1] = addrloc_474987(src);
			LOC15[2] = rdloc_474964(dest);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3351), LOC15, 3);
			{
				if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA18;
				keepalive_475276(p, dest);
			}
			LA18: ;
		}
		goto LA8;
		LA13: ;
		{
			TY470214 LOC21;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = addrloc_474987(dest);
			LOC21[1] = addrloc_474987(src);
			LOC21[2] = gentypeinfo_472392((*p).Module, (*dest).T);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3352), LOC21, 3);
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	{
		TY470214 LOC23;
		memset((void*)LOC23, 0, sizeof(LOC23));
		LOC23[0] = addrloc_474987(dest);
		LOC23[1] = addrloc_474987(src);
		LOC23[2] = gentypeinfo_472392((*p).Module, (*dest).T);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3353), LOC23, 3);
	}
	LA1: ;
}

N_NIMCALL(NI, asgncomplexity_489475)(tnode188803* n) {
	NI result;
	result = 0;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		switch ((*n).Kind) {
		case ((NU8) 3):
		{
			result = 1;
		}
		break;
		case ((NU8) 137):
		{
			result = 100;
		}
		break;
		case ((NU8) 136):
		{
			tnode188803* t_489497;
			NI i_489511;
			NI HEX3Atmp_489513;
			NI LOC8;
			NI res_489515;
			t_489497 = 0;
			i_489511 = 0;
			HEX3Atmp_489513 = 0;
			LOC8 = 0;
			LOC8 = len_189264(n);
			HEX3Atmp_489513 = LOC8 - 1;
			res_489515 = 0;
			while (1) {
				NI LOC10;
				if (!(res_489515 <= HEX3Atmp_489513)) goto LA9;
				i_489511 = res_489515;
				t_489497 = (*n).kindU.S6.Sons->data[i_489511];
				LOC10 = 0;
				LOC10 = asgncomplexity_489475(t_489497);
				result += LOC10;
				res_489515 += 1;
			} LA9: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, genoptasgnobject_489628)(tcproc465026* p, tloc188817* dest, tloc188817* src, NU8 flags, tnode188803* t) {
	NU8 newflags;
	{
		if (!(t == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*src).K == ((NU8) 9))) goto LA7;
		newflags = (flags | 1);
	}
	goto LA5;
	LA7: ;
	{
		if (!(((*(*dest).T).Flags &(1<<((((NU8) 6))&31)))!=0)) goto LA10;
		newflags = (flags & ~ 1);
	}
	goto LA5;
	LA10: ;
	{
		newflags = flags;
	}
	LA5: ;
	switch ((*t).Kind) {
	case ((NU8) 3):
	{
		tsym188833* field;
		tloc188817 LOC14;
		tloc188817 LOC15;
		field = (*t).kindU.S4.Sym;
		memset((void*)&LOC14, 0, sizeof(LOC14));
		optasgnloc_489518(dest, (*field).Typ, (*field).Loc.R, &LOC14);
		memset((void*)&LOC15, 0, sizeof(LOC15));
		optasgnloc_489518(src, (*field).Typ, (*field).Loc.R, &LOC15);
		genassignment_476511(p, &LOC14, &LOC15, newflags);
	}
	break;
	case ((NU8) 136):
	{
		tnode188803* child_489726;
		NI i_489728;
		NI HEX3Atmp_489730;
		NI LOC17;
		NI res_489732;
		child_489726 = 0;
		i_489728 = 0;
		HEX3Atmp_489730 = 0;
		LOC17 = 0;
		LOC17 = len_189264(t);
		HEX3Atmp_489730 = LOC17 - 1;
		res_489732 = 0;
		while (1) {
			if (!(res_489732 <= HEX3Atmp_489730)) goto LA18;
			i_489728 = res_489732;
			child_489726 = (*t).kindU.S6.Sons->data[i_489728];
			genoptasgnobject_489628(p, dest, src, newflags, child_489726);
			res_489732 += 1;
		} LA18: ;
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, genassignment_476511)(tcproc465026* p, tloc188817* dest, tloc188817* src, NU8 flags) {
	ttype188837* ty;
	{
		NIM_BOOL LOC3;
		TY503234 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_474964(dest);
		LOC7[1] = rdloc_474964(src);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3338), LOC7, 2);
		goto BeforeRet;
	}
	LA5: ;
	ty = skiptypes_192793((*dest).T, IL64(211106233624832));
	switch ((*ty).Kind) {
	case ((NU8) 22):
	{
		genrefassign_475107(p, dest, src, flags);
	}
	break;
	case ((NU8) 24):
	{
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = !(((flags &(1<<((((NU8) 0))&7)))!=0));
			if (!(LOC12)) goto LA13;
			LOC12 = !(((*src).K == ((NU8) 9)));
			LA13: ;
			if (!LOC12) goto LA14;
			genrefassign_475107(p, dest, src, flags);
		}
		goto LA10;
		LA14: ;
		{
			TY470214 LOC17;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = addrloc_474987(dest);
			LOC17[1] = rdloc_474964(src);
			LOC17[2] = gentypeinfo_472392((*p).Module, (*dest).T);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3342), LOC17, 3);
		}
		LA10: ;
	}
	break;
	case ((NU8) 28):
	{
		{
			NIM_BOOL LOC21;
			LOC21 = 0;
			LOC21 = !(((flags &(1<<((((NU8) 0))&7)))!=0));
			if (!(LOC21)) goto LA22;
			LOC21 = !(((*src).K == ((NU8) 9)));
			LA22: ;
			if (!LOC21) goto LA23;
			genrefassign_475107(p, dest, src, flags);
		}
		goto LA19;
		LA23: ;
		{
			{
				NIM_BOOL LOC28;
				NIM_BOOL LOC30;
				TY503234 LOC33;
				LOC28 = 0;
				LOC28 = ((*dest).S == ((NU8) 1));
				if (LOC28) goto LA29;
				LOC30 = 0;
				LOC30 = usesnativegc_137164();
				LOC28 = !(LOC30);
				LA29: ;
				if (!LOC28) goto LA31;
				memset((void*)LOC33, 0, sizeof(LOC33));
				LOC33[0] = rdloc_474964(dest);
				LOC33[1] = rdloc_474964(src);
				linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3343), LOC33, 2);
				{
					if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA36;
					keepalive_475276(p, dest);
				}
				LA36: ;
			}
			goto LA26;
			LA31: ;
			{
				tloc188817 tmp;
				TY470214 LOC41;
				TY145497 LOC42;
				if (!((*dest).S == ((NU8) 2))) goto LA39;
				memset((void*)&tmp, 0, sizeof(tmp));
				gettemp_473840(p, ty, &tmp);
				memset((void*)LOC41, 0, sizeof(LOC41));
				LOC41[0] = rdloc_474964(dest);
				LOC41[1] = rdloc_474964(src);
				LOC41[2] = rdloc_474964(&tmp);
				linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3344), LOC41, 3);
				memset((void*)LOC42, 0, sizeof(LOC42));
				LOC42[0] = rdloc_474964(&tmp);
				linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3345), LOC42, 1);
			}
			goto LA26;
			LA39: ;
			{
				TY503234 LOC44;
				memset((void*)LOC44, 0, sizeof(LOC44));
				LOC44[0] = addrloc_474987(dest);
				LOC44[1] = rdloc_474964(src);
				linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3346), LOC44, 2);
				{
					if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA47;
					keepalive_475276(p, dest);
				}
				LA47: ;
			}
			LA26: ;
		}
		LA19: ;
	}
	break;
	case ((NU8) 25):
	{
		{
			NIM_BOOL LOC52;
			tloc188817 a;
			trope145007* LOC55;
			tloc188817 LOC56;
			tloc188817 b;
			trope145007* LOC57;
			tloc188817 LOC58;
			TY503234 LOC59;
			LOC52 = 0;
			LOC52 = needscomplexassignment_470309((*dest).T);
			if (!LOC52) goto LA53;
			LOC55 = 0;
			LOC55 = torope_145058(((NimStringDesc*) &TMP3348));
			memset((void*)&LOC56, 0, sizeof(LOC56));
			optasgnloc_489518(dest, (*dest).T, LOC55, &LOC56);
			memcpy((void*)&a, (NIM_CONST void*)&LOC56, sizeof(a));
			LOC57 = 0;
			LOC57 = torope_145058(((NimStringDesc*) &TMP3348));
			memset((void*)&LOC58, 0, sizeof(LOC58));
			optasgnloc_489518(src, (*dest).T, LOC57, &LOC58);
			memcpy((void*)&b, (NIM_CONST void*)&LOC58, sizeof(b));
			genrefassign_475107(p, &a, &b, flags);
			memset((void*)LOC59, 0, sizeof(LOC59));
			LOC59[0] = rdloc_474964(dest);
			LOC59[1] = rdloc_474964(src);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3349), LOC59, 2);
		}
		goto LA50;
		LA53: ;
		{
			TY503234 LOC61;
			memset((void*)LOC61, 0, sizeof(LOC61));
			LOC61[0] = rdloc_474964(dest);
			LOC61[1] = rdloc_474964(src);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3338), LOC61, 2);
		}
		LA50: ;
	}
	break;
	case ((NU8) 18):
	{
		{
			NIM_BOOL LOC65;
			LOC65 = 0;
			LOC65 = needscomplexassignment_470309((*dest).T);
			if (!LOC65) goto LA66;
			{
				NI LOC70;
				LOC70 = 0;
				LOC70 = len_192569((*dest).T);
				if (!(LOC70 <= 4)) goto LA71;
				genoptasgntuple_489529(p, dest, src, flags);
			}
			goto LA68;
			LA71: ;
			{
				gengenericasgn_489735(p, dest, src, flags);
			}
			LA68: ;
		}
		goto LA63;
		LA66: ;
		{
			TY503234 LOC75;
			memset((void*)LOC75, 0, sizeof(LOC75));
			LOC75[0] = rdloc_474964(dest);
			LOC75[1] = rdloc_474964(src);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3338), LOC75, 2);
		}
		LA63: ;
	}
	break;
	case ((NU8) 17):
	{
		{
			NIM_BOOL LOC79;
			LOC79 = 0;
			LOC79 = needscomplexassignment_470309(ty);
			if (!LOC79) goto LA80;
			{
				NIM_BOOL LOC84;
				NI LOC86;
				trope145007* LOC89;
				LOC84 = 0;
				LOC84 = (*ty).Sons->data[0] == 0;
				if (!(LOC84)) goto LA85;
				LOC86 = 0;
				LOC86 = asgncomplexity_489475((*ty).N);
				LOC84 = (LOC86 <= 4);
				LA85: ;
				if (!LOC84) goto LA87;
				LOC89 = 0;
				LOC89 = gettypedesc_472091((*p).Module, ty);
				{
					NimStringDesc* LOC94;
					if (!!(!(((*ty).N == NIM_NIL)))) goto LA92;
					LOC94 = 0;
					LOC94 = HEX24_165714(TMP3354);
					internalerror_165606(LOC94);
				}
				LA92: ;
				genoptasgnobject_489628(p, dest, src, flags, (*ty).N);
			}
			goto LA82;
			LA87: ;
			{
				gengenericasgn_489735(p, dest, src, flags);
			}
			LA82: ;
		}
		goto LA77;
		LA80: ;
		{
			TY503234 LOC97;
			memset((void*)LOC97, 0, sizeof(LOC97));
			LOC97[0] = rdloc_474964(dest);
			LOC97[1] = rdloc_474964(src);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3338), LOC97, 2);
		}
		LA77: ;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		{
			NIM_BOOL LOC101;
			LOC101 = 0;
			LOC101 = needscomplexassignment_470309((*dest).T);
			if (!LOC101) goto LA102;
			gengenericasgn_489735(p, dest, src, flags);
		}
		goto LA99;
		LA102: ;
		{
			TY503234 LOC105;
			usestringh_468426((*p).Module);
			memset((void*)LOC105, 0, sizeof(LOC105));
			LOC105[0] = rdloc_474964(dest);
			LOC105[1] = rdloc_474964(src);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3356), LOC105, 2);
		}
		LA99: ;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			NIM_BOOL LOC109;
			TY470214 LOC112;
			LOC109 = 0;
			LOC109 = needscomplexassignment_470309((*dest).T);
			if (!LOC109) goto LA110;
			memset((void*)LOC112, 0, sizeof(LOC112));
			LOC112[0] = addrloc_474987(dest);
			LOC112[1] = addrloc_474987(src);
			LOC112[2] = gentypeinfo_472392((*p).Module, (*dest).T);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3357), LOC112, 3);
		}
		goto LA107;
		LA110: ;
		{
			TY503234 LOC114;
			usestringh_468426((*p).Module);
			memset((void*)LOC114, 0, sizeof(LOC114));
			LOC114[0] = rdloc_474964(dest);
			LOC114[1] = rdloc_474964(src);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3358), LOC114, 2);
		}
		LA107: ;
	}
	break;
	case ((NU8) 19):
	{
		{
			NU8 LOC118;
			TY470214 LOC121;
			NI64 LOC122;
			LOC118 = 0;
			LOC118 = maptype_470246(ty);
			if (!(LOC118 == ((NU8) 17))) goto LA119;
			usestringh_468426((*p).Module);
			memset((void*)LOC121, 0, sizeof(LOC121));
			LOC121[0] = rdloc_474964(dest);
			LOC121[1] = rdloc_474964(src);
			LOC122 = 0;
			LOC122 = getsize_223158((*dest).T);
			LOC121[2] = torope_145062(LOC122);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3359), LOC121, 3);
		}
		goto LA116;
		LA119: ;
		{
			TY503234 LOC124;
			memset((void*)LOC124, 0, sizeof(LOC124));
			LOC124[0] = rdloc_474964(dest);
			LOC124[1] = rdloc_474964(src);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3338), LOC124, 2);
		}
		LA116: ;
	}
	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):
	{
		TY503234 LOC126;
		memset((void*)LOC126, 0, sizeof(LOC126));
		LOC126[0] = rdloc_474964(dest);
		LOC126[1] = rdloc_474964(src);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3338), LOC126, 2);
	}
	break;
	default:
	{
		NimStringDesc* LOC128;
		LOC128 = 0;
		LOC128 = rawNewString(reprEnum((*ty).Kind, (&NTI188240))->Sup.len + 15);
appendString(LOC128, ((NimStringDesc*) &TMP3360));
appendString(LOC128, reprEnum((*ty).Kind, (&NTI188240)));
		internalerror_165606(LOC128);
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, putlocintodest_476504)(tcproc465026* p, tloc188817* d, tloc188817* s) {
	{
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		{
			if (!(((*d).Flags &(1<<((((NU8) 2))&7)))!=0)) goto LA7;
			genassignment_476511(p, &(*d), s, 0);
		}
		goto LA5;
		LA7: ;
		{
			genassignment_476511(p, &(*d), s, 1);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		genericAssign((void*)&(*d), (void*)s, (&NTI188817));
	}
	LA1: ;
}

static N_INLINE(NIM_BOOL, emulatedthreadvars_469606)(void) {
	NIM_BOOL result;
	result = 0;
	result = ((538968064 & ~ gglobaloptions_137111)==0);
	return result;
}

N_NIMCALL(void, declarethreadvar_475961)(tcgen465030* m, tsym188833* s, NIM_BOOL isextern) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = emulatedthreadvars_469606();
		if (!LOC3) goto LA4;
		{
			NIM_BOOL LOC8;
			TY503234 LOC11;
			LOC8 = 0;
			LOC8 = containsorincl_185888(&nimtvdeclared_475960, (*s).Sup.Id);
			if (!!(LOC8)) goto LA9;
			nimtvdeps_475959 = (ttypeseq188835*) incrSeq(&(nimtvdeps_475959)->Sup, sizeof(ttype188837*));
			asgnRefNoCycle((void**) &nimtvdeps_475959->data[nimtvdeps_475959->Sup.len-1], (*s).Loc.T);
			memset((void*)LOC11, 0, sizeof(LOC11));
			LOC11[0] = gettypedesc_472091(m, (*s).Loc.T);
			LOC11[1] = (*s).Loc.R;
			appf_145085(&nimtv_475937, ((NimStringDesc*) &TMP3167), LOC11, 2);
		}
		LA9: ;
	}
	goto LA1;
	LA4: ;
	{
		trope145007* LOC21;
		TY145497 LOC22;
		{
			if (!isextern) goto LA15;
			app_145046(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3362));
		}
		LA15: ;
		{
			if (!((gglobaloptions_137111 &(1<<((((NU8) 21))&31)))!=0)) goto LA19;
			app_145046(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3363));
		}
		LA19: ;
		LOC21 = 0;
		LOC21 = gettypedesc_472091(m, (*s).Loc.T);
		app_145040(&(*m).S[(((NU8) 9))- 0], LOC21);
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = (*s).Loc.R;
		appf_145085(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3240), LOC22, 1);
	}
	LA1: ;
}

N_NIMCALL(void, genvarprototypeaux_481557)(tcgen465030* m, tsym188833* sym) {
	trope145007* LOC1;
	useheader_468432(m, sym);
	LOC1 = 0;
	LOC1 = manglename_469870(sym);
	fillloc_468351(&(*sym).Loc, ((NU8) 3), (*sym).Typ, LOC1, ((NU8) 2));
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = (((*sym).Loc.Flags &(1<<((((NU8) 3))&7)))!=0);
		if (LOC4) goto LA5;
		LOC4 = containsorincl_185888(&(*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 &(1<<((((NU8) 22))&31)))!=0)) goto LA14;
			declarethreadvar_475961(m, sym, NIM_TRUE);
		}
		goto LA12;
		LA14: ;
		{
			trope145007* LOC17;
			TY145497 LOC30;
			app_145046(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3362));
			LOC17 = 0;
			LOC17 = gettypedesc_472091(m, (*sym).Loc.T);
			app_145040(&(*m).S[(((NU8) 9))- 0], LOC17);
			{
				if (!(((*sym).Loc.Flags &(1<<((((NU8) 4))&7)))!=0)) goto LA20;
				app_145046(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3172));
			}
			LA20: ;
			{
				if (!(((*sym).Flags &(1<<((((NU8) 8))&31)))!=0)) goto LA24;
				app_145046(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3238));
			}
			LA24: ;
			{
				if (!(((*sym).Flags &(1<<((((NU8) 7))&31)))!=0)) goto LA28;
				app_145046(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3239));
			}
			LA28: ;
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = (*sym).Loc.R;
			appf_145085(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3240), LOC30, 1);
		}
		LA12: ;
	}
	LA10: ;
	BeforeRet: ;
}

N_NIMCALL(void, genvarprototype_476472)(tcgen465030* m, tsym188833* sym) {
	genvarprototypeaux_481557(m, sym);
}

N_NIMCALL(NIM_BOOL, issimpleconst_468387)(ttype188837* typ) {
	NIM_BOOL result;
	ttype188837* t;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	result = 0;
	t = skiptypes_192793(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_468340)(tloc188817* result, NU8 k, ttype188837* typ, NU8 s) {
	(*result).K = k;
	(*result).S = s;
	unsureAsgnRef((void**) &(*result).T, getuniquetype_464401(typ));
	unsureAsgnRef((void**) &(*result).R, NIM_NIL);
	(*result).A = -1;
	(*result).Flags = 0;
}

N_NIMCALL(void, putintodest_490145)(tcproc465026* p, tloc188817* d, ttype188837* t, trope145007* r) {
	tloc188817 a;
	memset((void*)&a, 0, sizeof(a));
	{
		ttype188837* LOC5;
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		LOC5 = 0;
		LOC5 = getuniquetype_464401(t);
		initloc_468340(&a, ((NU8) 7), LOC5, ((NU8) 0));
		a.R = r;
		{
			if (!(((*d).Flags &(1<<((((NU8) 2))&7)))!=0)) goto LA8;
			genassignment_476511(p, &(*d), &a, 0);
		}
		goto LA6;
		LA8: ;
		{
			genassignment_476511(p, &(*d), &a, 1);
		}
		LA6: ;
	}
	goto LA1;
	LA3: ;
	{
		(*d).K = ((NU8) 7);
		unsureAsgnRef((void**) &(*d).T, getuniquetype_464401(t));
		unsureAsgnRef((void**) &(*d).R, r);
		(*d).A = -1;
	}
	LA1: ;
}

N_NIMCALL(tcgen465030*, findpendingmodule_468300)(tcgen465030* m, tsym188833* s) {
	tcgen465030* result;
	tsym188833* ms;
	result = 0;
	ms = getmodule_197183(s);
	result = gmodules_465163->data[(*ms).Position];
	return result;
}

N_NIMCALL(NI64, bitsettoword_489027)(tbitset243012* s, NI size) {
	NI64 result;
	NI j_489213;
	NI HEX3Atmp_489226;
	NI res_489228;
	result = 0;
	result = 0;
	j_489213 = 0;
	HEX3Atmp_489226 = 0;
	HEX3Atmp_489226 = (NI32)(size - 1);
	res_489228 = 0;
	while (1) {
		if (!(res_489228 <= HEX3Atmp_489226)) goto LA1;
		j_489213 = res_489228;
		{
			if (!(j_489213 < s->Sup.len)) goto LA4;
			result = (NI64)(result | (NI64)((NU64)(((NI64)(NU64)(NU8)(s->data[j_489213]))) << (NU64)(((NI64) ((NI32)(j_489213 * 8))))));
		}
		LA4: ;
		res_489228 += 1;
	} LA1: ;
	return result;
}

N_NIMCALL(trope145007*, genrawsetdata_489232)(tbitset243012* cs, NI size) {
	trope145007* result;
	NimStringDesc* frmt;
	result = 0;
	frmt = 0;
	{
		TY469906 LOC5;
		NI i_489258;
		NI HEX3Atmp_489267;
		NI res_489269;
		if (!(8 < size)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		result = ropef_145079(((NimStringDesc*) &TMP3365), LOC5, 0);
		i_489258 = 0;
		HEX3Atmp_489267 = 0;
		HEX3Atmp_489267 = (NI32)(size - 1);
		res_489269 = 0;
		while (1) {
			TY145497 LOC17;
			NimStringDesc* LOC18;
			if (!(res_489269 <= HEX3Atmp_489267)) goto LA6;
			i_489258 = res_489269;
			{
				if (!(i_489258 < (NI32)(size - 1))) goto LA9;
				{
					if (!(((NI) ((NI32)((NI32)(i_489258 + 1) % 8))) == 0)) goto LA13;
					frmt = copyString(((NimStringDesc*) &TMP3366));
				}
				goto LA11;
				LA13: ;
				{
					frmt = copyString(((NimStringDesc*) &TMP3367));
				}
				LA11: ;
			}
			goto LA7;
			LA9: ;
			{
				frmt = copyString(((NimStringDesc*) &TMP3368));
			}
			LA7: ;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC18 = 0;
			LOC18 = nsuToHex(((NI64)(NU64)(NU8)(cs->data[i_489258])), 2);
			LOC17[0] = torope_145058(LOC18);
			appf_145085(&result, frmt, LOC17, 1);
			res_489269 += 1;
		} LA6: ;
	}
	goto LA1;
	LA3: ;
	{
		NI64 LOC20;
		LOC20 = 0;
		LOC20 = bitsettoword_489027(cs, size);
		result = intliteral_476518(LOC20);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, appcg_469012)(tcgen465030* m, NU8 s, NimStringDesc* frmt, trope145007** args, NI argsLen0) {
	trope145007* LOC1;
	LOC1 = 0;
	LOC1 = ropecg_468609(m, frmt, args, argsLen0);
	app_145040(&(*m).S[(s)- 0], LOC1);
}

N_NIMCALL(trope145007*, genconstseq_501470)(tcproc465026* p, tnode188803* n, ttype188837* t) {
	trope145007* result;
	trope145007* data;
	TY145497 LOC1;
	NI LOC2;
	trope145007* LOC16;
	TY471942 LOC17;
	NI LOC18;
	TY503234 LOC19;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = len_189264(n);
	LOC1[0] = torope_145062(((NI64) (LOC2)));
	data = ropef_145079(((NimStringDesc*) &TMP3369), LOC1, 1);
	{
		NI LOC5;
		NI i_501495;
		NI HEX3Atmp_501546;
		NI LOC8;
		NI res_501548;
		LOC5 = 0;
		LOC5 = len_189264(n);
		if (!(0 < LOC5)) goto LA6;
		app_145046(&data, ((NimStringDesc*) &TMP3370));
		i_501495 = 0;
		HEX3Atmp_501546 = 0;
		LOC8 = 0;
		LOC8 = len_189264(n);
		HEX3Atmp_501546 = (NI32)(LOC8 - 1);
		res_501548 = 0;
		while (1) {
			trope145007* LOC15;
			if (!(res_501548 <= HEX3Atmp_501546)) goto LA9;
			i_501495 = res_501548;
			{
				TY469906 LOC14;
				if (!(0 < i_501495)) goto LA12;
				memset((void*)LOC14, 0, sizeof(LOC14));
				appf_145085(&data, ((NimStringDesc*) &TMP3371), LOC14, 0);
			}
			LA12: ;
			LOC15 = 0;
			LOC15 = genconstexpr_499349(p, (*n).kindU.S6.Sons->data[i_501495]);
			app_145040(&data, LOC15);
			res_501548 += 1;
		} LA9: ;
		app_145046(&data, ((NimStringDesc*) &TMP3372));
	}
	LA6: ;
	app_145046(&data, ((NimStringDesc*) &TMP3372));
	gbackendid_187008 += 1;
	LOC16 = 0;
	LOC16 = torope_145062(((NI64) (gbackendid_187008)));
	result = con_145030(((NimStringDesc*) &TMP3373), LOC16);
	memset((void*)LOC17, 0, sizeof(LOC17));
	LOC17[0] = gettypedesc_472091((*p).Module, (*t).Sons->data[0]);
	LOC18 = 0;
	LOC18 = len_189264(n);
	LOC17[1] = torope_145062(((NI64) (LOC18)));
	LOC17[2] = result;
	LOC17[3] = data;
	appcg_469012((*p).Module, ((NU8) 8), ((NimStringDesc*) &TMP3374), LOC17, 4);
	memset((void*)LOC19, 0, sizeof(LOC19));
	LOC19[0] = gettypedesc_472091((*p).Module, t);
	LOC19[1] = result;
	result = ropef_145079(((NimStringDesc*) &TMP3375), LOC19, 2);
	return result;
}

N_NIMCALL(trope145007*, gennamedconstexpr_501373)(tcproc465026* p, tnode188803* n) {
	trope145007* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		result = genconstexpr_499349(p, (*n).kindU.S6.Sons->data[1]);
	}
	goto LA1;
	LA3: ;
	{
		result = genconstexpr_499349(p, n);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope145007*, genconstsimplelist_501402)(tcproc465026* p, tnode188803* n) {
	trope145007* result;
	NI length;
	NI i_501420;
	NI HEX3Atmp_501464;
	NI res_501466;
	TY469906 LOC8;
	result = 0;
	length = sonslen_189181(n);
	result = torope_145058(((NimStringDesc*) &TMP3376));
	i_501420 = 0;
	HEX3Atmp_501464 = 0;
	HEX3Atmp_501464 = (NI32)(length - 2);
	res_501466 = 0;
	while (1) {
		TY145497 LOC2;
		if (!(res_501466 <= HEX3Atmp_501464)) goto LA1;
		i_501420 = res_501466;
		memset((void*)LOC2, 0, sizeof(LOC2));
		LOC2[0] = gennamedconstexpr_501373(p, (*n).kindU.S6.Sons->data[i_501420]);
		appf_145085(&result, ((NimStringDesc*) &TMP3377), LOC2, 1);
		res_501466 += 1;
	} LA1: ;
	{
		trope145007* LOC7;
		if (!(0 < length)) goto LA5;
		LOC7 = 0;
		LOC7 = gennamedconstexpr_501373(p, (*n).kindU.S6.Sons->data[(NI32)(length - 1)]);
		app_145040(&result, LOC7);
	}
	LA5: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	appf_145085(&result, ((NimStringDesc*) &TMP3279), LOC8, 0);
	return result;
}

N_NIMCALL(void, initlocexpr_476527)(tcproc465026* p, tnode188803* e, tloc188817* result) {
	initloc_468340(result, ((NU8) 0), (*e).Typ, ((NU8) 0));
	expr_476492(p, e, result);
}

N_NIMCALL(trope145007*, genconstexpr_499349)(tcproc465026* p, tnode188803* n) {
	trope145007* result;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 58):
	case ((NU8) 59):
	{
		result = genconstexpr_499349(p, (*n).kindU.S6.Sons->data[1]);
	}
	break;
	case ((NU8) 39):
	{
		tbitset243012* cs;
		NI64 LOC3;
		cs = 0;
		tobitset_244002(n, &cs);
		LOC3 = 0;
		LOC3 = getsize_223158((*n).Typ);
		result = genrawsetdata_489232(cs, ((NI) (LOC3)));
	}
	break;
	case ((NU8) 41):
	case ((NU8) 37):
	case ((NU8) 153):
	{
		ttype188837* t;
		t = skiptypes_192793((*n).Typ, IL64(211106232576256));
		{
			if (!((*t).Kind == ((NU8) 24))) goto LA7;
			result = genconstseq_501470(p, n, t);
		}
		goto LA5;
		LA7: ;
		{
			result = genconstsimplelist_501402(p, n);
		}
		LA5: ;
	}
	break;
	default:
	{
		tloc188817 d;
		memset((void*)&d, 0, sizeof(d));
		initlocexpr_476527(p, n, &d);
		result = rdloc_474964(&d);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, requestconstimpl_476477)(tcproc465026* p, tsym188833* sym) {
	tcgen465030* m;
	tcgen465030* q;
	m = (*p).Module;
	useheader_468432(m, sym);
	{
		trope145007* LOC5;
		if (!((*sym).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_469870(sym);
		fillloc_468351(&(*sym).Loc, ((NU8) 9), (*sym).Typ, LOC5, ((NU8) 0));
	}
	LA3: ;
	{
		if (!(((*sym).Loc.Flags &(1<<((((NU8) 3))&7)))!=0)) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	q = findpendingmodule_468300(m, sym);
	{
		NIM_BOOL LOC12;
		NIM_BOOL LOC14;
		TY470214 LOC17;
		LOC12 = 0;
		LOC12 = !((q == NIM_NIL));
		if (!(LOC12)) goto LA13;
		LOC14 = 0;
		LOC14 = containsorincl_185888(&(*q).Declaredthings, (*sym).Sup.Id);
		LOC12 = !(LOC14);
		LA13: ;
		if (!LOC12) goto LA15;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = gettypedesc_472091(q, (*sym).Typ);
		LOC17[1] = (*sym).Loc.R;
		LOC17[2] = genconstexpr_499349((*q).Initproc, (*sym).Ast);
		appf_145085(&(*q).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3364), LOC17, 3);
	}
	LA15: ;
	{
		NIM_BOOL LOC20;
		NIM_BOOL LOC22;
		trope145007* headerdecl;
		TY503234 LOC25;
		LOC20 = 0;
		LOC20 = !((q == m));
		if (!(LOC20)) goto LA21;
		LOC22 = 0;
		LOC22 = containsorincl_185888(&(*m).Declaredthings, (*sym).Sup.Id);
		LOC20 = !(LOC22);
		LA21: ;
		if (!LOC20) goto LA23;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = gettypedesc_472091(m, (*sym).Loc.T);
		LOC25[1] = (*sym).Loc.R;
		headerdecl = ropef_145079(((NimStringDesc*) &TMP3378), LOC25, 2);
		app_145040(&(*m).S[(((NU8) 8))- 0], headerdecl);
		{
			NIM_BOOL LOC28;
			LOC28 = 0;
			LOC28 = (((*sym).Flags &(1<<((((NU8) 6))&31)))!=0);
			if (!(LOC28)) goto LA29;
			LOC28 = !((generatedheader_468202 == NIM_NIL));
			LA29: ;
			if (!LOC28) goto LA30;
			app_145040(&(*generatedheader_468202).S[(((NU8) 8))- 0], headerdecl);
		}
		LA30: ;
	}
	LA23: ;
	BeforeRet: ;
}

N_NIMCALL(void, gencomplexconst_500121)(tcproc465026* p, tsym188833* sym, tloc188817* d) {
	requestconstimpl_476477(p, sym);
	putlocintodest_476504(p, d, &(*sym).Loc);
}

static N_INLINE(trope145007**, procsec_465193)(tcproc465026* p, NU8 s) {
	trope145007** result;
	result = 0;
	result = &(*p).Blocks->data[0].Sections[(s)- 0];
	return result;
}

N_NIMCALL(void, accessthreadlocalvar_469601)(tcproc465026* p, tsym188833* s) {
	{
		NIM_BOOL LOC3;
		trope145007** LOC7;
		TY469906 LOC8;
		trope145007** LOC9;
		TY469906 LOC10;
		trope145007* LOC11;
		LOC3 = 0;
		LOC3 = emulatedthreadvars_469606();
		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_465193(p, ((NU8) 0));
		memset((void*)LOC8, 0, sizeof(LOC8));
		appf_145085(LOC7, ((NimStringDesc*) &TMP3380), LOC8, 0);
		LOC9 = 0;
		LOC9 = procsec_465193(p, ((NU8) 1));
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC11 = 0;
		LOC11 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3381), LOC10, 0);
		app_145040(LOC9, LOC11);
	}
	LA5: ;
}

static N_INLINE(NIM_BOOL, isemptytype_195210)(ttype188837* 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_490109)(tcproc465026* p, tloc188817* d, ttype188837* t, trope145007* r) {
	tloc188817 a;
	memset((void*)&a, 0, sizeof(a));
	{
		ttype188837* LOC5;
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		LOC5 = 0;
		LOC5 = getuniquetype_464401(t);
		initloc_468340(&a, ((NU8) 9), LOC5, ((NU8) 0));
		a.R = r;
		{
			if (!(((*d).Flags &(1<<((((NU8) 2))&7)))!=0)) goto LA8;
			genassignment_476511(p, &(*d), &a, 0);
		}
		goto LA6;
		LA8: ;
		{
			genassignment_476511(p, &(*d), &a, 1);
		}
		LA6: ;
	}
	goto LA1;
	LA3: ;
	{
		(*d).K = ((NU8) 9);
		unsureAsgnRef((void**) &(*d).T, getuniquetype_464401(t));
		unsureAsgnRef((void**) &(*d).R, r);
		(*d).A = -1;
	}
	LA1: ;
}

N_NIMCALL(void, genlinedir_469427)(tcproc465026* p, tnode188803* t) {
	NI line;
	trope145007** LOC9;
	NimStringDesc* LOC10;
	line = safelinenm_469231((*t).Info);
	{
		trope145007** LOC5;
		TY470214 LOC6;
		TY469906 LOC7;
		trope145007* LOC8;
		if (!((gglobaloptions_137111 &(1<<((((NU8) 31))&31)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = s_465173(p, ((NU8) 2));
		memset((void*)LOC6, 0, sizeof(LOC6));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC6[0] = ropef_145079(((NimStringDesc*) &TMP3387), LOC7, 0);
		LOC6[1] = sourceline_164155((*t).Info);
		LOC6[2] = rnl_146434;
		LOC8 = 0;
		LOC8 = con_145035(LOC6, 3);
		app_145040(LOC5, LOC8);
	}
	LA3: ;
	LOC9 = 0;
	LOC9 = s_465173(p, ((NU8) 2));
	LOC10 = 0;
	LOC10 = tofullpath_164788((*t).Info.Fileindex);
	genclinedir_469238(LOC9, LOC10, line);
	{
		NIM_BOOL LOC13;
		NIM_BOOL LOC15;
		TY503234 LOC19;
		NimStringDesc* LOC20;
		LOC13 = 0;
		LOC13 = ((163840 & (*p).Options) == 163840);
		if (!(LOC13)) goto LA14;
		LOC15 = 0;
		LOC15 = ((*p).Prc == NIM_NIL);
		if (LOC15) goto LA16;
		LOC15 = !((((*(*p).Prc).Flags &(1<<((((NU8) 9))&31)))!=0));
		LA16: ;
		LOC13 = LOC15;
		LA14: ;
		if (!LOC13) goto LA17;
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = torope_145062(((NI64) (line)));
		LOC20 = 0;
		LOC20 = tofilename_164780((*t).Info.Fileindex);
		LOC19[1] = makecstring_163651(LOC20);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3388), LOC19, 2);
	}
	goto LA11;
	LA17: ;
	{
		NIM_BOOL LOC22;
		NIM_BOOL LOC24;
		TY503234 LOC28;
		LOC22 = 0;
		LOC22 = ((98304 & (*p).Options) == 98304);
		if (!(LOC22)) goto LA23;
		LOC24 = 0;
		LOC24 = ((*p).Prc == NIM_NIL);
		if (LOC24) goto LA25;
		LOC24 = !((((*(*p).Prc).Flags &(1<<((((NU8) 9))&31)))!=0));
		LA25: ;
		LOC22 = LOC24;
		LA23: ;
		if (!LOC22) goto LA26;
		memset((void*)LOC28, 0, sizeof(LOC28));
		LOC28[0] = torope_145062(((NI64) (line)));
		LOC28[1] = quotedfilename_165750((*t).Info);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3389), LOC28, 2);
	}
	goto LA11;
	LA26: ;
	LA11: ;
}

N_NIMCALL(trope145007*, getlabel_476440)(tcproc465026* p) {
	trope145007* result;
	trope145007* LOC1;
	result = 0;
	(*p).Labels += 1;
	LOC1 = 0;
	LOC1 = torope_145062(((NI64) ((*p).Labels)));
	result = con_145030(((NimStringDesc*) &TMP3391), LOC1);
	return result;
}

N_NIMCALL(void, fixlabel_476462)(tcproc465026* p, trope145007* labl) {
	TY145497 LOC1;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = labl;
	linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3394), LOC1, 1);
}

N_NIMCALL(void, genandor_494688)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 m) {
	trope145007* l;
	tloc188817 tmp;
	l = 0;
	memset((void*)&tmp, 0, sizeof(tmp));
	gettemp_473840(p, (*e).Typ, &tmp);
	expr_476492(p, (*e).kindU.S6.Sons->data[1], &tmp);
	l = getlabel_476440(p);
	{
		TY503234 LOC5;
		if (!(m == ((NU16) 135))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_474964(&tmp);
		LOC5[1] = l;
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3392), LOC5, 2);
	}
	goto LA1;
	LA3: ;
	{
		TY503234 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_474964(&tmp);
		LOC7[1] = l;
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3393), LOC7, 2);
	}
	LA1: ;
	expr_476492(p, (*e).kindU.S6.Sons->data[2], &tmp);
	fixlabel_476462(p, l);
	{
		if (!((*d).K == ((NU8) 0))) goto LA10;
		genericAssign((void*)&(*d), (void*)&tmp, (&NTI188817));
	}
	goto LA8;
	LA10: ;
	{
		genassignment_476511(p, &(*d), &tmp, 0);
	}
	LA8: ;
}

N_NIMCALL(void, unaryarith_492491)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 op) {
	tloc188817 a;
	ttype188837* t;
	TY470214 LOC1;
	NI64 LOC2;
	trope145007* LOC3;
	memset((void*)&a, 0, sizeof(a));
	t = 0;
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	t = skiptypes_192793((*e).Typ, IL64(211106233624832));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_474964(&a);
	LOC2 = 0;
	LOC2 = getsize_223158(t);
	LOC1[1] = torope_145062((NI64)(LOC2 * 8));
	LOC1[2] = getsimpletypedesc_471061((*p).Module, (*e).Typ);
	LOC3 = 0;
	LOC3 = ropef_145079(unarithtab_492498[(op)- 105], LOC1, 3);
	putintodest_490145(p, d, (*e).Typ, LOC3);
}

N_NIMCALL(void, unaryarithoverflow_491488)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 m) {
	tloc188817 a;
	ttype188837* t;
	TY503234 LOC7;
	NI64 LOC8;
	trope145007* LOC9;
	memset((void*)&a, 0, sizeof(a));
	t = 0;
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	t = skiptypes_192793((*e).Typ, IL64(211106233624832));
	{
		TY503234 LOC5;
		NI64 LOC6;
		if (!(((*p).Options &(1<<((((NU8) 5))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_474964(&a);
		LOC6 = 0;
		LOC6 = firstord_223002(t);
		LOC5[1] = intliteral_476518(LOC6);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3412), LOC5, 2);
	}
	LA3: ;
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = rdloc_474964(&a);
	LOC8 = 0;
	LOC8 = getsize_223158(t);
	LOC7[1] = torope_145062((NI64)(LOC8 * 8));
	LOC9 = 0;
	LOC9 = ropef_145079(opr_491495[(m)- 101], LOC7, 2);
	putintodest_490145(p, d, (*e).Typ, LOC9);
}

N_NIMCALL(void, binaryarith_491640)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 op) {
	tloc188817 a;
	tloc188817 b;
	NI64 s;
	NI64 LOC1;
	NI64 LOC2;
	TY471942 LOC3;
	trope145007* LOC4;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	s = 0;
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
	LOC1 = 0;
	LOC1 = getsize_223158(a.T);
	LOC2 = 0;
	LOC2 = getsize_223158(b.T);
	s = (NI64)(((LOC1 >= LOC2) ? LOC1 : LOC2) * 8);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = rdloc_474964(&a);
	LOC3[1] = rdloc_474964(&b);
	LOC3[2] = torope_145062(s);
	LOC3[3] = getsimpletypedesc_471061((*p).Module, (*e).Typ);
	LOC4 = 0;
	LOC4 = ropef_145079(binarithtab_491647[(op)- 47], LOC3, 4);
	putintodest_490145(p, d, (*e).Typ, LOC4);
}

N_NIMCALL(void, binaryfloatarith_498531)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 m) {
	{
		tloc188817 a;
		tloc188817 b;
		TY471942 LOC5;
		tnode188803* LOC6;
		trope145007* LOC7;
		if (!!(((384 & (*p).Options) == 0))) goto LA3;
		memset((void*)&a, 0, sizeof(a));
		memset((void*)&b, 0, sizeof(b));
		initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
		initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_145058(opr_498575[(m)- 47]);
		LOC5[1] = rdloc_474964(&a);
		LOC5[2] = rdloc_474964(&b);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_189694(e, 1);
		LOC5[3] = getsimpletypedesc_471061((*p).Module, (*LOC6).Typ);
		LOC7 = 0;
		LOC7 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3415), LOC5, 4);
		putintodest_490145(p, d, (*e).Typ, LOC7);
		{
			TY145497 LOC12;
			if (!(((*p).Options &(1<<((((NU8) 7))&31)))!=0)) goto LA10;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_474964(&(*d));
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3419), LOC12, 1);
		}
		LA10: ;
		{
			TY145497 LOC17;
			if (!(((*p).Options &(1<<((((NU8) 8))&31)))!=0)) goto LA15;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = rdloc_474964(&(*d));
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3420), LOC17, 1);
		}
		LA15: ;
	}
	goto LA1;
	LA3: ;
	{
		binaryarith_491640(p, e, d, m);
	}
	LA1: ;
}

N_NIMCALL(void, geneqproc_492042)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	tloc188817 b;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
	{
		TY503234 LOC5;
		trope145007* LOC6;
		if (!((*a.T).Callconv == ((NU8) 8))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_474964(&a);
		LOC5[1] = rdloc_474964(&b);
		LOC6 = 0;
		LOC6 = ropef_145079(((NimStringDesc*) &TMP3450), LOC5, 2);
		putintodest_490145(p, d, (*e).Typ, LOC6);
	}
	goto LA1;
	LA3: ;
	{
		TY503234 LOC8;
		trope145007* LOC9;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_474964(&a);
		LOC8[1] = rdloc_474964(&b);
		LOC9 = 0;
		LOC9 = ropef_145079(((NimStringDesc*) &TMP3439), LOC8, 2);
		putintodest_490145(p, d, (*e).Typ, LOC9);
	}
	LA1: ;
}

N_NIMCALL(void, binaryarithoverflow_491096)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 m) {
	tloc188817 a;
	tloc188817 b;
	ttype188837* t;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
	t = skiptypes_192793((*e).Typ, IL64(211106233624832));
	{
		TY471942 LOC5;
		NI64 LOC6;
		trope145007* LOC7;
		if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_145058(opr_491108[(m)- 37]);
		LOC5[1] = rdloc_474964(&a);
		LOC5[2] = rdloc_474964(&b);
		LOC6 = 0;
		LOC6 = getsize_223158(t);
		LOC5[3] = torope_145062((NI64)(LOC6 * 8));
		LOC7 = 0;
		LOC7 = ropef_145079(((NimStringDesc*) &TMP3451), LOC5, 4);
		putintodest_490145(p, d, (*e).Typ, LOC7);
	}
	goto LA1;
	LA3: ;
	{
		trope145007* storage;
		NI64 size;
		trope145007* tmp;
		TY503234 LOC14;
		TY471942 LOC15;
		TY503234 LOC25;
		NI64 LOC26;
		trope145007* LOC27;
		storage = 0;
		size = getsize_223158(t);
		{
			if (!(size < ((NI64) (intsize_142590)))) goto LA11;
			storage = torope_145058(((NimStringDesc*) &TMP3156));
		}
		goto LA9;
		LA11: ;
		{
			storage = gettypedesc_472091((*p).Module, t);
		}
		LA9: ;
		tmp = gettempname_470368();
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = storage;
		LOC14[1] = tmp;
		linefmt_469102(p, ((NU8) 0), ((NimStringDesc*) &TMP3167), LOC14, 2);
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = tmp;
		LOC15[1] = torope_145058(prc_491103[(m)- 37]);
		LOC15[2] = rdloc_474964(&a);
		LOC15[3] = rdloc_474964(&b);
		linecg_469093(p, ((NU8) 2), ((NimStringDesc*) &TMP3452), LOC15, 4);
		{
			NIM_BOOL LOC18;
			TY470214 LOC22;
			NI64 LOC23;
			NI64 LOC24;
			LOC18 = 0;
			LOC18 = (size < ((NI64) (intsize_142590)));
			if (LOC18) goto LA19;
			LOC18 = ((*t).Kind == ((NU8) 20) || (*t).Kind == ((NU8) 14) || (*t).Kind == ((NU8) 19));
			LA19: ;
			if (!LOC18) goto LA20;
			memset((void*)LOC22, 0, sizeof(LOC22));
			LOC22[0] = tmp;
			LOC23 = 0;
			LOC23 = firstord_223002(t);
			LOC22[1] = intliteral_476518(LOC23);
			LOC24 = 0;
			LOC24 = lastord_223006(t);
			LOC22[2] = intliteral_476518(LOC24);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3463), LOC22, 3);
		}
		LA20: ;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC26 = 0;
		LOC26 = getsize_223158(t);
		LOC25[0] = torope_145062((NI64)(LOC26 * 8));
		LOC25[1] = tmp;
		LOC27 = 0;
		LOC27 = ropef_145079(((NimStringDesc*) &TMP3464), LOC25, 2);
		putintodest_490145(p, d, (*e).Typ, LOC27);
	}
	LA1: ;
}

static N_INLINE(trope145007*, lenfield_476535)(void) {
	trope145007* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	{
		if (!!((gcmd_137113 == ((NU8) 2)))) goto LA4;
		LOC1 = copyString(((NimStringDesc*) &TMP3276));
	}
	goto LA2;
	LA4: ;
	{
		LOC1 = copyString(((NimStringDesc*) &TMP3277));
	}
	LA2: ;
	result = torope_145058(LOC1);
	return result;
}

N_NIMCALL(void, gcusage_494811)(tnode188803* n) {
	{
		NimStringDesc* LOC5;
		if (!(gselectedgc_137114 == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_211051(n, 0);
		message_165584((*n).Info, ((NU16) 255), LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, genrepr_496312)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	ttype188837* t;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	t = skiptypes_192793((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	switch ((*t).Kind) {
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 40) ... ((NU8) 44):
	{
		TY145497 LOC2;
		trope145007* LOC3;
		memset((void*)LOC2, 0, sizeof(LOC2));
		LOC2[0] = rdloc_474964(&a);
		LOC3 = 0;
		LOC3 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3465), LOC2, 1);
		putintodest_490145(p, d, (*e).Typ, LOC3);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		TY145497 LOC5;
		trope145007* LOC6;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_474964(&a);
		LOC6 = 0;
		LOC6 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3466), LOC5, 1);
		putintodest_490145(p, d, (*e).Typ, LOC6);
	}
	break;
	case ((NU8) 1):
	{
		TY145497 LOC8;
		trope145007* LOC9;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_474964(&a);
		LOC9 = 0;
		LOC9 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3467), LOC8, 1);
		putintodest_490145(p, d, (*e).Typ, LOC9);
	}
	break;
	case ((NU8) 2):
	{
		TY145497 LOC11;
		trope145007* LOC12;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = rdloc_474964(&a);
		LOC12 = 0;
		LOC12 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3468), LOC11, 1);
		putintodest_490145(p, d, (*e).Typ, LOC12);
	}
	break;
	case ((NU8) 14):
	case ((NU8) 15):
	{
		TY503234 LOC14;
		trope145007* LOC15;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = rdloc_474964(&a);
		LOC14[1] = gentypeinfo_472392((*p).Module, t);
		LOC15 = 0;
		LOC15 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3469), LOC14, 2);
		putintodest_490145(p, d, (*e).Typ, LOC15);
	}
	break;
	case ((NU8) 28):
	{
		TY145497 LOC17;
		trope145007* LOC18;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = rdloc_474964(&a);
		LOC18 = 0;
		LOC18 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3470), LOC17, 1);
		putintodest_490145(p, d, (*e).Typ, LOC18);
	}
	break;
	case ((NU8) 19):
	{
		TY503234 LOC20;
		trope145007* LOC21;
		memset((void*)LOC20, 0, sizeof(LOC20));
		LOC20[0] = addrloc_474987(&a);
		LOC20[1] = gentypeinfo_472392((*p).Module, t);
		LOC21 = 0;
		LOC21 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3471), LOC20, 2);
		putintodest_490145(p, d, (*e).Typ, LOC21);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		tloc188817 b;
		TY503234 LOC34;
		ttype188837* LOC35;
		trope145007* LOC36;
		memset((void*)&b, 0, sizeof(b));
		switch ((*a.T).Kind) {
		case ((NU8) 27):
		case ((NU8) 48):
		{
			TY145497 LOC24;
			trope145007* LOC25;
			memset((void*)LOC24, 0, sizeof(LOC24));
			LOC24[0] = rdloc_474964(&a);
			LOC25 = 0;
			LOC25 = ropef_145079(((NimStringDesc*) &TMP3472), LOC24, 1);
			putintodest_490145(p, &b, (*e).Typ, LOC25);
		}
		break;
		case ((NU8) 28):
		case ((NU8) 24):
		{
			TY503234 LOC27;
			trope145007* LOC28;
			memset((void*)LOC27, 0, sizeof(LOC27));
			LOC27[0] = rdloc_474964(&a);
			LOC27[1] = lenfield_476535();
			LOC28 = 0;
			LOC28 = ropef_145079(((NimStringDesc*) &TMP3473), LOC27, 2);
			putintodest_490145(p, &b, (*e).Typ, LOC28);
		}
		break;
		case ((NU8) 16):
		case ((NU8) 4):
		{
			TY503234 LOC30;
			NI64 LOC31;
			trope145007* LOC32;
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = rdloc_474964(&a);
			LOC31 = 0;
			LOC31 = lengthord_223010(a.T);
			LOC30[1] = torope_145062(LOC31);
			LOC32 = 0;
			LOC32 = ropef_145079(((NimStringDesc*) &TMP3474), LOC30, 2);
			putintodest_490145(p, &b, (*e).Typ, LOC32);
		}
		break;
		default:
		{
			internalerror_165591((*(*e).kindU.S6.Sons->data[0]).Info, ((NimStringDesc*) &TMP3475));
		}
		break;
		}
		memset((void*)LOC34, 0, sizeof(LOC34));
		LOC34[0] = rdloc_474964(&b);
		LOC35 = 0;
		LOC35 = elemtype_223559(t);
		LOC34[1] = gentypeinfo_472392((*p).Module, LOC35);
		LOC36 = 0;
		LOC36 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3476), LOC34, 2);
		putintodest_490145(p, d, (*e).Typ, LOC36);
	}
	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):
	{
		TY503234 LOC38;
		trope145007* LOC39;
		memset((void*)LOC38, 0, sizeof(LOC38));
		LOC38[0] = rdloc_474964(&a);
		LOC38[1] = gentypeinfo_472392((*p).Module, t);
		LOC39 = 0;
		LOC39 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3477), LOC38, 2);
		putintodest_490145(p, d, (*e).Typ, LOC39);
	}
	break;
	default:
	{
		TY503234 LOC41;
		trope145007* LOC42;
		memset((void*)LOC41, 0, sizeof(LOC41));
		LOC41[0] = addrloc_474987(&a);
		LOC41[1] = gentypeinfo_472392((*p).Module, t);
		LOC42 = 0;
		LOC42 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3477), LOC41, 2);
		putintodest_490145(p, d, (*e).Typ, LOC42);
	}
	break;
	}
	gcusage_494811(e);
}

N_NIMCALL(void, gengettypeinfo_496422)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	ttype188837* t;
	trope145007* LOC1;
	t = skiptypes_192793((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	LOC1 = 0;
	LOC1 = gentypeinfo_472392((*p).Module, t);
	putintodest_490145(p, d, (*e).Typ, LOC1);
}

N_NIMCALL(void, genswap_496870)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	tloc188817 b;
	tloc188817 tmp;
	ttype188837* LOC1;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	memset((void*)&tmp, 0, sizeof(tmp));
	LOC1 = 0;
	LOC1 = skiptypes_192793((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	gettemp_473840(p, LOC1, &tmp);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
	genassignment_476511(p, &tmp, &a, 0);
	genassignment_476511(p, &a, &b, 0);
	genassignment_476511(p, &b, &tmp, 0);
}

N_NIMCALL(void, unaryexpr_491038)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt) {
	tloc188817 a;
	TY145497 LOC1;
	trope145007* LOC2;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_474964(&a);
	LOC2 = 0;
	LOC2 = ropecg_468609((*p).Module, frmt, LOC1, 1);
	putintodest_490145(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, binaryexpr_490329)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt) {
	tloc188817 a;
	tloc188817 b;
	TY503234 LOC1;
	trope145007* LOC2;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_474964(&a);
	LOC1[1] = rdloc_474964(&b);
	LOC2 = 0;
	LOC2 = ropecg_468609((*p).Module, frmt, LOC1, 2);
	putintodest_490145(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, binarystmt_490181)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt) {
	tloc188817 a;
	tloc188817 b;
	TY503234 LOC5;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	{
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3484));
	}
	LA3: ;
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = rdloc_474964(&a);
	LOC5[1] = rdloc_474964(&b);
	linecg_469093(p, ((NU8) 2), frmt, LOC5, 2);
}

N_NIMCALL(void, genstrconcat_494824)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	tloc188817 tmp;
	NI l;
	trope145007* appends;
	trope145007* lens;
	NI i_494848;
	NI HEX3Atmp_495008;
	NI LOC1;
	NI res_495010;
	TY470214 LOC19;
	trope145007** LOC20;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&tmp, 0, sizeof(tmp));
	gettemp_473840(p, (*e).Typ, &tmp);
	l = 0;
	appends = NIM_NIL;
	lens = NIM_NIL;
	i_494848 = 0;
	HEX3Atmp_495008 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(e);
	HEX3Atmp_495008 = (NI32)(LOC1 - 2);
	res_495010 = 0;
	while (1) {
		if (!(res_495010 <= HEX3Atmp_495008)) goto LA2;
		i_494848 = res_495010;
		initlocexpr_476527(p, (*e).kindU.S6.Sons->data[(NI32)(i_494848 + 1)], &a);
		{
			ttype188837* LOC5;
			TY503234 LOC8;
			trope145007* LOC9;
			LOC5 = 0;
			LOC5 = skiptypes_192793((*(*e).kindU.S6.Sons->data[(NI32)(i_494848 + 1)]).Typ, IL64(211106242013440));
			if (!((*LOC5).Kind == ((NU8) 2))) goto LA6;
			l += 1;
			memset((void*)LOC8, 0, sizeof(LOC8));
			LOC8[0] = tmp.R;
			LOC8[1] = rdloc_474964(&a);
			LOC9 = 0;
			LOC9 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3491), LOC8, 2);
			app_145040(&appends, LOC9);
		}
		goto LA3;
		LA6: ;
		{
			TY503234 LOC17;
			trope145007* LOC18;
			{
				if (!((*(*e).kindU.S6.Sons->data[(NI32)(i_494848 + 1)]).Kind >= ((NU8) 20) && (*(*e).kindU.S6.Sons->data[(NI32)(i_494848 + 1)]).Kind <= ((NU8) 22))) goto LA13;
				l += (*(*e).kindU.S6.Sons->data[(NI32)(i_494848 + 1)]).kindU.S3.Strval->Sup.len;
			}
			goto LA11;
			LA13: ;
			{
				TY503234 LOC16;
				memset((void*)LOC16, 0, sizeof(LOC16));
				LOC16[0] = rdloc_474964(&a);
				LOC16[1] = lenfield_476535();
				appf_145085(&lens, ((NimStringDesc*) &TMP3492), LOC16, 2);
			}
			LA11: ;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = tmp.R;
			LOC17[1] = rdloc_474964(&a);
			LOC18 = 0;
			LOC18 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3493), LOC17, 2);
			app_145040(&appends, LOC18);
		}
		LA3: ;
		res_495010 += 1;
	} LA2: ;
	memset((void*)LOC19, 0, sizeof(LOC19));
	LOC19[0] = tmp.R;
	LOC19[1] = lens;
	LOC19[2] = torope_145062(((NI64) (l)));
	linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3494), LOC19, 3);
	LOC20 = 0;
	LOC20 = s_465173(p, ((NU8) 2));
	app_145040(LOC20, appends);
	{
		if (!((*d).K == ((NU8) 0))) goto LA23;
		genericAssign((void*)&(*d), (void*)&tmp, (&NTI188817));
		keepalive_475276(p, &tmp);
	}
	goto LA21;
	LA23: ;
	{
		genassignment_476511(p, &(*d), &tmp, 64);
	}
	LA21: ;
	gcusage_494811(e);
}

N_NIMCALL(void, genstrappend_495014)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	tloc188817 dest;
	trope145007* appends;
	trope145007* lens;
	NI l;
	NI i_495229;
	NI HEX3Atmp_495379;
	NI LOC1;
	NI res_495381;
	TY470214 LOC19;
	trope145007** LOC20;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&dest, 0, sizeof(dest));
	appends = 0;
	lens = 0;
	l = 0;
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &dest);
	i_495229 = 0;
	HEX3Atmp_495379 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(e);
	HEX3Atmp_495379 = (NI32)(LOC1 - 3);
	res_495381 = 0;
	while (1) {
		if (!(res_495381 <= HEX3Atmp_495379)) goto LA2;
		i_495229 = res_495381;
		initlocexpr_476527(p, (*e).kindU.S6.Sons->data[(NI32)(i_495229 + 2)], &a);
		{
			ttype188837* LOC5;
			TY503234 LOC8;
			trope145007* LOC9;
			LOC5 = 0;
			LOC5 = skiptypes_192793((*(*e).kindU.S6.Sons->data[(NI32)(i_495229 + 2)]).Typ, IL64(211106242013440));
			if (!((*LOC5).Kind == ((NU8) 2))) goto LA6;
			l += 1;
			memset((void*)LOC8, 0, sizeof(LOC8));
			LOC8[0] = rdloc_474964(&dest);
			LOC8[1] = rdloc_474964(&a);
			LOC9 = 0;
			LOC9 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3491), LOC8, 2);
			app_145040(&appends, LOC9);
		}
		goto LA3;
		LA6: ;
		{
			TY503234 LOC17;
			trope145007* LOC18;
			{
				if (!((*(*e).kindU.S6.Sons->data[(NI32)(i_495229 + 2)]).Kind >= ((NU8) 20) && (*(*e).kindU.S6.Sons->data[(NI32)(i_495229 + 2)]).Kind <= ((NU8) 22))) goto LA13;
				l += (*(*e).kindU.S6.Sons->data[(NI32)(i_495229 + 2)]).kindU.S3.Strval->Sup.len;
			}
			goto LA11;
			LA13: ;
			{
				TY503234 LOC16;
				memset((void*)LOC16, 0, sizeof(LOC16));
				LOC16[0] = rdloc_474964(&a);
				LOC16[1] = lenfield_476535();
				appf_145085(&lens, ((NimStringDesc*) &TMP3492), LOC16, 2);
			}
			LA11: ;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = rdloc_474964(&dest);
			LOC17[1] = rdloc_474964(&a);
			LOC18 = 0;
			LOC18 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3493), LOC17, 2);
			app_145040(&appends, LOC18);
		}
		LA3: ;
		res_495381 += 1;
	} LA2: ;
	memset((void*)LOC19, 0, sizeof(LOC19));
	LOC19[0] = rdloc_474964(&dest);
	LOC19[1] = lens;
	LOC19[2] = torope_145062(((NI64) (l)));
	linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3496), LOC19, 3);
	keepalive_475276(p, &dest);
	LOC20 = 0;
	LOC20 = s_465173(p, ((NU8) 2));
	app_145040(LOC20, appends);
	gcusage_494811(e);
}

N_NIMCALL(void, genseqelemappend_495385)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	NimStringDesc* seqappendpattern;
	tloc188817 a;
	tloc188817 b;
	tloc188817 dest;
	TY470214 LOC6;
	ttype188837* LOC7;
	ttype188837* LOC8;
	TY503234 LOC9;
	{
		if (!!((gcmd_137113 == ((NU8) 2)))) goto LA3;
		seqappendpattern = copyString(((NimStringDesc*) &TMP3497));
	}
	goto LA1;
	LA3: ;
	{
		seqappendpattern = copyString(((NimStringDesc*) &TMP3498));
	}
	LA1: ;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	memset((void*)&dest, 0, sizeof(dest));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
	memset((void*)LOC6, 0, sizeof(LOC6));
	LOC6[0] = rdloc_474964(&a);
	LOC7 = 0;
	LOC7 = skiptypes_192793((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	LOC6[1] = gettypedesc_472091((*p).Module, LOC7);
	LOC8 = 0;
	LOC8 = skiptypes_192793((*(*e).kindU.S6.Sons->data[2]).Typ, IL64(211106240964864));
	LOC6[2] = gettypedesc_472091((*p).Module, LOC8);
	linecg_469093(p, ((NU8) 2), seqappendpattern, LOC6, 3);
	keepalive_475276(p, &a);
	initloc_468340(&dest, ((NU8) 7), b.T, ((NU8) 2));
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC9[0] = rdloc_474964(&a);
	LOC9[1] = lenfield_476535();
	dest.R = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3499), LOC9, 2);
	genassignment_476511(p, &dest, &b, 5);
	gcusage_494811(e);
}

N_NIMCALL(void, genstrequals_498380)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 x;
	tnode188803* a;
	tnode188803* b;
	memset((void*)&x, 0, sizeof(x));
	a = (*e).kindU.S6.Sons->data[1];
	b = (*e).kindU.S6.Sons->data[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_490329(p, e, d, ((NimStringDesc*) &TMP3439));
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC8;
		TY503234 LOC12;
		trope145007* 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_476527(p, (*e).kindU.S6.Sons->data[2], &x);
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = rdloc_474964(&x);
		LOC12[1] = lenfield_476535();
		LOC13 = 0;
		LOC13 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3500), LOC12, 2);
		putintodest_490145(p, d, (*e).Typ, LOC13);
	}
	goto LA1;
	LA10: ;
	{
		NIM_BOOL LOC15;
		TY503234 LOC19;
		trope145007* 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_476527(p, (*e).kindU.S6.Sons->data[1], &x);
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = rdloc_474964(&x);
		LOC19[1] = lenfield_476535();
		LOC20 = 0;
		LOC20 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3500), LOC19, 2);
		putintodest_490145(p, d, (*e).Typ, LOC20);
	}
	goto LA1;
	LA17: ;
	{
		binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3501));
	}
	LA1: ;
}

N_NIMCALL(void, genisnil_492451)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	ttype188837* t;
	t = skiptypes_192793((*(*e).kindU.S6.Sons->data[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_491038(p, e, d, ((NimStringDesc*) &TMP3504));
	}
	goto LA1;
	LA5: ;
	{
		unaryexpr_491038(p, e, d, ((NimStringDesc*) &TMP3505));
	}
	LA1: ;
}

N_NIMCALL(void, gendollar_496444)(tcproc465026* p, tnode188803* n, tloc188817* d, NimStringDesc* frmt) {
	tloc188817 a;
	TY145497 LOC1;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*n).kindU.S6.Sons->data[1], &a);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_474964(&a);
	a.R = ropecg_468609((*p).Module, frmt, LOC1, 1);
	{
		if (!((*d).K == ((NU8) 0))) goto LA4;
		gettemp_473840(p, (*n).Typ, d);
	}
	LA4: ;
	genassignment_476511(p, &(*d), &a, 64);
	gcusage_494811(n);
}

N_NIMCALL(void, genof_496164)(tcproc465026* p, tnode188803* x, ttype188837* typ, tloc188817* d) {
	tloc188817 a;
	ttype188837* dest;
	trope145007* r;
	trope145007* nilcheck;
	ttype188837* t;
	ttype188837* LOC29;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, x, &a);
	dest = skiptypes_192793(typ, IL64(211106247256320));
	r = rdloc_474964(&a);
	nilcheck = NIM_NIL;
	t = skiptypes_192793(a.T, IL64(211106232576256));
	while (1) {
		TY145497 LOC6;
		ttype188837* LOC7;
		if (!((*t).Kind == ((NU8) 23) || (*t).Kind == ((NU8) 21) || (*t).Kind == ((NU8) 22))) goto LA1;
		{
			if (!!(((*t).Kind == ((NU8) 23)))) goto LA4;
			nilcheck = r;
		}
		LA4: ;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = r;
		r = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3269), LOC6, 1);
		LOC7 = 0;
		LOC7 = lastson_189193(t);
		t = skiptypes_192793(LOC7, IL64(211106232576256));
	} LA1: ;
	{
		if (!!((gcmd_137113 == ((NU8) 2)))) goto LA10;
		while (1) {
			NIM_BOOL LOC13;
			TY469906 LOC15;
			trope145007* LOC16;
			LOC13 = 0;
			LOC13 = ((*t).Kind == ((NU8) 17));
			if (!(LOC13)) goto LA14;
			LOC13 = !(((*t).Sons->data[0] == NIM_NIL));
			LA14: ;
			if (!LOC13) goto LA12;
			memset((void*)LOC15, 0, sizeof(LOC15));
			LOC16 = 0;
			LOC16 = ropef_145079(((NimStringDesc*) &TMP3272), LOC15, 0);
			app_145040(&r, LOC16);
			t = skiptypes_192793((*t).Sons->data[0], IL64(211106232576256));
		} LA12: ;
	}
	LA10: ;
	{
		NIM_BOOL LOC19;
		LOC19 = 0;
		LOC19 = isobjlackingtypefield_472601(t);
		if (!LOC19) goto LA20;
		globalerror_165558((*x).Info, ((NU16) 4), ((NimStringDesc*) &TMP3512));
	}
	LA20: ;
	{
		TY470214 LOC26;
		if (!!((nilcheck == NIM_NIL))) goto LA24;
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = nilcheck;
		LOC26[1] = r;
		LOC26[2] = gentypeinfo_472392((*p).Module, dest);
		r = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3513), LOC26, 3);
	}
	goto LA22;
	LA24: ;
	{
		TY503234 LOC28;
		memset((void*)LOC28, 0, sizeof(LOC28));
		LOC28[0] = r;
		LOC28[1] = gentypeinfo_472392((*p).Module, dest);
		r = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3514), LOC28, 2);
	}
	LA22: ;
	LOC29 = 0;
	LOC29 = getsystype_242024(((NU8) 1));
	putintodest_490145(p, d, LOC29, r);
}

N_NIMCALL(void, genof_496277)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	genof_496164(p, (*n).kindU.S6.Sons->data[1], (*(*n).kindU.S6.Sons->data[2]).Typ, d);
}

N_NIMCALL(void, rawgennew_495502)(tcproc465026* p, tloc188817* a, trope145007* sizeexpr_495506) {
	trope145007* sizeexpr;
	ttype188837* reftype;
	tloc188817 b;
	TY470214 args;
	ttype188837* bt;
	sizeexpr = sizeexpr_495506;
	reftype = skiptypes_192793((*a).T, IL64(211106242013440));
	memset((void*)&b, 0, sizeof(b));
	initloc_468340(&b, ((NU8) 7), (*a).T, ((NU8) 2));
	{
		TY145497 LOC5;
		ttype188837* LOC6;
		if (!sizeexpr == 0) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC6 = 0;
		LOC6 = skiptypes_192793((*reftype).Sons->data[0], IL64(211106233624832));
		LOC5[0] = gettypedesc_472091((*p).Module, LOC6);
		sizeexpr = ropef_145079(((NimStringDesc*) &TMP3515), LOC5, 1);
	}
	LA3: ;
	args[0] = gettypedesc_472091((*p).Module, reftype);
	args[1] = gentypeinfo_472392((*p).Module, reftype);
	args[2] = sizeexpr;
	{
		NIM_BOOL LOC9;
		TY503234 LOC21;
		LOC9 = 0;
		LOC9 = ((*a).S == ((NU8) 2));
		if (!(LOC9)) goto LA10;
		LOC9 = usesnativegc_137164();
		LA10: ;
		if (!LOC9) goto LA11;
		{
			NIM_BOOL LOC15;
			TY145497 LOC18;
			LOC15 = 0;
			LOC15 = canformacycle_223142((*a).T);
			if (!LOC15) goto LA16;
			memset((void*)LOC18, 0, sizeof(LOC18));
			LOC18[0] = rdloc_474964(a);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3516), LOC18, 1);
		}
		goto LA13;
		LA16: ;
		{
			TY145497 LOC20;
			memset((void*)LOC20, 0, sizeof(LOC20));
			LOC20[0] = rdloc_474964(a);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3345), LOC20, 1);
		}
		LA13: ;
		b.R = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3517), args, 3);
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = rdloc_474964(a);
		LOC21[1] = rdloc_474964(&b);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3338), LOC21, 2);
	}
	goto LA7;
	LA11: ;
	{
		b.R = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3518), args, 3);
		genassignment_476511(p, a, &b, 64);
	}
	LA7: ;
	bt = skiptypes_192793((*reftype).Sons->data[0], IL64(211106233624832));
	genobjectinit_475034(p, ((NU8) 2), bt, a, NIM_FALSE);
}

N_NIMCALL(void, gennew_495554)(tcproc465026* p, tnode188803* e) {
	tloc188817 a;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	{
		NI LOC3;
		tloc188817 se;
		trope145007* LOC6;
		LOC3 = 0;
		LOC3 = len_189264(e);
		if (!(LOC3 == 3)) goto LA4;
		memset((void*)&se, 0, sizeof(se));
		initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &se);
		LOC6 = 0;
		LOC6 = rdloc_474964(&se);
		rawgennew_495502(p, &a, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		rawgennew_495502(p, &a, NIM_NIL);
	}
	LA1: ;
	gcusage_494811(e);
}

N_NIMCALL(void, gennewfinalize_496090)(tcproc465026* p, tnode188803* e) {
	tloc188817 a;
	tloc188817 b;
	tloc188817 f;
	ttype188837* reftype;
	ttype188837* bt;
	trope145007* ti;
	tcgen465030* oldmodule;
	TY503234 LOC1;
	TY470214 LOC2;
	ttype188837* LOC3;
	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_192793((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &f);
	initloc_468340(&b, ((NU8) 7), a.T, ((NU8) 2));
	ti = gentypeinfo_472392((*p).Module, reftype);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = ti;
	LOC1[1] = rdloc_474964(&f);
	appf_145085(&(*(*p).Module).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3519), LOC1, 2);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = gettypedesc_472091((*p).Module, reftype);
	LOC2[1] = ti;
	LOC3 = 0;
	LOC3 = skiptypes_192793((*reftype).Sons->data[0], IL64(211106233624832));
	LOC2[2] = gettypedesc_472091((*p).Module, LOC3);
	b.R = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3520), LOC2, 3);
	genassignment_476511(p, &a, &b, 64);
	bt = skiptypes_192793((*reftype).Sons->data[0], IL64(211106233624832));
	genobjectinit_475034(p, ((NU8) 2), bt, &a, NIM_FALSE);
	gcusage_494811(e);
}

N_NIMCALL(void, gennewseqaux_495593)(tcproc465026* p, tloc188817* dest, trope145007* length) {
	ttype188837* seqtype;
	TY470214 args;
	tloc188817 call;
	seqtype = skiptypes_192793((*dest).T, IL64(211106242013440));
	args[0] = gettypedesc_472091((*p).Module, seqtype);
	args[1] = gentypeinfo_472392((*p).Module, seqtype);
	args[2] = length;
	memset((void*)&call, 0, sizeof(call));
	initloc_468340(&call, ((NU8) 7), (*dest).T, ((NU8) 2));
	{
		NIM_BOOL LOC3;
		TY503234 LOC15;
		LOC3 = 0;
		LOC3 = ((*dest).S == ((NU8) 2));
		if (!(LOC3)) goto LA4;
		LOC3 = usesnativegc_137164();
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NIM_BOOL LOC9;
			TY145497 LOC12;
			LOC9 = 0;
			LOC9 = canformacycle_223142((*dest).T);
			if (!LOC9) goto LA10;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_474964(dest);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3516), LOC12, 1);
		}
		goto LA7;
		LA10: ;
		{
			TY145497 LOC14;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = rdloc_474964(dest);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3345), LOC14, 1);
		}
		LA7: ;
		call.R = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3521), args, 3);
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = rdloc_474964(dest);
		LOC15[1] = rdloc_474964(&call);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3338), LOC15, 2);
	}
	goto LA1;
	LA5: ;
	{
		call.R = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3522), args, 3);
		genassignment_476511(p, dest, &call, 64);
	}
	LA1: ;
}

N_NIMCALL(void, gennewseq_495628)(tcproc465026* p, tnode188803* e) {
	tloc188817 a;
	tloc188817 b;
	trope145007* LOC1;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
	LOC1 = 0;
	LOC1 = rdloc_474964(&b);
	gennewseqaux_495593(p, &a, LOC1);
	gcusage_494811(e);
}

N_NIMCALL(trope145007*, getclosuretype_472104)(tcgen465030* m, ttype188837* t, NU8 kind) {
	trope145007* result;
	tintset185047 check;
	trope145007* rettype;
	trope145007* desc;
	result = 0;
	chckNil((void*)&check);
	memset((void*)&check, 0, sizeof(check));
	initintset_185918(&check);
	result = gettempname_470368();
	rettype = 0;
	desc = 0;
	genprocparams_470622(m, t, &rettype, &desc, &check, !((kind == ((NU8) 0))));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isimportedtype_470981(t);
		if (!!(LOC3)) goto LA4;
		{
			NIM_BOOL LOC8;
			TY471942 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] = torope_145058(callingconvtostr_470350[((*t).Callconv)- 0]);
			LOC12[1] = rettype;
			LOC12[2] = result;
			LOC12[3] = desc;
			appf_145085(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3189), LOC12, 4);
		}
		goto LA6;
		LA10: ;
		{
			TY470214 LOC14;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = result;
			LOC14[1] = rettype;
			LOC14[2] = desc;
			appf_145085(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3200), LOC14, 3);
		}
		LA6: ;
	}
	LA4: ;
	return result;
}

N_NIMCALL(trope145007*, rdcharloc_475015)(tloc188817* a) {
	trope145007* result;
	result = 0;
	result = rdloc_474964(a);
	{
		ttype188837* LOC3;
		TY145497 LOC6;
		LOC3 = 0;
		LOC3 = skiptypes_192793((*a).T, IL64(211106233624832));
		if (!((*LOC3).Kind == ((NU8) 2))) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = result;
		result = ropef_145079(((NimStringDesc*) &TMP3526), LOC6, 1);
	}
	LA4: ;
	return result;
}

N_NIMCALL(void, gensomecast_497975)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	ttype188837* etyp;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	etyp = skiptypes_192793((*e).Typ, IL64(211106233624832));
	{
		NIM_BOOL LOC3;
		TY503234 LOC7;
		trope145007* 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 &(1<<((((NU8) 0))&7)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_472091((*p).Module, (*e).Typ);
		LOC7[1] = addrloc_474987(&a);
		LOC8 = 0;
		LOC8 = ropef_145079(((NimStringDesc*) &TMP3524), LOC7, 2);
		putintodest_490145(p, d, (*e).Typ, LOC8);
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC10;
		TY503234 LOC14;
		trope145007* 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_472104((*p).Module, etyp, ((NU8) 1));
		LOC14[1] = rdcharloc_475015(&a);
		LOC15 = 0;
		LOC15 = ropef_145079(((NimStringDesc*) &TMP3525), LOC14, 2);
		putintodest_490145(p, d, (*e).Typ, LOC15);
	}
	goto LA1;
	LA12: ;
	{
		TY503234 LOC17;
		trope145007* LOC18;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = gettypedesc_472091((*p).Module, (*e).Typ);
		LOC17[1] = rdcharloc_475015(&a);
		LOC18 = 0;
		LOC18 = ropef_145079(((NimStringDesc*) &TMP3525), LOC17, 2);
		putintodest_490145(p, d, (*e).Typ, LOC18);
	}
	LA1: ;
}

N_NIMCALL(void, unaryexprchar_491067)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt) {
	tloc188817 a;
	TY145497 LOC1;
	trope145007* LOC2;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdcharloc_475015(&a);
	LOC2 = 0;
	LOC2 = ropecg_468609((*p).Module, frmt, LOC1, 1);
	putintodest_490145(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, genord_497968)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	unaryexprchar_491067(p, e, d, ((NimStringDesc*) &TMP3396));
}

N_NIMCALL(void, genarraylen_496483)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 op) {
	tnode188803* a;
	ttype188837* typ;
	a = (*e).kindU.S6.Sons->data[1];
	{
		if (!((*a).Kind == ((NU8) 64))) goto LA3;
		a = (*a).kindU.S6.Sons->data[0];
	}
	LA3: ;
	typ = skiptypes_192793((*a).Typ, IL64(211106240964864));
	switch ((*typ).Kind) {
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			if (!(op == ((NU16) 5))) goto LA8;
			unaryexpr_491038(p, e, d, ((NimStringDesc*) &TMP3527));
		}
		goto LA6;
		LA8: ;
		{
			unaryexpr_491038(p, e, d, ((NimStringDesc*) &TMP3528));
		}
		LA6: ;
	}
	break;
	case ((NU8) 29):
	{
		{
			if (!(op == ((NU16) 5))) goto LA14;
			unaryexpr_491038(p, e, d, ((NimStringDesc*) &TMP3529));
		}
		goto LA12;
		LA14: ;
		{
			unaryexpr_491038(p, e, d, ((NimStringDesc*) &TMP3530));
		}
		LA12: ;
	}
	break;
	case ((NU8) 28):
	case ((NU8) 24):
	{
		{
			if (!!((gcmd_137113 == ((NU8) 2)))) goto LA20;
			{
				if (!(op == ((NU16) 5))) goto LA24;
				unaryexpr_491038(p, e, d, ((NimStringDesc*) &TMP3531));
			}
			goto LA22;
			LA24: ;
			{
				unaryexpr_491038(p, e, d, ((NimStringDesc*) &TMP3532));
			}
			LA22: ;
		}
		goto LA18;
		LA20: ;
		{
			{
				if (!(op == ((NU16) 5))) goto LA30;
				unaryexpr_491038(p, e, d, ((NimStringDesc*) &TMP3533));
			}
			goto LA28;
			LA30: ;
			{
				unaryexpr_491038(p, e, d, ((NimStringDesc*) &TMP3534));
			}
			LA28: ;
		}
		LA18: ;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		{
			NI64 LOC38;
			trope145007* LOC39;
			if (!(op == ((NU16) 5))) goto LA36;
			LOC38 = 0;
			LOC38 = lastord_223006(typ);
			LOC39 = 0;
			LOC39 = torope_145062(LOC38);
			putintodest_490145(p, d, (*e).Typ, LOC39);
		}
		goto LA34;
		LA36: ;
		{
			NI64 LOC41;
			trope145007* LOC42;
			LOC41 = 0;
			LOC41 = lengthord_223010(typ);
			LOC42 = 0;
			LOC42 = torope_145062(LOC41);
			putintodest_490145(p, d, (*e).Typ, LOC42);
		}
		LA34: ;
	}
	break;
	default:
	{
		internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3535));
	}
	break;
	}
}

N_NIMCALL(void, unarystmt_490236)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt) {
	tloc188817 a;
	TY145497 LOC5;
	memset((void*)&a, 0, sizeof(a));
	{
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3536));
	}
	LA3: ;
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = rdloc_474964(&a);
	linecg_469093(p, ((NU8) 2), frmt, LOC5, 1);
}

N_NIMCALL(void, gensetlengthstr_496863)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	binarystmt_490181(p, e, d, ((NimStringDesc*) &TMP3539));
	keepalive_475276(p, &(*d));
	gcusage_494811(e);
}

N_NIMCALL(void, gensetlengthseq_496584)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	tloc188817 b;
	ttype188837* t;
	NimStringDesc* setlenpattern;
	TY471942 LOC6;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
	t = skiptypes_192793((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	{
		if (!!((gcmd_137113 == ((NU8) 2)))) goto LA3;
		setlenpattern = copyString(((NimStringDesc*) &TMP3540));
	}
	goto LA1;
	LA3: ;
	{
		setlenpattern = copyString(((NimStringDesc*) &TMP3541));
	}
	LA1: ;
	memset((void*)LOC6, 0, sizeof(LOC6));
	LOC6[0] = rdloc_474964(&a);
	LOC6[1] = rdloc_474964(&b);
	LOC6[2] = gettypedesc_472091((*p).Module, t);
	LOC6[3] = gettypedesc_472091((*p).Module, (*t).Sons->data[0]);
	linecg_469093(p, ((NU8) 2), setlenpattern, LOC6, 4);
	keepalive_475276(p, &a);
	gcusage_494811(e);
}

N_NIMCALL(trope145007*, rdsetelemloc_496934)(tloc188817* a, ttype188837* settype) {
	trope145007* result;
	result = 0;
	result = rdcharloc_475015(a);
	{
		NI64 LOC3;
		TY503234 LOC6;
		NI64 LOC7;
		LOC3 = 0;
		LOC3 = firstord_223002(settype);
		if (!!((LOC3 == 0))) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = result;
		LOC7 = 0;
		LOC7 = firstord_223002(settype);
		LOC6[1] = torope_145062(LOC7);
		result = ropef_145079(((NimStringDesc*) &TMP3542), LOC6, 2);
	}
	LA4: ;
	return result;
}

N_NIMCALL(void, binarystmtinexcl_497084)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt) {
	tloc188817 a;
	tloc188817 b;
	TY503234 LOC1;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_474964(&a);
	LOC1[1] = rdsetelemloc_496934(&b, a.T);
	linef_469084(p, ((NU8) 2), frmt, LOC1, 2);
}

N_NIMCALL(void, binaryexprchar_490638)(tcproc465026* p, tnode188803* e, tloc188817* d, NimStringDesc* frmt) {
	tloc188817 a;
	tloc188817 b;
	TY503234 LOC1;
	trope145007* LOC2;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdcharloc_475015(&a);
	LOC1[1] = rdcharloc_475015(&b);
	LOC2 = 0;
	LOC2 = ropecg_468609((*p).Module, frmt, LOC1, 2);
	putintodest_490145(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(NIM_BOOL, fewcmps_497006)(tnode188803* s) {
	NIM_BOOL result;
	result = 0;
	{
		if (!!(((*s).Kind == ((NU8) 39)))) goto LA3;
		internalerror_165591((*s).Info, ((NimStringDesc*) &TMP3556));
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		NI64 LOC8;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = getsize_223158((*s).Typ);
		LOC7 = (LOC8 <= ((NI64) (intsize_142590)));
		if (!(LOC7)) goto LA9;
		LOC7 = (((*s).Flags &(1<<((((NU8) 4))&15)))!=0);
		LA9: ;
		if (!LOC7) goto LA10;
		result = NIM_FALSE;
	}
	goto LA5;
	LA10: ;
	{
		ttype188837* LOC13;
		LOC13 = 0;
		LOC13 = elemtype_223559((*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_189181(s);
		result = (LOC17 <= 8);
	}
	LA5: ;
	return result;
}

N_NIMCALL(void, binaryexprin_497047)(tcproc465026* p, tnode188803* e, tloc188817* a, tloc188817* b, tloc188817* d, NimStringDesc* frmt) {
	TY503234 LOC1;
	trope145007* LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_474964(&(*a));
	LOC1[1] = rdsetelemloc_496934(&(*b), (*a).T);
	LOC2 = 0;
	LOC2 = ropef_145079(frmt, LOC1, 2);
	putintodest_490145(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, geninexpraux_493176)(tcproc465026* p, tnode188803* e, tloc188817* a, tloc188817* b, tloc188817* d) {
	ttype188837* LOC1;
	NI64 LOC2;
	LOC1 = 0;
	LOC1 = skiptypes_192793((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	LOC2 = 0;
	LOC2 = getsize_223158(LOC1);
	switch (((NI) (LOC2))) {
	case 1:
	{
		binaryexprin_497047(p, e, a, b, d, ((NimStringDesc*) &TMP3560));
	}
	break;
	case 2:
	{
		binaryexprin_497047(p, e, a, b, d, ((NimStringDesc*) &TMP3561));
	}
	break;
	case 4:
	{
		binaryexprin_497047(p, e, a, b, d, ((NimStringDesc*) &TMP3562));
	}
	break;
	case 8:
	{
		binaryexprin_497047(p, e, a, b, d, ((NimStringDesc*) &TMP3563));
	}
	break;
	default:
	{
		binaryexprin_497047(p, e, a, b, d, ((NimStringDesc*) &TMP3564));
	}
	break;
	}
}

N_NIMCALL(void, geninop_497238)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	tloc188817 b;
	tloc188817 x;
	tloc188817 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;
		tnode188803* ea;
		NI length;
		NI i_497385;
		NI HEX3Atmp_497837;
		NI res_497839;
		LOC3 = 0;
		LOC3 = ((*(*e).kindU.S6.Sons->data[1]).Kind == ((NU8) 39));
		if (!(LOC3)) goto LA4;
		LOC3 = fewcmps_497006((*e).kindU.S6.Sons->data[1]);
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!((*(*e).kindU.S6.Sons->data[2]).Kind == ((NU8) 70) || (*(*e).kindU.S6.Sons->data[2]).Kind == ((NU8) 69))) goto LA9;
			ea = (*(*e).kindU.S6.Sons->data[2]).kindU.S6.Sons->data[0];
		}
		goto LA7;
		LA9: ;
		{
			ea = (*e).kindU.S6.Sons->data[2];
		}
		LA7: ;
		initlocexpr_476527(p, ea, &a);
		initloc_468340(&b, ((NU8) 7), (*e).Typ, ((NU8) 0));
		b.R = torope_145058(((NimStringDesc*) &TMP3188));
		length = sonslen_189181((*e).kindU.S6.Sons->data[1]);
		i_497385 = 0;
		HEX3Atmp_497837 = 0;
		HEX3Atmp_497837 = (NI32)(length - 1);
		res_497839 = 0;
		while (1) {
			if (!(res_497839 <= HEX3Atmp_497837)) goto LA12;
			i_497385 = res_497839;
			{
				TY470214 LOC17;
				if (!((*(*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_497385]).Kind == ((NU8) 44))) goto LA15;
				initlocexpr_476527(p, (*(*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_497385]).kindU.S6.Sons->data[0], &x);
				initlocexpr_476527(p, (*(*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_497385]).kindU.S6.Sons->data[1], &y);
				memset((void*)LOC17, 0, sizeof(LOC17));
				LOC17[0] = rdcharloc_475015(&a);
				LOC17[1] = rdcharloc_475015(&x);
				LOC17[2] = rdcharloc_475015(&y);
				appf_145085(&b.R, ((NimStringDesc*) &TMP3557), LOC17, 3);
			}
			goto LA13;
			LA15: ;
			{
				TY503234 LOC19;
				initlocexpr_476527(p, (*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_497385], &x);
				memset((void*)LOC19, 0, sizeof(LOC19));
				LOC19[0] = rdcharloc_475015(&a);
				LOC19[1] = rdcharloc_475015(&x);
				appf_145085(&b.R, ((NimStringDesc*) &TMP3558), LOC19, 2);
			}
			LA13: ;
			{
				if (!(i_497385 < (NI32)(length - 1))) goto LA22;
				app_145046(&b.R, ((NimStringDesc*) &TMP3559));
			}
			LA22: ;
			res_497839 += 1;
		} LA12: ;
		app_145046(&b.R, ((NimStringDesc*) &TMP3187));
		putintodest_490145(p, d, (*e).Typ, b.R);
	}
	goto LA1;
	LA5: ;
	{
		initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
		initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
		geninexpraux_493176(p, e, &a, &b, d);
	}
	LA1: ;
}

N_NIMCALL(void, gensetop_497843)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 op) {
	tloc188817 a;
	tloc188817 b;
	tloc188817 i;
	ttype188837* 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_192793((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	LOC1 = 0;
	LOC1 = getsize_223158(settype);
	size = ((NI) (LOC1));
	switch (size) {
	case 1:
	case 2:
	case 4:
	case 8:
	{
		switch (op) {
		case ((NU16) 31):
		{
			NimStringDesc* ts;
			NimStringDesc* LOC4;
			NimStringDesc* LOC5;
			NimStringDesc* LOC6;
			LOC4 = 0;
			LOC5 = 0;
			LOC5 = nimIntToStr((NI32)(size * 8));
			LOC4 = rawNewString(LOC5->Sup.len + 2);
appendString(LOC4, ((NimStringDesc*) &TMP3156));
appendString(LOC4, LOC5);
			ts = LOC4;
			LOC6 = 0;
			LOC6 = rawNewString(ts->Sup.len + ts->Sup.len + 36);
appendString(LOC6, ((NimStringDesc*) &TMP3543));
appendString(LOC6, ts);
appendString(LOC6, ((NimStringDesc*) &TMP3544));
appendString(LOC6, ts);
appendString(LOC6, ((NimStringDesc*) &TMP3545));
			binarystmtinexcl_497084(p, e, d, LOC6);
		}
		break;
		case ((NU16) 32):
		{
			NimStringDesc* ts;
			NimStringDesc* LOC8;
			NimStringDesc* LOC9;
			NimStringDesc* LOC10;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = nimIntToStr((NI32)(size * 8));
			LOC8 = rawNewString(LOC9->Sup.len + 2);
appendString(LOC8, ((NimStringDesc*) &TMP3156));
appendString(LOC8, LOC9);
			ts = LOC8;
			LOC10 = 0;
			LOC10 = rawNewString(ts->Sup.len + ts->Sup.len + 42);
appendString(LOC10, ((NimStringDesc*) &TMP3546));
appendString(LOC10, ts);
appendString(LOC10, ((NimStringDesc*) &TMP3547));
appendString(LOC10, ts);
appendString(LOC10, ((NimStringDesc*) &TMP3545));
			binarystmtinexcl_497084(p, e, d, LOC10);
		}
		break;
		case ((NU16) 33):
		{
			{
				if (!(size <= 4)) goto LA14;
				unaryexprchar_491067(p, e, d, ((NimStringDesc*) &TMP3548));
			}
			goto LA12;
			LA14: ;
			{
				unaryexprchar_491067(p, e, d, ((NimStringDesc*) &TMP3549));
			}
			LA12: ;
		}
		break;
		case ((NU16) 141):
		{
			binaryexprchar_490638(p, e, d, ((NimStringDesc*) &TMP3550));
		}
		break;
		case ((NU16) 140):
		{
			binaryexprchar_490638(p, e, d, ((NimStringDesc*) &TMP3551));
		}
		break;
		case ((NU16) 139):
		{
			binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3439));
		}
		break;
		case ((NU16) 142):
		{
			binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3552));
		}
		break;
		case ((NU16) 143):
		{
			binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3553));
		}
		break;
		case ((NU16) 144):
		{
			binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3554));
		}
		break;
		case ((NU16) 145):
		{
			binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3555));
		}
		break;
		case ((NU16) 159):
		{
			geninop_497238(p, e, d);
		}
		break;
		default:
		{
			internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3565));
		}
		break;
		}
	}
	break;
	default:
	{
		switch (op) {
		case ((NU16) 31):
		{
			binarystmtinexcl_497084(p, e, d, ((NimStringDesc*) &TMP3566));
		}
		break;
		case ((NU16) 32):
		{
			binarystmtinexcl_497084(p, e, d, ((NimStringDesc*) &TMP3567));
		}
		break;
		case ((NU16) 33):
		{
			NimStringDesc* LOC30;
			NimStringDesc* LOC31;
			LOC30 = 0;
			LOC31 = 0;
			LOC31 = nimIntToStr(size);
			LOC30 = rawNewString(LOC31->Sup.len + 14);
appendString(LOC30, ((NimStringDesc*) &TMP3568));
appendString(LOC30, LOC31);
appendChar(LOC30, 41);
			unaryexprchar_491067(p, e, d, LOC30);
		}
		break;
		case ((NU16) 141):
		case ((NU16) 140):
		{
			ttype188837* LOC33;
			TY473397 LOC39;
			LOC33 = 0;
			LOC33 = getsystype_242024(((NU8) 31));
			gettemp_473840(p, LOC33, &i);
			initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
			initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
			{
				ttype188837* LOC38;
				if (!((*d).K == ((NU8) 0))) goto LA36;
				LOC38 = 0;
				LOC38 = getsystype_242024(((NU8) 1));
				gettemp_473840(p, LOC38, d);
			}
			LA36: ;
			memset((void*)LOC39, 0, sizeof(LOC39));
			LOC39[0] = rdloc_474964(&i);
			LOC39[1] = torope_145062(((NI64) (size)));
			LOC39[2] = rdloc_474964(&(*d));
			LOC39[3] = rdloc_474964(&a);
			LOC39[4] = rdloc_474964(&b);
			linef_469084(p, ((NU8) 2), lookupopr_497850[(op)- 140], LOC39, 5);
		}
		break;
		case ((NU16) 139):
		{
			NimStringDesc* LOC41;
			NimStringDesc* LOC42;
			usestringh_468426((*p).Module);
			LOC41 = 0;
			LOC42 = 0;
			LOC42 = nimIntToStr(size);
			LOC41 = rawNewString(LOC42->Sup.len + 21);
appendString(LOC41, ((NimStringDesc*) &TMP3574));
appendString(LOC41, LOC42);
appendString(LOC41, ((NimStringDesc*) &TMP3575));
			binaryexprchar_490638(p, e, d, LOC41);
		}
		break;
		case ((NU16) 142):
		case ((NU16) 143):
		case ((NU16) 144):
		case ((NU16) 145):
		{
			ttype188837* LOC44;
			TY473698 LOC49;
			LOC44 = 0;
			LOC44 = getsystype_242024(((NU8) 31));
			gettemp_473840(p, LOC44, &i);
			initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &a);
			initlocexpr_476527(p, (*e).kindU.S6.Sons->data[2], &b);
			{
				if (!((*d).K == ((NU8) 0))) goto LA47;
				gettemp_473840(p, a.T, d);
			}
			LA47: ;
			memset((void*)LOC49, 0, sizeof(LOC49));
			LOC49[0] = rdloc_474964(&i);
			LOC49[1] = torope_145062(((NI64) (size)));
			LOC49[2] = rdloc_474964(&(*d));
			LOC49[3] = rdloc_474964(&a);
			LOC49[4] = rdloc_474964(&b);
			LOC49[5] = torope_145058(lookupopr_497850[(op)- 140]);
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3576), LOC49, 6);
		}
		break;
		case ((NU16) 159):
		{
			geninop_497238(p, e, d);
		}
		break;
		default:
		{
			internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3577));
		}
		break;
		}
	}
	break;
	}
}

static N_INLINE(trope145007*, genargstringtocstring_477185)(tcproc465026* p, tnode188803* n) {
	trope145007* result;
	tloc188817 a;
	TY145497 LOC1;
	result = 0;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_474964(&a);
	result = ropef_145079(((NimStringDesc*) &TMP3578), LOC1, 1);
	return result;
}

N_NIMCALL(trope145007*, openarrayloc_477151)(tcproc465026* p, tnode188803* n) {
	trope145007* result;
	tloc188817 a;
	ttype188837* LOC1;
	result = 0;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, n, &a);
	LOC1 = 0;
	LOC1 = skiptypes_192793(a.T, IL64(211106240964864));
	switch ((*LOC1).Kind) {
	case ((NU8) 27):
	case ((NU8) 48):
	{
		TY145497 LOC3;
		memset((void*)LOC3, 0, sizeof(LOC3));
		LOC3[0] = rdloc_474964(&a);
		result = ropef_145079(((NimStringDesc*) &TMP3472), LOC3, 1);
	}
	break;
	case ((NU8) 28):
	case ((NU8) 24):
	{
		{
			ttype188837* LOC7;
			TY503234 LOC10;
			LOC7 = 0;
			LOC7 = skiptypes_192793((*n).Typ, IL64(211106232576256));
			if (!((*LOC7).Kind == ((NU8) 23))) goto LA8;
			memset((void*)LOC10, 0, sizeof(LOC10));
			LOC10[0] = rdloc_474964(&a);
			LOC10[1] = lenfield_476535();
			result = ropef_145079(((NimStringDesc*) &TMP3579), LOC10, 2);
		}
		goto LA5;
		LA8: ;
		{
			TY503234 LOC12;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_474964(&a);
			LOC12[1] = lenfield_476535();
			result = ropef_145079(((NimStringDesc*) &TMP3473), LOC12, 2);
		}
		LA5: ;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		TY503234 LOC14;
		NI64 LOC15;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = rdloc_474964(&a);
		LOC15 = 0;
		LOC15 = lengthord_223010(a.T);
		LOC14[1] = torope_145062(LOC15);
		result = ropef_145079(((NimStringDesc*) &TMP3474), LOC14, 2);
	}
	break;
	default:
	{
		NimStringDesc* LOC17;
		NimStringDesc* LOC18;
		LOC17 = 0;
		LOC18 = 0;
		LOC18 = typetostring_223020(a.T, ((NU8) 0));
		LOC17 = rawNewString(LOC18->Sup.len + 14);
appendString(LOC17, ((NimStringDesc*) &TMP3580));
appendString(LOC17, LOC18);
		internalerror_165606(LOC17);
	}
	break;
	}
	return result;
}

N_NIMCALL(trope145007*, genarg_477212)(tcproc465026* p, tnode188803* n_477215, tsym188833* param) {
	trope145007* result;
	tloc188817 a;
	result = 0;
	memset((void*)&a, 0, sizeof(a));
	{
		if (!((*n_477215).Kind == ((NU8) 71))) goto LA3;
		result = genargstringtocstring_477185(p, n_477215);
	}
	goto LA1;
	LA3: ;
	{
		ttype188837* LOC6;
		tnode188803* n;
		LOC6 = 0;
		LOC6 = skiptypes_192793((*param).Typ, IL64(211106240964864));
		if (!((*LOC6).Kind == ((NU8) 27) || (*LOC6).Kind == ((NU8) 48))) goto LA7;
		{
			if (!!(((*n_477215).Kind == ((NU8) 64)))) goto LA11;
			n = n_477215;
		}
		goto LA9;
		LA11: ;
		{
			n = (*n_477215).kindU.S6.Sons->data[0];
		}
		LA9: ;
		result = openarrayloc_477151(p, n);
	}
	goto LA1;
	LA7: ;
	{
		NIM_BOOL LOC15;
		LOC15 = 0;
		LOC15 = ccgintroducedptr_470384(param);
		if (!LOC15) goto LA16;
		initlocexpr_476527(p, n_477215, &a);
		result = addrloc_474987(&a);
	}
	goto LA1;
	LA16: ;
	{
		initlocexpr_476527(p, n_477215, &a);
		result = rdloc_474964(&a);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope145007*, genargnoparam_477270)(tcproc465026* p, tnode188803* n) {
	trope145007* result;
	tloc188817 a;
	result = 0;
	memset((void*)&a, 0, sizeof(a));
	{
		if (!((*n).Kind == ((NU8) 71))) goto LA3;
		result = genargstringtocstring_477185(p, n);
	}
	goto LA1;
	LA3: ;
	{
		initlocexpr_476527(p, n, &a);
		result = rdloc_474964(&a);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope145007*, getrawproctype_477876)(tcproc465026* p, ttype188837* t) {
	trope145007* result;
	result = 0;
	result = getclosuretype_472104((*p).Module, t, ((NU8) 0));
	return result;
}

N_NIMCALL(NIM_BOOL, leftappearsonrightside_476549)(tnode188803* le, tnode188803* ri) {
	NIM_BOOL result;
	result = 0;
	{
		NI i_476592;
		NI HEX3Atmp_476603;
		NI LOC5;
		NI res_476605;
		if (!!((le == NIM_NIL))) goto LA3;
		i_476592 = 0;
		HEX3Atmp_476603 = 0;
		LOC5 = 0;
		LOC5 = len_189264(ri);
		HEX3Atmp_476603 = LOC5 - 1;
		res_476605 = 1;
		while (1) {
			tnode188803* r;
			if (!(res_476605 <= HEX3Atmp_476603)) goto LA6;
			i_476592 = res_476605;
			r = HEX5BHEX5D_189694(ri, i_476592);
			{
				NU8 LOC9;
				LOC9 = 0;
				LOC9 = ispartof_411388(le, r);
				if (!!((LOC9 == ((NU8) 0)))) goto LA10;
				result = NIM_TRUE;
				goto BeforeRet;
			}
			LA10: ;
			res_476605 += 1;
		} LA6: ;
	}
	LA3: ;
	BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, hasnoinit_476609)(tnode188803* call) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*(*call).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
	if (!(LOC1)) goto LA2;
	LOC1 = (((*(*(*call).kindU.S6.Sons->data[0]).kindU.S4.Sym).Flags &(1<<((((NU8) 12))&31)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, resetloc_475152)(tcproc465026* p, tloc188817* loc) {
	NIM_BOOL containsgcref;
	containsgcref = containsgarbagecollectedref_223134((*loc).T);
	{
		ttype188837* LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC3 = skiptypes_192793((*loc).T, IL64(211106242013440));
		LOC4 = 0;
		LOC4 = iscomplexvaluetype_475114(LOC3);
		if (!!(LOC4)) goto LA5;
		{
			tloc188817 nilloc;
			if (!containsgcref) goto LA9;
			memset((void*)&nilloc, 0, sizeof(nilloc));
			initloc_468340(&nilloc, ((NU8) 1), (*loc).T, ((NU8) 1));
			nilloc.R = torope_145058(((NimStringDesc*) &TMP3293));
			genrefassign_475107(p, &(*loc), &nilloc, 16);
		}
		goto LA7;
		LA9: ;
		{
			TY145497 LOC12;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_474964(&(*loc));
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3268), LOC12, 1);
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		{
			TY145497 LOC18;
			if (!(((*p).Options &(1<<((((NU8) 6))&31)))!=0)) goto LA16;
			memset((void*)LOC18, 0, sizeof(LOC18));
			LOC18[0] = addrloc_474987(&(*loc));
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3583), LOC18, 1);
		}
		LA16: ;
		{
			TY503234 LOC23;
			if (!!(((*loc).S == ((NU8) 1)))) goto LA21;
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = addrloc_474987(&(*loc));
			LOC23[1] = gentypeinfo_472392((*p).Module, (*loc).T);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3584), LOC23, 2);
			genobjectinit_475034(p, ((NU8) 2), (*loc).T, &(*loc), NIM_TRUE);
		}
		goto LA19;
		LA21: ;
		{
			TY503234 LOC25;
			usestringh_468426((*p).Module);
			memset((void*)LOC25, 0, sizeof(LOC25));
			LOC25[0] = addrloc_474987(&(*loc));
			LOC25[1] = rdloc_474964(&(*loc));
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3271), LOC25, 2);
			genobjectinit_475034(p, ((NU8) 2), (*loc).T, &(*loc), NIM_TRUE);
		}
		LA19: ;
	}
	LA1: ;
}

N_NIMCALL(trope145007*, addcomma_477882)(trope145007* r) {
	trope145007* result;
	result = 0;
	{
		if (!(r == NIM_NIL)) goto LA3;
		result = r;
	}
	goto LA1;
	LA3: ;
	{
		TY469906 LOC6;
		trope145007* LOC7;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC7 = 0;
		LOC7 = ropef_145079(((NimStringDesc*) &TMP3178), LOC6, 0);
		result = con_145020(r, LOC7);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genclosurecall_477869)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* d) {
	tloc188817 op;
	trope145007* pl;
	ttype188837* typ;
	NI length;
	NI i_478014;
	NI HEX3Atmp_478615;
	NI res_478617;
	trope145007* rawproc;
	NimStringDesc* callpattern;
	memset((void*)&op, 0, sizeof(op));
	initlocexpr_476527(p, (*ri).kindU.S6.Sons->data[0], &op);
	pl = 0;
	typ = skiptypes_192793((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_189181(ri);
	i_478014 = 0;
	HEX3Atmp_478615 = 0;
	HEX3Atmp_478615 = (NI32)(length - 1);
	res_478617 = 1;
	while (1) {
		if (!(res_478617 <= HEX3Atmp_478615)) goto LA1;
		i_478014 = res_478617;
		{
			NI LOC4;
			trope145007* LOC7;
			LOC4 = 0;
			LOC4 = sonslen_189185(typ);
			if (!(i_478014 < LOC4)) goto LA5;
			LOC7 = 0;
			LOC7 = genarg_477212(p, (*ri).kindU.S6.Sons->data[i_478014], (*(*(*typ).N).kindU.S6.Sons->data[i_478014]).kindU.S4.Sym);
			app_145040(&pl, LOC7);
		}
		goto LA2;
		LA5: ;
		{
			trope145007* LOC9;
			LOC9 = 0;
			LOC9 = genargnoparam_477270(p, (*ri).kindU.S6.Sons->data[i_478014]);
			app_145040(&pl, LOC9);
		}
		LA2: ;
		{
			TY469906 LOC14;
			trope145007* LOC15;
			if (!(i_478014 < (NI32)(length - 1))) goto LA12;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC15 = 0;
			LOC15 = ropef_145079(((NimStringDesc*) &TMP3178), LOC14, 0);
			app_145040(&pl, LOC15);
		}
		LA12: ;
		res_478617 += 1;
	} LA1: ;
	rawproc = getrawproctype_477876(p, typ);
	{
		if (!(((*typ).Flags &(1<<((((NU8) 14))&31)))!=0)) goto LA18;
		callpattern = copyString(((NimStringDesc*) &TMP3581));
	}
	goto LA16;
	LA18: ;
	{
		callpattern = copyString(((NimStringDesc*) &TMP3582));
	}
	LA16: ;
	{
		if (!!(((*typ).Sons->data[0] == NIM_NIL))) goto LA23;
		{
			NIM_BOOL LOC27;
			LOC27 = 0;
			LOC27 = isinvalidreturntype_470314((*typ).Sons->data[0]);
			if (!LOC27) goto LA28;
			{
				NI LOC32;
				TY469906 LOC35;
				trope145007* LOC36;
				LOC32 = 0;
				LOC32 = sonslen_189181(ri);
				if (!(1 < LOC32)) goto LA33;
				memset((void*)LOC35, 0, sizeof(LOC35));
				LOC36 = 0;
				LOC36 = ropef_145079(((NimStringDesc*) &TMP3178), LOC35, 0);
				app_145040(&pl, LOC36);
			}
			LA33: ;
			{
				NIM_BOOL LOC39;
				NIM_BOOL LOC41;
				trope145007* LOC54;
				NimStringDesc* LOC55;
				TY471942 LOC56;
				LOC39 = 0;
				LOC39 = ((3 &(1<<(((*d).K)&15)))!=0);
				if (LOC39) goto LA40;
				LOC41 = 0;
				LOC41 = leftappearsonrightside_476549(le, ri);
				LOC39 = !(LOC41);
				LA40: ;
				if (!LOC39) goto LA42;
				{
					if (!((*d).K == ((NU8) 0))) goto LA46;
					gettemp_473840(p, (*typ).Sons->data[0], d);
				}
				goto LA44;
				LA46: ;
				{
					NIM_BOOL LOC49;
					NIM_BOOL LOC51;
					LOC49 = 0;
					LOC49 = !(((130 &(1<<(((*d).K)&15)))!=0));
					if (!(LOC49)) goto LA50;
					LOC51 = 0;
					LOC51 = hasnoinit_476609(ri);
					LOC49 = !(LOC51);
					LA50: ;
					if (!LOC49) goto LA52;
					resetloc_475152(p, d);
				}
				goto LA44;
				LA52: ;
				LA44: ;
				LOC54 = 0;
				LOC54 = addrloc_474987(&(*d));
				app_145040(&pl, LOC54);
				LOC55 = 0;
				LOC55 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC55, callpattern);
appendString(LOC55, ((NimStringDesc*) &TMP3241));
				memset((void*)LOC56, 0, sizeof(LOC56));
				LOC56[0] = op.R;
				LOC56[1] = pl;
				LOC56[2] = addcomma_477882(pl);
				LOC56[3] = rawproc;
				linef_469084(p, ((NU8) 2), LOC55, LOC56, 4);
			}
			goto LA37;
			LA42: ;
			{
				tloc188817 tmp;
				trope145007* LOC58;
				NimStringDesc* LOC59;
				TY471942 LOC60;
				memset((void*)&tmp, 0, sizeof(tmp));
				gettemp_473840(p, (*typ).Sons->data[0], &tmp);
				LOC58 = 0;
				LOC58 = addrloc_474987(&tmp);
				app_145040(&pl, LOC58);
				LOC59 = 0;
				LOC59 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC59, callpattern);
appendString(LOC59, ((NimStringDesc*) &TMP3241));
				memset((void*)LOC60, 0, sizeof(LOC60));
				LOC60[0] = op.R;
				LOC60[1] = pl;
				LOC60[2] = addcomma_477882(pl);
				LOC60[3] = rawproc;
				linef_469084(p, ((NU8) 2), LOC59, LOC60, 4);
				genassignment_476511(p, &(*d), &tmp, 0);
			}
			LA37: ;
		}
		goto LA25;
		LA28: ;
		{
			tloc188817 list;
			TY471942 LOC66;
			{
				if (!((*d).K == ((NU8) 0))) goto LA64;
				gettemp_473840(p, (*typ).Sons->data[0], d);
			}
			LA64: ;
			memset((void*)&list, 0, sizeof(list));
			initloc_468340(&list, ((NU8) 10), (*d).T, ((NU8) 0));
			memset((void*)LOC66, 0, sizeof(LOC66));
			LOC66[0] = op.R;
			LOC66[1] = pl;
			LOC66[2] = addcomma_477882(pl);
			LOC66[3] = rawproc;
			list.R = ropef_145079(callpattern, LOC66, 4);
			genassignment_476511(p, &(*d), &list, 0);
		}
		LA25: ;
	}
	goto LA21;
	LA23: ;
	{
		NimStringDesc* LOC68;
		TY471942 LOC69;
		LOC68 = 0;
		LOC68 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC68, callpattern);
appendString(LOC68, ((NimStringDesc*) &TMP3241));
		memset((void*)LOC69, 0, sizeof(LOC69));
		LOC69[0] = op.R;
		LOC69[1] = pl;
		LOC69[2] = addcomma_477882(pl);
		LOC69[3] = rawproc;
		linef_469084(p, ((NU8) 2), LOC68, LOC69, 4);
	}
	LA21: ;
}

N_NIMCALL(void, fixupcall_476678)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* d, trope145007* callee, trope145007* params) {
	trope145007* pl;
	TY470214 LOC1;
	TY469906 LOC2;
	ttype188837* typ;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = callee;
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC1[1] = ropef_145079(((NimStringDesc*) &TMP3188), LOC2, 0);
	LOC1[2] = params;
	pl = con_145035(LOC1, 3);
	typ = skiptypes_192793((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	{
		if (!!(((*typ).Sons->data[0] == NIM_NIL))) goto LA5;
		{
			NIM_BOOL LOC9;
			LOC9 = 0;
			LOC9 = isinvalidreturntype_470314((*typ).Sons->data[0]);
			if (!LOC9) goto LA10;
			{
				TY469906 LOC16;
				trope145007* LOC17;
				if (!!((params == NIM_NIL))) goto LA14;
				memset((void*)LOC16, 0, sizeof(LOC16));
				LOC17 = 0;
				LOC17 = ropef_145079(((NimStringDesc*) &TMP3178), LOC16, 0);
				app_145040(&pl, LOC17);
			}
			LA14: ;
			{
				NIM_BOOL LOC20;
				NIM_BOOL LOC22;
				trope145007* LOC35;
				TY469906 LOC36;
				trope145007* LOC37;
				LOC20 = 0;
				LOC20 = ((3 &(1<<(((*d).K)&15)))!=0);
				if (LOC20) goto LA21;
				LOC22 = 0;
				LOC22 = leftappearsonrightside_476549(le, ri);
				LOC20 = !(LOC22);
				LA21: ;
				if (!LOC20) goto LA23;
				{
					if (!((*d).K == ((NU8) 0))) goto LA27;
					gettemp_473840(p, (*typ).Sons->data[0], d);
				}
				goto LA25;
				LA27: ;
				{
					NIM_BOOL LOC30;
					NIM_BOOL LOC32;
					LOC30 = 0;
					LOC30 = !(((130 &(1<<(((*d).K)&15)))!=0));
					if (!(LOC30)) goto LA31;
					LOC32 = 0;
					LOC32 = hasnoinit_476609(ri);
					LOC30 = !(LOC32);
					LA31: ;
					if (!LOC30) goto LA33;
					resetloc_475152(p, d);
				}
				goto LA25;
				LA33: ;
				LA25: ;
				LOC35 = 0;
				LOC35 = addrloc_474987(&(*d));
				app_145040(&pl, LOC35);
				memset((void*)LOC36, 0, sizeof(LOC36));
				LOC37 = 0;
				LOC37 = ropef_145079(((NimStringDesc*) &TMP3586), LOC36, 0);
				app_145040(&pl, LOC37);
				line_469070(p, ((NU8) 2), pl);
			}
			goto LA18;
			LA23: ;
			{
				tloc188817 tmp;
				trope145007* LOC39;
				TY469906 LOC40;
				trope145007* LOC41;
				memset((void*)&tmp, 0, sizeof(tmp));
				gettemp_473840(p, (*typ).Sons->data[0], &tmp);
				LOC39 = 0;
				LOC39 = addrloc_474987(&tmp);
				app_145040(&pl, LOC39);
				memset((void*)LOC40, 0, sizeof(LOC40));
				LOC41 = 0;
				LOC41 = ropef_145079(((NimStringDesc*) &TMP3586), LOC40, 0);
				app_145040(&pl, LOC41);
				line_469070(p, ((NU8) 2), pl);
				genassignment_476511(p, &(*d), &tmp, 0);
			}
			LA18: ;
		}
		goto LA7;
		LA10: ;
		{
			TY469906 LOC43;
			trope145007* LOC44;
			tloc188817 list;
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC44 = 0;
			LOC44 = ropef_145079(((NimStringDesc*) &TMP3187), LOC43, 0);
			app_145040(&pl, LOC44);
			{
				if (!((*d).K == ((NU8) 0))) goto LA47;
				gettemp_473840(p, (*typ).Sons->data[0], d);
			}
			LA47: ;
			memset((void*)&list, 0, sizeof(list));
			initloc_468340(&list, ((NU8) 10), (*d).T, ((NU8) 0));
			list.R = pl;
			genassignment_476511(p, &(*d), &list, 0);
		}
		LA7: ;
	}
	goto LA3;
	LA5: ;
	{
		TY469906 LOC50;
		trope145007* LOC51;
		memset((void*)LOC50, 0, sizeof(LOC50));
		LOC51 = 0;
		LOC51 = ropef_145079(((NimStringDesc*) &TMP3586), LOC50, 0);
		app_145040(&pl, LOC51);
		line_469070(p, ((NU8) 2), pl);
	}
	LA3: ;
}

N_NIMCALL(void, geninfixcall_478623)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* d) {
	tloc188817 op;
	tloc188817 a;
	trope145007* pl;
	ttype188837* typ;
	NI length;
	tsym188833* param;
	trope145007* LOC1;
	trope145007* params;
	NI i_479085;
	NI HEX3Atmp_479463;
	NI res_479465;
	memset((void*)&op, 0, sizeof(op));
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*ri).kindU.S6.Sons->data[0], &op);
	pl = NIM_NIL;
	typ = skiptypes_192793((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_189181(ri);
	param = (*(*(*typ).N).kindU.S6.Sons->data[1]).kindU.S4.Sym;
	LOC1 = 0;
	LOC1 = genarg_477212(p, (*ri).kindU.S6.Sons->data[1], param);
	app_145040(&pl, LOC1);
	{
		ttype188837* LOC4;
		TY469906 LOC7;
		trope145007* LOC8;
		LOC4 = 0;
		LOC4 = skiptypes_192793((*param).Typ, 2048);
		if (!((*LOC4).Kind == ((NU8) 21))) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC8 = 0;
		LOC8 = ropef_145079(((NimStringDesc*) &TMP3585), LOC7, 0);
		app_145040(&pl, LOC8);
	}
	goto LA2;
	LA5: ;
	{
		TY469906 LOC10;
		trope145007* LOC11;
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC11 = 0;
		LOC11 = ropef_145079(((NimStringDesc*) &TMP3347), LOC10, 0);
		app_145040(&pl, LOC11);
	}
	LA2: ;
	app_145040(&pl, op.R);
	params = 0;
	i_479085 = 0;
	HEX3Atmp_479463 = 0;
	HEX3Atmp_479463 = (NI32)(length - 1);
	res_479465 = 2;
	while (1) {
		if (!(res_479465 <= HEX3Atmp_479463)) goto LA12;
		i_479085 = res_479465;
		{
			TY469906 LOC17;
			trope145007* LOC18;
			if (!!((params == NIM_NIL))) goto LA15;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC18 = 0;
			LOC18 = ropef_145079(((NimStringDesc*) &TMP3178), LOC17, 0);
			app_145040(&params, LOC18);
		}
		LA15: ;
		{
			NI LOC21;
			trope145007* LOC24;
			LOC21 = 0;
			LOC21 = sonslen_189185(typ);
			if (!(i_479085 < LOC21)) goto LA22;
			LOC24 = 0;
			LOC24 = genarg_477212(p, (*ri).kindU.S6.Sons->data[i_479085], (*(*(*typ).N).kindU.S6.Sons->data[i_479085]).kindU.S4.Sym);
			app_145040(&params, LOC24);
		}
		goto LA19;
		LA22: ;
		{
			trope145007* LOC26;
			LOC26 = 0;
			LOC26 = genargnoparam_477270(p, (*ri).kindU.S6.Sons->data[i_479085]);
			app_145040(&params, LOC26);
		}
		LA19: ;
		res_479465 += 1;
	} LA12: ;
	fixupcall_476678(p, le, ri, d, pl, params);
}

N_NIMCALL(void, gennamedparamcall_479469)(tcproc465026* p, tnode188803* ri, tloc188817* d) {
	tloc188817 op;
	tloc188817 a;
	trope145007* pl;
	TY469906 LOC1;
	ttype188837* typ;
	NI length;
	NI i_479918;
	NI HEX3Atmp_480415;
	NI res_480417;
	memset((void*)&op, 0, sizeof(op));
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*ri).kindU.S6.Sons->data[0], &op);
	memset((void*)LOC1, 0, sizeof(LOC1));
	pl = ropef_145079(((NimStringDesc*) &TMP3587), LOC1, 0);
	typ = skiptypes_192793((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_189181(ri);
	{
		trope145007* LOC6;
		TY469906 LOC7;
		trope145007* LOC8;
		if (!(1 < length)) goto LA4;
		LOC6 = 0;
		LOC6 = genarg_477212(p, (*ri).kindU.S6.Sons->data[1], (*(*(*typ).N).kindU.S6.Sons->data[1]).kindU.S4.Sym);
		app_145040(&pl, LOC6);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC8 = 0;
		LOC8 = ropef_145079(((NimStringDesc*) &TMP3179), LOC7, 0);
		app_145040(&pl, LOC8);
	}
	LA4: ;
	app_145040(&pl, op.R);
	{
		TY469906 LOC13;
		trope145007* LOC14;
		trope145007* LOC15;
		if (!(2 < length)) goto LA11;
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC14 = 0;
		LOC14 = ropef_145079(((NimStringDesc*) &TMP3588), LOC13, 0);
		app_145040(&pl, LOC14);
		LOC15 = 0;
		LOC15 = genarg_477212(p, (*ri).kindU.S6.Sons->data[2], (*(*(*typ).N).kindU.S6.Sons->data[2]).kindU.S4.Sym);
		app_145040(&pl, LOC15);
	}
	LA11: ;
	i_479918 = 0;
	HEX3Atmp_480415 = 0;
	HEX3Atmp_480415 = (NI32)(length - 1);
	res_480417 = 3;
	while (1) {
		tsym188833* param;
		TY469906 LOC22;
		trope145007* LOC23;
		TY469906 LOC24;
		trope145007* LOC25;
		trope145007* LOC26;
		if (!(res_480417 <= HEX3Atmp_480415)) goto LA16;
		i_479918 = res_480417;
		{
			NI LOC19;
			LOC19 = 0;
			LOC19 = sonslen_189185(typ);
			if (!(LOC19 <= i_479918)) goto LA20;
			internalerror_165591((*ri).Info, ((NimStringDesc*) &TMP3589));
		}
		LA20: ;
		param = (*(*(*typ).N).kindU.S6.Sons->data[i_479918]).kindU.S4.Sym;
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC23 = 0;
		LOC23 = ropef_145079(((NimStringDesc*) &TMP3179), LOC22, 0);
		app_145040(&pl, LOC23);
		app_145046(&pl, (*(*param).Name).S);
		memset((void*)LOC24, 0, sizeof(LOC24));
		LOC25 = 0;
		LOC25 = ropef_145079(((NimStringDesc*) &TMP3588), LOC24, 0);
		app_145040(&pl, LOC25);
		LOC26 = 0;
		LOC26 = genarg_477212(p, (*ri).kindU.S6.Sons->data[i_479918], param);
		app_145040(&pl, LOC26);
		res_480417 += 1;
	} LA16: ;
	{
		if (!!(((*typ).Sons->data[0] == NIM_NIL))) goto LA29;
		{
			NIM_BOOL LOC33;
			LOC33 = 0;
			LOC33 = isinvalidreturntype_470314((*typ).Sons->data[0]);
			if (!LOC33) goto LA34;
			{
				NI LOC38;
				TY469906 LOC41;
				trope145007* LOC42;
				LOC38 = 0;
				LOC38 = sonslen_189181(ri);
				if (!(1 < LOC38)) goto LA39;
				memset((void*)LOC41, 0, sizeof(LOC41));
				LOC42 = 0;
				LOC42 = ropef_145079(((NimStringDesc*) &TMP3179), LOC41, 0);
				app_145040(&pl, LOC42);
			}
			LA39: ;
			{
				TY469906 LOC51;
				trope145007* LOC52;
				trope145007* LOC53;
				TY469906 LOC54;
				trope145007* LOC55;
				if (!((3 &(1<<(((*d).K)&15)))!=0)) goto LA45;
				{
					if (!((*d).K == ((NU8) 0))) goto LA49;
					gettemp_473840(p, (*typ).Sons->data[0], d);
				}
				LA49: ;
				memset((void*)LOC51, 0, sizeof(LOC51));
				LOC52 = 0;
				LOC52 = ropef_145079(((NimStringDesc*) &TMP3590), LOC51, 0);
				app_145040(&pl, LOC52);
				LOC53 = 0;
				LOC53 = addrloc_474987(&(*d));
				app_145040(&pl, LOC53);
				memset((void*)LOC54, 0, sizeof(LOC54));
				LOC55 = 0;
				LOC55 = ropef_145079(((NimStringDesc*) &TMP3591), LOC54, 0);
				app_145040(&pl, LOC55);
				line_469070(p, ((NU8) 2), pl);
			}
			goto LA43;
			LA45: ;
			{
				tloc188817 tmp;
				trope145007* LOC57;
				TY469906 LOC58;
				trope145007* LOC59;
				memset((void*)&tmp, 0, sizeof(tmp));
				gettemp_473840(p, (*typ).Sons->data[0], &tmp);
				LOC57 = 0;
				LOC57 = addrloc_474987(&tmp);
				app_145040(&pl, LOC57);
				memset((void*)LOC58, 0, sizeof(LOC58));
				LOC59 = 0;
				LOC59 = ropef_145079(((NimStringDesc*) &TMP3591), LOC58, 0);
				app_145040(&pl, LOC59);
				line_469070(p, ((NU8) 2), pl);
				genassignment_476511(p, &(*d), &tmp, 0);
			}
			LA43: ;
		}
		goto LA31;
		LA34: ;
		{
			TY469906 LOC61;
			trope145007* LOC62;
			tloc188817 list;
			memset((void*)LOC61, 0, sizeof(LOC61));
			LOC62 = 0;
			LOC62 = ropef_145079(((NimStringDesc*) &TMP3592), LOC61, 0);
			app_145040(&pl, LOC62);
			{
				if (!((*d).K == ((NU8) 0))) goto LA65;
				gettemp_473840(p, (*typ).Sons->data[0], d);
			}
			LA65: ;
			memset((void*)&list, 0, sizeof(list));
			initloc_468340(&list, ((NU8) 10), NIM_NIL, ((NU8) 0));
			list.R = pl;
			genassignment_476511(p, &(*d), &list, 0);
		}
		LA31: ;
	}
	goto LA27;
	LA29: ;
	{
		TY469906 LOC68;
		trope145007* LOC69;
		memset((void*)LOC68, 0, sizeof(LOC68));
		LOC69 = 0;
		LOC69 = ropef_145079(((NimStringDesc*) &TMP3591), LOC68, 0);
		app_145040(&pl, LOC69);
		line_469070(p, ((NU8) 2), pl);
	}
	LA27: ;
}

N_NIMCALL(void, genprefixcall_477288)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* d) {
	tloc188817 op;
	trope145007* params;
	ttype188837* typ;
	NI length;
	NI i_477614;
	NI HEX3Atmp_477862;
	NI res_477864;
	memset((void*)&op, 0, sizeof(op));
	initlocexpr_476527(p, (*ri).kindU.S6.Sons->data[0], &op);
	params = 0;
	typ = skiptypes_192793((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_189181(ri);
	i_477614 = 0;
	HEX3Atmp_477862 = 0;
	HEX3Atmp_477862 = (NI32)(length - 1);
	res_477864 = 1;
	while (1) {
		if (!(res_477864 <= HEX3Atmp_477862)) goto LA1;
		i_477614 = res_477864;
		{
			{
				NIM_BOOL LOC5;
				LOC5 = 0;
				LOC5 = iscompiletimeonly_233237((*(*ri).kindU.S6.Sons->data[i_477614]).Typ);
				if (!LOC5) goto LA6;
				goto LA2;
			}
			LA6: ;
			{
				TY469906 LOC12;
				trope145007* LOC13;
				if (!!((params == NIM_NIL))) goto LA10;
				memset((void*)LOC12, 0, sizeof(LOC12));
				LOC13 = 0;
				LOC13 = ropef_145079(((NimStringDesc*) &TMP3178), LOC12, 0);
				app_145040(&params, LOC13);
			}
			LA10: ;
			{
				NI LOC16;
				trope145007* LOC19;
				LOC16 = 0;
				LOC16 = sonslen_189185(typ);
				if (!(i_477614 < LOC16)) goto LA17;
				LOC19 = 0;
				LOC19 = genarg_477212(p, (*ri).kindU.S6.Sons->data[i_477614], (*(*(*typ).N).kindU.S6.Sons->data[i_477614]).kindU.S4.Sym);
				app_145040(&params, LOC19);
			}
			goto LA14;
			LA17: ;
			{
				trope145007* LOC21;
				LOC21 = 0;
				LOC21 = genargnoparam_477270(p, (*ri).kindU.S6.Sons->data[i_477614]);
				app_145040(&params, LOC21);
			}
			LA14: ;
		} LA2: ;
		res_477864 += 1;
	} LA1: ;
	fixupcall_476678(p, le, ri, d, op.R, params);
}

static N_INLINE(void, poststmtactions_469596)(tcproc465026* p) {
	trope145007** LOC1;
	LOC1 = 0;
	LOC1 = s_465173(p, ((NU8) 2));
	app_145040(LOC1, (*(*p).Module).Injectstmt);
}

N_NIMCALL(void, gencall_480423)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	{
		if (!((*(*(*e).kindU.S6.Sons->data[0]).Typ).Callconv == ((NU8) 8))) goto LA3;
		genclosurecall_477869(p, NIM_NIL, e, d);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		NIM_BOOL LOC7;
		NI LOC10;
		LOC6 = 0;
		LOC7 = 0;
		LOC7 = ((*(*e).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
		if (!(LOC7)) goto LA8;
		LOC7 = (((*(*(*e).kindU.S6.Sons->data[0]).kindU.S4.Sym).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA8: ;
		LOC6 = LOC7;
		if (!(LOC6)) goto LA9;
		LOC10 = 0;
		LOC10 = len_189264(e);
		LOC6 = (2 <= LOC10);
		LA9: ;
		if (!LOC6) goto LA11;
		geninfixcall_478623(p, NIM_NIL, e, d);
	}
	goto LA1;
	LA11: ;
	{
		NIM_BOOL LOC14;
		LOC14 = 0;
		LOC14 = ((*(*e).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
		if (!(LOC14)) goto LA15;
		LOC14 = (((*(*(*e).kindU.S6.Sons->data[0]).kindU.S4.Sym).Flags &(1<<((((NU8) 28))&31)))!=0);
		LA15: ;
		if (!LOC14) goto LA16;
		gennamedparamcall_479469(p, e, d);
	}
	goto LA1;
	LA16: ;
	{
		genprefixcall_477288(p, NIM_NIL, e, d);
	}
	LA1: ;
	poststmtactions_469596(p);
}

N_NIMCALL(void, genreset_495476)(tcproc465026* p, tnode188803* n) {
	tloc188817 a;
	TY503234 LOC1;
	ttype188837* LOC2;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*n).kindU.S6.Sons->data[1], &a);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = addrloc_474987(&a);
	LOC2 = 0;
	LOC2 = skiptypes_192793(a.T, IL64(211106242013440));
	LOC1[1] = gentypeinfo_472392((*p).Module, LOC2);
	linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3584), LOC1, 2);
}

N_NIMCALL(void, genecho_494759)(tcproc465026* p, tnode188803* n) {
	NIM_BOOL LOC1;
	trope145007* args;
	tloc188817 a;
	NI i_494778;
	NI HEX3Atmp_494805;
	NI LOC2;
	NI res_494807;
	TY503234 LOC5;
	NimStringDesc* LOC6;
	NI LOC7;
	NimStringDesc* LOC8;
	LOC1 = 0;
	LOC1 = includestr_118275(&(*(*p).Module).Headerfiles, ((NimStringDesc*) &TMP3593));
	args = NIM_NIL;
	memset((void*)&a, 0, sizeof(a));
	i_494778 = 0;
	HEX3Atmp_494805 = 0;
	LOC2 = 0;
	LOC2 = len_189264(n);
	HEX3Atmp_494805 = (NI32)(LOC2 - 1);
	res_494807 = 1;
	while (1) {
		TY145497 LOC4;
		if (!(res_494807 <= HEX3Atmp_494805)) goto LA3;
		i_494778 = res_494807;
		initlocexpr_476527(p, (*n).kindU.S6.Sons->data[i_494778], &a);
		memset((void*)LOC4, 0, sizeof(LOC4));
		LOC4[0] = rdloc_474964(&a);
		appf_145085(&args, ((NimStringDesc*) &TMP3594), LOC4, 1);
		res_494807 += 1;
	} LA3: ;
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC6 = 0;
	LOC7 = 0;
	LOC7 = len_189264(n);
	LOC8 = 0;
	LOC8 = nsuRepeatStr((NI32)(LOC7 - 1), ((NimStringDesc*) &TMP3596));
	LOC6 = rawNewString(LOC8->Sup.len + tnl_142593->Sup.len + 0);
appendString(LOC6, LOC8);
appendString(LOC6, tnl_142593);
	LOC5[0] = makecstring_163651(LOC6);
	LOC5[1] = args;
	linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3595), LOC5, 2);
}

N_NIMCALL(void, genseqconstr_495902)(tcproc465026* p, tnode188803* t, tloc188817* d) {
	tloc188817 arr;
	NI LOC5;
	trope145007* LOC6;
	NI i_495930;
	NI HEX3Atmp_495952;
	NI LOC7;
	NI res_495954;
	memset((void*)&arr, 0, sizeof(arr));
	{
		if (!((*d).K == ((NU8) 0))) goto LA3;
		gettemp_473840(p, (*t).Typ, d);
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = sonslen_189181(t);
	LOC6 = 0;
	LOC6 = intliteral_476518(((NI64) (LOC5)));
	gennewseqaux_495593(p, &(*d), LOC6);
	i_495930 = 0;
	HEX3Atmp_495952 = 0;
	LOC7 = 0;
	LOC7 = sonslen_189181(t);
	HEX3Atmp_495952 = (NI32)(LOC7 - 1);
	res_495954 = 0;
	while (1) {
		ttype188837* LOC9;
		ttype188837* LOC10;
		TY503234 LOC11;
		if (!(res_495954 <= HEX3Atmp_495952)) goto LA8;
		i_495930 = res_495954;
		LOC9 = 0;
		LOC9 = skiptypes_192793((*t).Typ, IL64(211106232576256));
		LOC10 = 0;
		LOC10 = elemtype_223559(LOC9);
		initloc_468340(&arr, ((NU8) 7), LOC10, ((NU8) 2));
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = rdloc_474964(&(*d));
		LOC11[1] = intliteral_476518(((NI64) (i_495930)));
		arr.R = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3309), LOC11, 2);
		arr.S = ((NU8) 2);
		expr_476492(p, (*t).kindU.S6.Sons->data[i_495930], &arr);
		res_495954 += 1;
	} LA8: ;
	gcusage_494811(t);
}

N_NIMCALL(void, genarrtoseq_495958)(tcproc465026* p, tnode188803* t, tloc188817* d) {
	tloc188817 elem;
	tloc188817 a;
	tloc188817 arr;
	NI l;
	NI64 LOC9;
	trope145007* LOC10;
	NI i_496055;
	NI HEX3Atmp_496084;
	NI res_496086;
	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[1]).Typ, (*t).Typ);
		genseqconstr_495902(p, (*t).kindU.S6.Sons->data[1], d);
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA7;
		gettemp_473840(p, (*t).Typ, d);
	}
	LA7: ;
	LOC9 = 0;
	LOC9 = lengthord_223010((*(*t).kindU.S6.Sons->data[1]).Typ);
	l = ((NI) (LOC9));
	LOC10 = 0;
	LOC10 = intliteral_476518(((NI64) (l)));
	gennewseqaux_495593(p, &(*d), LOC10);
	initlocexpr_476527(p, (*t).kindU.S6.Sons->data[1], &a);
	i_496055 = 0;
	HEX3Atmp_496084 = 0;
	HEX3Atmp_496084 = (NI32)(l - 1);
	res_496086 = 0;
	while (1) {
		ttype188837* LOC12;
		ttype188837* LOC13;
		TY503234 LOC14;
		ttype188837* LOC15;
		ttype188837* LOC16;
		TY503234 LOC17;
		if (!(res_496086 <= HEX3Atmp_496084)) goto LA11;
		i_496055 = res_496086;
		LOC12 = 0;
		LOC12 = skiptypes_192793((*t).Typ, IL64(211106232576256));
		LOC13 = 0;
		LOC13 = elemtype_223559(LOC12);
		initloc_468340(&elem, ((NU8) 7), LOC13, ((NU8) 2));
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = rdloc_474964(&(*d));
		LOC14[1] = intliteral_476518(((NI64) (i_496055)));
		elem.R = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3309), LOC14, 2);
		elem.S = ((NU8) 2);
		LOC15 = 0;
		LOC15 = skiptypes_192793((*(*t).kindU.S6.Sons->data[1]).Typ, IL64(211106232576256));
		LOC16 = 0;
		LOC16 = elemtype_223559(LOC15);
		initloc_468340(&arr, ((NU8) 7), LOC16, a.S);
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = rdloc_474964(&a);
		LOC17[1] = intliteral_476518(((NI64) (i_496055)));
		arr.R = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3254), LOC17, 2);
		genassignment_476511(p, &elem, &arr, 5);
		res_496086 += 1;
	} LA11: ;
	BeforeRet: ;
}

N_NIMCALL(void, genmagicexpr_499072)(tcproc465026* p, tnode188803* e, tloc188817* d, NU16 op) {
	trope145007* line;
	trope145007* filen;
	line = 0;
	filen = 0;
	switch (op) {
	case ((NU16) 135):
	case ((NU16) 134):
	{
		genandor_494688(p, e, d, op);
	}
	break;
	case ((NU16) 105) ... ((NU16) 125):
	{
		unaryarith_492491(p, e, d, op);
	}
	break;
	case ((NU16) 101) ... ((NU16) 104):
	{
		unaryarithoverflow_491488(p, e, d, op);
	}
	break;
	case ((NU16) 47) ... ((NU16) 50):
	{
		binaryfloatarith_498531(p, e, d, op);
	}
	break;
	case ((NU16) 51) ... ((NU16) 99):
	{
		binaryarith_491640(p, e, d, op);
	}
	break;
	case ((NU16) 100):
	{
		geneqproc_492042(p, e, d);
	}
	break;
	case ((NU16) 37) ... ((NU16) 46):
	{
		binaryarithoverflow_491096(p, e, d, op);
	}
	break;
	case ((NU16) 160):
	{
		genrepr_496312(p, e, d);
	}
	break;
	case ((NU16) 263):
	{
		gengettypeinfo_496422(p, e, d);
	}
	break;
	case ((NU16) 167):
	{
		genswap_496870(p, e, d);
	}
	break;
	case ((NU16) 18):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA14;
			unaryexpr_491038(p, e, d, ((NimStringDesc*) &TMP3478));
		}
		goto LA12;
		LA14: ;
		{
			unaryexpr_491038(p, e, d, ((NimStringDesc*) &TMP3479));
		}
		LA12: ;
	}
	break;
	case ((NU16) 20):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA20;
			binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3480));
		}
		goto LA18;
		LA20: ;
		{
			binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3481));
		}
		LA18: ;
	}
	break;
	case ((NU16) 19):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA26;
			binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3482));
		}
		goto LA24;
		LA26: ;
		{
			binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3483));
		}
		LA24: ;
	}
	break;
	case ((NU16) 21):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA32;
			binarystmt_490181(p, e, d, ((NimStringDesc*) &TMP3485));
		}
		goto LA30;
		LA32: ;
		{
			ttype188837* LOC35;
			LOC35 = 0;
			LOC35 = skiptypes_192793((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
			if (!((*LOC35).Kind == ((NU8) 35))) goto LA36;
			binarystmt_490181(p, e, d, ((NimStringDesc*) &TMP3486));
		}
		goto LA30;
		LA36: ;
		{
			binarystmt_490181(p, e, d, ((NimStringDesc*) &TMP3487));
		}
		LA30: ;
	}
	break;
	case ((NU16) 22):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA42;
			binarystmt_490181(p, e, d, ((NimStringDesc*) &TMP3488));
		}
		goto LA40;
		LA42: ;
		{
			ttype188837* LOC45;
			LOC45 = 0;
			LOC45 = skiptypes_192793((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
			if (!((*LOC45).Kind == ((NU8) 35))) goto LA46;
			binarystmt_490181(p, e, d, ((NimStringDesc*) &TMP3489));
		}
		goto LA40;
		LA46: ;
		{
			binarystmt_490181(p, e, d, ((NimStringDesc*) &TMP3490));
		}
		LA40: ;
	}
	break;
	case ((NU16) 146):
	{
		genstrconcat_494824(p, e, d);
	}
	break;
	case ((NU16) 155):
	{
		binarystmt_490181(p, e, d, ((NimStringDesc*) &TMP3495));
	}
	break;
	case ((NU16) 156):
	{
		genstrappend_495014(p, e, d);
	}
	break;
	case ((NU16) 157):
	{
		genseqelemappend_495385(p, e, d);
	}
	break;
	case ((NU16) 136):
	{
		genstrequals_498380(p, e, d);
	}
	break;
	case ((NU16) 137):
	{
		binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3502));
	}
	break;
	case ((NU16) 138):
	{
		binaryexpr_490329(p, e, d, ((NimStringDesc*) &TMP3503));
	}
	break;
	case ((NU16) 168):
	{
		genisnil_492451(p, e, d);
	}
	break;
	case ((NU16) 128):
	{
		gendollar_496444(p, e, d, ((NimStringDesc*) &TMP3506));
	}
	break;
	case ((NU16) 129):
	{
		gendollar_496444(p, e, d, ((NimStringDesc*) &TMP3507));
	}
	break;
	case ((NU16) 127):
	{
		gendollar_496444(p, e, d, ((NimStringDesc*) &TMP3508));
	}
	break;
	case ((NU16) 126):
	{
		gendollar_496444(p, e, d, ((NimStringDesc*) &TMP3509));
	}
	break;
	case ((NU16) 130):
	{
		gendollar_496444(p, e, d, ((NimStringDesc*) &TMP3510));
	}
	break;
	case ((NU16) 131):
	{
		gendollar_496444(p, e, d, ((NimStringDesc*) &TMP3511));
	}
	break;
	case ((NU16) 132):
	{
		expr_476492(p, (*e).kindU.S6.Sons->data[1], d);
	}
	break;
	case ((NU16) 133):
	{
		genrepr_496312(p, e, d);
	}
	break;
	case ((NU16) 9):
	{
		genof_496277(p, e, d);
	}
	break;
	case ((NU16) 24):
	{
		gennew_495554(p, e);
	}
	break;
	case ((NU16) 25):
	{
		gennewfinalize_496090(p, e);
	}
	break;
	case ((NU16) 26):
	{
		gennewseq_495628(p, e);
	}
	break;
	case ((NU16) 6):
	{
		ttype188837* t;
		TY145497 LOC70;
		trope145007* LOC71;
		t = skiptypes_192793((*(*e).kindU.S6.Sons->data[1]).Typ, 256);
		memset((void*)LOC70, 0, sizeof(LOC70));
		LOC70[0] = gettypedesc_472091((*p).Module, t);
		LOC71 = 0;
		LOC71 = ropef_145079(((NimStringDesc*) &TMP3523), LOC70, 1);
		putintodest_490145(p, d, (*e).Typ, LOC71);
	}
	break;
	case ((NU16) 34):
	{
		gensomecast_497975(p, e, d);
	}
	break;
	case ((NU16) 23):
	{
		genord_497968(p, e, d);
	}
	break;
	case ((NU16) 29):
	case ((NU16) 5):
	case ((NU16) 28):
	case ((NU16) 30):
	case ((NU16) 27):
	{
		genarraylen_496483(p, e, d, op);
	}
	break;
	case ((NU16) 35):
	{
		unarystmt_490236(p, e, d, ((NimStringDesc*) &TMP3537));
	}
	break;
	case ((NU16) 36):
	{
		unarystmt_490236(p, e, d, ((NimStringDesc*) &TMP3538));
	}
	break;
	case ((NU16) 162):
	{
		gensetlengthstr_496863(p, e, d);
	}
	break;
	case ((NU16) 163):
	{
		gensetlengthseq_496584(p, e, d);
	}
	break;
	case ((NU16) 31):
	case ((NU16) 32):
	case ((NU16) 33):
	case ((NU16) 141):
	case ((NU16) 140):
	case ((NU16) 139):
	case ((NU16) 142):
	case ((NU16) 143):
	case ((NU16) 144):
	case ((NU16) 159):
	{
		gensetop_497843(p, e, d, op);
	}
	break;
	case ((NU16) 172):
	case ((NU16) 173):
	case ((NU16) 170):
	case ((NU16) 171):
	case ((NU16) 161):
	case ((NU16) 166):
	{
		tsym188833* opr;
		opr = (*(*e).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		{
			NimStringDesc* LOC85;
			trope145007* LOC86;
			if (!!((((*opr).Loc.Flags &(1<<((((NU8) 3))&7)))!=0))) goto LA83;
			LOC85 = 0;
			LOC85 = ropetostr_145075((*opr).Loc.R);
			LOC86 = 0;
			LOC86 = cgsym_468604((*p).Module, LOC85);
		}
		LA83: ;
		gencall_480423(p, e, d);
	}
	break;
	case ((NU16) 174):
	{
		genreset_495476(p, e);
	}
	break;
	case ((NU16) 10):
	{
		genecho_494759(p, e);
	}
	break;
	case ((NU16) 169):
	{
		genarrtoseq_495958(p, e, d);
	}
	break;
	case ((NU16) 229) ... ((NU16) 261):
	{
		localerror_165571((*e).Info, ((NU16) 212), (*(*(*(*e).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
	}
	break;
	case ((NU16) 12) ... ((NU16) 17):
	{
		localerror_165571((*e).Info, ((NU16) 224), (*(*(*(*e).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
	}
	break;
	case ((NU16) 212):
	{
		tnode188803* n;
		n = wrapprocforspawn_366936((*(*p).Module).Module, (*e).kindU.S6.Sons->data[1]);
		expr_476492(p, n, d);
	}
	break;
	default:
	{
		NimStringDesc* LOC94;
		LOC94 = 0;
		LOC94 = rawNewString(reprEnum(op, (&NTI188521))->Sup.len + 14);
appendString(LOC94, ((NimStringDesc*) &TMP3610));
appendString(LOC94, reprEnum(op, (&NTI188521)));
		internalerror_165591((*e).Info, LOC94);
	}
	break;
	}
}

N_NIMCALL(trope145007*, gensetnode_489273)(tcproc465026* p, tnode188803* n) {
	trope145007* result;
	tbitset243012* cs;
	NI size;
	NI64 LOC1;
	result = 0;
	cs = 0;
	LOC1 = 0;
	LOC1 = getsize_223158((*n).Typ);
	size = ((NI) (LOC1));
	tobitset_244002(n, &cs);
	{
		NI id;
		trope145007* LOC6;
		if (!(8 < size)) goto LA4;
		id = nodetabletestorset_247911(&(*(*p).Module).Datacache, n, gbackendid_187008);
		LOC6 = 0;
		LOC6 = torope_145062(((NI64) (id)));
		result = con_145030(((NimStringDesc*) &TMP3291), LOC6);
		{
			TY470214 LOC11;
			if (!(id == gbackendid_187008)) goto LA9;
			gbackendid_187008 += 1;
			memset((void*)LOC11, 0, sizeof(LOC11));
			LOC11[0] = gettypedesc_472091((*p).Module, (*n).Typ);
			LOC11[1] = result;
			LOC11[2] = genrawsetdata_489232(cs, size);
			appf_145085(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3611), LOC11, 3);
		}
		LA9: ;
	}
	goto LA2;
	LA4: ;
	{
		result = genrawsetdata_489232(cs, size);
	}
	LA2: ;
	return result;
}

N_NIMCALL(void, gensetconstr_499408)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	tloc188817 b;
	tloc188817 idx;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	memset((void*)&idx, 0, sizeof(idx));
	{
		trope145007* LOC5;
		if (!(((*e).Flags &(1<<((((NU8) 4))&15)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = gensetnode_489273(p, e);
		putintodest_490145(p, d, (*e).Typ, LOC5);
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!((*d).K == ((NU8) 0))) goto LA9;
			gettemp_473840(p, (*e).Typ, d);
		}
		LA9: ;
		{
			NI64 LOC13;
			TY145497 LOC16;
			NI i_499456;
			NI HEX3Atmp_499688;
			NI LOC17;
			NI res_499690;
			LOC13 = 0;
			LOC13 = getsize_223158((*e).Typ);
			if (!(8 < LOC13)) goto LA14;
			usestringh_468426((*p).Module);
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_474964(&(*d));
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3612), LOC16, 1);
			i_499456 = 0;
			HEX3Atmp_499688 = 0;
			LOC17 = 0;
			LOC17 = sonslen_189181(e);
			HEX3Atmp_499688 = (NI32)(LOC17 - 1);
			res_499690 = 0;
			while (1) {
				if (!(res_499690 <= HEX3Atmp_499688)) goto LA18;
				i_499456 = res_499690;
				{
					ttype188837* LOC23;
					TY471942 LOC24;
					if (!((*(*e).kindU.S6.Sons->data[i_499456]).Kind == ((NU8) 44))) goto LA21;
					LOC23 = 0;
					LOC23 = getsystype_242024(((NU8) 31));
					gettemp_473840(p, LOC23, &idx);
					initlocexpr_476527(p, (*(*e).kindU.S6.Sons->data[i_499456]).kindU.S6.Sons->data[0], &a);
					initlocexpr_476527(p, (*(*e).kindU.S6.Sons->data[i_499456]).kindU.S6.Sons->data[1], &b);
					memset((void*)LOC24, 0, sizeof(LOC24));
					LOC24[0] = rdloc_474964(&idx);
					LOC24[1] = rdloc_474964(&(*d));
					LOC24[2] = rdsetelemloc_496934(&a, (*e).Typ);
					LOC24[3] = rdsetelemloc_496934(&b, (*e).Typ);
					linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3613), LOC24, 4);
				}
				goto LA19;
				LA21: ;
				{
					TY503234 LOC26;
					initlocexpr_476527(p, (*e).kindU.S6.Sons->data[i_499456], &a);
					memset((void*)LOC26, 0, sizeof(LOC26));
					LOC26[0] = rdloc_474964(&(*d));
					LOC26[1] = rdsetelemloc_496934(&a, (*e).Typ);
					linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3566), LOC26, 2);
				}
				LA19: ;
				res_499690 += 1;
			} LA18: ;
		}
		goto LA11;
		LA14: ;
		{
			NimStringDesc* ts;
			NimStringDesc* LOC28;
			NI64 LOC29;
			NimStringDesc* LOC30;
			TY145497 LOC31;
			NI i_499579;
			NI HEX3Atmp_499692;
			NI LOC32;
			NI res_499694;
			LOC28 = 0;
			LOC29 = 0;
			LOC29 = getsize_223158((*e).Typ);
			LOC30 = 0;
			LOC30 = nimInt64ToStr((NI64)(LOC29 * 8));
			LOC28 = rawNewString(LOC30->Sup.len + 2);
appendString(LOC28, ((NimStringDesc*) &TMP3156));
appendString(LOC28, LOC30);
			ts = LOC28;
			memset((void*)LOC31, 0, sizeof(LOC31));
			LOC31[0] = rdloc_474964(&(*d));
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3268), LOC31, 1);
			i_499579 = 0;
			HEX3Atmp_499692 = 0;
			LOC32 = 0;
			LOC32 = sonslen_189181(e);
			HEX3Atmp_499692 = (NI32)(LOC32 - 1);
			res_499694 = 0;
			while (1) {
				if (!(res_499694 <= HEX3Atmp_499692)) goto LA33;
				i_499579 = res_499694;
				{
					ttype188837* LOC38;
					NimStringDesc* LOC39;
					TY471942 LOC40;
					if (!((*(*e).kindU.S6.Sons->data[i_499579]).Kind == ((NU8) 44))) goto LA36;
					LOC38 = 0;
					LOC38 = getsystype_242024(((NU8) 31));
					gettemp_473840(p, LOC38, &idx);
					initlocexpr_476527(p, (*(*e).kindU.S6.Sons->data[i_499579]).kindU.S6.Sons->data[0], &a);
					initlocexpr_476527(p, (*(*e).kindU.S6.Sons->data[i_499579]).kindU.S6.Sons->data[1], &b);
					LOC39 = 0;
					LOC39 = rawNewString(ts->Sup.len + ts->Sup.len + 66);
appendString(LOC39, ((NimStringDesc*) &TMP3614));
appendString(LOC39, ts);
appendString(LOC39, ((NimStringDesc*) &TMP3615));
appendString(LOC39, ts);
appendString(LOC39, ((NimStringDesc*) &TMP3545));
					memset((void*)LOC40, 0, sizeof(LOC40));
					LOC40[0] = rdloc_474964(&idx);
					LOC40[1] = rdloc_474964(&(*d));
					LOC40[2] = rdsetelemloc_496934(&a, (*e).Typ);
					LOC40[3] = rdsetelemloc_496934(&b, (*e).Typ);
					linef_469084(p, ((NU8) 2), LOC39, LOC40, 4);
				}
				goto LA34;
				LA36: ;
				{
					NimStringDesc* LOC42;
					TY503234 LOC43;
					initlocexpr_476527(p, (*e).kindU.S6.Sons->data[i_499579], &a);
					LOC42 = 0;
					LOC42 = rawNewString(ts->Sup.len + ts->Sup.len + 34);
appendString(LOC42, ((NimStringDesc*) &TMP3616));
appendString(LOC42, ts);
appendString(LOC42, ((NimStringDesc*) &TMP3617));
appendString(LOC42, ts);
appendString(LOC42, ((NimStringDesc*) &TMP3545));
					memset((void*)LOC43, 0, sizeof(LOC43));
					LOC43[0] = rdloc_474964(&(*d));
					LOC43[1] = rdsetelemloc_496934(&a, (*e).Typ);
					linef_469084(p, ((NU8) 2), LOC42, LOC43, 2);
				}
				LA34: ;
				res_499694 += 1;
			} LA33: ;
		}
		LA11: ;
	}
	LA1: ;
}

N_NIMCALL(void, exprcomplexconst_500579)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	ttype188837* t;
	trope145007* LOC1;
	NI id;
	trope145007* tmp;
	trope145007* LOC2;
	t = getuniquetype_464401((*n).Typ);
	LOC1 = 0;
	LOC1 = gettypedesc_472091((*p).Module, t);
	id = nodetabletestorset_247911(&(*(*p).Module).Datacache, n, gbackendid_187008);
	LOC2 = 0;
	LOC2 = torope_145062(((NI64) (id)));
	tmp = con_145030(((NimStringDesc*) &TMP3291), LOC2);
	{
		TY470214 LOC7;
		if (!(id == gbackendid_187008)) goto LA5;
		gbackendid_187008 += 1;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_472091((*p).Module, t);
		LOC7[1] = tmp;
		LOC7[2] = genconstexpr_499349(p, n);
		appf_145085(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3364), LOC7, 3);
	}
	LA5: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA10;
		fillloc_468351(d, ((NU8) 9), t, tmp, ((NU8) 2));
	}
	goto LA8;
	LA10: ;
	{
		putdataintodest_490109(p, d, t, tmp);
	}
	LA8: ;
}

N_NIMCALL(NIM_BOOL, handleconstexpr_499353)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	NIM_BOOL result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NI LOC7;
		ttype188837* t;
		trope145007* LOC10;
		NI id;
		trope145007* LOC11;
		trope145007* LOC12;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = (((*n).Flags &(1<<((((NU8) 4))&15)))!=0);
		if (!(LOC4)) goto LA5;
		LOC4 = ((*d).K == ((NU8) 0));
		LA5: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA6;
		LOC7 = 0;
		LOC7 = sonslen_189181(n);
		LOC3 = (0 < LOC7);
		LA6: ;
		if (!LOC3) goto LA8;
		t = getuniquetype_464401((*n).Typ);
		LOC10 = 0;
		LOC10 = gettypedesc_472091((*p).Module, t);
		id = nodetabletestorset_247911(&(*(*p).Module).Datacache, n, gbackendid_187008);
		LOC11 = 0;
		LOC11 = torope_145062(((NI64) (id)));
		LOC12 = 0;
		LOC12 = con_145030(((NimStringDesc*) &TMP3291), LOC11);
		fillloc_468351(d, ((NU8) 9), t, LOC12, ((NU8) 2));
		{
			TY470214 LOC17;
			if (!(id == gbackendid_187008)) goto LA15;
			gbackendid_187008 += 1;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = gettypedesc_472091((*p).Module, t);
			LOC17[1] = (*d).R;
			LOC17[2] = genconstexpr_499349(p, n);
			appf_145085(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3364), LOC17, 3);
		}
		LA15: ;
		result = NIM_TRUE;
	}
	goto LA1;
	LA8: ;
	{
		result = NIM_FALSE;
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genarrayconstr_500065)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	tloc188817 arr;
	memset((void*)&arr, 0, sizeof(arr));
	{
		NIM_BOOL LOC3;
		NI i_500093;
		NI HEX3Atmp_500115;
		NI LOC10;
		NI res_500117;
		LOC3 = 0;
		LOC3 = handleconstexpr_499353(p, n, d);
		if (!!(LOC3)) goto LA4;
		{
			if (!((*d).K == ((NU8) 0))) goto LA8;
			gettemp_473840(p, (*n).Typ, d);
		}
		LA8: ;
		i_500093 = 0;
		HEX3Atmp_500115 = 0;
		LOC10 = 0;
		LOC10 = sonslen_189181(n);
		HEX3Atmp_500115 = (NI32)(LOC10 - 1);
		res_500117 = 0;
		while (1) {
			ttype188837* LOC12;
			ttype188837* LOC13;
			TY503234 LOC14;
			if (!(res_500117 <= HEX3Atmp_500115)) goto LA11;
			i_500093 = res_500117;
			LOC12 = 0;
			LOC12 = skiptypes_192793((*n).Typ, IL64(211106232576256));
			LOC13 = 0;
			LOC13 = elemtype_223559(LOC12);
			initloc_468340(&arr, ((NU8) 7), LOC13, (*d).S);
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = rdloc_474964(&(*d));
			LOC14[1] = intliteral_476518(((NI64) (i_500093)));
			arr.R = ropef_145079(((NimStringDesc*) &TMP3254), LOC14, 2);
			expr_476492(p, (*n).kindU.S6.Sons->data[i_500093], &arr);
			res_500117 += 1;
		} LA11: ;
	}
	LA4: ;
}

N_NIMCALL(void, gentupleconstr_499699)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	tloc188817 rec;
	memset((void*)&rec, 0, sizeof(rec));
	{
		NIM_BOOL LOC3;
		ttype188837* t;
		trope145007* LOC6;
		NI i_499728;
		NI HEX3Atmp_499802;
		NI LOC11;
		NI res_499804;
		LOC3 = 0;
		LOC3 = handleconstexpr_499353(p, n, d);
		if (!!(LOC3)) goto LA4;
		t = getuniquetype_464401((*n).Typ);
		LOC6 = 0;
		LOC6 = gettypedesc_472091((*p).Module, t);
		{
			if (!((*d).K == ((NU8) 0))) goto LA9;
			gettemp_473840(p, t, d);
		}
		LA9: ;
		i_499728 = 0;
		HEX3Atmp_499802 = 0;
		LOC11 = 0;
		LOC11 = sonslen_189181(n);
		HEX3Atmp_499802 = (NI32)(LOC11 - 1);
		res_499804 = 0;
		while (1) {
			tnode188803* it;
			TY503234 LOC17;
			if (!(res_499804 <= HEX3Atmp_499802)) goto LA12;
			i_499728 = res_499804;
			it = (*n).kindU.S6.Sons->data[i_499728];
			{
				if (!((*it).Kind == ((NU8) 34))) goto LA15;
				it = (*it).kindU.S6.Sons->data[1];
			}
			LA15: ;
			initloc_468340(&rec, ((NU8) 7), (*it).Typ, (*d).S);
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = rdloc_474964(&(*d));
			LOC17[1] = torope_145062(((NI64) (i_499728)));
			rec.R = ropef_145079(((NimStringDesc*) &TMP3307), LOC17, 2);
			expr_476492(p, it, &rec);
			res_499804 += 1;
		} LA12: ;
	}
	LA4: ;
}

N_NIMCALL(void, genfieldcheck_493184)(tcproc465026* p, tnode188803* e, trope145007* obj, tsym188833* field) {
	tloc188817 test;
	tloc188817 u;
	tloc188817 v;
	NI i_493205;
	NI HEX3Atmp_493890;
	NI LOC1;
	NI res_493892;
	memset((void*)&test, 0, sizeof(test));
	memset((void*)&u, 0, sizeof(u));
	memset((void*)&v, 0, sizeof(v));
	i_493205 = 0;
	HEX3Atmp_493890 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(e);
	HEX3Atmp_493890 = (NI32)(LOC1 - 1);
	res_493892 = 1;
	while (1) {
		tnode188803* it;
		tsym188833* op;
		TY503234 LOC7;
		NI id;
		tnode188803* LOC8;
		trope145007* strlit;
		if (!(res_493892 <= HEX3Atmp_493890)) goto LA2;
		i_493205 = res_493892;
		it = (*e).kindU.S6.Sons->data[i_493205];
		op = (*(*it).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		{
			if (!((*op).Magic == ((NU16) 105))) goto LA5;
			it = (*it).kindU.S6.Sons->data[1];
		}
		LA5: ;
		initloc_468340(&test, ((NU8) 0), (*it).Typ, ((NU8) 1));
		initlocexpr_476527(p, (*it).kindU.S6.Sons->data[1], &u);
		initloc_468340(&v, ((NU8) 7), (*(*it).kindU.S6.Sons->data[2]).Typ, ((NU8) 0));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = obj;
		LOC7[1] = (*(*(*it).kindU.S6.Sons->data[2]).kindU.S4.Sym).Loc.R;
		v.R = ropef_145079(((NimStringDesc*) &TMP3211), LOC7, 2);
		geninexpraux_493176(p, it, &u, &v, &test);
		LOC8 = 0;
		LOC8 = newstrnode_189085(((NU8) 20), (*(*field).Name).S);
		id = nodetabletestorset_247911(&(*(*p).Module).Datacache, LOC8, gbackendid_187008);
		{
			if (!(id == gbackendid_187008)) goto LA11;
			strlit = getstrlit_488756((*p).Module, (*(*field).Name).S);
		}
		goto LA9;
		LA11: ;
		{
			trope145007* LOC14;
			LOC14 = 0;
			LOC14 = torope_145062(((NI64) (id)));
			strlit = con_145030(((NimStringDesc*) &TMP3291), LOC14);
		}
		LA9: ;
		{
			TY503234 LOC19;
			if (!((*op).Magic == ((NU16) 105))) goto LA17;
			memset((void*)LOC19, 0, sizeof(LOC19));
			LOC19[0] = rdloc_474964(&test);
			LOC19[1] = strlit;
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3619), LOC19, 2);
		}
		goto LA15;
		LA17: ;
		{
			TY503234 LOC21;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = rdloc_474964(&test);
			LOC21[1] = strlit;
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3620), LOC21, 2);
		}
		LA15: ;
		res_493892 += 1;
	} LA2: ;
}

N_NIMCALL(void, genobjconstr_495667)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 tmp;
	ttype188837* t;
	NIM_BOOL isref;
	trope145007* r;
	trope145007* LOC7;
	NI i_495712;
	NI HEX3Atmp_495895;
	NI LOC8;
	NI res_495897;
	memset((void*)&tmp, 0, sizeof(tmp));
	t = skiptypes_192793((*e).Typ, IL64(211106232576256));
	gettemp_473840(p, t, &tmp);
	isref = ((*t).Kind == ((NU8) 22));
	r = rdloc_474964(&tmp);
	{
		TY145497 LOC5;
		if (!isref) goto LA3;
		rawgennew_495502(p, &tmp, NIM_NIL);
		t = skiptypes_192793((*t).Sons->data[0], IL64(211106232576256));
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = r;
		r = ropef_145079(((NimStringDesc*) &TMP3269), LOC5, 1);
		gcusage_494811(e);
	}
	goto LA1;
	LA3: ;
	{
		constructloc_475202(p, &tmp, NIM_FALSE);
	}
	LA1: ;
	LOC7 = 0;
	LOC7 = gettypedesc_472091((*p).Module, t);
	i_495712 = 0;
	HEX3Atmp_495895 = 0;
	LOC8 = 0;
	LOC8 = len_189264(e);
	HEX3Atmp_495895 = LOC8 - 1;
	res_495897 = 1;
	while (1) {
		tnode188803* it;
		tloc188817 tmp2;
		tsym188833* field;
		ttype188837* ty;
		if (!(res_495897 <= HEX3Atmp_495895)) goto LA9;
		i_495712 = res_495897;
		it = (*e).kindU.S6.Sons->data[i_495712];
		memset((void*)&tmp2, 0, sizeof(tmp2));
		tmp2.R = r;
		field = NIM_NIL;
		ty = t;
		while (1) {
			if (!!((ty == NIM_NIL))) goto LA10;
			field = lookupinrecord_197178((*ty).N, (*(*(*it).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name);
			{
				if (!!((field == NIM_NIL))) goto LA13;
				goto LA10;
			}
			LA13: ;
			{
				if (!!((gcmd_137113 == ((NU8) 2)))) goto LA17;
				app_145046(&tmp2.R, ((NimStringDesc*) &TMP3272));
			}
			LA17: ;
			ty = getuniquetype_464401((*ty).Sons->data[0]);
		} LA10: ;
		{
			NIM_BOOL LOC21;
			LOC21 = 0;
			LOC21 = (field == NIM_NIL);
			if (LOC21) goto LA22;
			LOC21 = ((*field).Loc.R == NIM_NIL);
			LA22: ;
			if (!LOC21) goto LA23;
			internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3618));
		}
		LA23: ;
		{
			NIM_BOOL LOC27;
			NI LOC28;
			LOC27 = 0;
			LOC28 = 0;
			LOC28 = len_189264(it);
			LOC27 = (LOC28 == 3);
			if (!(LOC27)) goto LA29;
			LOC27 = (((*p).Options &(1<<((((NU8) 2))&31)))!=0);
			LA29: ;
			if (!LOC27) goto LA30;
			genfieldcheck_493184(p, (*it).kindU.S6.Sons->data[2], r, field);
		}
		LA30: ;
		app_145046(&tmp2.R, ((NimStringDesc*) &TMP3347));
		app_145040(&tmp2.R, (*field).Loc.R);
		tmp2.K = ((NU8) 1);
		tmp2.T = (*field).Loc.T;
		{
			if (!isref) goto LA34;
			tmp2.S = ((NU8) 2);
		}
		goto LA32;
		LA34: ;
		{
			tmp2.S = ((NU8) 1);
		}
		LA32: ;
		tmp2.Heaproot = tmp.R;
		expr_476492(p, (*it).kindU.S6.Sons->data[1], &tmp2);
		res_495897 += 1;
	} LA9: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA39;
		genericAssign((void*)&(*d), (void*)&tmp, (&NTI188817));
	}
	goto LA37;
	LA39: ;
	{
		genassignment_476511(p, &(*d), &tmp, 0);
	}
	LA37: ;
}

N_NIMCALL(void, gencast_498058)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	ttype188837* destt;
	ttype188837* srct;
	destt = skiptypes_192793((*e).Typ, IL64(211106233624832));
	srct = skiptypes_192793((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106233624832));
	{
		NIM_BOOL LOC3;
		trope145007* lbl;
		tloc188817 tmp;
		TY145497 LOC7;
		TY470214 LOC8;
		TY145497 LOC9;
		trope145007* 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 += 1;
		lbl = torope_145062(((NI64) ((*p).Labels)));
		memset((void*)&tmp, 0, sizeof(tmp));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = lbl;
		tmp.R = ropef_145079(((NimStringDesc*) &TMP3621), LOC7, 1);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = gettypedesc_472091((*p).Module, srct);
		LOC8[1] = gettypedesc_472091((*p).Module, destt);
		LOC8[2] = lbl;
		linefmt_469102(p, ((NU8) 0), ((NimStringDesc*) &TMP3622), LOC8, 3);
		tmp.K = ((NU8) 7);
		tmp.A = -1;
		tmp.T = srct;
		tmp.S = ((NU8) 1);
		tmp.Flags = 0;
		expr_476492(p, (*e).kindU.S6.Sons->data[1], &tmp);
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = lbl;
		LOC10 = 0;
		LOC10 = ropef_145079(((NimStringDesc*) &TMP3623), LOC9, 1);
		putintodest_490145(p, d, (*e).Typ, LOC10);
	}
	goto LA1;
	LA5: ;
	{
		gensomecast_497975(p, e, d);
	}
	LA1: ;
}

N_NIMCALL(void, genconv_498289)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = comparetypes_230547((*e).Typ, (*(*e).kindU.S6.Sons->data[1]).Typ, ((NU8) 1), 0);
		if (!LOC3) goto LA4;
		expr_476492(p, (*e).kindU.S6.Sons->data[1], d);
	}
	goto LA1;
	LA4: ;
	{
		gensomecast_497975(p, e, d);
	}
	LA1: ;
}

N_NIMCALL(void, genaddr_492700)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	{
		ttype188837* LOC3;
		tloc188817 a;
		trope145007* LOC6;
		LOC3 = 0;
		LOC3 = skiptypes_192793((*(*e).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
		if (!((*LOC3).Kind == ((NU8) 22) || (*LOC3).Kind == ((NU8) 21))) goto LA4;
		memset((void*)&a, 0, sizeof(a));
		initlocexpr_476527(p, (*e).kindU.S6.Sons->data[0], &a);
		LOC6 = 0;
		LOC6 = con_145030(((NimStringDesc*) &TMP3242), a.R);
		putintodest_490145(p, d, (*e).Typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		NU8 LOC8;
		LOC8 = 0;
		LOC8 = maptype_470246((*(*e).kindU.S6.Sons->data[0]).Typ);
		if (!(LOC8 == ((NU8) 17))) goto LA9;
		expr_476492(p, (*e).kindU.S6.Sons->data[0], d);
	}
	goto LA1;
	LA9: ;
	{
		tloc188817 a;
		trope145007* LOC12;
		memset((void*)&a, 0, sizeof(a));
		initlocexpr_476527(p, (*e).kindU.S6.Sons->data[0], &a);
		LOC12 = 0;
		LOC12 = addrloc_474987(&a);
		putintodest_490145(p, d, (*e).Typ, LOC12);
	}
	LA1: ;
}

N_NIMCALL(void, genarrayelem_494288)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	tloc188817 b;
	ttype188837* ty;
	ttype188837* LOC1;
	trope145007* first;
	NI64 LOC2;
	ttype188837* LOC56;
	ttype188837* LOC57;
	TY470214 LOC58;
	trope145007* LOC59;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[0], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &b);
	LOC1 = 0;
	LOC1 = skiptypes_192793(a.T, IL64(211106242013440));
	ty = skiptypes_192793(LOC1, IL64(211106247256320));
	LOC2 = 0;
	LOC2 = firstord_223002(ty);
	first = intliteral_476518(LOC2);
	{
		NIM_BOOL LOC5;
		LOC5 = 0;
		LOC5 = (((*p).Options &(1<<((((NU8) 4))&31)))!=0);
		if (!(LOC5)) goto LA6;
		LOC5 = !((((*ty).Flags &(1<<((((NU8) 0))&31)))!=0));
		LA6: ;
		if (!LOC5) goto LA7;
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = isconstexpr_221843((*e).kindU.S6.Sons->data[1]);
			if (!!(LOC11)) goto LA12;
			{
				NI64 LOC16;
				LOC16 = 0;
				LOC16 = firstord_223002(ty);
				if (!(LOC16 == 0)) goto LA17;
				{
					NIM_BOOL LOC21;
					NI64 LOC22;
					NI64 LOC23;
					NI64 LOC25;
					NI64 LOC26;
					TY503234 LOC29;
					NI64 LOC30;
					LOC21 = 0;
					LOC22 = 0;
					LOC22 = firstord_223002(b.T);
					LOC23 = 0;
					LOC23 = firstord_223002(ty);
					LOC21 = (LOC22 < LOC23);
					if (LOC21) goto LA24;
					LOC25 = 0;
					LOC25 = lastord_223006(ty);
					LOC26 = 0;
					LOC26 = lastord_223006(b.T);
					LOC21 = (LOC25 < LOC26);
					LA24: ;
					if (!LOC21) goto LA27;
					memset((void*)LOC29, 0, sizeof(LOC29));
					LOC29[0] = rdcharloc_475015(&b);
					LOC30 = 0;
					LOC30 = lastord_223006(ty);
					LOC29[1] = intliteral_476518(LOC30);
					linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3624), LOC29, 2);
				}
				LA27: ;
			}
			goto LA14;
			LA17: ;
			{
				TY470214 LOC32;
				NI64 LOC33;
				memset((void*)LOC32, 0, sizeof(LOC32));
				LOC32[0] = rdcharloc_475015(&b);
				LOC32[1] = first;
				LOC33 = 0;
				LOC33 = lastord_223006(ty);
				LOC32[2] = intliteral_476518(LOC33);
				linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3625), LOC32, 3);
			}
			LA14: ;
		}
		goto LA9;
		LA12: ;
		{
			NI64 idx;
			idx = getordvalue_223150((*e).kindU.S6.Sons->data[1]);
			{
				NIM_BOOL LOC37;
				NI64 LOC38;
				NI64 LOC40;
				LOC37 = 0;
				LOC38 = 0;
				LOC38 = firstord_223002(ty);
				LOC37 = (idx < LOC38);
				if (LOC37) goto LA39;
				LOC40 = 0;
				LOC40 = lastord_223006(ty);
				LOC37 = (LOC40 < idx);
				LA39: ;
				if (!LOC37) goto LA41;
				localerror_165571((*e).Info, ((NU16) 82), ((NimStringDesc*) &TMP3136));
			}
			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_192793(ty, IL64(211106240964864));
	LOC57 = 0;
	LOC57 = elemtype_223559(LOC56);
	memset((void*)LOC58, 0, sizeof(LOC58));
	LOC58[0] = rdloc_474964(&a);
	LOC58[1] = rdcharloc_475015(&b);
	LOC58[2] = first;
	LOC59 = 0;
	LOC59 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3626), LOC58, 3);
	putintodest_490145(p, d, LOC57, LOC59);
}

N_NIMCALL(void, genopenarrayelem_494500)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	tloc188817 b;
	ttype188837* LOC10;
	ttype188837* LOC11;
	TY503234 LOC12;
	trope145007* LOC13;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[0], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &b);
	{
		TY503234 LOC5;
		if (!(((*p).Options &(1<<((((NU8) 4))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_474964(&b);
		LOC5[1] = rdloc_474964(&a);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3627), LOC5, 2);
	}
	LA3: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA8;
		(*d).S = a.S;
	}
	LA8: ;
	LOC10 = 0;
	LOC10 = skiptypes_192793(a.T, IL64(211106240964864));
	LOC11 = 0;
	LOC11 = elemtype_223559(LOC10);
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = rdloc_474964(&a);
	LOC12[1] = rdcharloc_475015(&b);
	LOC13 = 0;
	LOC13 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3254), LOC12, 2);
	putintodest_490145(p, d, LOC11, LOC13);
}

N_NIMCALL(void, genseqelem_494571)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	tloc188817 b;
	ttype188837* ty;
	ttype188837* LOC27;
	ttype188837* LOC28;
	TY503234 LOC29;
	trope145007* LOC30;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[0], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &b);
	ty = skiptypes_192793(a.T, IL64(211106242013440));
	{
		ttype188837* LOC5;
		if (!((*ty).Kind == ((NU8) 22) || (*ty).Kind == ((NU8) 21))) goto LA3;
		LOC5 = 0;
		LOC5 = lastson_189193(ty);
		ty = skiptypes_192793(LOC5, IL64(211106242013440));
	}
	LA3: ;
	{
		if (!(((*p).Options &(1<<((((NU8) 4))&31)))!=0)) goto LA8;
		{
			TY470214 LOC14;
			if (!((*ty).Kind == ((NU8) 28))) goto LA12;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = rdloc_474964(&b);
			LOC14[1] = rdloc_474964(&a);
			LOC14[2] = lenfield_476535();
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3628), LOC14, 3);
		}
		goto LA10;
		LA12: ;
		{
			TY470214 LOC16;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_474964(&b);
			LOC16[1] = rdloc_474964(&a);
			LOC16[2] = lenfield_476535();
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3629), LOC16, 3);
		}
		LA10: ;
	}
	LA8: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA19;
		(*d).S = ((NU8) 2);
	}
	LA19: ;
	unsureAsgnRef((void**) &(*d).Heaproot, a.R);
	{
		ttype188837* LOC23;
		TY145497 LOC26;
		LOC23 = 0;
		LOC23 = skiptypes_192793(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_468609(NIM_NIL, ((NimStringDesc*) &TMP3269), LOC26, 1);
	}
	LA24: ;
	LOC27 = 0;
	LOC27 = skiptypes_192793(a.T, IL64(211106240964864));
	LOC28 = 0;
	LOC28 = elemtype_223559(LOC27);
	memset((void*)LOC29, 0, sizeof(LOC29));
	LOC29[0] = rdloc_474964(&a);
	LOC29[1] = rdcharloc_475015(&b);
	LOC30 = 0;
	LOC30 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3309), LOC29, 2);
	putintodest_490145(p, d, LOC28, LOC30);
}

N_NIMCALL(void, gencstringelem_494445)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	tloc188817 b;
	ttype188837* ty;
	ttype188837* LOC5;
	ttype188837* LOC6;
	TY503234 LOC7;
	trope145007* LOC8;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[0], &a);
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[1], &b);
	ty = skiptypes_192793(a.T, IL64(211106242013440));
	{
		if (!((*d).K == ((NU8) 0))) goto LA3;
		(*d).S = a.S;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = skiptypes_192793(ty, IL64(211106240964864));
	LOC6 = 0;
	LOC6 = elemtype_223559(LOC5);
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = rdloc_474964(&a);
	LOC7[1] = rdcharloc_475015(&b);
	LOC8 = 0;
	LOC8 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3254), LOC7, 2);
	putintodest_490145(p, d, LOC6, LOC8);
}

N_NIMCALL(void, gentupleelem_492903)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	NI i;
	trope145007* LOC14;
	ttype188837* ty;
	trope145007* r;
	TY145497 LOC17;
	memset((void*)&a, 0, sizeof(a));
	i = 0;
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[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_472091((*p).Module, a.T);
	ty = a.T;
	r = rdloc_474964(&a);
	switch ((*(*e).kindU.S6.Sons->data[1]).Kind) {
	case ((NU8) 6) ... ((NU8) 15):
	{
		i = ((NI) ((*(*e).kindU.S6.Sons->data[1]).kindU.S1.Intval));
	}
	break;
	default:
	{
		internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3630));
	}
	break;
	}
	memset((void*)LOC17, 0, sizeof(LOC17));
	LOC17[0] = torope_145062(((NI64) (i)));
	appf_145085(&r, ((NimStringDesc*) &TMP3631), LOC17, 1);
	putintodest_490145(p, d, (*ty).Sons->data[i], r);
}

N_NIMCALL(void, genderef_492623)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	memset((void*)&a, 0, sizeof(a));
	{
		NU8 LOC3;
		LOC3 = 0;
		LOC3 = maptype_470246((*(*e).kindU.S6.Sons->data[0]).Typ);
		if (!((393216 &(1<<((LOC3)&31)))!=0)) goto LA4;
		expr_476492(p, (*e).kindU.S6.Sons->data[0], d);
	}
	goto LA1;
	LA4: ;
	{
		ttype188837* LOC7;
		TY145497 LOC13;
		trope145007* LOC14;
		initlocexpr_476527(p, (*e).kindU.S6.Sons->data[0], &a);
		LOC7 = 0;
		LOC7 = skiptypes_192793(a.T, IL64(211106232576256));
		switch ((*LOC7).Kind) {
		case ((NU8) 22):
		{
			(*d).S = ((NU8) 2);
		}
		break;
		case ((NU8) 23):
		{
			(*d).S = ((NU8) 0);
		}
		break;
		case ((NU8) 21):
		{
			(*d).S = ((NU8) 0);
		}
		break;
		default:
		{
			NimStringDesc* LOC12;
			LOC12 = 0;
			LOC12 = rawNewString(reprEnum((*a.T).Kind, (&NTI188240))->Sup.len + 9);
appendString(LOC12, ((NimStringDesc*) &TMP3633));
appendString(LOC12, reprEnum((*a.T).Kind, (&NTI188240)));
			internalerror_165591((*e).Info, LOC12);
		}
		break;
		}
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = rdloc_474964(&a);
		LOC14 = 0;
		LOC14 = ropef_145079(((NimStringDesc*) &TMP3269), LOC13, 1);
		putintodest_490145(p, d, (*a.T).Sons->data[0], LOC14);
	}
	LA1: ;
}

N_NIMCALL(ttype188837*, genrecordfieldaux_492814)(tcproc465026* p, tnode188803* e, tloc188817* d, tloc188817* a) {
	ttype188837* result;
	trope145007* LOC18;
	result = 0;
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[0], a);
	{
		if (!!(((*(*e).kindU.S6.Sons->data[1]).Kind == ((NU8) 3)))) goto LA3;
		internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3634));
	}
	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_472091((*p).Module, (*a).T);
	result = (*a).T;
	return result;
}

N_NIMCALL(void, genrecordfield_493021)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	tloc188817 a;
	ttype188837* ty;
	trope145007* r;
	tsym188833* f;
	memset((void*)&a, 0, sizeof(a));
	ty = genrecordfieldaux_492814(p, e, d, &a);
	r = rdloc_474964(&a);
	f = (*(*e).kindU.S6.Sons->data[1]).kindU.S4.Sym;
	{
		TY145497 LOC5;
		if (!((*ty).Kind == ((NU8) 18))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_145062(((NI64) ((*f).Position)));
		appf_145085(&r, ((NimStringDesc*) &TMP3631), LOC5, 1);
		putintodest_490145(p, d, (*f).Typ, r);
	}
	goto LA1;
	LA3: ;
	{
		tsym188833* field;
		TY145497 LOC28;
		field = NIM_NIL;
		while (1) {
			if (!!((ty == NIM_NIL))) goto LA7;
			{
				if (!!(((*ty).Kind == ((NU8) 18) || (*ty).Kind == ((NU8) 17)))) goto LA10;
				internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3635));
			}
			LA10: ;
			field = lookupinrecord_197178((*ty).N, (*f).Name);
			{
				if (!!((field == NIM_NIL))) goto LA14;
				goto LA7;
			}
			LA14: ;
			{
				if (!!((gcmd_137113 == ((NU8) 2)))) goto LA18;
				app_145046(&r, ((NimStringDesc*) &TMP3272));
			}
			LA18: ;
			ty = getuniquetype_464401((*ty).Sons->data[0]);
		} LA7: ;
		{
			if (!(field == NIM_NIL)) goto LA22;
			internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3636));
		}
		LA22: ;
		{
			if (!((*field).Loc.R == NIM_NIL)) goto LA26;
			internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3637));
		}
		LA26: ;
		memset((void*)LOC28, 0, sizeof(LOC28));
		LOC28[0] = (*field).Loc.R;
		appf_145085(&r, ((NimStringDesc*) &TMP3638), LOC28, 1);
		putintodest_490145(p, d, (*field).Typ, r);
	}
	LA1: ;
}

N_NIMCALL(void, gencheckedrecordfield_493896)(tcproc465026* p, tnode188803* e, tloc188817* d) {
	{
		tloc188817 a;
		tsym188833* f;
		tsym188833* field;
		ttype188837* ty;
		trope145007* r;
		TY145497 LOC22;
		trope145007* LOC23;
		if (!(((*p).Options &(1<<((((NU8) 2))&31)))!=0)) goto LA3;
		memset((void*)&a, 0, sizeof(a));
		f = 0;
		field = 0;
		ty = 0;
		r = 0;
		ty = genrecordfieldaux_492814(p, (*e).kindU.S6.Sons->data[0], d, &a);
		r = rdloc_474964(&a);
		f = (*(*(*e).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1]).kindU.S4.Sym;
		field = NIM_NIL;
		while (1) {
			if (!!((ty == NIM_NIL))) goto LA5;
			field = lookupinrecord_197178((*ty).N, (*f).Name);
			{
				if (!!((field == NIM_NIL))) goto LA8;
				goto LA5;
			}
			LA8: ;
			{
				if (!!((gcmd_137113 == ((NU8) 2)))) goto LA12;
				app_145046(&r, ((NimStringDesc*) &TMP3272));
			}
			LA12: ;
			ty = getuniquetype_464401((*ty).Sons->data[0]);
		} LA5: ;
		{
			if (!(field == NIM_NIL)) goto LA16;
			internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3639));
		}
		LA16: ;
		{
			if (!((*field).Loc.R == NIM_NIL)) goto LA20;
			internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3639));
		}
		LA20: ;
		genfieldcheck_493184(p, e, r, field);
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = (*field).Loc.R;
		LOC23 = 0;
		LOC23 = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3638), LOC22, 1);
		app_145040(&r, LOC23);
		putintodest_490145(p, d, (*field).Typ, r);
	}
	goto LA1;
	LA3: ;
	{
		genrecordfield_493021(p, (*e).kindU.S6.Sons->data[0], d);
	}
	LA1: ;
}

N_NIMCALL(NI, startblock_481090)(tcproc465026* p, NimStringDesc* start, trope145007** args, NI argsLen0) {
	NI result;
	result = 0;
	linecg_469093(p, ((NU8) 2), start, args, argsLen0);
	(*p).Labels += 1;
	result = (*p).Blocks->Sup.len;
	(*p).Blocks = (TY465097*) setLengthSeq(&((*p).Blocks)->Sup, sizeof(tblock465024), (NI32)(result + 1));
	(*p).Blocks->data[result].Id = ((NI) ((*p).Labels));
	(*p).Blocks->data[result].Nestedtrystmts = ((NI16) ((*p).Nestedtrystmts->Sup.len));
	(*p).Blocks->data[result].Nestedexceptstmts = ((NI16) ((*p).Inexceptblock));
	return result;
}

N_NIMCALL(trope145007*, blockbody_481158)(tblock465024* b) {
	trope145007* result;
	result = 0;
	result = (*b).Sections[(((NU8) 0))- 0];
	{
		TY145497 LOC5;
		if (!(((NI16) 0) < (*b).Framelen)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_145062(((NI64) ((*b).Framelen)));
		appf_145085(&result, ((NimStringDesc*) &TMP3642), LOC5, 1);
	}
	LA3: ;
	app_145040(&result, (*b).Sections[(((NU8) 1))- 0]);
	app_145040(&result, (*b).Sections[(((NU8) 2))- 0]);
	return result;
}

N_NIMCALL(void, endblock_481172)(tcproc465026* p, trope145007* blockend) {
	NI topblock;
	trope145007* LOC1;
	topblock = (NI32)((*p).Blocks->Sup.len - 1);
	LOC1 = 0;
	LOC1 = blockbody_481158(&(*p).Blocks->data[topblock]);
	app_145040(&(*p).Blocks->data[(NI32)(topblock - 1)].Sections[(((NU8) 2))- 0], LOC1);
	(*p).Blocks = (TY465097*) setLengthSeq(&((*p).Blocks)->Sup, sizeof(tblock465024), topblock);
	line_469070(p, ((NU8) 2), blockend);
}

N_NIMCALL(void, endblock_481207)(tcproc465026* p) {
	NI topblock;
	trope145007* blockend;
	NI16 framelen;
	topblock = (NI32)((*p).Blocks->Sup.len - 1);
	{
		TY145497 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_468609(NIM_NIL, ((NimStringDesc*) &TMP3640), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY469906 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		blockend = ropef_145079(((NimStringDesc*) &TMP3279), LOC7, 0);
	}
	LA1: ;
	framelen = (*p).Blocks->data[topblock].Framelen;
	{
		TY145497 LOC12;
		if (!(((NI16) 0) < framelen)) goto LA10;
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = torope_145062(((NI64) (framelen)));
		appf_145085(&blockend, ((NimStringDesc*) &TMP3641), LOC12, 1);
	}
	LA10: ;
	endblock_481172(p, blockend);
}

N_NIMCALL(void, genblock_483402)(tcproc465026* p, tnode188803* t, tloc188817* d) {
	NI oldbreakidx_483409;
	TY469906 LOC1;
	oldbreakidx_483409 = (*p).Breakidx;
	memset((void*)LOC1, 0, sizeof(LOC1));
	(*p).Breakidx = startblock_481090(p, ((NimStringDesc*) &TMP3365), LOC1, 0);
	{
		tsym188833* sym;
		if (!!(((*(*t).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA4;
		sym = (*(*t).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		(*sym).Loc.K = ((NU8) 11);
		(*sym).Loc.A = (*p).Breakidx;
	}
	LA4: ;
	expr_476492(p, (*t).kindU.S6.Sons->data[1], d);
	endblock_481207(p);
	(*p).Breakidx = oldbreakidx_483409;
}

N_NIMCALL(void, genstmtlistexpr_500202)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	NI length;
	NI i_500221;
	NI HEX3Atmp_500251;
	NI res_500253;
	length = sonslen_189181(n);
	i_500221 = 0;
	HEX3Atmp_500251 = 0;
	HEX3Atmp_500251 = (NI32)(length - 2);
	res_500253 = 0;
	while (1) {
		if (!(res_500253 <= HEX3Atmp_500251)) goto LA1;
		i_500221 = res_500253;
		genstmts_476487(p, (*n).kindU.S6.Sons->data[i_500221]);
		res_500253 += 1;
	} LA1: ;
	{
		if (!(0 < length)) goto LA4;
		expr_476492(p, (*n).kindU.S6.Sons->data[(NI32)(length - 1)], d);
	}
	LA4: ;
}

N_NIMCALL(void, lineff_469212)(tcproc465026* p, NU8 s, NimStringDesc* cformat, NimStringDesc* llvmformat, trope145007** args, NI argsLen0) {
	{
		if (!(gcmd_137113 == ((NU8) 5))) goto LA3;
		linef_469084(p, s, llvmformat, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		linef_469084(p, s, cformat, args, argsLen0);
	}
	LA1: ;
}

N_NIMCALL(void, genif_482009)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	tloc188817 a;
	trope145007* lelse;
	trope145007* lend;
	NI i_482039;
	NI HEX3Atmp_482444;
	NI LOC8;
	NI res_482446;
	memset((void*)&a, 0, sizeof(a));
	lelse = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_195210((*n).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_473840(p, (*n).Typ, d);
	}
	LA6: ;
	genlinedir_469427(p, n);
	lend = getlabel_476440(p);
	i_482039 = 0;
	HEX3Atmp_482444 = 0;
	LOC8 = 0;
	LOC8 = sonslen_189181(n);
	HEX3Atmp_482444 = (NI32)(LOC8 - 1);
	res_482446 = 0;
	while (1) {
		tnode188803* it;
		if (!(res_482446 <= HEX3Atmp_482444)) goto LA9;
		i_482039 = res_482446;
		it = (*n).kindU.S6.Sons->data[i_482039];
		{
			NI LOC12;
			TY469906 LOC15;
			NI LOC16;
			TY470214 LOC17;
			LOC12 = 0;
			LOC12 = len_189264(it);
			if (!(LOC12 == 2)) goto LA13;
			memset((void*)LOC15, 0, sizeof(LOC15));
			LOC16 = 0;
			LOC16 = startblock_481090(p, ((NimStringDesc*) &TMP3365), LOC15, 0);
			initlocexpr_476527(p, (*it).kindU.S6.Sons->data[0], &a);
			lelse = getlabel_476440(p);
			(*p).Labels += 1;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = rdloc_474964(&a);
			LOC17[1] = lelse;
			LOC17[2] = torope_145062(((NI64) ((*p).Labels)));
			lineff_469212(p, ((NU8) 2), ((NimStringDesc*) &TMP3643), ((NimStringDesc*) &TMP3644), LOC17, 3);
			expr_476492(p, (*it).kindU.S6.Sons->data[1], d);
			endblock_481207(p);
			{
				NI LOC20;
				TY145497 LOC23;
				LOC20 = 0;
				LOC20 = sonslen_189181(n);
				if (!(1 < LOC20)) goto LA21;
				memset((void*)LOC23, 0, sizeof(LOC23));
				LOC23[0] = lend;
				lineff_469212(p, ((NU8) 2), ((NimStringDesc*) &TMP3645), ((NimStringDesc*) &TMP3646), LOC23, 1);
			}
			LA21: ;
			fixlabel_476462(p, lelse);
		}
		goto LA10;
		LA13: ;
		{
			NI LOC25;
			TY469906 LOC28;
			NI LOC29;
			LOC25 = 0;
			LOC25 = len_189264(it);
			if (!(LOC25 == 1)) goto LA26;
			memset((void*)LOC28, 0, sizeof(LOC28));
			LOC29 = 0;
			LOC29 = startblock_481090(p, ((NimStringDesc*) &TMP3365), LOC28, 0);
			expr_476492(p, (*it).kindU.S6.Sons->data[0], d);
			endblock_481207(p);
		}
		goto LA10;
		LA26: ;
		{
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3647));
		}
		LA10: ;
		res_482446 += 1;
	} LA9: ;
	{
		NI LOC33;
		LOC33 = 0;
		LOC33 = sonslen_189181(n);
		if (!(1 < LOC33)) goto LA34;
		fixlabel_476462(p, lend);
	}
	LA34: ;
}

N_NIMCALL(void, downconv_500420)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	{
		if (!(gcmd_137113 == ((NU8) 2))) goto LA3;
		expr_476492(p, (*n).kindU.S6.Sons->data[0], d);
	}
	goto LA1;
	LA3: ;
	{
		ttype188837* dest;
		ttype188837* src;
		tloc188817 a;
		trope145007* r;
		dest = skiptypes_192793((*n).Typ, IL64(211106247256320));
		src = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106247256320));
		memset((void*)&a, 0, sizeof(a));
		initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
		r = rdloc_474964(&a);
		{
			NIM_BOOL LOC8;
			ttype188837* LOC9;
			NI i_500551;
			NI HEX3Atmp_500568;
			NI LOC13;
			NI res_500570;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
			LOC8 = ((*LOC9).Kind == ((NU8) 22) || (*LOC9).Kind == ((NU8) 21) || (*LOC9).Kind == ((NU8) 23));
			if (!(LOC8)) goto LA10;
			LOC8 = !(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 64) || (*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 63) || (*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 66)));
			LA10: ;
			if (!LOC8) goto LA11;
			app_145046(&r, ((NimStringDesc*) &TMP3648));
			i_500551 = 0;
			HEX3Atmp_500568 = 0;
			LOC13 = 0;
			LOC13 = inheritancediff_230560(dest, src);
			HEX3Atmp_500568 = (NI32)abs(LOC13);
			res_500570 = 2;
			while (1) {
				if (!(res_500570 <= HEX3Atmp_500568)) goto LA14;
				i_500551 = res_500570;
				app_145046(&r, ((NimStringDesc*) &TMP3272));
				res_500570 += 1;
			} LA14: ;
			r = con_145030(((NimStringDesc*) &TMP3242), r);
		}
		goto LA6;
		LA11: ;
		{
			NI i_500565;
			NI HEX3Atmp_500572;
			NI LOC16;
			NI res_500574;
			i_500565 = 0;
			HEX3Atmp_500572 = 0;
			LOC16 = 0;
			LOC16 = inheritancediff_230560(dest, src);
			HEX3Atmp_500572 = (NI32)abs(LOC16);
			res_500574 = 1;
			while (1) {
				if (!(res_500574 <= HEX3Atmp_500572)) goto LA17;
				i_500565 = res_500574;
				app_145046(&r, ((NimStringDesc*) &TMP3272));
				res_500574 += 1;
			} LA17: ;
		}
		LA6: ;
		putintodest_490145(p, d, (*n).Typ, r);
	}
	LA1: ;
}

N_NIMCALL(void, upconv_500257)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	tloc188817 a;
	ttype188837* dest;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
	dest = skiptypes_192793((*n).Typ, IL64(211106247256320));
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		trope145007* r;
		trope145007* nilcheck;
		ttype188837* t;
		LOC3 = 0;
		LOC3 = (((*p).Options &(1<<((((NU8) 1))&31)))!=0);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = isobjlackingtypefield_472601(dest);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		r = rdloc_474964(&a);
		nilcheck = NIM_NIL;
		t = skiptypes_192793(a.T, IL64(211106232576256));
		while (1) {
			TY145497 LOC13;
			ttype188837* LOC14;
			if (!((*t).Kind == ((NU8) 23) || (*t).Kind == ((NU8) 21) || (*t).Kind == ((NU8) 22))) goto LA8;
			{
				if (!!(((*t).Kind == ((NU8) 23)))) goto LA11;
				nilcheck = r;
			}
			LA11: ;
			memset((void*)LOC13, 0, sizeof(LOC13));
			LOC13[0] = r;
			r = ropef_145079(((NimStringDesc*) &TMP3269), LOC13, 1);
			LOC14 = 0;
			LOC14 = lastson_189193(t);
			t = skiptypes_192793(LOC14, IL64(211106232576256));
		} LA8: ;
		{
			if (!!((gcmd_137113 == ((NU8) 2)))) goto LA17;
			while (1) {
				NIM_BOOL LOC20;
				LOC20 = 0;
				LOC20 = ((*t).Kind == ((NU8) 17));
				if (!(LOC20)) goto LA21;
				LOC20 = !(((*t).Sons->data[0] == NIM_NIL));
				LA21: ;
				if (!LOC20) goto LA19;
				app_145046(&r, ((NimStringDesc*) &TMP3272));
				t = skiptypes_192793((*t).Sons->data[0], IL64(211106232576256));
			} LA19: ;
		}
		LA17: ;
		{
			TY470214 LOC26;
			if (!!((nilcheck == NIM_NIL))) goto LA24;
			memset((void*)LOC26, 0, sizeof(LOC26));
			LOC26[0] = nilcheck;
			LOC26[1] = r;
			LOC26[2] = gentypeinfo_472392((*p).Module, dest);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3649), LOC26, 3);
		}
		goto LA22;
		LA24: ;
		{
			TY503234 LOC28;
			memset((void*)LOC28, 0, sizeof(LOC28));
			LOC28[0] = r;
			LOC28[1] = gentypeinfo_472392((*p).Module, dest);
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3650), LOC28, 2);
		}
		LA22: ;
	}
	LA6: ;
	{
		TY503234 LOC33;
		trope145007* LOC34;
		if (!!(((*(*(*n).kindU.S6.Sons->data[0]).Typ).Kind == ((NU8) 17)))) goto LA31;
		memset((void*)LOC33, 0, sizeof(LOC33));
		LOC33[0] = gettypedesc_472091((*p).Module, (*n).Typ);
		LOC33[1] = rdloc_474964(&a);
		LOC34 = 0;
		LOC34 = ropef_145079(((NimStringDesc*) &TMP3525), LOC33, 2);
		putintodest_490145(p, d, (*n).Typ, LOC34);
	}
	goto LA29;
	LA31: ;
	{
		TY503234 LOC36;
		trope145007* LOC37;
		memset((void*)LOC36, 0, sizeof(LOC36));
		LOC36[0] = gettypedesc_472091((*p).Module, dest);
		LOC36[1] = addrloc_474987(&a);
		LOC37 = 0;
		LOC37 = ropef_145079(((NimStringDesc*) &TMP3524), LOC36, 2);
		putintodest_490145(p, d, (*n).Typ, LOC37);
	}
	LA29: ;
}

N_NIMCALL(void, genrangechck_498157)(tcproc465026* p, tnode188803* n, tloc188817* d, NimStringDesc* magic) {
	tloc188817 a;
	ttype188837* dest;
	memset((void*)&a, 0, sizeof(a));
	dest = skiptypes_192793((*n).Typ, IL64(211106240964864));
	{
		NIM_BOOL LOC3;
		TY503234 LOC7;
		trope145007* LOC8;
		LOC3 = 0;
		LOC3 = !((((*p).Options &(1<<((((NU8) 3))&31)))!=0));
		if (LOC3) goto LA4;
		LOC3 = ((*dest).Kind >= ((NU8) 40) && (*dest).Kind <= ((NU8) 44));
		LA4: ;
		if (!LOC3) goto LA5;
		initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_472091((*p).Module, dest);
		LOC7[1] = rdcharloc_475015(&a);
		LOC8 = 0;
		LOC8 = ropef_145079(((NimStringDesc*) &TMP3525), LOC7, 2);
		putintodest_490145(p, d, (*n).Typ, LOC8);
	}
	goto LA1;
	LA5: ;
	{
		TY473397 LOC15;
		trope145007* LOC16;
		initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = levalue_197404((*n).kindU.S6.Sons->data[2], (*n).kindU.S6.Sons->data[1]);
			if (!LOC12) goto LA13;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3651));
		}
		LA13: ;
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = gettypedesc_472091((*p).Module, dest);
		LOC15[1] = rdcharloc_475015(&a);
		LOC15[2] = genliteral_488767(p, (*n).kindU.S6.Sons->data[1], dest);
		LOC15[3] = genliteral_488767(p, (*n).kindU.S6.Sons->data[2], dest);
		LOC15[4] = torope_145058(magic);
		LOC16 = 0;
		LOC16 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3652), LOC15, 5);
		putintodest_490145(p, d, dest, LOC16);
	}
	LA1: ;
}

N_NIMCALL(void, convstrtocstr_498324)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	tloc188817 a;
	ttype188837* LOC1;
	TY145497 LOC2;
	trope145007* LOC3;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
	LOC1 = 0;
	LOC1 = skiptypes_192793((*n).Typ, IL64(211106240964864));
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = rdloc_474964(&a);
	LOC3 = 0;
	LOC3 = ropef_145079(((NimStringDesc*) &TMP3578), LOC2, 1);
	putintodest_490145(p, d, LOC1, LOC3);
}

N_NIMCALL(void, convcstrtostr_498352)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	tloc188817 a;
	ttype188837* LOC1;
	TY145497 LOC2;
	trope145007* LOC3;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
	LOC1 = 0;
	LOC1 = skiptypes_192793((*n).Typ, IL64(211106240964864));
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = rdloc_474964(&a);
	LOC3 = 0;
	LOC3 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3511), LOC2, 1);
	putintodest_490145(p, d, LOC1, LOC3);
	gcusage_494811(n);
}

static N_INLINE(NIM_BOOL, isroutine_195040)(tsym188833* s) {
	NIM_BOOL result;
	result = 0;
	result = ((520192 &(1<<(((*s).Kind)&31)))!=0);
	return result;
}

static N_INLINE(NIM_BOOL, isconstclosure_499808)(tnode188803* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
	if (!(LOC2)) goto LA3;
	LOC2 = isroutine_195040((*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym);
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = ((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 23));
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genclosure_499887)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	{
		NIM_BOOL LOC3;
		trope145007* tmp;
		trope145007* LOC6;
		TY470214 LOC7;
		LOC3 = 0;
		LOC3 = isconstclosure_499808(n);
		if (!LOC3) goto LA4;
		(*p).Labels += 1;
		LOC6 = 0;
		LOC6 = torope_145062(((NI64) ((*p).Labels)));
		tmp = con_145030(((NimStringDesc*) &TMP3267), LOC6);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_472091((*p).Module, (*n).Typ);
		LOC7[1] = tmp;
		LOC7[2] = genconstexpr_499349(p, n);
		appf_145085(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3364), LOC7, 3);
		putintodest_490145(p, d, (*n).Typ, tmp);
	}
	goto LA1;
	LA4: ;
	{
		tloc188817 tmp;
		tloc188817 a;
		tloc188817 b;
		TY470214 LOC9;
		memset((void*)&tmp, 0, sizeof(tmp));
		memset((void*)&a, 0, sizeof(a));
		memset((void*)&b, 0, sizeof(b));
		initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
		initlocexpr_476527(p, (*n).kindU.S6.Sons->data[1], &b);
		gettemp_473840(p, (*n).Typ, &tmp);
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = rdloc_474964(&tmp);
		LOC9[1] = rdloc_474964(&a);
		LOC9[2] = rdloc_474964(&b);
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3656), LOC9, 3);
		putlocintodest_476504(p, d, &tmp);
	}
	LA1: ;
}

static N_INLINE(trope145007*, assignlabel_481152)(tblock465024* b) {
	trope145007* result;
	trope145007* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = torope_145062(((NI64) ((*b).Id)));
	unsureAsgnRef((void**) &(*b).Label, con_145030(((NimStringDesc*) &TMP3391), LOC1));
	result = (*b).Label;
	return result;
}

N_NIMCALL(void, gencomputedgoto_482768)(tcproc465026* p, tnode188803* n) {
	NI casepos;
	NI arraysize;
	NI i_482795;
	NI HEX3Atmp_483141;
	NI LOC1;
	NI res_483143;
	NI id;
	trope145007* tmp;
	TY145497 LOC25;
	trope145007* gotoarray;
	TY503234 LOC26;
	NI i_482899;
	NI HEX3Atmp_483145;
	NI res_483147;
	TY145497 LOC29;
	NI topblock;
	trope145007* oldbody;
	NI j_482944;
	NI HEX3Atmp_483149;
	NI HEX3Atmp_483150;
	NI LOC30;
	NI res_483152;
	trope145007* tailb;
	NI j_482970;
	NI HEX3Atmp_483154;
	NI res_483156;
	trope145007* taila;
	tnode188803* casestmt;
	tloc188817 a_483003;
	TY503234 LOC33;
	NI i_483044;
	NI HEX3Atmp_483164;
	NI LOC34;
	NI res_483166;
	casepos = -1;
	arraysize = 0;
	i_482795 = 0;
	HEX3Atmp_483141 = 0;
	LOC1 = 0;
	LOC1 = len_189264(n);
	HEX3Atmp_483141 = LOC1 - 1;
	res_483143 = 0;
	while (1) {
		tnode188803* it;
		if (!(res_483143 <= HEX3Atmp_483141)) goto LA2;
		i_482795 = res_483143;
		it = (*n).kindU.S6.Sons->data[i_482795];
		{
			NI64 asize;
			if (!((*it).Kind == ((NU8) 97))) goto LA5;
			{
				tnode188803* LOC9;
				LOC9 = 0;
				LOC9 = lastson_189189(it);
				if (!!(((*LOC9).Kind == ((NU8) 85)))) goto LA10;
				localerror_165578((*it).Info, ((NimStringDesc*) &TMP3658));
				goto BeforeRet;
			}
			LA10: ;
			casepos = i_482795;
			asize = lengthord_223010((*(*it).kindU.S6.Sons->data[0]).Typ);
			{
				if (!(10000 < asize)) goto LA14;
				localerror_165578((*it).Info, ((NimStringDesc*) &TMP3659));
				goto BeforeRet;
			}
			LA14: ;
			arraysize = ((NI) (asize));
			{
				NI64 LOC18;
				LOC18 = 0;
				LOC18 = firstord_223002((*(*it).kindU.S6.Sons->data[0]).Typ);
				if (!!((LOC18 == 0))) goto LA19;
				localerror_165578((*it).Info, ((NimStringDesc*) &TMP3660));
				goto BeforeRet;
			}
			LA19: ;
		}
		LA5: ;
		res_483143 += 1;
	} LA2: ;
	{
		if (!(casepos < 0)) goto LA23;
		localerror_165578((*n).Info, ((NimStringDesc*) &TMP3661));
		goto BeforeRet;
	}
	LA23: ;
	id = (NI32)(((NI) ((*p).Labels)) + 1);
	(*p).Labels += (NI32)(arraysize + 1);
	memset((void*)LOC25, 0, sizeof(LOC25));
	LOC25[0] = torope_145062(((NI64) (id)));
	tmp = ropef_145079(((NimStringDesc*) &TMP3261), LOC25, 1);
	memset((void*)LOC26, 0, sizeof(LOC26));
	LOC26[0] = tmp;
	LOC26[1] = torope_145062(((NI64) (arraysize)));
	gotoarray = ropef_145079(((NimStringDesc*) &TMP3662), LOC26, 2);
	i_482899 = 0;
	HEX3Atmp_483145 = 0;
	HEX3Atmp_483145 = (NI32)(arraysize - 1);
	res_483147 = 1;
	while (1) {
		TY145497 LOC28;
		if (!(res_483147 <= HEX3Atmp_483145)) goto LA27;
		i_482899 = res_483147;
		memset((void*)LOC28, 0, sizeof(LOC28));
		LOC28[0] = torope_145062(((NI64) ((NI32)(((NI) (id)) + i_482899))));
		appf_145085(&gotoarray, ((NimStringDesc*) &TMP3663), LOC28, 1);
		res_483147 += 1;
	} LA27: ;
	memset((void*)LOC29, 0, sizeof(LOC29));
	LOC29[0] = torope_145062(((NI64) ((NI32)(((NI) (id)) + arraysize))));
	appf_145085(&gotoarray, ((NimStringDesc*) &TMP3664), LOC29, 1);
	line_469070(p, ((NU8) 0), gotoarray);
	topblock = (NI32)((*p).Blocks->Sup.len - 1);
	oldbody = (*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0];
	asgnRefNoCycle((void**) &(*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0], NIM_NIL);
	j_482944 = 0;
	HEX3Atmp_483149 = 0;
	HEX3Atmp_483150 = 0;
	HEX3Atmp_483149 = (NI32)(casepos + 1);
	LOC30 = 0;
	LOC30 = len_189264(n);
	HEX3Atmp_483150 = LOC30 - 1;
	res_483152 = HEX3Atmp_483149;
	while (1) {
		if (!(res_483152 <= HEX3Atmp_483150)) goto LA31;
		j_482944 = res_483152;
		genstmts_476487(p, (*n).kindU.S6.Sons->data[j_482944]);
		res_483152 += 1;
	} LA31: ;
	tailb = (*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0];
	asgnRefNoCycle((void**) &(*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0], NIM_NIL);
	j_482970 = 0;
	HEX3Atmp_483154 = 0;
	HEX3Atmp_483154 = (NI32)(casepos - 1);
	res_483156 = 0;
	while (1) {
		if (!(res_483156 <= HEX3Atmp_483154)) goto LA32;
		j_482970 = res_483156;
		genstmts_476487(p, (*n).kindU.S6.Sons->data[j_482970]);
		res_483156 += 1;
	} LA32: ;
	taila = (*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0];
	asgnRefNoCycle((void**) &(*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0], con_145020(oldbody, taila));
	casestmt = (*n).kindU.S6.Sons->data[casepos];
	memset((void*)&a_483003, 0, sizeof(a_483003));
	initlocexpr_476527(p, (*casestmt).kindU.S6.Sons->data[0], &a_483003);
	memset((void*)LOC33, 0, sizeof(LOC33));
	LOC33[0] = tmp;
	LOC33[1] = rdloc_474964(&a_483003);
	linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3665), LOC33, 2);
	i_483044 = 0;
	HEX3Atmp_483164 = 0;
	LOC34 = 0;
	LOC34 = len_189264(casestmt);
	HEX3Atmp_483164 = LOC34 - 1;
	res_483166 = 1;
	while (1) {
		TY469906 LOC36;
		NI LOC37;
		tnode188803* it;
		NI j_483077;
		NI HEX3Atmp_483159;
		NI LOC38;
		NI res_483161;
		tnode188803* LOC45;
		trope145007** LOC46;
		trope145007** LOC47;
		tloc188817 a;
		TY503234 LOC48;
		if (!(res_483166 <= HEX3Atmp_483164)) goto LA35;
		i_483044 = res_483166;
		memset((void*)LOC36, 0, sizeof(LOC36));
		LOC37 = 0;
		LOC37 = startblock_481090(p, ((NimStringDesc*) &TMP3365), LOC36, 0);
		it = (*casestmt).kindU.S6.Sons->data[i_483044];
		j_483077 = 0;
		HEX3Atmp_483159 = 0;
		LOC38 = 0;
		LOC38 = len_189264(it);
		HEX3Atmp_483159 = (NI32)(LOC38 - 2);
		res_483161 = 0;
		while (1) {
			NI64 val;
			TY145497 LOC44;
			if (!(res_483161 <= HEX3Atmp_483159)) goto LA39;
			j_483077 = res_483161;
			{
				if (!((*(*it).kindU.S6.Sons->data[j_483077]).Kind == ((NU8) 44))) goto LA42;
				localerror_165578((*it).Info, ((NimStringDesc*) &TMP3666));
				goto BeforeRet;
			}
			LA42: ;
			val = getordvalue_223150((*it).kindU.S6.Sons->data[j_483077]);
			memset((void*)LOC44, 0, sizeof(LOC44));
			LOC44[0] = intliteral_476518((NI64)((NI64)(val + ((NI64) (id))) + 1));
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3667), LOC44, 1);
			res_483161 += 1;
		} LA39: ;
		LOC45 = 0;
		LOC45 = lastson_189189(it);
		genstmts_476487(p, LOC45);
		LOC46 = 0;
		LOC46 = s_465173(p, ((NU8) 2));
		app_145040(LOC46, tailb);
		LOC47 = 0;
		LOC47 = s_465173(p, ((NU8) 2));
		app_145040(LOC47, taila);
		memset((void*)&a, 0, sizeof(a));
		initlocexpr_476527(p, (*casestmt).kindU.S6.Sons->data[0], &a);
		memset((void*)LOC48, 0, sizeof(LOC48));
		LOC48[0] = tmp;
		LOC48[1] = rdloc_474964(&a);
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3665), LOC48, 2);
		endblock_481207(p);
		res_483166 += 1;
	} LA35: ;
	BeforeRet: ;
}

N_NIMCALL(void, genwhilestmt_483175)(tcproc465026* p, tnode188803* t) {
	tloc188817 a;
	trope145007* labl;
	NI oldbreakidx_483218;
	TY469906 LOC1;
	tnode188803* loopbody;
	memset((void*)&a, 0, sizeof(a));
	labl = 0;
	(*p).Withinloop += 1;
	genlinedir_469427(p, t);
	oldbreakidx_483218 = (*p).Breakidx;
	memset((void*)LOC1, 0, sizeof(LOC1));
	(*p).Breakidx = startblock_481090(p, ((NimStringDesc*) &TMP3657), LOC1, 0);
	(*p).Blocks->data[(*p).Breakidx].Isloop = NIM_TRUE;
	initlocexpr_476527(p, (*t).kindU.S6.Sons->data[0], &a);
	{
		NIM_BOOL LOC4;
		trope145007* label;
		TY503234 LOC8;
		LOC4 = 0;
		LOC4 = !(((*(*t).kindU.S6.Sons->data[0]).Kind == ((NU8) 6)));
		if (LOC4) goto LA5;
		LOC4 = ((*(*t).kindU.S6.Sons->data[0]).kindU.S1.Intval == 0);
		LA5: ;
		if (!LOC4) goto LA6;
		label = assignlabel_481152(&(*p).Blocks->data[(*p).Breakidx]);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_474964(&a);
		LOC8[1] = label;
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3643), LOC8, 2);
	}
	LA6: ;
	loopbody = (*t).kindU.S6.Sons->data[1];
	{
		NIM_BOOL LOC11;
		LOC11 = 0;
		LOC11 = stmtscontainpragma_464099(loopbody, ((NU8) 173));
		if (!(LOC11)) goto LA12;
		LOC11 = ((cc_169402[(ccompiler_169425)- 1].Field20 &(1<<((((NU8) 1))&7)))!=0);
		LA12: ;
		if (!LOC11) goto LA13;
		{
			NIM_BOOL LOC17;
			NI LOC18;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = len_189264(loopbody);
			LOC17 = (LOC18 == 2);
			if (!(LOC17)) goto LA19;
			LOC17 = ((*(*loopbody).kindU.S6.Sons->data[0]).Kind == ((NU8) 1));
			LA19: ;
			if (!LOC17) goto LA20;
			loopbody = (*loopbody).kindU.S6.Sons->data[1];
		}
		LA20: ;
		gencomputedgoto_482768(p, loopbody);
	}
	goto LA9;
	LA13: ;
	{
		genstmts_476487(p, loopbody);
	}
	LA9: ;
	{
		TY469906 LOC27;
		if (!(((*p).Options &(1<<((((NU8) 19))&31)))!=0)) goto LA25;
		memset((void*)LOC27, 0, sizeof(LOC27));
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3668), LOC27, 0);
	}
	LA25: ;
	endblock_481207(p);
	(*p).Breakidx = oldbreakidx_483218;
	(*p).Withinloop -= 1;
}

N_NIMCALL(void, loaddynamiclib_501643)(tcgen465030* m, tlib188821* lib) {
	{
		trope145007* tmp;
		TY145497 LOC5;
		if (!!((*lib).Generated)) goto LA3;
		(*lib).Generated = NIM_TRUE;
		tmp = getglobaltempname_470376();
		asgnRefNoCycle((void**) &(*lib).Name, tmp);
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = tmp;
		appf_145085(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3669), LOC5, 1);
		{
			TY110805* s;
			trope145007* loadlib;
			NI i_502083;
			NI HEX3Atmp_502174;
			NI res_502176;
			TY503234 LOC21;
			if (!((*(*lib).Path).Kind >= ((NU8) 20) && (*(*lib).Path).Kind <= ((NU8) 22))) goto LA8;
			s = (TY110805*) newSeq((&NTI110805), 0);
			libcandidates_138321((*(*lib).Path).kindU.S3.Strval, &s);
			{
				NimStringDesc* LOC14;
				if (!(2 <= gverbosity_137120)) goto LA12;
				LOC14 = 0;
				LOC14 = rawNewString((*(*lib).Path).kindU.S3.Strval->Sup.len + 12);
appendString(LOC14, ((NimStringDesc*) &TMP3670));
appendString(LOC14, (*(*lib).Path).kindU.S3.Strval);
				msgwriteln_164937(LOC14);
			}
			LA12: ;
			loadlib = NIM_NIL;
			i_502083 = 0;
			HEX3Atmp_502174 = 0;
			HEX3Atmp_502174 = (s->Sup.len-1);
			res_502176 = 0;
			while (1) {
				TY503234 LOC20;
				if (!(res_502176 <= HEX3Atmp_502174)) goto LA15;
				i_502083 = res_502176;
				(*m).Labels += 1;
				{
					if (!(0 < i_502083)) goto LA18;
					app_145046(&loadlib, ((NimStringDesc*) &TMP3671));
				}
				LA18: ;
				memset((void*)LOC20, 0, sizeof(LOC20));
				LOC20[0] = tmp;
				LOC20[1] = getstrlit_488756(m, s->data[i_502083]);
				appcg_469002(m, &loadlib, ((NimStringDesc*) &TMP3672), LOC20, 2);
				res_502176 += 1;
			} LA15: ;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = loadlib;
			LOC21[1] = getstrlit_488756(m, (*(*lib).Path).kindU.S3.Strval);
			appcg_469002(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP3673), LOC21, 2);
		}
		goto LA6;
		LA8: ;
		{
			tcproc465026* p;
			tloc188817 dest;
			trope145007** LOC23;
			trope145007** LOC24;
			trope145007** LOC25;
			TY503234 LOC26;
			p = newproc_465208(NIM_NIL, m);
			(*p).Options = ((*p).Options & ~ 163840);
			memset((void*)&dest, 0, sizeof(dest));
			initlocexpr_476527(p, (*lib).Path, &dest);
			LOC23 = 0;
			LOC23 = s_465173(p, ((NU8) 0));
			app_145040(&(*m).S[(((NU8) 9))- 0], (*LOC23));
			LOC24 = 0;
			LOC24 = s_465173(p, ((NU8) 1));
			app_145040(&(*m).S[(((NU8) 16))- 0], (*LOC24));
			LOC25 = 0;
			LOC25 = s_465173(p, ((NU8) 2));
			app_145040(&(*m).S[(((NU8) 16))- 0], (*LOC25));
			memset((void*)LOC26, 0, sizeof(LOC26));
			LOC26[0] = tmp;
			LOC26[1] = rdloc_474964(&dest);
			appcg_469002(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP3674), LOC26, 2);
		}
		LA6: ;
	}
	LA3: ;
	{
		if (!((*lib).Name == NIM_NIL)) goto LA29;
		internalerror_165606(((NimStringDesc*) &TMP3675));
	}
	LA29: ;
}

N_NIMCALL(trope145007*, cstringlit_475490)(tcgen465030* m, trope145007** r, NimStringDesc* s) {
	trope145007* result;
	result = 0;
	{
		TY145497 LOC5;
		TY470214 LOC6;
		TY470214 LOC7;
		if (!(gcmd_137113 == ((NU8) 5))) goto LA3;
		(*m).Labels += 2;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_145062(((NI64) ((NI32)(((NI) ((*m).Labels)) - 1))));
		result = ropef_145079(((NimStringDesc*) &TMP3677), LOC5, 1);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = torope_145062(((NI64) ((*m).Labels)));
		LOC6[1] = torope_145062(((NI64) (s->Sup.len)));
		LOC6[2] = makellvmstring_464684(s);
		appf_145085(&(*m).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3678), LOC6, 3);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = result;
		LOC7[1] = torope_145062(((NI64) (s->Sup.len)));
		LOC7[2] = torope_145062(((NI64) ((*m).Labels)));
		appf_145085(r, ((NimStringDesc*) &TMP3681), LOC7, 3);
	}
	goto LA1;
	LA3: ;
	{
		result = makecstring_163651(s);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, varindynamiclib_476094)(tcgen465030* m, tsym188833* sym) {
	tlib188821* lib;
	trope145007* extname;
	trope145007* tmp;
	TY471942 LOC1;
	NimStringDesc* LOC2;
	TY503234 LOC3;
	lib = (*sym).Annex;
	extname = (*sym).Loc.R;
	loaddynamiclib_501643(m, lib);
	(*sym).Loc.Flags |=((NI8)(1)<<((((NU8) 0))%(sizeof(NI8)*8)));
	tmp = mangledynlibproc_476099(sym);
	asgnRefNoCycle((void**) &(*sym).Loc.R, tmp);
	(*m).Labels += 2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = tmp;
	LOC1[1] = gettypedesc_472091(m, (*sym).Typ);
	LOC1[2] = (*lib).Name;
	LOC2 = 0;
	LOC2 = ropetostr_145075(extname);
	LOC1[3] = cstringlit_475490(m, &(*m).S[(((NU8) 16))- 0], LOC2);
	appcg_469002(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP3676), LOC1, 4);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = (*sym).Loc.R;
	LOC3[1] = gettypedesc_472091(m, (*sym).Loc.T);
	appf_145085(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3682), LOC3, 2);
}

N_NIMCALL(trope145007*, cstringlit_475427)(tcproc465026* p, trope145007** r, NimStringDesc* s) {
	trope145007* result;
	result = 0;
	{
		TY145497 LOC5;
		TY470214 LOC6;
		TY470214 LOC7;
		if (!(gcmd_137113 == ((NU8) 5))) goto LA3;
		(*(*p).Module).Labels += 1;
		(*p).Labels += 1;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_145062(((NI64) ((*p).Labels)));
		result = ropef_145079(((NimStringDesc*) &TMP3684), LOC5, 1);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = torope_145062(((NI64) ((*(*p).Module).Labels)));
		LOC6[1] = torope_145062(((NI64) (s->Sup.len)));
		LOC6[2] = makellvmstring_464684(s);
		appf_145085(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3685), LOC6, 3);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = result;
		LOC7[1] = torope_145062(((NI64) (s->Sup.len)));
		LOC7[2] = torope_145062(((NI64) ((*(*p).Module).Labels)));
		appf_145085(r, ((NimStringDesc*) &TMP3686), LOC7, 3);
	}
	goto LA1;
	LA3: ;
	{
		result = makecstring_163651(s);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, assignglobalvar_476103)(tcproc465026* p, tsym188833* s) {
	{
		trope145007* LOC5;
		if (!((*s).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_469870(s);
		fillloc_468351(&(*s).Loc, ((NU8) 3), (*s).Typ, LOC5, ((NU8) 2));
	}
	LA3: ;
	{
		tcgen465030* q;
		if (!(((*s).Loc.Flags &(1<<((((NU8) 4))&7)))!=0)) goto LA8;
		q = findpendingmodule_468300((*p).Module, s);
		{
			NIM_BOOL LOC12;
			NIM_BOOL LOC14;
			LOC12 = 0;
			LOC12 = !((q == NIM_NIL));
			if (!(LOC12)) goto LA13;
			LOC14 = 0;
			LOC14 = containsorincl_185888(&(*q).Declaredthings, (*s).Sup.Id);
			LOC12 = !(LOC14);
			LA13: ;
			if (!LOC12) goto LA15;
			varindynamiclib_476094(q, s);
		}
		goto LA10;
		LA15: ;
		{
			asgnRefNoCycle((void**) &(*s).Loc.R, mangledynlibproc_476099(s));
		}
		LA10: ;
		goto BeforeRet;
	}
	LA8: ;
	useheader_468432((*p).Module, s);
	{
		if (!(((*s).Loc.Flags &(1<<((((NU8) 3))&7)))!=0)) goto LA20;
		goto BeforeRet;
	}
	LA20: ;
	{
		if (!(((*s).Flags &(1<<((((NU8) 22))&31)))!=0)) goto LA24;
		declarethreadvar_475961((*p).Module, s, (((*s).Flags &(1<<((((NU8) 5))&31)))!=0));
	}
	goto LA22;
	LA24: ;
	{
		trope145007* decl;
		trope145007* td;
		decl = NIM_NIL;
		td = gettypedesc_472091((*p).Module, (*s).Loc.T);
		{
			TY145497 LOC43;
			if (!(*s).Constraint == 0) goto LA29;
			{
				if (!(((*s).Flags &(1<<((((NU8) 5))&31)))!=0)) goto LA33;
				app_145046(&decl, ((NimStringDesc*) &TMP3362));
			}
			LA33: ;
			app_145040(&decl, td);
			{
				if (!(((*s).Flags &(1<<((((NU8) 8))&31)))!=0)) goto LA37;
				app_145046(&decl, ((NimStringDesc*) &TMP3238));
			}
			LA37: ;
			{
				if (!(((*s).Flags &(1<<((((NU8) 7))&31)))!=0)) goto LA41;
				app_145046(&decl, ((NimStringDesc*) &TMP3239));
			}
			LA41: ;
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC43[0] = (*s).Loc.R;
			appf_145085(&decl, ((NimStringDesc*) &TMP3240), LOC43, 1);
		}
		goto LA27;
		LA29: ;
		{
			NimStringDesc* LOC45;
			TY503234 LOC46;
			LOC45 = 0;
			LOC45 = rawNewString((*(*s).Constraint).kindU.S3.Strval->Sup.len + 3);
appendString(LOC45, (*(*s).Constraint).kindU.S3.Strval);
appendString(LOC45, ((NimStringDesc*) &TMP3241));
			memset((void*)LOC46, 0, sizeof(LOC46));
			LOC46[0] = td;
			LOC46[1] = (*s).Loc.R;
			decl = ropef_145079(LOC45, LOC46, 2);
		}
		LA27: ;
		app_145040(&(*(*p).Module).S[(((NU8) 9))- 0], decl);
	}
	LA22: ;
	{
		if (!(0 < (*p).Withinloop)) goto LA49;
		resetloc_475152(p, &(*s).Loc);
	}
	LA49: ;
	{
		TY470214 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] = cstringlit_475427(p, &(*(*p).Module).S[(((NU8) 15))- 0], LOC57);
		LOC55[1] = (*s).Loc.R;
		LOC55[2] = gentypeinfo_472392((*p).Module, (*s).Typ);
		appcg_469002((*p).Module, &(*(*p).Module).S[(((NU8) 15))- 0], ((NimStringDesc*) &TMP3683), LOC55, 3);
	}
	LA53: ;
	BeforeRet: ;
}

N_NIMCALL(trope145007*, gentraverseprocforglobal_474840)(tcgen465030* m, tsym188833* s) {
	trope145007* result;
	trope145007* LOC1;
	ttraversalclosure473827 c;
	tcproc465026* p;
	trope145007* sloc;
	trope145007* header;
	TY145497 LOC8;
	trope145007* generatedproc;
	TY471942 LOC9;
	trope145007** LOC10;
	trope145007** LOC11;
	trope145007** LOC12;
	TY145497 LOC13;
	result = 0;
	LOC1 = 0;
	LOC1 = gentypeinfo_472392(m, (*s).Loc.T);
	memset((void*)&c, 0, sizeof(c));
	p = newproc_465208(NIM_NIL, m);
	sloc = (*s).Loc.R;
	result = getglobaltempname_470376();
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = (((*s).Flags &(1<<((((NU8) 22))&31)))!=0);
		if (!(LOC4)) goto LA5;
		LOC4 = emulatedthreadvars_469606();
		LA5: ;
		if (!LOC4) goto LA6;
		accessthreadlocalvar_469601(p, s);
		sloc = con_145030(((NimStringDesc*) &TMP3382), sloc);
	}
	LA6: ;
	c.Visitorfrmt = copyString(((NimStringDesc*) &TMP3687));
	c.P = p;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = result;
	header = ropef_145079(((NimStringDesc*) &TMP3688), LOC8, 1);
	gentraverseproc_473830(&c, sloc, (*s).Loc.T);
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC9[0] = header;
	LOC10 = 0;
	LOC10 = s_465173(p, ((NU8) 0));
	unsureAsgnRef((void**) &LOC9[1], (*LOC10));
	LOC11 = 0;
	LOC11 = s_465173(p, ((NU8) 1));
	unsureAsgnRef((void**) &LOC9[2], (*LOC11));
	LOC12 = 0;
	LOC12 = s_465173(p, ((NU8) 2));
	unsureAsgnRef((void**) &LOC9[3], (*LOC12));
	generatedproc = ropef_145079(((NimStringDesc*) &TMP3312), LOC9, 4);
	memset((void*)LOC13, 0, sizeof(LOC13));
	LOC13[0] = header;
	appf_145085(&(*m).S[(((NU8) 7))- 0], ((NimStringDesc*) &TMP3236), LOC13, 1);
	app_145040(&(*m).S[(((NU8) 10))- 0], generatedproc);
	return result;
}

N_NIMCALL(void, registergcroot_480805)(tcproc465026* p, tsym188833* v) {
	{
		NIM_BOOL LOC3;
		trope145007* prc;
		TY145497 LOC7;
		LOC3 = 0;
		LOC3 = ((36 &(1<<((gselectedgc_137114)&7)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = containsgarbagecollectedref_223134((*v).Loc.T);
		LA4: ;
		if (!LOC3) goto LA5;
		prc = gentraverseprocforglobal_474840((*p).Module, v);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = prc;
		linefmt_469102((*(*p).Module).Initproc, ((NU8) 2), ((NimStringDesc*) &TMP3689), LOC7, 1);
	}
	LA5: ;
}

N_NIMCALL(void, genasgncall_480602)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* d) {
	{
		if (!((*(*(*ri).kindU.S6.Sons->data[0]).Typ).Callconv == ((NU8) 8))) goto LA3;
		genclosurecall_477869(p, le, ri, d);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		NIM_BOOL LOC7;
		NI LOC10;
		LOC6 = 0;
		LOC7 = 0;
		LOC7 = ((*(*ri).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
		if (!(LOC7)) goto LA8;
		LOC7 = (((*(*(*ri).kindU.S6.Sons->data[0]).kindU.S4.Sym).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA8: ;
		LOC6 = LOC7;
		if (!(LOC6)) goto LA9;
		LOC10 = 0;
		LOC10 = len_189264(ri);
		LOC6 = (2 <= LOC10);
		LA9: ;
		if (!LOC6) goto LA11;
		geninfixcall_478623(p, le, ri, d);
	}
	goto LA1;
	LA11: ;
	{
		NIM_BOOL LOC14;
		LOC14 = 0;
		LOC14 = ((*(*ri).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
		if (!(LOC14)) goto LA15;
		LOC14 = (((*(*(*ri).kindU.S6.Sons->data[0]).kindU.S4.Sym).Flags &(1<<((((NU8) 28))&31)))!=0);
		LA15: ;
		if (!LOC14) goto LA16;
		gennamedparamcall_479469(p, ri, d);
	}
	goto LA1;
	LA16: ;
	{
		genprefixcall_477288(p, le, ri, d);
	}
	LA1: ;
	poststmtactions_469596(p);
}

static N_INLINE(void, loadinto_481009)(tcproc465026* p, tnode188803* le, tnode188803* ri, tloc188817* 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[0]).Kind == ((NU8) 3)));
		if (LOC5) goto LA6;
		LOC5 = ((*(*(*ri).kindU.S6.Sons->data[0]).kindU.S4.Sym).Magic == ((NU16) 0));
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA7;
		genasgncall_480602(p, le, ri, a);
	}
	goto LA1;
	LA7: ;
	{
		expr_476492(p, ri, a);
	}
	LA1: ;
}

N_NIMCALL(void, gensinglevar_481561)(tcproc465026* p, tnode188803* a) {
	tsym188833* v;
	tcproc465026* targetproc;
	NIM_BOOL immediateasgn;
	v = (*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	{
		if (!(((*v).Flags &(1<<((((NU8) 23))&31)))!=0)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	targetproc = p;
	immediateasgn = !(((*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)));
	{
		if (!(((*v).Flags &(1<<((((NU8) 3))&31)))!=0)) goto LA7;
		{
			if (!(((*v).Flags &(1<<((((NU8) 9))&31)))!=0)) goto LA11;
			targetproc = (*(*p).Module).Preinitproc;
		}
		LA11: ;
		assignglobalvar_476103(targetproc, v);
		genobjectinit_475034((*(*p).Module).Preinitproc, ((NU8) 1), (*v).Typ, &(*v).Loc, NIM_TRUE);
		{
			NIM_BOOL LOC15;
			LOC15 = 0;
			LOC15 = (((*v).Flags &(1<<((((NU8) 6))&31)))!=0);
			if (!(LOC15)) goto LA16;
			LOC15 = !((generatedheader_468202 == NIM_NIL));
			LA16: ;
			if (!LOC15) goto LA17;
			genvarprototypeaux_481557(generatedheader_468202, v);
		}
		LA17: ;
		registergcroot_480805(p, v);
	}
	goto LA5;
	LA7: ;
	{
		assignlocalvar_475781(p, v);
		initlocalvar_475217(p, v, immediateasgn);
	}
	LA5: ;
	{
		if (!immediateasgn) goto LA22;
		genlinedir_469427(targetproc, a);
		loadinto_481009(targetproc, (*a).kindU.S6.Sons->data[0], (*a).kindU.S6.Sons->data[2], &(*v).Loc);
	}
	LA22: ;
	BeforeRet: ;
}

N_NIMCALL(void, genclosurevar_481718)(tcproc465026* p, tnode188803* a) {
	NIM_BOOL immediateasgn;
	immediateasgn = !(((*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)));
	{
		tloc188817 v;
		if (!immediateasgn) goto LA3;
		memset((void*)&v, 0, sizeof(v));
		initlocexpr_476527(p, (*a).kindU.S6.Sons->data[0], &v);
		genlinedir_469427(p, a);
		loadinto_481009(p, (*a).kindU.S6.Sons->data[0], (*a).kindU.S6.Sons->data[2], &v);
	}
	LA3: ;
}

N_NIMCALL(void, genvartuple_480829)(tcproc465026* p, tnode188803* n) {
	tloc188817 tup;
	tloc188817 field;
	NI l;
	ttype188837* t;
	NI i_480873;
	NI HEX3Atmp_481002;
	NI res_481004;
	memset((void*)&tup, 0, sizeof(tup));
	memset((void*)&field, 0, sizeof(field));
	{
		if (!!(((*n).Kind == ((NU8) 36)))) goto LA3;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3690));
	}
	LA3: ;
	l = sonslen_189181(n);
	genlinedir_469427(p, n);
	initlocexpr_476527(p, (*n).kindU.S6.Sons->data[(NI32)(l - 1)], &tup);
	t = tup.T;
	i_480873 = 0;
	HEX3Atmp_481002 = 0;
	HEX3Atmp_481002 = (NI32)(l - 3);
	res_481004 = 0;
	while (1) {
		if (!(res_481004 <= HEX3Atmp_481002)) goto LA5;
		i_480873 = res_481004;
		{
			tsym188833* v;
			v = (*(*n).kindU.S6.Sons->data[i_480873]).kindU.S4.Sym;
			{
				if (!(((*v).Flags &(1<<((((NU8) 23))&31)))!=0)) goto LA9;
				goto LA6;
			}
			LA9: ;
			{
				if (!(((*v).Flags &(1<<((((NU8) 3))&31)))!=0)) goto LA13;
				assignglobalvar_476103(p, v);
				genobjectinit_475034(p, ((NU8) 1), (*v).Typ, &(*v).Loc, NIM_TRUE);
				registergcroot_480805(p, v);
			}
			goto LA11;
			LA13: ;
			{
				assignlocalvar_475781(p, v);
				initlocalvar_475217(p, v, NIM_TRUE);
			}
			LA11: ;
			initloc_468340(&field, ((NU8) 7), (*t).Sons->data[i_480873], tup.S);
			{
				TY503234 LOC20;
				if (!((*t).Kind == ((NU8) 18))) goto LA18;
				memset((void*)LOC20, 0, sizeof(LOC20));
				LOC20[0] = rdloc_474964(&tup);
				LOC20[1] = torope_145062(((NI64) (i_480873)));
				field.R = ropef_145079(((NimStringDesc*) &TMP3307), LOC20, 2);
			}
			goto LA16;
			LA18: ;
			{
				TY503234 LOC26;
				{
					if (!!(((*(*(*t).N).kindU.S6.Sons->data[i_480873]).Kind == ((NU8) 3)))) goto LA24;
					internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3690));
				}
				LA24: ;
				memset((void*)LOC26, 0, sizeof(LOC26));
				LOC26[0] = rdloc_474964(&tup);
				LOC26[1] = manglerecfieldname_471198((*(*(*t).N).kindU.S6.Sons->data[i_480873]).kindU.S4.Sym, t);
				field.R = ropef_145079(((NimStringDesc*) &TMP3211), LOC26, 2);
			}
			LA16: ;
			putlocintodest_476504(p, &(*v).Loc, &field);
		} LA6: ;
		res_481004 += 1;
	} LA5: ;
}

N_NIMCALL(void, genvarstmt_481793)(tcproc465026* p, tnode188803* n) {
	NI i_481809;
	NI HEX3Atmp_481867;
	NI LOC1;
	NI res_481869;
	i_481809 = 0;
	HEX3Atmp_481867 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_481867 = (NI32)(LOC1 - 1);
	res_481869 = 0;
	while (1) {
		if (!(res_481869 <= HEX3Atmp_481867)) goto LA2;
		i_481809 = res_481869;
		{
			tnode188803* a;
			a = (*n).kindU.S6.Sons->data[i_481809];
			{
				if (!((*a).Kind == ((NU8) 124))) goto LA6;
				goto LA3;
			}
			LA6: ;
			{
				if (!((*a).Kind == ((NU8) 35))) goto LA10;
				{
					if (!((*(*a).kindU.S6.Sons->data[0]).Kind == ((NU8) 3))) goto LA14;
					gensinglevar_481561(p, a);
				}
				goto LA12;
				LA14: ;
				{
					genclosurevar_481718(p, a);
				}
				LA12: ;
			}
			goto LA8;
			LA10: ;
			{
				genvartuple_480829(p, a);
			}
			LA8: ;
		} LA3: ;
		res_481869 += 1;
	} LA2: ;
}

static N_INLINE(NIM_BOOL, emitlazily_468308)(tsym188833* s) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	tsym188833* LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((gglobaloptions_137111 &(1<<((((NU8) 2))&31)))!=0);
	if (LOC1) goto LA2;
	LOC3 = 0;
	LOC3 = getmodule_197183(s);
	LOC1 = (((*LOC3).Flags &(1<<((((NU8) 25))&31)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genconststmt_481874)(tcproc465026* p, tnode188803* t) {
	NI i_481890;
	NI HEX3Atmp_482002;
	NI LOC1;
	NI res_482004;
	i_481890 = 0;
	HEX3Atmp_482002 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(t);
	HEX3Atmp_482002 = (NI32)(LOC1 - 1);
	res_482004 = 0;
	while (1) {
		if (!(res_482004 <= HEX3Atmp_482002)) goto LA2;
		i_481890 = res_482004;
		{
			tnode188803* it;
			tsym188833* c;
			it = (*t).kindU.S6.Sons->data[i_481890];
			{
				if (!((*it).Kind == ((NU8) 124))) goto LA6;
				goto LA3;
			}
			LA6: ;
			{
				if (!!(((*it).Kind == ((NU8) 102)))) goto LA10;
				internalerror_165591((*t).Info, ((NimStringDesc*) &TMP3691));
			}
			LA10: ;
			c = (*(*it).kindU.S6.Sons->data[0]).kindU.S4.Sym;
			{
				NIM_BOOL LOC14;
				LOC14 = 0;
				LOC14 = containscompiletimeonly_233257((*c).Typ);
				if (!LOC14) goto LA15;
				goto LA3;
			}
			LA15: ;
			{
				if (!(((*c).Flags &(1<<((((NU8) 25))&31)))!=0)) goto LA19;
				gensinglevar_481561(p, it);
			}
			goto LA17;
			LA19: ;
			{
				NIM_BOOL LOC22;
				NIM_BOOL LOC23;
				NI LOC26;
				LOC22 = 0;
				LOC23 = 0;
				LOC23 = ((*(*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 (!(LOC23)) goto LA24;
				LOC23 = !((((*c).Loc.Flags &(1<<((((NU8) 3))&7)))!=0));
				LA24: ;
				LOC22 = LOC23;
				if (!(LOC22)) goto LA25;
				LOC26 = 0;
				LOC26 = len_189264((*c).Ast);
				LOC22 = !((LOC26 == 0));
				LA25: ;
				if (!LOC22) goto LA27;
				{
					NIM_BOOL LOC31;
					LOC31 = 0;
					LOC31 = emitlazily_468308(c);
					if (!!(LOC31)) goto LA32;
					requestconstimpl_476477(p, c);
				}
				LA32: ;
			}
			goto LA17;
			LA27: ;
			LA17: ;
		} LA3: ;
		res_482004 += 1;
	} LA2: ;
}

N_NIMCALL(void, gencasestringbranch_484977)(tcproc465026* p, tnode188803* b, tloc188817* e, trope145007* labl, trope145007** branches, NI branchesLen0) {
	tloc188817 x;
	NI length;
	NI i_485000;
	NI HEX3Atmp_485436;
	NI res_485438;
	memset((void*)&x, 0, sizeof(x));
	length = sonslen_189181(b);
	i_485000 = 0;
	HEX3Atmp_485436 = 0;
	HEX3Atmp_485436 = (NI32)(length - 2);
	res_485438 = 0;
	while (1) {
		NI j;
		NI64 LOC2;
		TY470214 LOC3;
		if (!(res_485438 <= HEX3Atmp_485436)) goto LA1;
		i_485000 = res_485438;
		initlocexpr_476527(p, (*b).kindU.S6.Sons->data[i_485000], &x);
		LOC2 = 0;
		LOC2 = hashstring_464123((*(*b).kindU.S6.Sons->data[i_485000]).kindU.S3.Strval);
		j = ((NI) ((NI64)(LOC2 & ((NI64) ((branchesLen0-1))))));
		memset((void*)LOC3, 0, sizeof(LOC3));
		LOC3[0] = rdloc_474964(e);
		LOC3[1] = rdloc_474964(&x);
		LOC3[2] = labl;
		appcg_469002((*p).Module, &branches[j], ((NimStringDesc*) &TMP3693), LOC3, 3);
		res_485438 += 1;
	} LA1: ;
}

N_NIMCALL(void, exprblock_481271)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	TY469906 LOC1;
	NI LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = startblock_481090(p, ((NimStringDesc*) &TMP3365), LOC1, 0);
	expr_476492(p, n, d);
	endblock_481207(p);
}

N_NIMCALL(trope145007*, gencasesecondpass_484711)(tcproc465026* p, tnode188803* t, tloc188817* d, NI labid, NI until) {
	trope145007* result;
	trope145007* lend;
	NI i_484731;
	NI res_484835;
	result = 0;
	lend = getlabel_476440(p);
	i_484731 = 0;
	res_484835 = 1;
	while (1) {
		TY145497 LOC2;
		if (!(res_484835 <= until)) goto LA1;
		i_484731 = res_484835;
		memset((void*)LOC2, 0, sizeof(LOC2));
		LOC2[0] = torope_145062(((NI64) ((NI32)(labid + i_484731))));
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3697), LOC2, 1);
		{
			NI length;
			TY145497 LOC7;
			if (!((*(*t).kindU.S6.Sons->data[i_484731]).Kind == ((NU8) 85))) goto LA5;
			length = sonslen_189181((*t).kindU.S6.Sons->data[i_484731]);
			exprblock_481271(p, (*(*t).kindU.S6.Sons->data[i_484731]).kindU.S6.Sons->data[(NI32)(length - 1)], d);
			memset((void*)LOC7, 0, sizeof(LOC7));
			LOC7[0] = lend;
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3645), LOC7, 1);
		}
		goto LA3;
		LA5: ;
		{
			exprblock_481271(p, (*(*t).kindU.S6.Sons->data[i_484731]).kindU.S6.Sons->data[0], d);
		}
		LA3: ;
		res_484835 += 1;
	} LA1: ;
	result = lend;
	return result;
}

N_NIMCALL(void, gencasegenericbranch_484575)(tcproc465026* p, tnode188803* b, tloc188817* e, NimStringDesc* rangeformat, NimStringDesc* eqformat, trope145007* labl) {
	tloc188817 x;
	tloc188817 y;
	NI length;
	NI i_484598;
	NI HEX3Atmp_484705;
	NI res_484707;
	memset((void*)&x, 0, sizeof(x));
	memset((void*)&y, 0, sizeof(y));
	length = sonslen_189181(b);
	i_484598 = 0;
	HEX3Atmp_484705 = 0;
	HEX3Atmp_484705 = (NI32)(length - 2);
	res_484707 = 0;
	while (1) {
		if (!(res_484707 <= HEX3Atmp_484705)) goto LA1;
		i_484598 = res_484707;
		{
			TY471942 LOC6;
			if (!((*(*b).kindU.S6.Sons->data[i_484598]).Kind == ((NU8) 44))) goto LA4;
			initlocexpr_476527(p, (*(*b).kindU.S6.Sons->data[i_484598]).kindU.S6.Sons->data[0], &x);
			initlocexpr_476527(p, (*(*b).kindU.S6.Sons->data[i_484598]).kindU.S6.Sons->data[1], &y);
			memset((void*)LOC6, 0, sizeof(LOC6));
			LOC6[0] = rdcharloc_475015(e);
			LOC6[1] = rdcharloc_475015(&x);
			LOC6[2] = rdcharloc_475015(&y);
			LOC6[3] = labl;
			linecg_469093(p, ((NU8) 2), rangeformat, LOC6, 4);
		}
		goto LA2;
		LA4: ;
		{
			TY470214 LOC8;
			initlocexpr_476527(p, (*b).kindU.S6.Sons->data[i_484598], &x);
			memset((void*)LOC8, 0, sizeof(LOC8));
			LOC8[0] = rdcharloc_475015(e);
			LOC8[1] = rdcharloc_475015(&x);
			LOC8[2] = labl;
			linecg_469093(p, ((NU8) 2), eqformat, LOC8, 3);
		}
		LA2: ;
		res_484707 += 1;
	} LA1: ;
}

N_NIMCALL(trope145007*, genifforcaseuntil_484839)(tcproc465026* p, tnode188803* t, tloc188817* d, NimStringDesc* rangeformat, NimStringDesc* eqformat, NI until, tloc188817* a) {
	trope145007* result;
	NI labid;
	NI i_484861;
	NI res_484946;
	result = 0;
	labid = (*p).Labels;
	i_484861 = 0;
	res_484946 = 1;
	while (1) {
		if (!(res_484946 <= until)) goto LA1;
		i_484861 = res_484946;
		(*p).Labels += 1;
		{
			trope145007* LOC6;
			trope145007* LOC7;
			if (!((*(*t).kindU.S6.Sons->data[i_484861]).Kind == ((NU8) 85))) goto LA4;
			LOC6 = 0;
			LOC6 = torope_145062(((NI64) ((*p).Labels)));
			LOC7 = 0;
			LOC7 = con_145030(((NimStringDesc*) &TMP3391), LOC6);
			gencasegenericbranch_484575(p, (*t).kindU.S6.Sons->data[i_484861], a, rangeformat, eqformat, LOC7);
		}
		goto LA2;
		LA4: ;
		{
			TY145497 LOC9;
			memset((void*)LOC9, 0, sizeof(LOC9));
			LOC9[0] = torope_145062(((NI64) ((*p).Labels)));
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3696), LOC9, 1);
		}
		LA2: ;
		res_484946 += 1;
	} LA1: ;
	{
		NI LOC12;
		NI gototarget;
		TY145497 LOC15;
		TY145497 LOC16;
		LOC12 = 0;
		LOC12 = len_189264(t);
		if (!(until < (NI32)(LOC12 - 1))) goto LA13;
		(*p).Labels += 1;
		gototarget = (*p).Labels;
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = torope_145062(((NI64) (gototarget)));
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3696), LOC15, 1);
		result = gencasesecondpass_484711(p, t, d, ((NI) (labid)), until);
		memset((void*)LOC16, 0, sizeof(LOC16));
		LOC16[0] = torope_145062(((NI64) (gototarget)));
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3697), LOC16, 1);
	}
	goto LA10;
	LA13: ;
	{
		result = gencasesecondpass_484711(p, t, d, ((NI) (labid)), until);
	}
	LA10: ;
	return result;
}

N_NIMCALL(void, gencasegeneric_484950)(tcproc465026* p, tnode188803* t, tloc188817* d, NimStringDesc* rangeformat, NimStringDesc* eqformat) {
	tloc188817 a;
	trope145007* lend;
	NI LOC1;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*t).kindU.S6.Sons->data[0], &a);
	LOC1 = 0;
	LOC1 = sonslen_189181(t);
	lend = genifforcaseuntil_484839(p, t, d, rangeformat, eqformat, (NI32)(LOC1 - 1), &a);
	fixlabel_476462(p, lend);
}

N_NIMCALL(void, genstringcase_485442)(tcproc465026* p, tnode188803* t, tloc188817* d) {
	NI strings;
	NI i_485461;
	NI HEX3Atmp_485692;
	NI LOC1;
	NI res_485694;
	strings = 0;
	i_485461 = 0;
	HEX3Atmp_485692 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(t);
	HEX3Atmp_485692 = (NI32)(LOC1 - 1);
	res_485694 = 1;
	while (1) {
		if (!(res_485694 <= HEX3Atmp_485692)) goto LA2;
		i_485461 = res_485694;
		{
			NI LOC7;
			if (!((*(*t).kindU.S6.Sons->data[i_485461]).Kind == ((NU8) 85))) goto LA5;
			LOC7 = 0;
			LOC7 = sonslen_189181((*t).kindU.S6.Sons->data[i_485461]);
			strings += (NI32)(LOC7 - 1);
		}
		LA5: ;
		res_485694 += 1;
	} LA2: ;
	{
		NI bitmask;
		NI LOC12;
		TY163540* branches;
		tloc188817 a;
		NI labid;
		NI i_485564;
		NI HEX3Atmp_485698;
		NI LOC13;
		NI res_485700;
		TY503234 LOC22;
		NI j_485635;
		NI HEX3Atmp_485702;
		NI res_485704;
		TY469906 LOC29;
		trope145007* lend;
		NI LOC36;
		if (!(8 < strings)) goto LA10;
		LOC12 = 0;
		LOC12 = nextpoweroftwo_133284(strings);
		bitmask = (NI32)(LOC12 - 1);
		branches = 0;
		branches = (TY163540*) newSeq((&NTI163540), (NI32)(bitmask + 1));
		memset((void*)&a, 0, sizeof(a));
		initlocexpr_476527(p, (*t).kindU.S6.Sons->data[0], &a);
		labid = (*p).Labels;
		i_485564 = 0;
		HEX3Atmp_485698 = 0;
		LOC13 = 0;
		LOC13 = sonslen_189181(t);
		HEX3Atmp_485698 = (NI32)(LOC13 - 1);
		res_485700 = 1;
		while (1) {
			if (!(res_485700 <= HEX3Atmp_485698)) goto LA14;
			i_485564 = res_485700;
			(*p).Labels += 1;
			{
				trope145007* LOC19;
				trope145007* LOC20;
				if (!((*(*t).kindU.S6.Sons->data[i_485564]).Kind == ((NU8) 85))) goto LA17;
				LOC19 = 0;
				LOC19 = torope_145062(((NI64) ((*p).Labels)));
				LOC20 = 0;
				LOC20 = con_145030(((NimStringDesc*) &TMP3391), LOC19);
				gencasestringbranch_484977(p, (*t).kindU.S6.Sons->data[i_485564], &a, LOC20, branches->data, branches->Sup.len);
			}
			goto LA15;
			LA17: ;
			{
			}
			LA15: ;
			res_485700 += 1;
		} LA14: ;
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = rdloc_474964(&a);
		LOC22[1] = torope_145062(((NI64) (bitmask)));
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3694), LOC22, 2);
		j_485635 = 0;
		HEX3Atmp_485702 = 0;
		HEX3Atmp_485702 = (branches->Sup.len-1);
		res_485704 = 0;
		while (1) {
			if (!(res_485704 <= HEX3Atmp_485702)) goto LA23;
			j_485635 = res_485704;
			{
				TY503234 LOC28;
				if (!!((branches->data[j_485635] == NIM_NIL))) goto LA26;
				memset((void*)LOC28, 0, sizeof(LOC28));
				LOC28[0] = intliteral_476518(((NI64) (j_485635)));
				LOC28[1] = branches->data[j_485635];
				linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3695), LOC28, 2);
			}
			LA26: ;
			res_485704 += 1;
		} LA23: ;
		memset((void*)LOC29, 0, sizeof(LOC29));
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3279), LOC29, 0);
		{
			NI LOC32;
			TY145497 LOC35;
			LOC32 = 0;
			LOC32 = sonslen_189181(t);
			if (!!(((*(*t).kindU.S6.Sons->data[(NI32)(LOC32 - 1)]).Kind == ((NU8) 85)))) goto LA33;
			memset((void*)LOC35, 0, sizeof(LOC35));
			LOC35[0] = torope_145062(((NI64) ((*p).Labels)));
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3696), LOC35, 1);
		}
		LA33: ;
		LOC36 = 0;
		LOC36 = sonslen_189181(t);
		lend = gencasesecondpass_484711(p, t, d, ((NI) (labid)), (NI32)(LOC36 - 1));
		fixlabel_476462(p, lend);
	}
	goto LA8;
	LA10: ;
	{
		gencasegeneric_484950(p, t, d, ((NimStringDesc*) &TMP3136), ((NimStringDesc*) &TMP3693));
	}
	LA8: ;
}

N_NIMCALL(NIM_BOOL, branchhastoobigrange_485710)(tnode188803* b) {
	NIM_BOOL result;
	NI i_485726;
	NI HEX3Atmp_485835;
	NI LOC1;
	NI res_485837;
	result = 0;
	i_485726 = 0;
	HEX3Atmp_485835 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(b);
	HEX3Atmp_485835 = (NI32)(LOC1 - 2);
	res_485837 = 0;
	while (1) {
		if (!(res_485837 <= HEX3Atmp_485835)) goto LA2;
		i_485726 = res_485837;
		{
			NIM_BOOL LOC5;
			LOC5 = 0;
			LOC5 = ((*(*b).kindU.S6.Sons->data[i_485726]).Kind == ((NU8) 44));
			if (!(LOC5)) goto LA6;
			LOC5 = (256 < (NI64)((*(*(*b).kindU.S6.Sons->data[i_485726]).kindU.S6.Sons->data[1]).kindU.S1.Intval - (*(*(*b).kindU.S6.Sons->data[i_485726]).kindU.S6.Sons->data[0]).kindU.S1.Intval));
			LA6: ;
			if (!LOC5) goto LA7;
			result = NIM_TRUE;
			goto BeforeRet;
		}
		LA7: ;
		res_485837 += 1;
	} LA2: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, ifswitchsplitpoint_485841)(tcproc465026* p, tnode188803* n) {
	NI result;
	NI i_485856;
	NI HEX3Atmp_485881;
	NI LOC1;
	NI res_485883;
	result = 0;
	i_485856 = 0;
	HEX3Atmp_485881 = 0;
	LOC1 = 0;
	LOC1 = len_189264(n);
	HEX3Atmp_485881 = (NI32)(LOC1 - 1);
	res_485883 = 1;
	while (1) {
		tnode188803* branch;
		tnode188803* stmtblock;
		if (!(res_485883 <= HEX3Atmp_485881)) goto LA2;
		i_485856 = res_485883;
		branch = HEX5BHEX5D_189694(n, i_485856);
		stmtblock = lastson_189189(branch);
		{
			NIM_BOOL LOC5;
			LOC5 = 0;
			LOC5 = stmtscontainpragma_464099(stmtblock, ((NU8) 172));
			if (!LOC5) goto LA6;
			result = i_485856;
		}
		goto LA3;
		LA6: ;
		{
			if (!!(((cc_169402[(ccompiler_169425)- 1].Field20 &(1<<((((NU8) 0))&7)))!=0))) goto LA9;
			{
				NIM_BOOL LOC13;
				LOC13 = 0;
				LOC13 = ((*branch).Kind == ((NU8) 85));
				if (!(LOC13)) goto LA14;
				LOC13 = branchhastoobigrange_485710(branch);
				LA14: ;
				if (!LOC13) goto LA15;
				result = i_485856;
			}
			LA15: ;
		}
		goto LA3;
		LA9: ;
		LA3: ;
		res_485883 += 1;
	} LA2: ;
	return result;
}

N_NIMCALL(void, genordinalcase_486003)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	NI splitpoint;
	tloc188817 a;
	trope145007* lend;
	splitpoint = ifswitchsplitpoint_485841(p, n);
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
	{
		if (!(0 < splitpoint)) goto LA3;
		lend = genifforcaseuntil_484839(p, n, d, ((NimStringDesc*) &TMP3698), ((NimStringDesc*) &TMP3699), splitpoint, &a);
	}
	goto LA1;
	LA3: ;
	{
		lend = NIM_NIL;
	}
	LA1: ;
	{
		NI LOC8;
		TY145497 LOC11;
		NIM_BOOL hasdefault;
		NI i_486055;
		NI HEX3Atmp_486125;
		NI HEX3Atmp_486126;
		NI LOC12;
		NI res_486128;
		TY469906 LOC29;
		LOC8 = 0;
		LOC8 = len_189264(n);
		if (!((NI32)(splitpoint + 1) < LOC8)) goto LA9;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = rdcharloc_475015(&a);
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3700), LOC11, 1);
		hasdefault = NIM_FALSE;
		i_486055 = 0;
		HEX3Atmp_486125 = 0;
		HEX3Atmp_486126 = 0;
		HEX3Atmp_486125 = (NI32)(splitpoint + 1);
		LOC12 = 0;
		LOC12 = len_189264(n);
		HEX3Atmp_486126 = LOC12 - 1;
		res_486128 = HEX3Atmp_486125;
		while (1) {
			tnode188803* branch;
			tnode188803* LOC20;
			TY469906 LOC21;
			if (!(res_486128 <= HEX3Atmp_486126)) goto LA13;
			i_486055 = res_486128;
			branch = HEX5BHEX5D_189694(n, i_486055);
			{
				if (!((*branch).Kind == ((NU8) 85))) goto LA16;
				gencaserange_473836(p, branch);
			}
			goto LA14;
			LA16: ;
			{
				TY469906 LOC19;
				memset((void*)LOC19, 0, sizeof(LOC19));
				linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3303), LOC19, 0);
				hasdefault = NIM_TRUE;
			}
			LA14: ;
			LOC20 = 0;
			LOC20 = lastson_189189(branch);
			exprblock_481271(p, LOC20, d);
			memset((void*)LOC21, 0, sizeof(LOC21));
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3304), LOC21, 0);
			res_486128 += 1;
		} LA13: ;
		{
			NIM_BOOL LOC24;
			TY469906 LOC28;
			LOC24 = 0;
			LOC24 = ((cc_169402[(ccompiler_169425)- 1].Field20 &(1<<((((NU8) 3))&7)))!=0);
			if (!(LOC24)) goto LA25;
			LOC24 = !(hasdefault);
			LA25: ;
			if (!LOC24) goto LA26;
			memset((void*)LOC28, 0, sizeof(LOC28));
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3701), LOC28, 0);
		}
		LA26: ;
		memset((void*)LOC29, 0, sizeof(LOC29));
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3279), LOC29, 0);
	}
	LA9: ;
	{
		if (!!((lend == NIM_NIL))) goto LA32;
		fixlabel_476462(p, lend);
	}
	LA32: ;
}

N_NIMCALL(void, gencase_486132)(tcproc465026* p, tnode188803* t, tloc188817* d) {
	ttype188837* LOC8;
	genlinedir_469427(p, t);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_195210((*t).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_473840(p, (*t).Typ, d);
	}
	LA6: ;
	LOC8 = 0;
	LOC8 = skiptypes_192793((*(*t).kindU.S6.Sons->data[0]).Typ, IL64(211106242013440));
	switch ((*LOC8).Kind) {
	case ((NU8) 28):
	{
		genstringcase_485442(p, t, d);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		gencasegeneric_484950(p, t, d, ((NimStringDesc*) &TMP3698), ((NimStringDesc*) &TMP3699));
	}
	break;
	default:
	{
		genordinalcase_486003(p, t, d);
	}
	break;
	}
}

static N_INLINE(tnode188803*, pop_482523)(tnodeseq188797** s_482531) {
	tnode188803* result;
	NI l;
	result = 0;
	l = (NI32)((*s_482531)->Sup.len - 1);
	result = (*s_482531)->data[l];
	(*s_482531) = (tnodeseq188797*) setLengthSeq(&((*s_482531))->Sup, sizeof(tnode188803*), l);
	return result;
}

N_NIMCALL(void, blockleaveactions_482450)(tcproc465026* p, NI howmanytrys, NI howmanyexcepts) {
	tnodeseq188797* stack;
	NI alreadypoppedcnt;
	NI i_482486;
	NI res_482668;
	NI i_482619;
	NI HEX3Atmp_482670;
	NI res_482672;
	stack = 0;
	stack = (tnodeseq188797*) newSeq((&NTI188797), 0);
	alreadypoppedcnt = (*p).Inexceptblock;
	i_482486 = 0;
	res_482668 = 1;
	while (1) {
		tnode188803* trystmt;
		tnode188803* finallystmt;
		if (!(res_482668 <= howmanytrys)) goto LA1;
		i_482486 = res_482668;
		{
			if (!!((gcmd_137113 == ((NU8) 2)))) goto LA4;
			{
				if (!(0 < alreadypoppedcnt)) goto LA8;
				alreadypoppedcnt -= 1;
			}
			goto LA6;
			LA8: ;
			{
				TY469906 LOC11;
				memset((void*)LOC11, 0, sizeof(LOC11));
				linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3702), LOC11, 0);
			}
			LA6: ;
		}
		LA4: ;
		trystmt = pop_482523(&(*p).Nestedtrystmts);
		stack = (tnodeseq188797*) incrSeq(&(stack)->Sup, sizeof(tnode188803*));
		asgnRefNoCycle((void**) &stack->data[stack->Sup.len-1], trystmt);
		finallystmt = lastson_189189(trystmt);
		{
			if (!((*finallystmt).Kind == ((NU8) 106))) goto LA14;
			genstmts_476487(p, (*finallystmt).kindU.S6.Sons->data[0]);
		}
		LA14: ;
		res_482668 += 1;
	} LA1: ;
	i_482619 = 0;
	HEX3Atmp_482670 = 0;
	HEX3Atmp_482670 = (NI32)(howmanytrys - 1);
	res_482672 = HEX3Atmp_482670;
	while (1) {
		if (!(0 <= res_482672)) goto LA16;
		i_482619 = res_482672;
		(*p).Nestedtrystmts = (tnodeseq188797*) incrSeq(&((*p).Nestedtrystmts)->Sup, sizeof(tnode188803*));
		asgnRefNoCycle((void**) &(*p).Nestedtrystmts->data[(*p).Nestedtrystmts->Sup.len-1], stack->data[i_482619]);
		res_482672 -= 1;
	} LA16: ;
	{
		NI i_482658;
		NI HEX3Atmp_482673;
		NI res_482675;
		if (!!((gcmd_137113 == ((NU8) 2)))) goto LA19;
		i_482658 = 0;
		HEX3Atmp_482673 = 0;
		HEX3Atmp_482673 = (NI32)(howmanyexcepts - 1);
		res_482675 = HEX3Atmp_482673;
		while (1) {
			TY469906 LOC22;
			if (!(0 <= res_482675)) goto LA21;
			i_482658 = res_482675;
			memset((void*)LOC22, 0, sizeof(LOC22));
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3703), LOC22, 0);
			res_482675 -= 1;
		} LA21: ;
	}
	LA19: ;
}

N_NIMCALL(void, genreturnstmt_482680)(tcproc465026* p, tnode188803* t) {
	TY469906 LOC10;
	(*p).Beforeretneeded = NIM_TRUE;
	genlinedir_469427(p, t);
	{
		if (!!(((*(*t).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		genstmts_476487(p, (*t).kindU.S6.Sons->data[0]);
	}
	LA3: ;
	blockleaveactions_482450(p, (*p).Nestedtrystmts->Sup.len, (*p).Inexceptblock);
	{
		trope145007* safepoint;
		TY145497 LOC9;
		if (!(0 < (*p).Finallysafepoints->Sup.len)) goto LA7;
		safepoint = (*p).Finallysafepoints->data[(NI32)((*p).Finallysafepoints->Sup.len - 1)];
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = safepoint;
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3704), LOC9, 1);
	}
	LA7: ;
	memset((void*)LOC10, 0, sizeof(LOC10));
	lineff_469212(p, ((NU8) 2), ((NimStringDesc*) &TMP3705), ((NimStringDesc*) &TMP3706), LOC10, 0);
}

N_NIMCALL(void, genbreakstmt_483953)(tcproc465026* p, tnode188803* t) {
	NI idx;
	trope145007* label;
	TY145497 LOC15;
	idx = (*p).Breakidx;
	{
		tsym188833* sym;
		if (!!(((*(*t).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		sym = (*(*t).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		idx = (*sym).Loc.A;
	}
	goto LA1;
	LA3: ;
	{
		while (1) {
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = (0 <= idx);
			if (!(LOC7)) goto LA8;
			LOC7 = !((*p).Blocks->data[idx].Isloop);
			LA8: ;
			if (!LOC7) goto LA6;
			idx -= 1;
		} LA6: ;
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = (idx < 0);
			if (LOC11) goto LA12;
			LOC11 = !((*p).Blocks->data[idx].Isloop);
			LA12: ;
			if (!LOC11) goto LA13;
			internalerror_165591((*t).Info, ((NimStringDesc*) &TMP3707));
		}
		LA13: ;
	}
	LA1: ;
	label = assignlabel_481152(&(*p).Blocks->data[idx]);
	blockleaveactions_482450(p, (NI32)((*p).Nestedtrystmts->Sup.len - ((NI) ((*p).Blocks->data[idx].Nestedtrystmts))), (NI32)((*p).Inexceptblock - ((NI) ((*p).Blocks->data[idx].Nestedexceptstmts))));
	genlinedir_469427(p, t);
	memset((void*)LOC15, 0, sizeof(LOC15));
	LOC15[0] = label;
	linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3645), LOC15, 1);
}

N_NIMCALL(NIM_BOOL, fielddiscriminantcheckneeded_488191)(tcproc465026* p, tnode188803* asgn) {
	NIM_BOOL result;
	result = 0;
	{
		tnode188803* le;
		if (!(((*p).Options &(1<<((((NU8) 2))&31)))!=0)) goto LA3;
		le = (*asgn).kindU.S6.Sons->data[0];
		{
			tsym188833* field;
			if (!((*le).Kind == ((NU8) 46))) goto LA7;
			field = (*(*(*le).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1]).kindU.S4.Sym;
			result = (((*field).Flags &(1<<((((NU8) 18))&31)))!=0);
		}
		goto LA5;
		LA7: ;
		{
			tsym188833* field;
			if (!((*le).Kind == ((NU8) 45))) goto LA10;
			field = (*(*le).kindU.S6.Sons->data[1]).kindU.S4.Sym;
			result = (((*field).Flags &(1<<((((NU8) 18))&31)))!=0);
		}
		goto LA5;
		LA10: ;
		LA5: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(trope145007*, discriminatortabledecl_472774)(tcgen465030* m, ttype188837* objtype, tsym188833* d) {
	trope145007* result;
	trope145007* LOC1;
	trope145007* tmp;
	TY503234 LOC2;
	NI64 LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_468604(m, ((NimStringDesc*) &TMP3247));
	tmp = discriminatortablename_472727(m, objtype, d);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = tmp;
	LOC3 = 0;
	LOC3 = lengthord_223010((*d).Typ);
	LOC2[1] = torope_145062((NI64)(LOC3 + 1));
	result = ropef_145079(((NimStringDesc*) &TMP3327), LOC2, 2);
	return result;
}

N_NIMCALL(void, gendiscriminantcheck_488341)(tcproc465026* p, tloc188817* a, tloc188817* tmp, ttype188837* objtype, tsym188833* field) {
	ttype188837* t;
	trope145007* LOC1;
	NI64 l;
	TY471942 LOC8;
	t = skiptypes_192793(objtype, IL64(211106240964864));
	LOC1 = 0;
	LOC1 = gentypeinfo_472392((*p).Module, t);
	l = lengthord_223010((*field).Typ);
	{
		NIM_BOOL LOC4;
		TY145497 LOC7;
		LOC4 = 0;
		LOC4 = containsorincl_185888(&(*(*p).Module).Declaredthings, (*field).Sup.Id);
		if (!!(LOC4)) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = discriminatortabledecl_472774((*p).Module, t, field);
		appcg_469012((*p).Module, ((NU8) 9), ((NimStringDesc*) &TMP3708), LOC7, 1);
	}
	LA5: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rdloc_474964(a);
	LOC8[1] = rdloc_474964(tmp);
	LOC8[2] = discriminatortablename_472727((*p).Module, t, field);
	LOC8[3] = intliteral_476518((NI64)(l + 1));
	linecg_469093(p, ((NU8) 2), ((NimStringDesc*) &TMP3709), LOC8, 4);
}

N_NIMCALL(void, asgnfielddiscriminant_488412)(tcproc465026* p, tnode188803* e) {
	tloc188817 a;
	tloc188817 tmp;
	tnode188803* dotexpr;
	tsym188833* d;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&tmp, 0, sizeof(tmp));
	dotexpr = (*e).kindU.S6.Sons->data[0];
	d = 0;
	{
		if (!((*dotexpr).Kind == ((NU8) 46))) goto LA3;
		dotexpr = (*dotexpr).kindU.S6.Sons->data[0];
	}
	LA3: ;
	initlocexpr_476527(p, (*e).kindU.S6.Sons->data[0], &a);
	gettemp_473840(p, a.T, &tmp);
	expr_476492(p, (*e).kindU.S6.Sons->data[1], &tmp);
	gendiscriminantcheck_488341(p, &a, &tmp, (*(*dotexpr).kindU.S6.Sons->data[0]).Typ, (*(*dotexpr).kindU.S6.Sons->data[1]).kindU.S4.Sym);
	genassignment_476511(p, &a, &tmp, 0);
}

N_NIMCALL(void, genasgn_488536)(tcproc465026* p, tnode188803* e, NIM_BOOL fastasgn) {
	genlinedir_469427(p, e);
	{
		NIM_BOOL LOC3;
		tloc188817 a;
		LOC3 = 0;
		LOC3 = fielddiscriminantcheckneeded_488191(p, e);
		if (!!(LOC3)) goto LA4;
		memset((void*)&a, 0, sizeof(a));
		initlocexpr_476527(p, (*e).kindU.S6.Sons->data[0], &a);
		{
			if (!fastasgn) goto LA8;
			a.Flags |=((NI8)(1)<<((((NU8) 2))%(sizeof(NI8)*8)));
		}
		LA8: ;
		loadinto_481009(p, (*e).kindU.S6.Sons->data[0], (*e).kindU.S6.Sons->data[1], &a);
	}
	goto LA1;
	LA4: ;
	{
		asgnfielddiscriminant_488412(p, e);
	}
	LA1: ;
}

N_NIMCALL(trope145007*, genasmoremitstmt_487442)(tcproc465026* p, tnode188803* t, NIM_BOOL isasmstmt) {
	trope145007* result;
	NimStringDesc* res;
	NI i_487461;
	NI HEX3Atmp_487646;
	NI LOC1;
	NI res_487648;
	result = 0;
	res = copyString(((NimStringDesc*) &TMP3136));
	i_487461 = 0;
	HEX3Atmp_487646 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(t);
	HEX3Atmp_487646 = (NI32)(LOC1 - 1);
	res_487648 = 0;
	while (1) {
		if (!(res_487648 <= HEX3Atmp_487646)) goto LA2;
		i_487461 = res_487648;
		switch ((*(*t).kindU.S6.Sons->data[i_487461]).Kind) {
		case ((NU8) 20) ... ((NU8) 22):
		{
			res = resizeString(res, (*(*t).kindU.S6.Sons->data[i_487461]).kindU.S3.Strval->Sup.len + 0);
appendString(res, (*(*t).kindU.S6.Sons->data[i_487461]).kindU.S3.Strval);
		}
		break;
		case ((NU8) 3):
		{
			tsym188833* sym;
			sym = (*(*t).kindU.S6.Sons->data[i_487461]).kindU.S4.Sym;
			{
				tloc188817 a;
				trope145007* LOC9;
				NimStringDesc* LOC10;
				if (!((61440 &(1<<(((*sym).Kind)&31)))!=0)) goto LA7;
				memset((void*)&a, 0, sizeof(a));
				initlocexpr_476527(p, (*t).kindU.S6.Sons->data[i_487461], &a);
				LOC9 = 0;
				LOC9 = rdloc_474964(&a);
				LOC10 = 0;
				LOC10 = ropetostr_145075(LOC9);
				res = resizeString(res, LOC10->Sup.len + 0);
appendString(res, LOC10);
			}
			goto LA5;
			LA7: ;
			{
				trope145007* r;
				NimStringDesc* LOC16;
				r = (*sym).Loc.R;
				{
					if (!(r == NIM_NIL)) goto LA14;
					r = manglename_469870(sym);
					asgnRefNoCycle((void**) &(*sym).Loc.R, r);
				}
				LA14: ;
				LOC16 = 0;
				LOC16 = ropetostr_145075(r);
				res = resizeString(res, LOC16->Sup.len + 0);
appendString(res, LOC16);
			}
			LA5: ;
		}
		break;
		default:
		{
			internalerror_165591((*(*t).kindU.S6.Sons->data[i_487461]).Info, ((NimStringDesc*) &TMP3710));
		}
		break;
		}
		res_487648 += 1;
	} LA2: ;
	{
		NIM_BOOL LOC20;
		NimStringDesc* x_487608;
		NI first_487651;
		NI last_487653;
		LOC20 = 0;
		LOC20 = isasmstmt;
		if (!(LOC20)) goto LA21;
		LOC20 = ((cc_169402[(ccompiler_169425)- 1].Field20 &(1<<((((NU8) 5))&7)))!=0);
		LA21: ;
		if (!LOC20) goto LA22;
		x_487608 = 0;
		first_487651 = 0;
		last_487653 = 0;
		while (1) {
			NI j;
			while (1) {
				if (!!((((NU8)(res->data[last_487653])) == ((NU8)(0)) || ((NU8)(res->data[last_487653])) == ((NU8)(13)) || ((NU8)(res->data[last_487653])) == ((NU8)(10))))) goto LA25;
				last_487653 += 1;
			} LA25: ;
			x_487608 = copyStrLast(res, first_487651, (NI32)(last_487653 - 1));
			j = 0;
			while (1) {
				if (!(((NU8)(x_487608->data[j])) == ((NU8)(32)) || ((NU8)(x_487608->data[j])) == ((NU8)(9)))) goto LA26;
				j += 1;
			} LA26: ;
			{
				NIM_BOOL LOC29;
				NIM_BOOL LOC30;
				LOC29 = 0;
				LOC30 = 0;
				LOC30 = ((NU8)(x_487608->data[j]) == (NU8)(58));
				if (!(LOC30)) goto LA31;
				LOC30 = ((NU8)(x_487608->data[(NI32)(j + 1)]) == (NU8)(34));
				LA31: ;
				LOC29 = LOC30;
				if (LOC29) goto LA32;
				LOC29 = ((NU8)(x_487608->data[j]) == (NU8)(34));
				LA32: ;
				if (!LOC29) goto LA33;
				app_145046(&result, x_487608);
				app_145046(&result, tnl_142593);
			}
			goto LA27;
			LA33: ;
			{
				if (!!(((NU8)(x_487608->data[j]) == (NU8)(0)))) goto LA36;
				app_145046(&result, ((NimStringDesc*) &TMP3711));
				app_145046(&result, x_487608);
				app_145046(&result, ((NimStringDesc*) &TMP3712));
			}
			goto LA27;
			LA36: ;
			LA27: ;
			{
				if (!((NU8)(res->data[last_487653]) == (NU8)(10))) goto LA40;
				last_487653 += 1;
			}
			goto LA38;
			LA40: ;
			{
				if (!((NU8)(res->data[last_487653]) == (NU8)(13))) goto LA43;
				last_487653 += 1;
				{
					if (!((NU8)(res->data[last_487653]) == (NU8)(10))) goto LA47;
					last_487653 += 1;
				}
				LA47: ;
			}
			goto LA38;
			LA43: ;
			{
				goto LA24;
			}
			LA38: ;
			first_487651 = last_487653;
		} LA24: ;
	}
	goto LA18;
	LA22: ;
	{
		result = torope_145058(res);
	}
	LA18: ;
	return result;
}

N_NIMCALL(void, genasmstmt_487659)(tcproc465026* p, tnode188803* t) {
	trope145007* s;
	genlinedir_469427(p, t);
	s = genasmoremitstmt_487442(p, t, NIM_TRUE);
	{
		TY145497 LOC5;
		if (!((*p).Prc == NIM_NIL)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = s;
		appf_145085(&(*(*p).Module).S[(((NU8) 7))- 0], cc_169402[(ccompiler_169425)- 1].Field17, LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY145497 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = s;
		linef_469084(p, ((NU8) 2), cc_169402[(ccompiler_169425)- 1].Field17, LOC7, 1);
	}
	LA1: ;
}

N_NIMCALL(void, gentrycpp_486225)(tcproc465026* p, tnode188803* t, tloc188817* d) {
	trope145007* exc;
	NI i;
	NI length;
	NI blen;
	trope145007* LOC8;
	TY469906 LOC9;
	NI LOC10;
	TY145497 LOC11;
	trope145007* LOC12;
	NIM_BOOL catchallpresent;
	TY469906 LOC56;
	tnode188803* LOC57;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_195210((*t).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_473840(p, (*t).Typ, d);
	}
	LA6: ;
	exc = 0;
	i = 0;
	length = 0;
	blen = 0;
	genlinedir_469427(p, t);
	exc = gettempname_470368();
	LOC8 = 0;
	LOC8 = cgsym_468604((*p).Module, ((NimStringDesc*) &TMP3713));
	(*p).Nestedtrystmts = (tnodeseq188797*) incrSeq(&((*p).Nestedtrystmts)->Sup, sizeof(tnode188803*));
	asgnRefNoCycle((void**) &(*p).Nestedtrystmts->data[(*p).Nestedtrystmts->Sup.len-1], t);
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC10 = 0;
	LOC10 = startblock_481090(p, ((NimStringDesc*) &TMP3714), LOC9, 0);
	expr_476492(p, (*t).kindU.S6.Sons->data[0], d);
	length = sonslen_189181(t);
	memset((void*)LOC11, 0, sizeof(LOC11));
	LOC11[0] = exc;
	LOC12 = 0;
	LOC12 = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3715), LOC11, 1);
	endblock_481172(p, LOC12);
	{
		TY469906 LOC17;
		if (!(((*p).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA15;
		memset((void*)LOC17, 0, sizeof(LOC17));
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3716), LOC17, 0);
	}
	LA15: ;
	(*p).Inexceptblock += 1;
	i = 1;
	catchallpresent = NIM_FALSE;
	while (1) {
		NIM_BOOL LOC19;
		LOC19 = 0;
		LOC19 = (i < length);
		if (!(LOC19)) goto LA20;
		LOC19 = ((*(*t).kindU.S6.Sons->data[i]).Kind == ((NU8) 87));
		LA20: ;
		if (!LOC19) goto LA18;
		blen = sonslen_189181((*t).kindU.S6.Sons->data[i]);
		{
			trope145007** LOC25;
			TY469906 LOC26;
			if (!(1 < i)) goto LA23;
			LOC25 = 0;
			LOC25 = s_465173(p, ((NU8) 2));
			memset((void*)LOC26, 0, sizeof(LOC26));
			appf_145085(LOC25, ((NimStringDesc*) &TMP3717), LOC26, 0);
		}
		LA23: ;
		{
			if (!(blen == 1)) goto LA29;
			catchallpresent = NIM_TRUE;
			exprblock_481271(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0], d);
		}
		goto LA27;
		LA29: ;
		{
			trope145007* orexpr;
			NI j_486411;
			NI HEX3Atmp_486842;
			NI res_486844;
			TY145497 LOC38;
			orexpr = NIM_NIL;
			j_486411 = 0;
			HEX3Atmp_486842 = 0;
			HEX3Atmp_486842 = (NI32)(blen - 2);
			res_486844 = 0;
			while (1) {
				TY503234 LOC37;
				if (!(res_486844 <= HEX3Atmp_486842)) goto LA32;
				j_486411 = res_486844;
				{
					if (!!((orexpr == NIM_NIL))) goto LA35;
					app_145046(&orexpr, ((NimStringDesc*) &TMP3671));
				}
				LA35: ;
				memset((void*)LOC37, 0, sizeof(LOC37));
				LOC37[0] = exc;
				LOC37[1] = gentypeinfo_472392((*p).Module, (*(*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[j_486411]).Typ);
				appcg_469002((*p).Module, &orexpr, ((NimStringDesc*) &TMP3718), LOC37, 2);
				res_486844 += 1;
			} LA32: ;
			memset((void*)LOC38, 0, sizeof(LOC38));
			LOC38[0] = orexpr;
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3719), LOC38, 1);
			exprblock_481271(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[(NI32)(blen - 1)], d);
		}
		LA27: ;
		i += 1;
	} LA18: ;
	{
		TY469906 LOC48;
		NI LOC49;
		tnode188803* finallyblock;
		TY469906 LOC54;
		trope145007* LOC55;
		if (!!(catchallpresent)) goto LA41;
		{
			TY469906 LOC47;
			if (!(1 < i)) goto LA45;
			memset((void*)LOC47, 0, sizeof(LOC47));
			linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3717), LOC47, 0);
		}
		LA45: ;
		memset((void*)LOC48, 0, sizeof(LOC48));
		LOC49 = 0;
		LOC49 = startblock_481090(p, ((NimStringDesc*) &TMP3365), LOC48, 0);
		finallyblock = lastson_189189(t);
		{
			if (!((*finallyblock).Kind == ((NU8) 106))) goto LA52;
			expr_476492(p, (*finallyblock).kindU.S6.Sons->data[0], d);
		}
		LA52: ;
		memset((void*)LOC54, 0, sizeof(LOC54));
		LOC55 = 0;
		LOC55 = ropef_145079(((NimStringDesc*) &TMP3720), LOC54, 0);
		line_469070(p, ((NU8) 2), LOC55);
		endblock_481207(p);
	}
	LA41: ;
	memset((void*)LOC56, 0, sizeof(LOC56));
	linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3279), LOC56, 0);
	(*p).Inexceptblock -= 1;
	LOC57 = 0;
	LOC57 = pop_482523(&(*p).Nestedtrystmts);
	{
		NIM_BOOL LOC60;
		LOC60 = 0;
		LOC60 = (i < length);
		if (!(LOC60)) goto LA61;
		LOC60 = ((*(*t).kindU.S6.Sons->data[i]).Kind == ((NU8) 106));
		LA61: ;
		if (!LOC60) goto LA62;
		exprblock_481271(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0], d);
	}
	LA62: ;
}

N_NIMCALL(void, line_469077)(tcproc465026* p, NU8 s, NimStringDesc* r) {
	trope145007** LOC1;
	trope145007* LOC2;
	trope145007* LOC3;
	LOC1 = 0;
	LOC1 = s_465173(p, s);
	LOC2 = 0;
	LOC2 = torope_145058(r);
	LOC3 = 0;
	LOC3 = indentline_469033(p, LOC2);
	app_145040(LOC1, LOC3);
}

static N_INLINE(trope145007*, pop_145515)(TY163540** s_145523) {
	trope145007* result;
	NI l;
	result = 0;
	l = (NI32)((*s_145523)->Sup.len - 1);
	result = (*s_145523)->data[l];
	(*s_145523) = (TY163540*) setLengthSeq(&((*s_145523))->Sup, sizeof(trope145007*), l);
	return result;
}

N_NIMCALL(void, gentry_486849)(tcproc465026* p, tnode188803* t, tloc188817* d) {
	NIM_BOOL LOC8;
	trope145007* safepoint;
	trope145007* LOC9;
	TY145497 LOC10;
	TY145497 LOC11;
	TY145497 LOC12;
	TY145497 LOC13;
	NI LOC14;
	NI length;
	TY469906 LOC15;
	TY469906 LOC16;
	NI LOC17;
	TY469906 LOC18;
	NI i;
	tnode188803* LOC55;
	TY145497 LOC63;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_195210((*t).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_473840(p, (*t).Typ, d);
	}
	LA6: ;
	LOC8 = 0;
	LOC8 = includestr_118275(&(*(*p).Module).Headerfiles, ((NimStringDesc*) &TMP3721));
	genlinedir_469427(p, t);
	safepoint = gettempname_470368();
	LOC9 = 0;
	LOC9 = cgsym_468604((*p).Module, ((NimStringDesc*) &TMP3713));
	memset((void*)LOC10, 0, sizeof(LOC10));
	LOC10[0] = safepoint;
	linefmt_469102(p, ((NU8) 0), ((NimStringDesc*) &TMP3722), LOC10, 1);
	memset((void*)LOC11, 0, sizeof(LOC11));
	LOC11[0] = safepoint;
	linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3723), LOC11, 1);
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = safepoint;
	linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3724), LOC12, 1);
	memset((void*)LOC13, 0, sizeof(LOC13));
	LOC13[0] = safepoint;
	LOC14 = 0;
	LOC14 = startblock_481090(p, ((NimStringDesc*) &TMP3725), LOC13, 1);
	length = sonslen_189181(t);
	(*p).Nestedtrystmts = (tnodeseq188797*) incrSeq(&((*p).Nestedtrystmts)->Sup, sizeof(tnode188803*));
	asgnRefNoCycle((void**) &(*p).Nestedtrystmts->data[(*p).Nestedtrystmts->Sup.len-1], t);
	expr_476492(p, (*t).kindU.S6.Sons->data[0], d);
	memset((void*)LOC15, 0, sizeof(LOC15));
	linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3702), LOC15, 0);
	endblock_481207(p);
	memset((void*)LOC16, 0, sizeof(LOC16));
	LOC17 = 0;
	LOC17 = startblock_481090(p, ((NimStringDesc*) &TMP3726), LOC16, 0);
	memset((void*)LOC18, 0, sizeof(LOC18));
	linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3702), LOC18, 0);
	{
		TY469906 LOC23;
		if (!(((*p).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA21;
		memset((void*)LOC23, 0, sizeof(LOC23));
		linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3716), LOC23, 0);
	}
	LA21: ;
	(*p).Inexceptblock += 1;
	i = 1;
	while (1) {
		NIM_BOOL LOC25;
		NI blen;
		LOC25 = 0;
		LOC25 = (i < length);
		if (!(LOC25)) goto LA26;
		LOC25 = ((*(*t).kindU.S6.Sons->data[i]).Kind == ((NU8) 87));
		LA26: ;
		if (!LOC25) goto LA24;
		blen = sonslen_189181((*t).kindU.S6.Sons->data[i]);
		{
			TY469906 LOC36;
			NI LOC37;
			TY145497 LOC38;
			TY469906 LOC39;
			if (!(blen == 1)) goto LA29;
			{
				TY469906 LOC35;
				if (!(1 < i)) goto LA33;
				memset((void*)LOC35, 0, sizeof(LOC35));
				linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3727), LOC35, 0);
			}
			LA33: ;
			memset((void*)LOC36, 0, sizeof(LOC36));
			LOC37 = 0;
			LOC37 = startblock_481090(p, ((NimStringDesc*) &TMP3365), LOC36, 0);
			memset((void*)LOC38, 0, sizeof(LOC38));
			LOC38[0] = safepoint;
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3728), LOC38, 1);
			expr_476492(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0], d);
			memset((void*)LOC39, 0, sizeof(LOC39));
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3703), LOC39, 0);
			endblock_481207(p);
		}
		goto LA27;
		LA29: ;
		{
			trope145007* orexpr;
			NI j_487079;
			NI HEX3Atmp_487435;
			NI res_487437;
			TY145497 LOC51;
			NI LOC52;
			TY145497 LOC53;
			TY469906 LOC54;
			orexpr = NIM_NIL;
			j_487079 = 0;
			HEX3Atmp_487435 = 0;
			HEX3Atmp_487435 = (NI32)(blen - 2);
			res_487437 = 0;
			while (1) {
				TY145497 LOC46;
				if (!(res_487437 <= HEX3Atmp_487435)) goto LA41;
				j_487079 = res_487437;
				{
					if (!!((orexpr == NIM_NIL))) goto LA44;
					app_145046(&orexpr, ((NimStringDesc*) &TMP3671));
				}
				LA44: ;
				memset((void*)LOC46, 0, sizeof(LOC46));
				LOC46[0] = gentypeinfo_472392((*p).Module, (*(*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[j_487079]).Typ);
				appcg_469002((*p).Module, &orexpr, ((NimStringDesc*) &TMP3729), LOC46, 1);
				res_487437 += 1;
			} LA41: ;
			{
				if (!(1 < i)) goto LA49;
				line_469077(p, ((NU8) 2), ((NimStringDesc*) &TMP3717));
			}
			LA49: ;
			memset((void*)LOC51, 0, sizeof(LOC51));
			LOC51[0] = orexpr;
			LOC52 = 0;
			LOC52 = startblock_481090(p, ((NimStringDesc*) &TMP3730), LOC51, 1);
			memset((void*)LOC53, 0, sizeof(LOC53));
			LOC53[0] = safepoint;
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3728), LOC53, 1);
			expr_476492(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[(NI32)(blen - 1)], d);
			memset((void*)LOC54, 0, sizeof(LOC54));
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3703), LOC54, 0);
			endblock_481207(p);
		}
		LA27: ;
		i += 1;
	} LA24: ;
	(*p).Inexceptblock -= 1;
	LOC55 = 0;
	LOC55 = pop_482523(&(*p).Nestedtrystmts);
	endblock_481207(p);
	{
		NIM_BOOL LOC58;
		trope145007* LOC62;
		LOC58 = 0;
		LOC58 = (i < length);
		if (!(LOC58)) goto LA59;
		LOC58 = ((*(*t).kindU.S6.Sons->data[i]).Kind == ((NU8) 106));
		LA59: ;
		if (!LOC58) goto LA60;
		(*p).Finallysafepoints = (TY163540*) incrSeq(&((*p).Finallysafepoints)->Sup, sizeof(trope145007*));
		asgnRefNoCycle((void**) &(*p).Finallysafepoints->data[(*p).Finallysafepoints->Sup.len-1], safepoint);
		exprblock_481271(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0], d);
		LOC62 = 0;
		LOC62 = pop_145515(&(*p).Finallysafepoints);
	}
	LA60: ;
	memset((void*)LOC63, 0, sizeof(LOC63));
	LOC63[0] = safepoint;
	linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3731), LOC63, 1);
}

static N_INLINE(void, gensimpleblock_481259)(tcproc465026* p, tnode188803* stmts) {
	TY469906 LOC1;
	NI LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = startblock_481090(p, ((NimStringDesc*) &TMP3365), LOC1, 0);
	genstmts_476487(p, stmts);
	endblock_481207(p);
}

N_NIMCALL(NimStringDesc*, getraisefrmt_484437)(tcproc465026* p) {
	NimStringDesc* result;
	result = 0;
	{
		if (!(gcmd_137113 == ((NU8) 2))) goto LA3;
		result = copyString(((NimStringDesc*) &TMP3732));
	}
	goto LA1;
	LA3: ;
	{
		result = copyString(((NimStringDesc*) &TMP3733));
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genraisestmt_484451)(tcproc465026* p, tnode188803* t) {
	{
		tnode188803* finallyblock;
		if (!(0 < (*p).Inexceptblock)) goto LA3;
		finallyblock = lastson_189189((*p).Nestedtrystmts->data[(NI32)((*p).Nestedtrystmts->Sup.len - 1)]);
		{
			if (!((*finallyblock).Kind == ((NU8) 106))) goto LA7;
			gensimpleblock_481259(p, (*finallyblock).kindU.S6.Sons->data[0]);
		}
		LA7: ;
	}
	LA3: ;
	{
		tloc188817 a;
		trope145007* e;
		ttype188837* typ;
		NimStringDesc* LOC13;
		TY503234 LOC14;
		if (!!(((*(*t).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA11;
		memset((void*)&a, 0, sizeof(a));
		initlocexpr_476527(p, (*t).kindU.S6.Sons->data[0], &a);
		e = rdloc_474964(&a);
		typ = skiptypes_192793((*(*t).kindU.S6.Sons->data[0]).Typ, IL64(211106247256320));
		genlinedir_469427(p, t);
		LOC13 = 0;
		LOC13 = getraisefrmt_484437(p);
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = e;
		LOC14[1] = makecstring_163651((*(*(*typ).Sym).Name).S);
		linecg_469093(p, ((NU8) 2), LOC13, LOC14, 2);
	}
	goto LA9;
	LA11: ;
	{
		genlinedir_469427(p, t);
		{
			TY469906 LOC20;
			trope145007* LOC21;
			if (!(gcmd_137113 == ((NU8) 2))) goto LA18;
			memset((void*)LOC20, 0, sizeof(LOC20));
			LOC21 = 0;
			LOC21 = ropef_145079(((NimStringDesc*) &TMP3720), LOC20, 0);
			line_469070(p, ((NU8) 2), LOC21);
		}
		goto LA16;
		LA18: ;
		{
			TY469906 LOC23;
			memset((void*)LOC23, 0, sizeof(LOC23));
			linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3734), LOC23, 0);
		}
		LA16: ;
	}
	LA9: ;
}

N_NIMCALL(void, gentypesection_474957)(tcgen465030* m, tnode188803* n) {
}

N_NIMCALL(void, genemit_487829)(tcproc465026* p, tnode188803* t) {
	trope145007* s;
	genlinedir_469427(p, t);
	s = genasmoremitstmt_487442(p, (*t).kindU.S6.Sons->data[1], NIM_FALSE);
	{
		if (!((*p).Prc == NIM_NIL)) goto LA3;
		app_145040(&(*(*p).Module).S[(((NU8) 7))- 0], s);
	}
	goto LA1;
	LA3: ;
	{
		line_469070(p, ((NU8) 2), s);
	}
	LA1: ;
}

N_NIMCALL(void, genbreakpoint_487869)(tcproc465026* p, tnode188803* t) {
	NimStringDesc* name;
	name = 0;
	{
		TY470214 LOC12;
		NI LOC13;
		NimStringDesc* LOC14;
		if (!(((*p).Options &(1<<((((NU8) 17))&31)))!=0)) goto LA3;
		{
			if (!((*t).Kind == ((NU8) 34))) goto LA7;
			name = nsuNormalize((*(*t).kindU.S6.Sons->data[1]).kindU.S3.Strval);
		}
		goto LA5;
		LA7: ;
		{
			NimStringDesc* LOC10;
			NimStringDesc* LOC11;
			breakpointid_487867 += 1;
			LOC10 = 0;
			LOC11 = 0;
			LOC11 = nimIntToStr(breakpointid_487867);
			LOC10 = rawNewString(LOC11->Sup.len + 2);
appendString(LOC10, ((NimStringDesc*) &TMP3735));
appendString(LOC10, LOC11);
			name = LOC10;
		}
		LA5: ;
		genlinedir_469427(p, t);
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC13 = 0;
		LOC13 = tolinenumber_164812((*t).Info);
		LOC12[0] = torope_145062(((NI64) (LOC13)));
		LOC14 = 0;
		LOC14 = tofilename_164780((*t).Info.Fileindex);
		LOC12[1] = makecstring_163651(LOC14);
		LOC12[2] = makecstring_163651(name);
		appcg_469002((*p).Module, &gbreakpoints_487868, ((NimStringDesc*) &TMP3736), LOC12, 3);
	}
	LA3: ;
}

N_NIMCALL(void, genwatchpoint_488052)(tcproc465026* p, tnode188803* n) {
	tloc188817 a;
	ttype188837* typ;
	TY470214 LOC5;
	NimStringDesc* LOC6;
	{
		if (!!((((*p).Options &(1<<((((NU8) 17))&31)))!=0))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*n).kindU.S6.Sons->data[1], &a);
	typ = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = addrloc_474987(&a);
	LOC6 = 0;
	LOC6 = rendertree_211051((*n).kindU.S6.Sons->data[1], 0);
	LOC5[1] = makecstring_163651(LOC6);
	LOC5[2] = gentypeinfo_472392((*p).Module, typ);
	linecg_469093(p, ((NU8) 2), ((NimStringDesc*) &TMP3737), LOC5, 3);
	BeforeRet: ;
}

N_NIMCALL(void, genpragma_488120)(tcproc465026* p_488122, tnode188803* n) {
	NI i_488136;
	NI HEX3Atmp_488185;
	NI LOC1;
	NI res_488187;
	i_488136 = 0;
	HEX3Atmp_488185 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_488185 = (NI32)(LOC1 - 1);
	res_488187 = 0;
	while (1) {
		tnode188803* it;
		NU8 LOC3;
		if (!(res_488187 <= HEX3Atmp_488185)) goto LA2;
		i_488136 = res_488187;
		it = (*n).kindU.S6.Sons->data[i_488136];
		LOC3 = 0;
		LOC3 = whichpragma_222161(it);
		switch (LOC3) {
		case ((NU8) 181):
		{
			genemit_487829(p_488122, it);
		}
		break;
		case ((NU8) 123):
		{
			genbreakpoint_487869(p_488122, it);
		}
		break;
		case ((NU8) 167):
		{
			genwatchpoint_488052(p_488122, it);
		}
		break;
		case ((NU8) 174):
		{
			tcproc465026* p;
			trope145007** LOC8;
			p = newproc_465208(NIM_NIL, (*p_488122).Module);
			(*p).Options = ((*p).Options & ~ 98304);
			genstmts_476487(p, (*it).kindU.S6.Sons->data[1]);
			LOC8 = 0;
			LOC8 = s_465173(p, ((NU8) 2));
			unsureAsgnRef((void**) &(*(*p).Module).Injectstmt, (*LOC8));
		}
		break;
		default:
		{
		}
		break;
		}
		res_488187 += 1;
	} LA2: ;
}

N_NIMCALL(void, genparforstmt_483645)(tcproc465026* p, tnode188803* t) {
	NI oldbreakidx_483818;
	tsym188833* forloopvar;
	tloc188817 rangea;
	tloc188817 rangeb;
	tnode188803* call;
	TY471942 LOC1;
	NimStringDesc* LOC2;
	TY469906 LOC3;
	(*p).Withinloop += 1;
	genlinedir_469427(p, t);
	oldbreakidx_483818 = (*p).Breakidx;
	forloopvar = (*(*t).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	memset((void*)&rangea, 0, sizeof(rangea));
	memset((void*)&rangeb, 0, sizeof(rangeb));
	assignlocalvar_475781(p, forloopvar);
	call = (*t).kindU.S6.Sons->data[1];
	initlocexpr_476527(p, (*call).kindU.S6.Sons->data[1], &rangea);
	initlocexpr_476527(p, (*call).kindU.S6.Sons->data[2], &rangeb);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_474964(&(*forloopvar).Loc);
	LOC1[1] = rdloc_474964(&rangea);
	LOC1[2] = rdloc_474964(&rangeb);
	LOC2 = 0;
	LOC2 = getstr_194873((*call).kindU.S6.Sons->data[3]);
	LOC1[3] = torope_145058(LOC2);
	linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3738), LOC1, 4);
	memset((void*)LOC3, 0, sizeof(LOC3));
	(*p).Breakidx = startblock_481090(p, ((NimStringDesc*) &TMP3365), LOC3, 0);
	(*p).Blocks->data[(*p).Breakidx].Isloop = NIM_TRUE;
	genstmts_476487(p, (*t).kindU.S6.Sons->data[2]);
	endblock_481207(p);
	(*p).Breakidx = oldbreakidx_483818;
	(*p).Withinloop -= 1;
}

N_NIMCALL(void, genstate_481289)(tcproc465026* p, tnode188803* n) {
	NI64 idx;
	TY145497 LOC9;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NimStringDesc* LOC8;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = len_189264(n);
		LOC3 = (LOC4 == 1);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 6));
		LA5: ;
		if (!!(LOC3)) goto LA6;
		LOC8 = 0;
		LOC8 = HEX24_165714(TMP3739);
		internalerror_165606(LOC8);
	}
	LA6: ;
	idx = (*(*n).kindU.S6.Sons->data[0]).kindU.S1.Intval;
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC9[0] = torope_145062(idx);
	linefmt_469102(p, ((NU8) 2), ((NimStringDesc*) &TMP3741), LOC9, 1);
}

N_NIMCALL(void, gengotostate_481380)(tcproc465026* p, tnode188803* n) {
	tloc188817 a;
	TY145497 LOC1;
	TY469906 LOC2;
	NI64 i_481456;
	NI64 HEX3Atmp_481469;
	NI64 res_481471;
	TY469906 LOC5;
	memset((void*)&a, 0, sizeof(a));
	initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_474964(&a);
	linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3700), LOC1, 1);
	(*p).Beforeretneeded = NIM_TRUE;
	memset((void*)LOC2, 0, sizeof(LOC2));
	linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3742), LOC2, 0);
	i_481456 = 0;
	HEX3Atmp_481469 = 0;
	HEX3Atmp_481469 = lastord_223006((*(*n).kindU.S6.Sons->data[0]).Typ);
	res_481471 = 0;
	while (1) {
		TY145497 LOC4;
		if (!(res_481471 <= HEX3Atmp_481469)) goto LA3;
		i_481456 = res_481471;
		memset((void*)LOC4, 0, sizeof(LOC4));
		LOC4[0] = torope_145062(i_481456);
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3743), LOC4, 1);
		res_481471 += 1;
	} LA3: ;
	memset((void*)LOC5, 0, sizeof(LOC5));
	linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3279), LOC5, 0);
}

N_NIMCALL(void, genbreakstate_481475)(tcproc465026* p, tnode188803* n) {
	tloc188817 a;
	memset((void*)&a, 0, sizeof(a));
	{
		TY145497 LOC5;
		if (!((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 153))) goto LA3;
		initlocexpr_476527(p, (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1], &a);
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_474964(&a);
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3744), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY145497 LOC7;
		initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_474964(&a);
		linef_469084(p, ((NU8) 2), ((NimStringDesc*) &TMP3745), LOC7, 1);
	}
	LA1: ;
}

N_NIMCALL(void, expr_476492)(tcproc465026* p, tnode188803* n, tloc188817* d) {
	switch ((*n).Kind) {
	case ((NU8) 3):
	{
		tsym188833* sym;
		sym = (*n).kindU.S4.Sym;
		switch ((*sym).Kind) {
		case ((NU8) 13):
		{
			{
				NIM_BOOL LOC5;
				tnode188803* LOC6;
				LOC5 = 0;
				LOC6 = 0;
				LOC6 = getbody_239244(sym);
				LOC5 = ((*LOC6).Kind == ((NU8) 1));
				if (LOC5) goto LA7;
				LOC5 = (((*sym).Flags &(1<<((((NU8) 25))&31)))!=0);
				LA7: ;
				if (!LOC5) goto LA8;
				fillprocloc_476425(sym);
				genprocprototype_476499((*p).Module, sym);
			}
			goto LA3;
			LA8: ;
			{
				genproc_476482((*p).Module, sym);
			}
			LA3: ;
			putlocintodest_476504(p, d, &(*sym).Loc);
		}
		break;
		case ((NU8) 12):
		case ((NU8) 16):
		case ((NU8) 14):
		case ((NU8) 15):
		{
			genproc_476482((*p).Module, sym);
			{
				NIM_BOOL LOC14;
				NimStringDesc* LOC18;
				LOC14 = 0;
				LOC14 = ((*sym).Loc.R == NIM_NIL);
				if (LOC14) goto LA15;
				LOC14 = ((*sym).Loc.T == NIM_NIL);
				LA15: ;
				if (!LOC14) goto LA16;
				LOC18 = 0;
				LOC18 = rawNewString((*(*sym).Name).S->Sup.len + 20);
appendString(LOC18, ((NimStringDesc*) &TMP3361));
appendString(LOC18, (*(*sym).Name).S);
				internalerror_165591((*n).Info, LOC18);
			}
			LA16: ;
			putlocintodest_476504(p, d, &(*sym).Loc);
		}
		break;
		case ((NU8) 10):
		{
			{
				if (!(((*sym).Flags &(1<<((((NU8) 25))&31)))!=0)) goto LA22;
				{
					if (!(((*sym).Flags &(1<<((((NU8) 3))&31)))!=0)) goto LA26;
					genvarprototype_476472((*p).Module, sym);
				}
				LA26: ;
				putlocintodest_476504(p, d, &(*sym).Loc);
			}
			goto LA20;
			LA22: ;
			{
				NIM_BOOL LOC29;
				trope145007* LOC32;
				LOC29 = 0;
				LOC29 = issimpleconst_468387((*sym).Typ);
				if (!LOC29) goto LA30;
				LOC32 = 0;
				LOC32 = genliteral_488767(p, (*sym).Ast, (*sym).Typ);
				putintodest_490145(p, d, (*n).Typ, LOC32);
			}
			goto LA20;
			LA30: ;
			{
				gencomplexconst_500121(p, sym, d);
			}
			LA20: ;
		}
		break;
		case ((NU8) 20):
		{
			trope145007* LOC35;
			LOC35 = 0;
			LOC35 = torope_145062(((NI64) ((*sym).Position)));
			putintodest_490145(p, d, (*n).Typ, LOC35);
		}
		break;
		case ((NU8) 8):
		case ((NU8) 21):
		case ((NU8) 11):
		case ((NU8) 9):
		{
			{
				if (!(((*sym).Flags &(1<<((((NU8) 3))&31)))!=0)) goto LA39;
				genvarprototype_476472((*p).Module, sym);
			}
			LA39: ;
			{
				NIM_BOOL LOC43;
				NimStringDesc* LOC47;
				LOC43 = 0;
				LOC43 = ((*sym).Loc.R == NIM_NIL);
				if (LOC43) goto LA44;
				LOC43 = ((*sym).Loc.T == NIM_NIL);
				LA44: ;
				if (!LOC43) goto LA45;
				LOC47 = 0;
				LOC47 = rawNewString((*(*sym).Name).S->Sup.len + 19);
appendString(LOC47, ((NimStringDesc*) &TMP3379));
appendString(LOC47, (*(*sym).Name).S);
				internalerror_165591((*n).Info, LOC47);
			}
			LA45: ;
			{
				if (!(((*sym).Flags &(1<<((((NU8) 22))&31)))!=0)) goto LA50;
				accessthreadlocalvar_469601(p, sym);
				{
					NIM_BOOL LOC54;
					trope145007* LOC57;
					LOC54 = 0;
					LOC54 = emulatedthreadvars_469606();
					if (!LOC54) goto LA55;
					LOC57 = 0;
					LOC57 = con_145030(((NimStringDesc*) &TMP3382), (*sym).Loc.R);
					putintodest_490145(p, d, (*sym).Loc.T, LOC57);
				}
				goto LA52;
				LA55: ;
				{
					putlocintodest_476504(p, d, &(*sym).Loc);
				}
				LA52: ;
			}
			goto LA48;
			LA50: ;
			{
				putlocintodest_476504(p, d, &(*sym).Loc);
			}
			LA48: ;
		}
		break;
		case ((NU8) 5):
		{
			{
				NIM_BOOL LOC63;
				NimStringDesc* LOC67;
				LOC63 = 0;
				LOC63 = ((*sym).Loc.R == NIM_NIL);
				if (LOC63) goto LA64;
				LOC63 = ((*sym).Loc.T == NIM_NIL);
				LA64: ;
				if (!LOC63) goto LA65;
				LOC67 = 0;
				LOC67 = rawNewString((*(*sym).Name).S->Sup.len + 20);
appendString(LOC67, ((NimStringDesc*) &TMP3383));
appendString(LOC67, (*(*sym).Name).S);
				internalerror_165591((*n).Info, LOC67);
			}
			LA65: ;
			putlocintodest_476504(p, d, &(*sym).Loc);
		}
		break;
		case ((NU8) 3):
		{
			{
				NIM_BOOL LOC71;
				NimStringDesc* LOC75;
				LOC71 = 0;
				LOC71 = ((*sym).Loc.R == NIM_NIL);
				if (LOC71) goto LA72;
				LOC71 = ((*sym).Loc.T == NIM_NIL);
				LA72: ;
				if (!LOC71) goto LA73;
				LOC75 = 0;
				LOC75 = rawNewString((*(*sym).Name).S->Sup.len + 21);
appendString(LOC75, ((NimStringDesc*) &TMP3384));
appendString(LOC75, (*(*sym).Name).S);
				internalerror_165591((*n).Info, LOC75);
			}
			LA73: ;
			putlocintodest_476504(p, d, &(*sym).Loc);
		}
		break;
		default:
		{
			NimStringDesc* LOC77;
			LOC77 = 0;
			LOC77 = rawNewString(reprEnum((*sym).Kind, (&NTI188441))->Sup.len + 22);
appendString(LOC77, ((NimStringDesc*) &TMP3385));
appendString(LOC77, reprEnum((*sym).Kind, (&NTI188441)));
appendString(LOC77, ((NimStringDesc*) &TMP3386));
			internalerror_165591((*n).Info, LOC77);
		}
		break;
		}
	}
	break;
	case ((NU8) 23):
	{
		{
			NIM_BOOL LOC81;
			trope145007* LOC84;
			LOC81 = 0;
			LOC81 = isemptytype_195210((*n).Typ);
			if (!!(LOC81)) goto LA82;
			LOC84 = 0;
			LOC84 = genliteral_476522(p, n);
			putintodest_490145(p, d, (*n).Typ, LOC84);
		}
		LA82: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		trope145007* LOC86;
		LOC86 = 0;
		LOC86 = genliteral_476522(p, n);
		putdataintodest_490109(p, d, (*n).Typ, LOC86);
	}
	break;
	case ((NU8) 6) ... ((NU8) 15):
	case ((NU8) 16) ... ((NU8) 19):
	case ((NU8) 5):
	{
		trope145007* LOC88;
		LOC88 = 0;
		LOC88 = genliteral_476522(p, n);
		putintodest_490145(p, d, (*n).Typ, LOC88);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 32):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		tnode188803* op;
		genlinedir_469427(p, n);
		op = (*n).kindU.S6.Sons->data[0];
		{
			tloc188817 a;
			if (!(*n).Typ == 0) goto LA92;
			memset((void*)&a, 0, sizeof(a));
			{
				NIM_BOOL LOC96;
				LOC96 = 0;
				LOC96 = ((*op).Kind == ((NU8) 3));
				if (!(LOC96)) goto LA97;
				LOC96 = !(((*(*op).kindU.S4.Sym).Magic == ((NU16) 0)));
				LA97: ;
				if (!LOC96) goto LA98;
				genmagicexpr_499072(p, n, &a, (*(*op).kindU.S4.Sym).Magic);
			}
			goto LA94;
			LA98: ;
			{
				gencall_480423(p, n, &a);
			}
			LA94: ;
		}
		goto LA90;
		LA92: ;
		{
			{
				NIM_BOOL LOC104;
				LOC104 = 0;
				LOC104 = ((*op).Kind == ((NU8) 3));
				if (!(LOC104)) goto LA105;
				LOC104 = !(((*(*op).kindU.S4.Sym).Magic == ((NU16) 0)));
				LA105: ;
				if (!LOC104) goto LA106;
				genmagicexpr_499072(p, n, d, (*(*op).kindU.S4.Sym).Magic);
			}
			goto LA102;
			LA106: ;
			{
				gencall_480423(p, n, d);
			}
			LA102: ;
		}
		LA90: ;
	}
	break;
	case ((NU8) 39):
	{
		{
			NIM_BOOL LOC112;
			NI LOC114;
			trope145007* LOC117;
			LOC112 = 0;
			LOC112 = isdeepconstexpr_221876(n);
			if (!(LOC112)) goto LA113;
			LOC114 = 0;
			LOC114 = len_189264(n);
			LOC112 = !((LOC114 == 0));
			LA113: ;
			if (!LOC112) goto LA115;
			LOC117 = 0;
			LOC117 = gensetnode_489273(p, n);
			putintodest_490145(p, d, (*n).Typ, LOC117);
		}
		goto LA110;
		LA115: ;
		{
			gensetconstr_499408(p, n, d);
		}
		LA110: ;
	}
	break;
	case ((NU8) 41):
	{
		{
			NIM_BOOL LOC122;
			NI LOC124;
			LOC122 = 0;
			LOC122 = isdeepconstexpr_221876(n);
			if (!(LOC122)) goto LA123;
			LOC124 = 0;
			LOC124 = len_189264(n);
			LOC122 = !((LOC124 == 0));
			LA123: ;
			if (!LOC122) goto LA125;
			exprcomplexconst_500579(p, n, d);
		}
		goto LA120;
		LA125: ;
		{
			ttype188837* LOC128;
			LOC128 = 0;
			LOC128 = skiptypes_192793((*n).Typ, IL64(211106242013440));
			if (!((*LOC128).Kind == ((NU8) 24))) goto LA129;
			genseqconstr_495902(p, n, d);
		}
		goto LA120;
		LA129: ;
		{
			genarrayconstr_500065(p, n, d);
		}
		LA120: ;
	}
	break;
	case ((NU8) 37):
	{
		{
			NIM_BOOL LOC135;
			NI LOC137;
			LOC135 = 0;
			LOC135 = isdeepconstexpr_221876(n);
			if (!(LOC135)) goto LA136;
			LOC137 = 0;
			LOC137 = len_189264(n);
			LOC135 = !((LOC137 == 0));
			LA136: ;
			if (!LOC135) goto LA138;
			exprcomplexconst_500579(p, n, d);
		}
		goto LA133;
		LA138: ;
		{
			gentupleconstr_499699(p, n, d);
		}
		LA133: ;
	}
	break;
	case ((NU8) 38):
	{
		genobjconstr_495667(p, n, d);
	}
	break;
	case ((NU8) 61):
	{
		gencast_498058(p, n, d);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	{
		genconv_498289(p, n, d);
	}
	break;
	case ((NU8) 64):
	case ((NU8) 63):
	{
		genaddr_492700(p, n, d);
	}
	break;
	case ((NU8) 42):
	{
		ttype188837* ty;
		ty = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106242013440));
		{
			ttype188837* LOC150;
			if (!((*ty).Kind == ((NU8) 22) || (*ty).Kind == ((NU8) 21))) goto LA148;
			LOC150 = 0;
			LOC150 = lastson_189193(ty);
			ty = skiptypes_192793(LOC150, IL64(211106242013440));
		}
		LA148: ;
		switch ((*ty).Kind) {
		case ((NU8) 16):
		case ((NU8) 4):
		{
			genarrayelem_494288(p, n, d);
		}
		break;
		case ((NU8) 27):
		case ((NU8) 48):
		{
			genopenarrayelem_494500(p, n, d);
		}
		break;
		case ((NU8) 24):
		case ((NU8) 28):
		{
			genseqelem_494571(p, n, d);
		}
		break;
		case ((NU8) 29):
		{
			gencstringelem_494445(p, n, d);
		}
		break;
		case ((NU8) 18):
		{
			gentupleelem_492903(p, n, d);
		}
		break;
		default:
		{
			NimStringDesc* LOC157;
			LOC157 = 0;
			LOC157 = rawNewString(reprEnum((*ty).Kind, (&NTI188240))->Sup.len + 21);
appendString(LOC157, ((NimStringDesc*) &TMP3632));
appendString(LOC157, reprEnum((*ty).Kind, (&NTI188240)));
appendChar(LOC157, 41);
			internalerror_165591((*n).Info, LOC157);
		}
		break;
		}
	}
	break;
	case ((NU8) 47):
	case ((NU8) 65):
	{
		genderef_492623(p, n, d);
	}
	break;
	case ((NU8) 45):
	{
		genrecordfield_493021(p, n, d);
	}
	break;
	case ((NU8) 46):
	{
		gencheckedrecordfield_493896(p, n, d);
	}
	break;
	case ((NU8) 126):
	case ((NU8) 111):
	{
		genblock_483402(p, n, d);
	}
	break;
	case ((NU8) 125):
	{
		genstmtlistexpr_500202(p, n, d);
	}
	break;
	case ((NU8) 114):
	{
		NI i_501036;
		NI HEX3Atmp_501366;
		NI LOC164;
		NI res_501368;
		i_501036 = 0;
		HEX3Atmp_501366 = 0;
		LOC164 = 0;
		LOC164 = sonslen_189181(n);
		HEX3Atmp_501366 = (NI32)(LOC164 - 1);
		res_501368 = 0;
		while (1) {
			if (!(res_501368 <= HEX3Atmp_501366)) goto LA165;
			i_501036 = res_501368;
			genstmts_476487(p, (*n).kindU.S6.Sons->data[i_501036]);
			res_501368 += 1;
		} LA165: ;
	}
	break;
	case ((NU8) 48):
	case ((NU8) 92):
	{
		genif_482009(p, n, d);
	}
	break;
	case ((NU8) 66):
	{
		downconv_500420(p, n, d);
	}
	break;
	case ((NU8) 67):
	{
		upconv_500257(p, n, d);
	}
	break;
	case ((NU8) 68):
	{
		genrangechck_498157(p, n, d, ((NimStringDesc*) &TMP3653));
	}
	break;
	case ((NU8) 69):
	{
		genrangechck_498157(p, n, d, ((NimStringDesc*) &TMP3654));
	}
	break;
	case ((NU8) 70):
	{
		genrangechck_498157(p, n, d, ((NimStringDesc*) &TMP3655));
	}
	break;
	case ((NU8) 71):
	{
		convstrtocstr_498324(p, n, d);
	}
	break;
	case ((NU8) 72):
	{
		convcstrtostr_498352(p, n, d);
	}
	break;
	case ((NU8) 51):
	case ((NU8) 52):
	{
		tsym188833* sym;
		sym = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		genproc_476482((*p).Module, sym);
		{
			NIM_BOOL LOC177;
			NimStringDesc* LOC181;
			LOC177 = 0;
			LOC177 = ((*sym).Loc.R == NIM_NIL);
			if (LOC177) goto LA178;
			LOC177 = ((*sym).Loc.T == NIM_NIL);
			LA178: ;
			if (!LOC177) goto LA179;
			LOC181 = 0;
			LOC181 = rawNewString((*(*sym).Name).S->Sup.len + 20);
appendString(LOC181, ((NimStringDesc*) &TMP3361));
appendString(LOC181, (*(*sym).Name).S);
			internalerror_165591((*n).Info, LOC181);
		}
		LA179: ;
		putlocintodest_476504(p, d, &(*sym).Loc);
	}
	break;
	case ((NU8) 153):
	{
		genclosure_499887(p, n, d);
	}
	break;
	case ((NU8) 1):
	{
	}
	break;
	case ((NU8) 96):
	{
		genwhilestmt_483175(p, n);
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		genvarstmt_481793(p, n);
	}
	break;
	case ((NU8) 101):
	{
		genconststmt_481874(p, n);
	}
	break;
	case ((NU8) 94):
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3692));
	}
	break;
	case ((NU8) 97):
	{
		gencase_486132(p, n, d);
	}
	break;
	case ((NU8) 108):
	{
		genreturnstmt_482680(p, n);
	}
	break;
	case ((NU8) 109):
	{
		genbreakstmt_483953(p, n);
	}
	break;
	case ((NU8) 73):
	{
		genasgn_488536(p, n, NIM_FALSE);
	}
	break;
	case ((NU8) 74):
	{
		genasgn_488536(p, n, !(((*p).Prc == NIM_NIL)));
	}
	break;
	case ((NU8) 113):
	{
		{
			tloc188817 a;
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA196;
			memset((void*)&a, 0, sizeof(a));
			genlinedir_469427(p, n);
			initlocexpr_476527(p, (*n).kindU.S6.Sons->data[0], &a);
		}
		LA196: ;
	}
	break;
	case ((NU8) 89):
	{
		genasmstmt_487659(p, n);
	}
	break;
	case ((NU8) 105):
	{
		{
			if (!(gcmd_137113 == ((NU8) 2))) goto LA202;
			gentrycpp_486225(p, n, d);
		}
		goto LA200;
		LA202: ;
		{
			gentry_486849(p, n, d);
		}
		LA200: ;
	}
	break;
	case ((NU8) 107):
	{
		genraisestmt_484451(p, n);
	}
	break;
	case ((NU8) 98):
	{
		gentypesection_474957((*p).Module, n);
	}
	break;
	case ((NU8) 124):
	case ((NU8) 84):
	case ((NU8) 120):
	case ((NU8) 115):
	case ((NU8) 116):
	case ((NU8) 117):
	case ((NU8) 118):
	case ((NU8) 119):
	case ((NU8) 83):
	case ((NU8) 82):
	{
	}
	break;
	case ((NU8) 90):
	{
		genpragma_488120(p, n);
	}
	break;
	case ((NU8) 79):
	case ((NU8) 80):
	case ((NU8) 81):
	{
		{
			tsym188833* prc;
			if (!((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 1))) goto LA212;
			prc = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
			{
				tsym188833* LOC216;
				LOC216 = 0;
				LOC216 = skipgenericowner_194972(prc);
				if (!((*LOC216).Kind == ((NU8) 6))) goto LA217;
				{
					NIM_BOOL LOC221;
					NIM_BOOL LOC222;
					NIM_BOOL LOC223;
					NIM_BOOL LOC224;
					tsym188833* LOC226;
					NIM_BOOL LOC229;
					LOC221 = 0;
					LOC222 = 0;
					LOC223 = 0;
					LOC224 = 0;
					LOC224 = !(((gglobaloptions_137111 &(1<<((((NU8) 2))&31)))!=0));
					if (!(LOC224)) goto LA225;
					LOC226 = 0;
					LOC226 = getmodule_197183(prc);
					LOC224 = !((((*LOC226).Flags &(1<<((((NU8) 25))&31)))!=0));
					LA225: ;
					LOC223 = LOC224;
					if (LOC223) goto LA227;
					LOC223 = ((65600 & (*prc).Flags) == 64);
					LA227: ;
					LOC222 = LOC223;
					if (LOC222) goto LA228;
					LOC229 = 0;
					LOC229 = (((*prc).Flags &(1<<((((NU8) 6))&31)))!=0);
					if (!(LOC229)) goto LA230;
					LOC229 = (((*prc).Loc.Flags &(1<<((((NU8) 5))&7)))!=0);
					LA230: ;
					LOC222 = LOC229;
					LA228: ;
					LOC221 = LOC222;
					if (LOC221) goto LA231;
					LOC221 = ((*prc).Kind == ((NU8) 13));
					LA231: ;
					if (!LOC221) goto LA232;
					{
						NIM_BOOL LOC236;
						tnode188803* LOC237;
						LOC236 = 0;
						LOC237 = 0;
						LOC237 = getbody_239244(prc);
						LOC236 = !(((*LOC237).Kind == ((NU8) 1)));
						if (LOC236) goto LA238;
						LOC236 = (((*prc).Loc.Flags &(1<<((((NU8) 4))&7)))!=0);
						LA238: ;
						if (!LOC236) goto LA239;
						genproc_476482((*p).Module, prc);
					}
					LA239: ;
				}
				LA232: ;
			}
			LA217: ;
		}
		LA212: ;
	}
	break;
	case ((NU8) 95):
	{
		genparforstmt_483645(p, n);
	}
	break;
	case ((NU8) 155):
	{
		genstate_481289(p, n);
	}
	break;
	case ((NU8) 154):
	{
		gengotostate_481380(p, n);
	}
	break;
	case ((NU8) 156):
	{
		genbreakstate_481475(p, n);
	}
	break;
	default:
	{
		NimStringDesc* LOC246;
		LOC246 = 0;
		LOC246 = rawNewString(reprEnum((*n).Kind, (&NTI188023))->Sup.len + 25);
appendString(LOC246, ((NimStringDesc*) &TMP3385));
appendString(LOC246, reprEnum((*n).Kind, (&NTI188023)));
appendString(LOC246, ((NimStringDesc*) &TMP3746));
		internalerror_165591((*n).Info, LOC246);
	}
	break;
	}
}

N_NIMCALL(void, genstmts_476487)(tcproc465026* p, tnode188803* t) {
	tloc188817 a;
	memset((void*)&a, 0, sizeof(a));
	expr_476492(p, t, &a);
	{
		NimStringDesc* LOC5;
		if (!!(((7 &(1<<((a.K)&15)))!=0))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_165714(TMP3747);
		internalerror_165606(LOC5);
	}
	LA3: ;
}

N_NIMCALL(trope145007*, initgcframe_475402)(tcproc465026* p) {
	trope145007* result;
	result = 0;
	{
		TY145497 LOC5;
		if (!(0 < ((NI) ((*p).Gcframeid)))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = (*p).Gcframetype;
		result = ropef_145079(((NimStringDesc*) &TMP3751), LOC5, 1);
	}
	LA3: ;
	return result;
}

N_NIMCALL(trope145007*, initframe_502533)(tcproc465026* p, trope145007* procname, trope145007* filename) {
	trope145007* result;
	trope145007* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_468604((*p).Module, ((NimStringDesc*) &TMP3752));
	{
		trope145007* LOC6;
		TY471942 LOC7;
		if (!(0 < (*p).Maxframelen)) goto LA4;
		LOC6 = 0;
		LOC6 = cgsym_468604((*p).Module, ((NimStringDesc*) &TMP3753));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = procname;
		LOC7[1] = filename;
		LOC7[2] = torope_145062(((NI64) ((*p).Maxframelen)));
		LOC7[3] = torope_145062(((NI64) ((*p).Blocks->data[0].Framelen)));
		result = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3754), LOC7, 4);
	}
	goto LA2;
	LA4: ;
	{
		TY503234 LOC9;
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = procname;
		LOC9[1] = filename;
		result = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3755), LOC9, 2);
	}
	LA2: ;
	return result;
}

N_NIMCALL(void, appcg_469022)(tcproc465026* p, NU8 s, NimStringDesc* frmt, trope145007** args, NI argsLen0) {
	trope145007** LOC1;
	trope145007* LOC2;
	LOC1 = 0;
	LOC1 = s_465173(p, s);
	LOC2 = 0;
	LOC2 = ropecg_468609((*p).Module, frmt, args, argsLen0);
	app_145040(LOC1, LOC2);
}

N_NIMCALL(trope145007*, deinitgcframe_475413)(tcproc465026* p) {
	trope145007* result;
	result = 0;
	{
		TY469906 LOC5;
		if (!(0 < ((NI) ((*p).Gcframeid)))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		result = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3758), LOC5, 0);
	}
	LA3: ;
	return result;
}

N_NIMCALL(trope145007*, deinitframe_502550)(tcproc465026* p) {
	trope145007* result;
	TY469906 LOC1;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	result = ropecg_468609((*p).Module, ((NimStringDesc*) &TMP3759), LOC1, 0);
	return result;
}

N_NIMCALL(void, genprocaux_502611)(tcgen465030* m, tsym188833* prc) {
	tcproc465026* p;
	trope145007* header;
	trope145007* returnstmt;
	NI i_503042;
	NI HEX3Atmp_503192;
	NI LOC28;
	NI res_503194;
	tnode188803* LOC36;
	trope145007* generatedproc;
	p = newproc_465208(prc, m);
	header = genprocheader_472308(m, prc);
	returnstmt = NIM_NIL;
	{
		NIM_BOOL LOC3;
		tsym188833* res;
		LOC3 = 0;
		LOC3 = !((((*prc).Flags &(1<<((((NU8) 9))&31)))!=0));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*(*prc).Typ).Sons->data[0] == NIM_NIL));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_189264((*prc).Ast);
			if (!(LOC9 <= 7)) goto LA10;
			internalerror_165591((*prc).Info, ((NimStringDesc*) &TMP3237));
		}
		LA10: ;
		res = (*(*(*prc).Ast).kindU.S6.Sons->data[7]).kindU.S4.Sym;
		{
			NIM_BOOL LOC14;
			TY145497 LOC21;
			LOC14 = 0;
			LOC14 = isinvalidreturntype_470314((*(*prc).Typ).Sons->data[0]);
			if (!!(LOC14)) goto LA15;
			{
				if (!(((*prc).Flags &(1<<((((NU8) 12))&31)))!=0)) goto LA19;
				(*res).Flags |=((NI32)(1)<<((((NU8) 12))%(sizeof(NI32)*8)));
			}
			LA19: ;
			assignlocalvar_475781(p, res);
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = rdloc_474964(&(*res).Loc);
			returnstmt = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3333), LOC21, 1);
			initlocalvar_475217(p, res, NIM_FALSE);
		}
		goto LA12;
		LA15: ;
		{
			fillresult_470486(res);
			assignparam_476314(p, res);
			{
				ttype188837* LOC25;
				LOC25 = 0;
				LOC25 = skiptypes_192793((*res).Typ, IL64(211106232576256));
				if (!((*LOC25).Kind == ((NU8) 16))) goto LA26;
				(*res).Loc.Flags |=((NI8)(1)<<((((NU8) 0))%(sizeof(NI8)*8)));
				(*res).Loc.S = ((NU8) 0);
			}
			LA26: ;
		}
		LA12: ;
	}
	LA5: ;
	i_503042 = 0;
	HEX3Atmp_503192 = 0;
	LOC28 = 0;
	LOC28 = sonslen_189181((*(*prc).Typ).N);
	HEX3Atmp_503192 = (NI32)(LOC28 - 1);
	res_503194 = 1;
	while (1) {
		if (!(res_503194 <= HEX3Atmp_503192)) goto LA29;
		i_503042 = res_503194;
		{
			tsym188833* param;
			param = (*(*(*(*prc).Typ).N).kindU.S6.Sons->data[i_503042]).kindU.S4.Sym;
			{
				NIM_BOOL LOC33;
				LOC33 = 0;
				LOC33 = iscompiletimeonly_233237((*param).Typ);
				if (!LOC33) goto LA34;
				goto LA30;
			}
			LA34: ;
			assignparam_476314(p, param);
		} LA30: ;
		res_503194 += 1;
	} LA29: ;
	closuresetup_502563(p, prc);
	LOC36 = 0;
	LOC36 = getbody_239244(prc);
	genstmts_476487(p, LOC36);
	generatedproc = 0;
	{
		TY471942 LOC45;
		trope145007** LOC46;
		trope145007** LOC47;
		trope145007** LOC48;
		if (!(((*prc).Flags &(1<<((((NU8) 9))&31)))!=0)) goto LA39;
		{
			if (!((cc_169402[(ccompiler_169425)- 1].Field20 &(1<<((((NU8) 6))&7)))!=0)) goto LA43;
			header = con_145030(((NimStringDesc*) &TMP3748), header);
		}
		LA43: ;
		memset((void*)LOC45, 0, sizeof(LOC45));
		LOC45[0] = header;
		LOC46 = 0;
		LOC46 = s_465173(p, ((NU8) 0));
		unsureAsgnRef((void**) &LOC45[1], (*LOC46));
		LOC47 = 0;
		LOC47 = s_465173(p, ((NU8) 1));
		unsureAsgnRef((void**) &LOC45[2], (*LOC47));
		LOC48 = 0;
		LOC48 = s_465173(p, ((NU8) 2));
		unsureAsgnRef((void**) &LOC45[3], (*LOC48));
		generatedproc = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3749), LOC45, 4);
	}
	goto LA37;
	LA39: ;
	{
		TY145497 LOC50;
		trope145007* LOC51;
		trope145007** LOC68;
		trope145007** LOC69;
		trope145007* LOC76;
		TY469906 LOC82;
		trope145007* LOC83;
		memset((void*)LOC50, 0, sizeof(LOC50));
		LOC50[0] = header;
		generatedproc = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3750), LOC50, 1);
		LOC51 = 0;
		LOC51 = initgcframe_475402(p);
		app_145040(&generatedproc, LOC51);
		{
			trope145007** LOC56;
			trope145007* procname;
			trope145007* LOC57;
			trope145007* LOC58;
			if (!(((*prc).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA54;
			LOC56 = 0;
			LOC56 = s_465173(p, ((NU8) 0));
			app_145040(&generatedproc, (*LOC56));
			procname = cstringlit_475427(p, &generatedproc, (*(*prc).Name).S);
			LOC57 = 0;
			LOC57 = quotedfilename_165750((*prc).Info);
			LOC58 = 0;
			LOC58 = initframe_502533(p, procname, LOC57);
			app_145040(&generatedproc, LOC58);
		}
		goto LA52;
		LA54: ;
		{
			trope145007** LOC60;
			LOC60 = 0;
			LOC60 = s_465173(p, ((NU8) 0));
			app_145040(&generatedproc, (*LOC60));
		}
		LA52: ;
		{
			NIM_BOOL LOC63;
			TY469906 LOC67;
			LOC63 = 0;
			LOC63 = (((*prc).Options &(1<<((((NU8) 19))&31)))!=0);
			if (!(LOC63)) goto LA64;
			LOC63 = !((gcmd_137113 == ((NU8) 5)));
			LA64: ;
			if (!LOC63) goto LA65;
			memset((void*)LOC67, 0, sizeof(LOC67));
			appcg_469022(p, ((NU8) 1), ((NimStringDesc*) &TMP3756), LOC67, 0);
		}
		LA65: ;
		LOC68 = 0;
		LOC68 = s_465173(p, ((NU8) 1));
		app_145040(&generatedproc, (*LOC68));
		LOC69 = 0;
		LOC69 = s_465173(p, ((NU8) 2));
		app_145040(&generatedproc, (*LOC69));
		{
			TY469906 LOC74;
			trope145007* LOC75;
			if (!(*p).Beforeretneeded) goto LA72;
			memset((void*)LOC74, 0, sizeof(LOC74));
			LOC75 = 0;
			LOC75 = ropef_145079(((NimStringDesc*) &TMP3757), LOC74, 0);
			app_145040(&generatedproc, LOC75);
		}
		LA72: ;
		LOC76 = 0;
		LOC76 = deinitgcframe_475413(p);
		app_145040(&generatedproc, LOC76);
		{
			trope145007* LOC81;
			if (!(((*prc).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA79;
			LOC81 = 0;
			LOC81 = deinitframe_502550(p);
			app_145040(&generatedproc, LOC81);
		}
		LA79: ;
		app_145040(&generatedproc, returnstmt);
		memset((void*)LOC82, 0, sizeof(LOC82));
		LOC83 = 0;
		LOC83 = ropef_145079(((NimStringDesc*) &TMP3760), LOC82, 0);
		app_145040(&generatedproc, LOC83);
	}
	LA37: ;
	app_145040(&(*m).S[(((NU8) 10))- 0], generatedproc);
}

N_NIMCALL(NIM_BOOL, isgetprocaddr_501592)(tlib188821* lib) {
	NIM_BOOL result;
	tnode188803* 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_502205)(tcgen465030* m, tsym188833* sym) {
	tlib188821* lib;
	NIM_BOOL iscall;
	trope145007* extname;
	trope145007* tmp;
	TY503234 LOC45;
	lib = (*sym).Annex;
	iscall = isgetprocaddr_501592(lib);
	extname = (*sym).Loc.R;
	{
		if (!!(iscall)) goto LA3;
		loaddynamiclib_501643(m, lib);
	}
	LA3: ;
	{
		if (!(gcmd_137113 == ((NU8) 5))) goto LA7;
		(*sym).Loc.Flags |=((NI8)(1)<<((((NU8) 0))%(sizeof(NI8)*8)));
	}
	LA7: ;
	tmp = mangledynlibproc_476099(sym);
	asgnRefNoCycle((void**) &(*sym).Loc.R, tmp);
	asgnRefNoCycle((void**) &(*(*sym).Typ).Sym, NIM_NIL);
	(*m).Labels += 2;
	{
		tnode188803* n;
		tloc188817 a;
		tnode188803* LOC13;
		trope145007* params;
		trope145007* LOC14;
		NI i_502270;
		NI HEX3Atmp_502371;
		NI LOC15;
		NI res_502373;
		trope145007* load;
		TY471942 LOC19;
		NimStringDesc* LOC20;
		tnode188803* last;
		NimStringDesc* idx;
		if (!iscall) goto LA11;
		n = (*lib).Path;
		memset((void*)&a, 0, sizeof(a));
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_189694(n, 0);
		initlocexpr_476527((*m).Initproc, LOC13, &a);
		LOC14 = 0;
		LOC14 = rdloc_474964(&a);
		params = con_145025(LOC14, ((NimStringDesc*) &TMP3188));
		i_502270 = 0;
		HEX3Atmp_502371 = 0;
		LOC15 = 0;
		LOC15 = len_189264(n);
		HEX3Atmp_502371 = (NI32)(LOC15 - 2);
		res_502373 = 1;
		while (1) {
			tnode188803* LOC17;
			trope145007* LOC18;
			if (!(res_502373 <= HEX3Atmp_502371)) goto LA16;
			i_502270 = res_502373;
			LOC17 = 0;
			LOC17 = HEX5BHEX5D_189694(n, i_502270);
			initlocexpr_476527((*m).Initproc, LOC17, &a);
			LOC18 = 0;
			LOC18 = rdloc_474964(&a);
			app_145040(&params, LOC18);
			app_145046(&params, ((NimStringDesc*) &TMP3178));
			res_502373 += 1;
		} LA16: ;
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = tmp;
		LOC19[1] = gettypedesc_472091(m, (*sym).Typ);
		LOC19[2] = params;
		LOC20 = 0;
		LOC20 = ropetostr_145075(extname);
		LOC19[3] = cstringlit_475490(m, &(*m).S[(((NU8) 16))- 0], LOC20);
		load = ropef_145079(((NimStringDesc*) &TMP3761), LOC19, 4);
		last = lastson_189189(n);
		{
			if (!((*last).Kind == ((NU8) 58))) goto LA23;
			last = (*last).kindU.S6.Sons->data[1];
		}
		LA23: ;
		{
			NimStringDesc* LOC29;
			if (!!(((*last).Kind == ((NU8) 20)))) goto LA27;
			LOC29 = 0;
			LOC29 = HEX24_165714(TMP3762);
			internalerror_165606(LOC29);
		}
		LA27: ;
		idx = (*last).kindU.S3.Strval;
		{
			trope145007** LOC34;
			if (!(idx->Sup.len == 0)) goto LA32;
			LOC34 = 0;
			LOC34 = s_465173((*m).Initproc, ((NU8) 2));
			app_145040(LOC34, load);
		}
		goto LA30;
		LA32: ;
		{
			NIM_BOOL LOC36;
			LOC36 = 0;
			LOC36 = (idx->Sup.len == 1);
			if (!(LOC36)) goto LA37;
			LOC36 = (((NU8)(idx->data[0])) >= ((NU8)(48)) && ((NU8)(idx->data[0])) <= ((NU8)(57)));
			LA37: ;
			if (!LOC36) goto LA38;
			app_145040(&(*m).Extensionloaders[(((NU8)(idx->data[0])))- 48], load);
		}
		goto LA30;
		LA38: ;
		{
			NimStringDesc* LOC41;
			LOC41 = 0;
			LOC41 = rawNewString(idx->Sup.len + 13);
appendString(LOC41, ((NimStringDesc*) &TMP3763));
appendString(LOC41, idx);
			internalerror_165591((*sym).Info, LOC41);
		}
		LA30: ;
	}
	goto LA9;
	LA11: ;
	{
		TY471942 LOC43;
		NimStringDesc* LOC44;
		memset((void*)LOC43, 0, sizeof(LOC43));
		LOC43[0] = tmp;
		LOC43[1] = gettypedesc_472091(m, (*sym).Typ);
		LOC43[2] = (*lib).Name;
		LOC44 = 0;
		LOC44 = ropetostr_145075(extname);
		LOC43[3] = cstringlit_475490(m, &(*m).S[(((NU8) 16))- 0], LOC44);
		appcg_469002(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP3764), LOC43, 4);
	}
	LA9: ;
	memset((void*)LOC45, 0, sizeof(LOC45));
	LOC45[0] = (*sym).Loc.R;
	LOC45[1] = gettypedesc_472091(m, (*sym).Loc.T);
	appff_468223(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3765), ((NimStringDesc*) &TMP3766), LOC45, 2);
}

N_NIMCALL(void, symindynamiclibpartial_502430)(tcgen465030* m, tsym188833* sym) {
	asgnRefNoCycle((void**) &(*sym).Loc.R, mangledynlibproc_476099(sym));
	asgnRefNoCycle((void**) &(*(*sym).Typ).Sym, NIM_NIL);
}

N_NIMCALL(void, genprocnoforward_503298)(tcgen465030* m, tsym188833* prc) {
	fillprocloc_476425(prc);
	useheader_468432(m, prc);
	{
		trope145007* LOC5;
		if (!(((*prc).Loc.Flags &(1<<((((NU8) 7))&7)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = cgsym_468604(m, (*(*prc).Name).S);
		goto BeforeRet;
	}
	LA3: ;
	genprocprototype_476499(m, prc);
	{
		if (!(((*prc).Loc.Flags &(1<<((((NU8) 3))&7)))!=0)) goto LA8;
	}
	goto LA6;
	LA8: ;
	{
		if (!((*(*prc).Typ).Callconv == ((NU8) 5))) goto LA11;
		{
			NIM_BOOL LOC15;
			LOC15 = 0;
			LOC15 = containsorincl_185888(&(*m).Declaredthings, (*prc).Sup.Id);
			if (!!(LOC15)) goto LA16;
			genprocaux_502611(m, prc);
		}
		LA16: ;
	}
	goto LA6;
	LA11: ;
	{
		tcgen465030* q;
		if (!(((*prc).Loc.Flags &(1<<((((NU8) 4))&7)))!=0)) goto LA19;
		q = findpendingmodule_468300(m, prc);
		{
			NIM_BOOL LOC23;
			NIM_BOOL LOC25;
			LOC23 = 0;
			LOC23 = !((q == NIM_NIL));
			if (!(LOC23)) goto LA24;
			LOC25 = 0;
			LOC25 = containsorincl_185888(&(*q).Declaredthings, (*prc).Sup.Id);
			LOC23 = !(LOC25);
			LA24: ;
			if (!LOC23) goto LA26;
			symindynamiclib_502205(q, prc);
		}
		goto LA21;
		LA26: ;
		{
			symindynamiclibpartial_502430(m, prc);
		}
		LA21: ;
	}
	goto LA6;
	LA19: ;
	{
		tcgen465030* q;
		if (!!((((*prc).Flags &(1<<((((NU8) 5))&31)))!=0))) goto LA30;
		q = findpendingmodule_468300(m, prc);
		{
			NIM_BOOL LOC34;
			NIM_BOOL LOC36;
			LOC34 = 0;
			LOC34 = !((q == NIM_NIL));
			if (!(LOC34)) goto LA35;
			LOC36 = 0;
			LOC36 = containsorincl_185888(&(*q).Declaredthings, (*prc).Sup.Id);
			LOC34 = !(LOC36);
			LA35: ;
			if (!LOC34) goto LA37;
			genprocaux_502611(q, prc);
		}
		LA37: ;
	}
	goto LA6;
	LA30: ;
	LA6: ;
	BeforeRet: ;
}

N_NIMCALL(void, genproc_476482)(tcgen465030* m, tsym188833* prc) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = 0;
		LOC3 = (((*prc).Flags &(1<<((((NU8) 26))&31)))!=0);
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = isactivated_503840(prc);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		goto BeforeRet;
	}
	LA6: ;
	fillprocloc_476425(prc);
	{
		if (!(((*prc).Flags &(1<<((((NU8) 4))&31)))!=0)) goto LA10;
		addforwardedproc_468242(m, prc);
	}
	goto LA8;
	LA10: ;
	{
		genprocnoforward_503298(m, prc);
		{
			NIM_BOOL LOC15;
			NIM_BOOL LOC16;
			LOC15 = 0;
			LOC16 = 0;
			LOC16 = ((65600 & (*prc).Flags) == 64);
			if (!(LOC16)) goto LA17;
			LOC16 = !((generatedheader_468202 == NIM_NIL));
			LA17: ;
			LOC15 = LOC16;
			if (!(LOC15)) goto LA18;
			LOC15 = !((((*prc).Loc.Flags &(1<<((((NU8) 3))&7)))!=0));
			LA18: ;
			if (!LOC15) goto LA19;
			genprocprototype_476499(generatedheader_468202, prc);
			{
				if (!((*(*prc).Typ).Callconv == ((NU8) 5))) goto LA23;
				{
					NIM_BOOL LOC27;
					LOC27 = 0;
					LOC27 = containsorincl_185888(&(*generatedheader_468202).Declaredthings, (*prc).Sup.Id);
					if (!!(LOC27)) goto LA28;
					genprocaux_502611(generatedheader_468202, prc);
				}
				LA28: ;
			}
			LA23: ;
		}
		LA19: ;
	}
	LA8: ;
	BeforeRet: ;
}

N_NIMCALL(trope145007*, cgsym_468604)(tcgen465030* m, NimStringDesc* name) {
	trope145007* result;
	tsym188833* sym;
	result = 0;
	sym = getcompilerproc_242028(name);
	{
		if (!!((sym == NIM_NIL))) goto LA3;
		switch ((*sym).Kind) {
		case ((NU8) 12):
		case ((NU8) 13):
		case ((NU8) 16):
		case ((NU8) 14):
		case ((NU8) 15):
		{
			genproc_476482(m, sym);
		}
		break;
		case ((NU8) 8):
		case ((NU8) 11):
		case ((NU8) 9):
		{
			genvarprototype_476472(m, sym);
		}
		break;
		case ((NU8) 7):
		{
			trope145007* LOC8;
			LOC8 = 0;
			LOC8 = gettypedesc_472091(m, (*sym).Typ);
		}
		break;
		default:
		{
			NimStringDesc* LOC10;
			LOC10 = 0;
			LOC10 = rawNewString(name->Sup.len + 7);
appendString(LOC10, ((NimStringDesc*) &TMP3767));
appendString(LOC10, name);
			internalerror_165606(LOC10);
		}
		break;
		}
	}
	goto LA1;
	LA3: ;
	{
		rawmessage_165386(((NU16) 64), name);
	}
	LA1: ;
	result = (*sym).Loc.R;
	return result;
}

N_NIMCALL(trope145007*, ropecg_468609)(tcgen465030* m, NimStringDesc* frmt, trope145007** args, NI argsLen0) {
	trope145007* result;
	NI i;
	NI length;
	NI num;
	result = 0;
	i = 0;
	length = frmt->Sup.len;
	result = NIM_NIL;
	num = 0;
	while (1) {
		NI start;
		if (!(i < length)) goto LA1;
		{
			if (!((NU8)(frmt->data[i]) == (NU8)(36))) goto LA4;
			i += 1;
			switch (((NU8)(frmt->data[i]))) {
			case 36:
			{
				app_145046(&result, ((NimStringDesc*) &TMP3127));
				i += 1;
			}
			break;
			case 35:
			{
				i += 1;
				app_145040(&result, args[num]);
				num += 1;
			}
			break;
			case 48 ... 57:
			{
				NI j;
				j = 0;
				while (1) {
					j = (NI32)((NI32)((NI32)(j * 10) + ((NI) (((NU8)(frmt->data[i]))))) - 48);
					i += 1;
					{
						NIM_BOOL LOC12;
						LOC12 = 0;
						LOC12 = (length <= i);
						if (LOC12) goto LA13;
						LOC12 = !((((NU8)(frmt->data[i])) >= ((NU8)(48)) && ((NU8)(frmt->data[i])) <= ((NU8)(57))));
						LA13: ;
						if (!LOC12) goto LA14;
						goto LA9;
					}
					LA14: ;
				} LA9: ;
				num = j;
				{
					NimStringDesc* LOC20;
					NimStringDesc* LOC21;
					if (!((NI32)((argsLen0-1) + 1) < j)) goto LA18;
					LOC20 = 0;
					LOC21 = 0;
					LOC21 = nimIntToStr(j);
					LOC20 = rawNewString(LOC21->Sup.len + 30);
appendString(LOC20, ((NimStringDesc*) &TMP3128));
appendString(LOC20, LOC21);
					internalerror_165606(LOC20);
				}
				LA18: ;
				app_145040(&result, args[(NI32)(j - 1)]);
			}
			break;
			case 110:
			{
				{
					if (!!(((goptions_137108 &(1<<((((NU8) 10))&31)))!=0))) goto LA25;
					app_145040(&result, rnl_146434);
				}
				LA25: ;
				i += 1;
			}
			break;
			case 78:
			{
				app_145040(&result, rnl_146434);
				i += 1;
			}
			break;
			default:
			{
				NimStringDesc* LOC29;
				LOC29 = 0;
				LOC29 = rawNewString(31);
appendString(LOC29, ((NimStringDesc*) &TMP3128));
appendChar(LOC29, frmt->data[i]);
				internalerror_165606(LOC29);
			}
			break;
			}
		}
		goto LA2;
		LA4: ;
		{
			NIM_BOOL LOC31;
			NI j;
			NimStringDesc* ident;
			trope145007* LOC36;
			LOC31 = 0;
			LOC31 = ((NU8)(frmt->data[i]) == (NU8)(35));
			if (!(LOC31)) goto LA32;
			LOC31 = (((NU8)(frmt->data[(NI32)(i + 1)])) >= ((NU8)(97)) && ((NU8)(frmt->data[(NI32)(i + 1)])) <= ((NU8)(122)) || ((NU8)(frmt->data[(NI32)(i + 1)])) >= ((NU8)(65)) && ((NU8)(frmt->data[(NI32)(i + 1)])) <= ((NU8)(90)) || ((NU8)(frmt->data[(NI32)(i + 1)])) == ((NU8)(95)));
			LA32: ;
			if (!LOC31) goto LA33;
			i += 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 LA35;
				j += 1;
			} LA35: ;
			ident = copyStrLast(frmt, i, (NI32)(j - 1));
			i = j;
			LOC36 = 0;
			LOC36 = cgsym_468604(m, ident);
			app_145040(&result, LOC36);
		}
		goto LA2;
		LA33: ;
		{
			NIM_BOOL LOC38;
			NI j;
			NimStringDesc* LOC43;
			trope145007* LOC44;
			LOC38 = 0;
			LOC38 = ((NU8)(frmt->data[i]) == (NU8)(35));
			if (!(LOC38)) goto LA39;
			LOC38 = ((NU8)(frmt->data[(NI32)(i + 1)]) == (NU8)(36));
			LA39: ;
			if (!LOC38) goto LA40;
			i += 2;
			j = 0;
			while (1) {
				if (!(((NU8)(frmt->data[i])) >= ((NU8)(48)) && ((NU8)(frmt->data[i])) <= ((NU8)(57)))) goto LA42;
				j = (NI32)((NI32)((NI32)(j * 10) + ((NI) (((NU8)(frmt->data[i]))))) - 48);
				i += 1;
			} LA42: ;
			LOC43 = 0;
			LOC43 = ropetostr_145075(args[(NI32)(j - 1)]);
			LOC44 = 0;
			LOC44 = cgsym_468604(m, LOC43);
			app_145040(&result, LOC44);
		}
		goto LA2;
		LA40: ;
		LA2: ;
		start = i;
		while (1) {
			if (!(i < length)) goto LA45;
			{
				NIM_BOOL LOC48;
				LOC48 = 0;
				LOC48 = !(((NU8)(frmt->data[i]) == (NU8)(36)));
				if (!(LOC48)) goto LA49;
				LOC48 = !(((NU8)(frmt->data[i]) == (NU8)(35)));
				LA49: ;
				if (!LOC48) goto LA50;
				i += 1;
			}
			goto LA46;
			LA50: ;
			{
				goto LA45;
			}
			LA46: ;
		} LA45: ;
		{
			NimStringDesc* LOC57;
			if (!(start <= (NI32)(i - 1))) goto LA55;
			LOC57 = 0;
			LOC57 = copyStrLast(frmt, start, (NI32)(i - 1));
			app_145046(&result, LOC57);
		}
		LA55: ;
	} LA1: ;
	return result;
}

N_NIMCALL(trope145007*, gettempname_470368)(void) {
	trope145007* result;
	TY145497 LOC1;
	NI LOC2;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = backendid_187423();
	LOC1[0] = torope_145062(((NI64) (LOC2)));
	result = ropecg_468609(NIM_NIL, ((NimStringDesc*) &TMP3261), LOC1, 1);
	return result;
}

N_NIMCALL(tcgen465030*, rawnewmodule_505227)(tsym188833* module, NimStringDesc* filename) {
	tcgen465030* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	result = (tcgen465030*) newObj((&NTI465020), sizeof(tcgen465030));
	(*result).Sup.Sup.m_type = (&NTI465030);
	initlinkedlist_118036(&(*result).Headerfiles);
	initintset_185918(&(*result).Declaredthings);
	initintset_185918(&(*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_189120(&(*result).Typecache);
	initidtable_189120(&(*result).Forwtypecache);
	asgnRefNoCycle((void**) &(*result).Module, module);
	initintset_185918(&(*result).Typeinfomarker);
	asgnRef((void**) &(*result).Initproc, newproc_465208(NIM_NIL, result));
	(*(*result).Initproc).Options = initprocoptions_505190(result);
	asgnRef((void**) &(*result).Preinitproc, newpreinitproc_505176(result));
	asgnRef((void**) &(*result).Postinitproc, newpostinitproc_505183(result));
	initnodetable_189135(&(*result).Datacache);
	if ((*result).Typestack) nimGCunrefNoCycle((*result).Typestack);
	(*result).Typestack = (ttypeseq188835*) newSeqRC1((&NTI188835), 0);
	if ((*result).Forwardedprocs) nimGCunrefNoCycle((*result).Forwardedprocs);
	(*result).Forwardedprocs = (tsymseq188805*) newSeqRC1((&NTI188805), 0);
	asgnRefNoCycle((void**) &(*result).Typenodesname, gettempname_470368());
	asgnRefNoCycle((void**) &(*result).Nimtypesname, gettempname_470368());
	{
		if (!(((*module).Flags &(1<<((((NU8) 13))&31)))!=0)) goto LA5;
		(*result).Preventstacktrace = NIM_TRUE;
		(*(*result).Preinitproc).Options &= ~((NI32)(1) << ((((NU8) 15)) % (sizeof(NI32)*8)));
		(*(*result).Postinitproc).Options &= ~((NI32)(1) << ((((NU8) 15)) % (sizeof(NI32)*8)));
	}
	LA5: ;
	return result;
}

N_NIMCALL(tcgen465030*, rawnewmodule_505496)(tsym188833* module) {
	tcgen465030* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = tofullpath_164788(((NI32) ((*module).Position)));
	result = rawnewmodule_505227(module, LOC1);
	return result;
}

N_NIMCALL(tcgen465030*, newmodule_505503)(tsym188833* module) {
	tcgen465030* result;
	result = 0;
	{
		tcgen465030* LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = getcgenmodule_468282(module);
		if (!!((LOC3 == NIM_NIL))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX24_165714(TMP3125);
		internalerror_165606(LOC6);
	}
	LA4: ;
	result = rawnewmodule_505496(module);
	{
		if (!(gmodules_465163->Sup.len <= (*module).Position)) goto LA9;
		gmodules_465163 = (TY465142*) setLengthSeq(&(gmodules_465163)->Sup, sizeof(tcgen465030*), (NI32)((*module).Position + 1));
	}
	LA9: ;
	asgnRef((void**) &gmodules_465163->data[(*module).Position], result);
	{
		if (!((gglobaloptions_137111 &(1<<((((NU8) 2))&31)))!=0)) goto LA13;
		{
			NimStringDesc* LOC19;
			NimStringDesc* LOC20;
			if (!(((*module).Flags &(1<<((((NU8) 25))&31)))!=0)) goto LA17;
			LOC19 = 0;
			LOC20 = 0;
			LOC20 = tofilename_164780(((NI32) ((*module).Position)));
			LOC19 = rawNewString(LOC20->Sup.len + 28);
appendString(LOC19, ((NimStringDesc*) &TMP3768));
appendString(LOC19, LOC20);
			internalerror_165606(LOC19);
		}
		LA17: ;
	}
	LA13: ;
	return result;
}

N_NIMCALL(tpasscontext246003*, myopen_505605)(tsym188833* module) {
	tpasscontext246003* result;
	tcgen465030* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = newmodule_505503(module);
	result = &LOC1->Sup;
	{
		NIM_BOOL LOC4;
		NimStringDesc* f;
		NimStringDesc* LOC13;
		NimStringDesc* LOC14;
		LOC4 = 0;
		LOC4 = ((gglobaloptions_137111 &(1<<((((NU8) 30))&31)))!=0);
		if (!(LOC4)) goto LA5;
		LOC4 = (generatedheader_468202 == NIM_NIL);
		LA5: ;
		if (!LOC4) goto LA6;
		{
			if (!(0 < headerfile_137119->Sup.len)) goto LA10;
			f = headerfile_137119;
		}
		goto LA8;
		LA10: ;
		{
			f = gprojectfull_137208;
		}
		LA8: ;
		LOC13 = 0;
		LOC13 = completecfilepath_169753(f, NIM_TRUE);
		LOC14 = 0;
		LOC14 = noschangeFileExt(LOC13, ((NimStringDesc*) &TMP3769));
		asgnRef((void**) &generatedheader_468202, rawnewmodule_505227(module, LOC14));
		(*generatedheader_468202).Isheaderfile = NIM_TRUE;
	}
	LA6: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getcfile_505708)(tcgen465030* m) {
	NimStringDesc* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = withpackagename_137873((*m).Cfilename);
	LOC2 = 0;
	LOC2 = completecfilepath_169753(LOC1, NIM_TRUE);
	result = noschangeFileExt(LOC2, cext_169426);
	return result;
}

N_NIMCALL(tpasscontext246003*, myopencached_505714)(tsym188833* module, trodreader236024* rd) {
	tpasscontext246003* result;
	tcgen465030* m;
	NimStringDesc* LOC1;
	result = 0;
	m = newmodule_505503(module);
	LOC1 = 0;
	LOC1 = getcfile_505708(m);
	readmergeinfo_466813(LOC1, m);
	result = &m->Sup;
	return result;
}

static N_INLINE(NIM_BOOL, skipcodegen_246074)(tnode188803* n) {
	NIM_BOOL result;
	result = 0;
	result = (0 < gerrorcounter_164182);
	return result;
}

N_NIMCALL(tnode188803*, myprocess_505804)(tpasscontext246003* b, tnode188803* n) {
	tnode188803* result;
	tcgen465030* m;
	result = 0;
	result = n;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (b == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = skipcodegen_246074(n);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	m = ((tcgen465030*) (b));
	(*(*m).Initproc).Options = initprocoptions_505190(m);
	genstmts_476487((*m).Initproc, n);
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope145007*, getsomeinitname_504563)(tsym188833* m, NimStringDesc* suffix) {
	trope145007* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!((12288 & (*m).Flags) == 0)) goto LA3;
		LOC5 = 0;
		LOC5 = mangle_469704((*(*(*m).Owner).Name).S);
		result = torope_145058(LOC5);
	}
	LA3: ;
	app_145046(&result, (*(*m).Name).S);
	app_145046(&result, suffix);
	return result;
}

N_NIMCALL(trope145007*, getinitname_504842)(tsym188833* m) {
	trope145007* result;
	result = 0;
	result = getsomeinitname_504563(m, ((NimStringDesc*) &TMP3779));
	return result;
}

N_NIMCALL(trope145007*, getdatinitname_504848)(tsym188833* m) {
	trope145007* result;
	result = 0;
	result = getsomeinitname_504563(m, ((NimStringDesc*) &TMP3780));
	return result;
}

N_NIMCALL(trope145007*, ropeff_468205)(NimStringDesc* cformat, NimStringDesc* llvmformat, trope145007** args, NI argsLen0) {
	trope145007* result;
	result = 0;
	{
		if (!(gcmd_137113 == ((NU8) 5))) goto LA3;
		result = ropef_145079(llvmformat, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		result = ropef_145079(cformat, args, argsLen0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, registermoduletomain_504854)(tsym188833* m) {
	trope145007* init;
	trope145007* datinit;
	TY145497 LOC1;
	TY145497 LOC2;
	init = getinitname_504842(m);
	datinit = getdatinitname_504848(m);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = init;
	appff_468223(&mainmodprocs_465137, ((NimStringDesc*) &TMP3781), ((NimStringDesc*) &TMP3782), LOC1, 1);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = datinit;
	appff_468223(&mainmodprocs_465137, ((NimStringDesc*) &TMP3781), ((NimStringDesc*) &TMP3782), LOC2, 1);
	{
		TY145497 LOC7;
		trope145007* initcall;
		TY145497 LOC8;
		if (!!((((*m).Flags &(1<<((((NU8) 13))&31)))!=0))) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = datinit;
		appff_468223(&maindatinit_465140, ((NimStringDesc*) &TMP3783), ((NimStringDesc*) &TMP3784), LOC7, 1);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = init;
		initcall = ropeff_468205(((NimStringDesc*) &TMP3783), ((NimStringDesc*) &TMP3784), LOC8, 1);
		{
			if (!(((*m).Flags &(1<<((((NU8) 12))&31)))!=0)) goto LA11;
			app_145040(&mainmodinit_465138, initcall);
		}
		goto LA9;
		LA11: ;
		{
			app_145040(&othermodsinit_465139, initcall);
		}
		LA9: ;
	}
	LA5: ;
}

N_NIMCALL(trope145007*, genfilenames_504315)(tcgen465030* m) {
	trope145007* result;
	trope145007* LOC1;
	NI i_504351;
	NI HEX3Atmp_504357;
	NI res_504359;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_468604(m, ((NimStringDesc*) &TMP3797));
	result = NIM_NIL;
	i_504351 = 0;
	HEX3Atmp_504357 = 0;
	HEX3Atmp_504357 = fileinfos_163640->Sup.len - 1;
	res_504359 = 0;
	while (1) {
		TY145497 LOC3;
		if (!(res_504359 <= HEX3Atmp_504357)) goto LA2;
		i_504351 = res_504359;
		memset((void*)LOC3, 0, sizeof(LOC3));
		LOC3[0] = makecstring_163651(fileinfos_163640->data[i_504351].Projpath);
		appf_145085(&result, ((NimStringDesc*) &TMP3798), LOC3, 1);
		res_504359 += 1;
	} LA2: ;
	return result;
}

N_NIMCALL(void, genmainproc_504364)(tcgen465030* m) {
	NimStringDesc* nimmain;
	NimStringDesc* othermain;
	trope145007* initstackbottomcall;
	TY471942 LOC38;
	TY503234 LOC39;
	nimmain = 0;
	othermain = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC12;
		LOC3 = 0;
		LOC3 = (targetos_142575 == ((NU8) 2));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((gglobaloptions_137111 & 1280) == 0));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!((gglobaloptions_137111 &(1<<((((NU8) 10))&31)))!=0)) goto LA9;
			nimmain = copyString(((NimStringDesc*) &TMP3787));
			othermain = copyString(((NimStringDesc*) &TMP3788));
		}
		goto LA7;
		LA9: ;
		{
			nimmain = copyString(((NimStringDesc*) &TMP3789));
			othermain = copyString(((NimStringDesc*) &TMP3790));
		}
		LA7: ;
		LOC12 = 0;
		LOC12 = includestr_118275(&(*m).Headerfiles, ((NimStringDesc*) &TMP3791));
	}
	goto LA1;
	LA5: ;
	{
		if (!((gglobaloptions_137111 &(1<<((((NU8) 8))&31)))!=0)) goto LA14;
		nimmain = copyString(((NimStringDesc*) &TMP3789));
		othermain = copyString(((NimStringDesc*) &TMP3792));
	}
	goto LA1;
	LA14: ;
	{
		if (!(targetos_142575 == ((NU8) 23))) goto LA17;
		nimmain = copyString(((NimStringDesc*) &TMP3793));
		othermain = copyString(((NimStringDesc*) &TMP3794));
	}
	goto LA1;
	LA17: ;
	{
		nimmain = copyString(((NimStringDesc*) &TMP3793));
		othermain = copyString(((NimStringDesc*) &TMP3795));
	}
	LA1: ;
	{
		trope145007* LOC24;
		if (!!((gbreakpoints_487868 == NIM_NIL))) goto LA22;
		LOC24 = 0;
		LOC24 = cgsym_468604(m, ((NimStringDesc*) &TMP3796));
	}
	LA22: ;
	{
		trope145007* LOC29;
		if (!((goptions_137108 &(1<<((((NU8) 17))&31)))!=0)) goto LA27;
		LOC29 = 0;
		LOC29 = genfilenames_504315(m);
		app_145040(&gbreakpoints_487868, LOC29);
	}
	LA27: ;
	{
		NIM_BOOL LOC32;
		LOC32 = 0;
		LOC32 = emulatedthreadvars_469606();
		if (LOC32) goto LA33;
		LOC32 = (targetos_142575 == ((NU8) 23));
		LA33: ;
		if (!LOC32) goto LA34;
		initstackbottomcall = torope_145058(((NimStringDesc*) &TMP3136));
	}
	goto LA30;
	LA34: ;
	{
		TY469906 LOC37;
		memset((void*)LOC37, 0, sizeof(LOC37));
		initstackbottomcall = ropecg_468609(m, ((NimStringDesc*) &TMP3799), LOC37, 0);
	}
	LA30: ;
	(*m).Labels += 1;
	memset((void*)LOC38, 0, sizeof(LOC38));
	LOC38[0] = maindatinit_465140;
	LOC38[1] = initstackbottomcall;
	LOC38[2] = gbreakpoints_487868;
	LOC38[3] = othermodsinit_465139;
	appcg_469002(m, &(*m).S[(((NU8) 10))- 0], ((NimStringDesc*) &TMP3800), LOC38, 4);
	memset((void*)LOC39, 0, sizeof(LOC39));
	LOC39[0] = mainmodinit_465138;
	LOC39[1] = torope_145062(((NI64) ((*m).Labels)));
	appcg_469002(m, &(*m).S[(((NU8) 10))- 0], nimmain, LOC39, 2);
	{
		TY469906 LOC44;
		if (!!(((gglobaloptions_137111 &(1<<((((NU8) 20))&31)))!=0))) goto LA42;
		memset((void*)LOC44, 0, sizeof(LOC44));
		appcg_469002(m, &(*m).S[(((NU8) 10))- 0], othermain, LOC44, 0);
	}
	LA42: ;
}

N_NIMCALL(tnode188803*, myclose_506238)(tpasscontext246003* b, tnode188803* n) {
	tnode188803* result;
	tcgen465030* m;
	result = 0;
	result = n;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (b == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = skipcodegen_246074(n);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	m = ((tcgen465030*) (b));
	{
		if (!!((n == NIM_NIL))) goto LA9;
		(*(*m).Initproc).Options = initprocoptions_505190(m);
		genstmts_476487((*m).Initproc, n);
	}
	LA9: ;
	registermoduletomain_504854((*m).Module);
	{
		tnode188803* disp;
		NI i_506302;
		NI HEX3Atmp_506331;
		NI LOC15;
		NI res_506333;
		if (!(((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0)) goto LA13;
		disp = generatemethoddispatchers_365126();
		i_506302 = 0;
		HEX3Atmp_506331 = 0;
		LOC15 = 0;
		LOC15 = sonslen_189181(disp);
		HEX3Atmp_506331 = (NI32)(LOC15 - 1);
		res_506333 = 0;
		while (1) {
			if (!(res_506333 <= HEX3Atmp_506331)) goto LA16;
			i_506302 = res_506333;
			genprocaux_502611(m, (*(*disp).kindU.S6.Sons->data[i_506302]).kindU.S4.Sym);
			res_506333 += 1;
		} LA16: ;
		genmainproc_504364(m);
	}
	LA13: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, finishmodule_505829)(tcgen465030* m) {
	NI i;
	i = 0;
	while (1) {
		tsym188833* prc;
		if (!(i <= ((*m).Forwardedprocs->Sup.len-1))) goto LA1;
		prc = (*m).Forwardedprocs->data[i];
		{
			NimStringDesc* LOC6;
			if (!(((*prc).Flags &(1<<((((NU8) 4))&31)))!=0)) goto LA4;
			LOC6 = 0;
			LOC6 = rawNewString((*(*prc).Name).S->Sup.len + 17);
appendString(LOC6, ((NimStringDesc*) &TMP3843));
appendString(LOC6, (*(*prc).Name).S);
			internalerror_165591((*prc).Info, LOC6);
		}
		LA4: ;
		genprocnoforward_503298(m, prc);
		i += 1;
	} LA1: ;
	gforwardedprocscounter_465164 -= i;
	(*m).Forwardedprocs = (tsymseq188805*) setLengthSeq(&((*m).Forwardedprocs)->Sup, sizeof(tsym188833*), 0);
}

N_NIMCALL(void, geninitcode_504909)(tcgen465030* m) {
	trope145007* initname;
	trope145007* prc;
	TY145497 LOC1;
	trope145007* LOC12;
	trope145007* LOC13;
	trope145007** LOC14;
	trope145007** LOC15;
	trope145007** LOC16;
	trope145007* LOC17;
	trope145007* LOC33;
	trope145007** LOC34;
	trope145007** LOC35;
	trope145007** LOC36;
	trope145007* LOC37;
	trope145007* LOC38;
	trope145007** LOC39;
	trope145007** LOC40;
	trope145007** LOC41;
	trope145007* LOC42;
	trope145007* LOC50;
	TY469906 LOC51;
	TY145497 LOC52;
	NU8 i_505008;
	NU8 res_505108;
	TY469906 LOC56;
	NIM_CHAR i_505065;
	trope145007* el_505066;
	TY465132 HEX3Atmp_505110;
	NIM_CHAR i_505112;
	initname = getinitname_504842((*m).Module);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = initname;
	prc = ropeff_468205(((NimStringDesc*) &TMP3869), ((NimStringDesc*) &TMP3870), LOC1, 1);
	{
		TY503234 LOC6;
		if (!(0 < (*m).Typenodes)) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = (*m).Typenodesname;
		LOC6[1] = torope_145062(((NI64) ((*m).Typenodes)));
		appcg_469002(m, &(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3871), LOC6, 2);
	}
	LA4: ;
	{
		TY503234 LOC11;
		if (!(0 < (*m).Nimtypes)) goto LA9;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = (*m).Nimtypesname;
		LOC11[1] = torope_145062(((NI64) ((*m).Nimtypes)));
		appcg_469002(m, &(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3872), LOC11, 2);
	}
	LA9: ;
	LOC12 = 0;
	LOC12 = initgcframe_475402((*m).Initproc);
	app_145040(&prc, LOC12);
	LOC13 = 0;
	LOC13 = gensectionstart_466112(((NU8) 0));
	app_145040(&prc, LOC13);
	LOC14 = 0;
	LOC14 = s_465173((*m).Preinitproc, ((NU8) 0));
	app_145040(&prc, (*LOC14));
	LOC15 = 0;
	LOC15 = s_465173((*m).Initproc, ((NU8) 0));
	app_145040(&prc, (*LOC15));
	LOC16 = 0;
	LOC16 = s_465173((*m).Postinitproc, ((NU8) 0));
	app_145040(&prc, (*LOC16));
	LOC17 = 0;
	LOC17 = gensectionend_466159(((NU8) 0));
	app_145040(&prc, LOC17);
	{
		NIM_BOOL LOC20;
		LOC20 = 0;
		LOC20 = (((*(*m).Initproc).Options &(1<<((((NU8) 15))&31)))!=0);
		if (!(LOC20)) goto LA21;
		LOC20 = !((*m).Framedeclared);
		LA21: ;
		if (!LOC20) goto LA22;
		(*m).Framedeclared = NIM_TRUE;
		{
			trope145007* procname;
			trope145007* LOC28;
			trope145007* LOC29;
			if (!!((*m).Preventstacktrace)) goto LA26;
			procname = cstringlit_475427((*m).Initproc, &prc, (*(*(*m).Module).Name).S);
			LOC28 = 0;
			LOC28 = quotedfilename_165750((*(*m).Module).Info);
			LOC29 = 0;
			LOC29 = initframe_502533((*m).Initproc, procname, LOC28);
			app_145040(&prc, LOC29);
		}
		goto LA24;
		LA26: ;
		{
			TY469906 LOC31;
			trope145007* LOC32;
			memset((void*)LOC31, 0, sizeof(LOC31));
			LOC32 = 0;
			LOC32 = ropef_145079(((NimStringDesc*) &TMP3875), LOC31, 0);
			app_145040(&prc, LOC32);
		}
		LA24: ;
	}
	LA22: ;
	LOC33 = 0;
	LOC33 = gensectionstart_466112(((NU8) 1));
	app_145040(&prc, LOC33);
	LOC34 = 0;
	LOC34 = s_465173((*m).Preinitproc, ((NU8) 1));
	app_145040(&prc, (*LOC34));
	LOC35 = 0;
	LOC35 = s_465173((*m).Initproc, ((NU8) 1));
	app_145040(&prc, (*LOC35));
	LOC36 = 0;
	LOC36 = s_465173((*m).Postinitproc, ((NU8) 1));
	app_145040(&prc, (*LOC36));
	LOC37 = 0;
	LOC37 = gensectionend_466159(((NU8) 1));
	app_145040(&prc, LOC37);
	LOC38 = 0;
	LOC38 = gensectionstart_466112(((NU8) 2));
	app_145040(&prc, LOC38);
	LOC39 = 0;
	LOC39 = s_465173((*m).Preinitproc, ((NU8) 2));
	app_145040(&prc, (*LOC39));
	LOC40 = 0;
	LOC40 = s_465173((*m).Initproc, ((NU8) 2));
	app_145040(&prc, (*LOC40));
	LOC41 = 0;
	LOC41 = s_465173((*m).Postinitproc, ((NU8) 2));
	app_145040(&prc, (*LOC41));
	LOC42 = 0;
	LOC42 = gensectionend_466159(((NU8) 2));
	app_145040(&prc, LOC42);
	{
		NIM_BOOL LOC45;
		trope145007* LOC49;
		LOC45 = 0;
		LOC45 = (((*(*m).Initproc).Options &(1<<((((NU8) 15))&31)))!=0);
		if (!(LOC45)) goto LA46;
		LOC45 = !((*m).Preventstacktrace);
		LA46: ;
		if (!LOC45) goto LA47;
		LOC49 = 0;
		LOC49 = deinitframe_502550((*m).Initproc);
		app_145040(&prc, LOC49);
	}
	LA47: ;
	LOC50 = 0;
	LOC50 = deinitgcframe_475413((*m).Initproc);
	app_145040(&prc, LOC50);
	memset((void*)LOC51, 0, sizeof(LOC51));
	appf_145085(&prc, ((NimStringDesc*) &TMP3876), LOC51, 0);
	memset((void*)LOC52, 0, sizeof(LOC52));
	LOC52[0] = getdatinitname_504848((*m).Module);
	appff_468223(&prc, ((NimStringDesc*) &TMP3869), ((NimStringDesc*) &TMP3870), LOC52, 1);
	i_505008 = 0;
	res_505108 = ((NU8) 12);
	while (1) {
		trope145007* LOC54;
		trope145007* LOC55;
		if (!(res_505108 <= ((NU8) 16))) goto LA53;
		i_505008 = res_505108;
		LOC54 = 0;
		LOC54 = gensectionstart_466022(i_505008);
		app_145040(&prc, LOC54);
		app_145040(&prc, (*m).S[(i_505008)- 0]);
		LOC55 = 0;
		LOC55 = gensectionend_466069(i_505008);
		app_145040(&prc, LOC55);
		res_505108 += 1;
	} LA53: ;
	memset((void*)LOC56, 0, sizeof(LOC56));
	appf_145085(&prc, ((NimStringDesc*) &TMP3876), LOC56, 0);
	app_145040(&(*m).S[(((NU8) 11))- 0], prc);
	i_505065 = 0;
	el_505066 = 0;
	memset((void*)HEX3Atmp_505110, 0, sizeof(HEX3Atmp_505110));
	memcpy((void*)HEX3Atmp_505110, (NIM_CONST void*)(*m).Extensionloaders, sizeof(HEX3Atmp_505110));
	i_505112 = 48;
	{
		if (!((NU8)(((NIM_CHAR) (((NU8)(i_505112))))) <= (NU8)(57))) goto LA59;
		while (1) {
			i_505065 = i_505112;
			el_505066 = HEX3Atmp_505110[(((NU8)(i_505112)))- 48];
			{
				trope145007* ex;
				TY503234 LOC66;
				if (!!((el_505066 == NIM_NIL))) goto LA64;
				memset((void*)LOC66, 0, sizeof(LOC66));
				LOC66[0] = torope_145062(((NI64) ((NI32)(((NI) (((NU8)(i_505065)))) - 48))));
				LOC66[1] = el_505066;
				ex = ropef_145079(((NimStringDesc*) &TMP3877), LOC66, 2);
				app_145040(&(*m).S[(((NU8) 11))- 0], ex);
			}
			LA64: ;
			{
				if (!((NU8)(57) <= (NU8)(((NIM_CHAR) (((NU8)(i_505112))))))) goto LA69;
				goto LA61;
			}
			LA69: ;
			i_505112 += 1;
		} LA61: ;
	}
	LA59: ;
}

N_NIMCALL(void, finishtypedescriptions_472271)(tcgen465030* m) {
	NI i;
	i = 0;
	while (1) {
		trope145007* LOC2;
		if (!(i < (*m).Typestack->Sup.len)) goto LA1;
		LOC2 = 0;
		LOC2 = gettypedesc_472091(m, (*m).Typestack->data[i]);
		i += 1;
	} LA1: ;
}

N_NIMCALL(trope145007*, getcopyright_504281)(NimStringDesc* cfilenoext) {
	trope145007* result;
	result = 0;
	{
		TY145497 LOC5;
		if (!((gglobaloptions_137111 &(1<<((((NU8) 4))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_145058(((NimStringDesc*) &TMP3880));
		result = ropeff_468205(((NimStringDesc*) &TMP3878), ((NimStringDesc*) &TMP3879), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY473397 LOC7;
		NimStringDesc* LOC8;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = torope_145058(((NimStringDesc*) &TMP3880));
		LOC7[1] = torope_145058(os_142063[(targetos_142575)- 1].Field0);
		LOC7[2] = torope_145058(cpu_142468[(targetcpu_142573)- 1].Field0);
		LOC7[3] = torope_145058(cc_169402[(ccompiler_169425)- 1].Field0);
		LOC8 = 0;
		LOC8 = getcompilecfilecmd_170292(cfilenoext, NIM_FALSE);
		LOC7[4] = torope_145058(LOC8);
		result = ropeff_468205(((NimStringDesc*) &TMP3881), ((NimStringDesc*) &TMP3882), LOC7, 5);
	}
	LA1: ;
	return result;
}

static N_INLINE(void, addinttypes_504271)(trope145007** result) {
	TY145497 LOC1;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = torope_145062(((NI64) (cpu_142468[(targetcpu_142573)- 1].Field1)));
	appf_145085(result, ((NimStringDesc*) &TMP3883), LOC1, 1);
}

N_NIMCALL(trope145007*, getfileheader_504308)(NimStringDesc* cfilenoext) {
	trope145007* result;
	result = 0;
	result = getcopyright_504281(cfilenoext);
	addinttypes_504271(&result);
	return result;
}

N_NIMCALL(void, generateheaders_502461)(tcgen465030* m) {
	NimStringDesc* LOC1;
	tstrentry118019* it;
	LOC1 = 0;
	LOC1 = rawNewString(tnl_142593->Sup.len + tnl_142593->Sup.len + 20);
appendString(LOC1, tnl_142593);
appendString(LOC1, ((NimStringDesc*) &TMP3891));
appendString(LOC1, tnl_142593);
	app_145046(&(*m).S[(((NU8) 1))- 0], LOC1);
	it = ((tstrentry118019*) ((*m).Headerfiles.Head));
	while (1) {
		if (!!((it == NIM_NIL))) goto LA2;
		{
			TY145497 LOC7;
			if (!!((((NU8)((*it).Data->data[0])) == ((NU8)(34)) || ((NU8)((*it).Data->data[0])) == ((NU8)(60))))) goto LA5;
			memset((void*)LOC7, 0, sizeof(LOC7));
			LOC7[0] = torope_145058((*it).Data);
			appf_145085(&(*m).S[(((NU8) 1))- 0], ((NimStringDesc*) &TMP3892), LOC7, 1);
		}
		goto LA3;
		LA5: ;
		{
			TY145497 LOC9;
			memset((void*)LOC9, 0, sizeof(LOC9));
			LOC9[0] = torope_145058((*it).Data);
			appf_145085(&(*m).S[(((NU8) 1))- 0], ((NimStringDesc*) &TMP3893), LOC9, 1);
		}
		LA3: ;
		it = ((tstrentry118019*) ((*it).Sup.Next));
	} LA2: ;
}

N_NIMCALL(void, generatethreadlocalstorage_476012)(tcgen465030* m) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		ttype188837* t_476057;
		NI i_476064;
		NI l_476066;
		TY145497 LOC11;
		LOC3 = 0;
		LOC3 = !((nimtv_475937 == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = (*m).Usesthreadvars;
		if (LOC5) goto LA6;
		LOC5 = (((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0);
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA7;
		t_476057 = 0;
		i_476064 = 0;
		l_476066 = nimtvdeps_475959->Sup.len;
		while (1) {
			trope145007* LOC10;
			if (!(i_476064 < l_476066)) goto LA9;
			t_476057 = nimtvdeps_475959->data[i_476064];
			LOC10 = 0;
			LOC10 = gettypedesc_472091(m, t_476057);
			i_476064 += 1;
		} LA9: ;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = nimtv_475937;
		appf_145085(&(*m).S[(((NU8) 4))- 0], ((NimStringDesc*) &TMP3894), LOC11, 1);
	}
	LA7: ;
}

N_NIMCALL(trope145007*, genmodule_505117)(tcgen465030* m, NimStringDesc* cfilenoext) {
	trope145007* result;
	trope145007* LOC1;
	NU8 i_505165;
	NU8 res_505171;
	result = 0;
	result = getfileheader_504308(cfilenoext);
	LOC1 = 0;
	LOC1 = genmergeinfo_466271(m);
	app_145040(&result, LOC1);
	generateheaders_502461(m);
	generatethreadlocalstorage_476012(m);
	i_505165 = 0;
	res_505171 = ((NU8) 1);
	while (1) {
		trope145007* LOC3;
		trope145007* LOC4;
		if (!(res_505171 <= ((NU8) 10))) goto LA2;
		i_505165 = res_505171;
		LOC3 = 0;
		LOC3 = gensectionstart_466022(i_505165);
		app_145040(&result, LOC3);
		app_145040(&result, (*m).S[(i_505165)- 0]);
		LOC4 = 0;
		LOC4 = gensectionend_466069(i_505165);
		app_145040(&result, LOC4);
		res_505171 += 1;
	} LA2: ;
	app_145040(&result, (*m).S[(((NU8) 11))- 0]);
	return result;
}

N_NIMCALL(void, updatecachedmodule_506217)(tcgen465030* m) {
	NimStringDesc* cfile;
	NimStringDesc* cfilenoext;
	cfile = getcfile_505708(m);
	cfilenoext = noschangeFileExt(cfile, ((NimStringDesc*) &TMP3136));
	{
		NIM_BOOL LOC3;
		trope145007* code;
		LOC3 = 0;
		LOC3 = mergerequired_467094(m);
		if (!(LOC3)) goto LA4;
		LOC3 = !((((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		mergefiles_467228(cfile, m);
		geninitcode_504909(m);
		finishtypedescriptions_472271(m);
		code = genmodule_505117(m, cfilenoext);
		writerope_146407(code, cfile, NIM_FALSE);
		addfiletocompile_169766(cfilenoext);
	}
	LA5: ;
	addfiletolink_169779(cfilenoext);
}

N_NIMCALL(void, generatethreadvarssize_476069)(tcgen465030* m) {
	{
		NimStringDesc* LOC5;
		if (!!((nimtv_475937 == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = rawNewString(tnl_142593->Sup.len + 57);
appendString(LOC5, ((NimStringDesc*) &TMP3896));
appendString(LOC5, tnl_142593);
		app_145046(&(*m).S[(((NU8) 10))- 0], LOC5);
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, shouldrecompile_506036)(trope145007* code, NimStringDesc* cfile, NimStringDesc* cfilenoext) {
	NIM_BOOL result;
	result = 0;
	result = NIM_TRUE;
	{
		NimStringDesc* objfile;
		if (!!(((gglobaloptions_137111 &(1<<((((NU8) 1))&31)))!=0))) goto LA3;
		objfile = toobjfile_169760(cfilenoext);
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = writeropeifnotequal_145070(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_146407(code, cfile, NIM_FALSE);
	}
	LA1: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, writemodule_506059)(tcgen465030* m, NIM_BOOL pending) {
	NimStringDesc* cfile;
	NimStringDesc* cfilenoext;
	cfile = getcfile_505708(m);
	cfilenoext = noschangeFileExt(cfile, ((NimStringDesc*) &TMP3136));
	{
		NIM_BOOL LOC3;
		trope145007* code;
		LOC3 = 0;
		LOC3 = !((*m).Sup.Fromcache);
		if (LOC3) goto LA4;
		LOC3 = ((gglobaloptions_137111 &(1<<((((NU8) 1))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		geninitcode_504909(m);
		finishtypedescriptions_472271(m);
		{
			if (!(((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0)) goto LA9;
			app_145040(&(*m).S[(((NU8) 7))- 0], mainmodprocs_465137);
			generatethreadvarssize_476069(m);
		}
		LA9: ;
		code = genmodule_505117(m, cfilenoext);
		{
			NIM_BOOL LOC13;
			LOC13 = 0;
			LOC13 = shouldrecompile_506036(code, cfile, cfilenoext);
			if (!LOC13) goto LA14;
			addfiletocompile_169766(cfilenoext);
		}
		LA14: ;
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC17;
		NIM_BOOL LOC18;
		trope145007* code;
		LOC17 = 0;
		LOC18 = 0;
		LOC18 = pending;
		if (!(LOC18)) goto LA19;
		LOC18 = mergerequired_467094(m);
		LA19: ;
		LOC17 = LOC18;
		if (!(LOC17)) goto LA20;
		LOC17 = !((((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0));
		LA20: ;
		if (!LOC17) goto LA21;
		mergefiles_467228(cfile, m);
		geninitcode_504909(m);
		finishtypedescriptions_472271(m);
		code = genmodule_505117(m, cfilenoext);
		writerope_146407(code, cfile, NIM_FALSE);
		addfiletocompile_169766(cfilenoext);
	}
	goto LA1;
	LA21: ;
	{
		NimStringDesc* LOC24;
		NIM_BOOL LOC25;
		LOC24 = 0;
		LOC24 = toobjfile_169760(cfilenoext);
		LOC25 = 0;
		LOC25 = nosexistsFile(LOC24);
		if (!!(LOC25)) goto LA26;
		addfiletocompile_169766(cfilenoext);
	}
	goto LA1;
	LA26: ;
	LA1: ;
	addfiletolink_169779(cfilenoext);
}

N_NIMCALL(void, writeheader_505643)(tcgen465030* m) {
	trope145007* result;
	trope145007* guard;
	TY145497 LOC1;
	TY108700 LOC2;
	TY145497 LOC3;
	NU8 i_505670;
	NU8 res_505703;
	TY469906 LOC11;
	TY145497 LOC12;
	result = getcopyright_504281((*m).Filename);
	memset((void*)LOC1, 0, sizeof(LOC1));
	memset((void*)&LOC2, 0, sizeof(LOC2));
	nossplitFile((*m).Filename, &LOC2);
	LOC1[0] = torope_145058(LOC2.Field1);
	guard = ropef_145079(((NimStringDesc*) &TMP3906), LOC1, 1);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = guard;
	appf_145085(&result, ((NimStringDesc*) &TMP3907), LOC3, 1);
	addinttypes_504271(&result);
	generateheaders_502461(m);
	generatethreadlocalstorage_476012(m);
	i_505670 = 0;
	res_505703 = ((NU8) 1);
	while (1) {
		trope145007* LOC5;
		trope145007* LOC6;
		if (!(res_505703 <= ((NU8) 10))) goto LA4;
		i_505670 = res_505703;
		LOC5 = 0;
		LOC5 = gensectionstart_466022(i_505670);
		app_145040(&result, LOC5);
		app_145040(&result, (*m).S[(i_505670)- 0]);
		LOC6 = 0;
		LOC6 = gensectionend_466069(i_505670);
		app_145040(&result, LOC6);
		res_505703 += 1;
	} LA4: ;
	app_145040(&result, (*m).S[(((NU8) 11))- 0]);
	{
		if (!((gglobaloptions_137111 &(1<<((((NU8) 8))&31)))!=0)) goto LA9;
		app_145046(&result, ((NimStringDesc*) &TMP3231));
	}
	LA9: ;
	memset((void*)LOC11, 0, sizeof(LOC11));
	appf_145085(&result, ((NimStringDesc*) &TMP3908), LOC11, 0);
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = guard;
	appf_145085(&result, ((NimStringDesc*) &TMP3909), LOC12, 1);
	writerope_146407(result, (*m).Filename, NIM_FALSE);
}

N_NIMCALL(void, cgenwritemodules_506338)(void) {
	tcgen465030* m_506359;
	NI i_506384;
	NI HEX3Atmp_506386;
	NI res_506388;
	{
		if (!!((generatedheader_468202 == NIM_NIL))) goto LA3;
		finishmodule_505829(generatedheader_468202);
	}
	LA3: ;
	while (1) {
		tcgen465030* m_506358;
		NI i_506378;
		NI HEX3Atmp_506380;
		NI res_506382;
		if (!(0 < gforwardedprocscounter_465164)) goto LA5;
		m_506358 = 0;
		i_506378 = 0;
		HEX3Atmp_506380 = 0;
		HEX3Atmp_506380 = (gmodules_465163->Sup.len-1);
		res_506382 = 0;
		while (1) {
			if (!(res_506382 <= HEX3Atmp_506380)) goto LA6;
			i_506378 = res_506382;
			{
				if (!!((gmodules_465163->data[i_506378] == NIM_NIL))) goto LA9;
				m_506358 = gmodules_465163->data[i_506378];
				{
					if (!!((*m_506358).Sup.Fromcache)) goto LA13;
					finishmodule_505829(m_506358);
				}
				LA13: ;
			}
			LA9: ;
			res_506382 += 1;
		} LA6: ;
	} LA5: ;
	m_506359 = 0;
	i_506384 = 0;
	HEX3Atmp_506386 = 0;
	HEX3Atmp_506386 = (gmodules_465163->Sup.len-1);
	res_506388 = 0;
	while (1) {
		if (!(res_506388 <= HEX3Atmp_506386)) goto LA15;
		i_506384 = res_506388;
		{
			if (!!((gmodules_465163->data[i_506384] == NIM_NIL))) goto LA18;
			m_506359 = gmodules_465163->data[i_506384];
			{
				if (!(*m_506359).Sup.Fromcache) goto LA22;
				updatecachedmodule_506217(m_506359);
			}
			goto LA20;
			LA22: ;
			{
				writemodule_506059(m_506359, NIM_TRUE);
			}
			LA20: ;
		}
		LA18: ;
		res_506388 += 1;
	} LA15: ;
	writemapping_170815(gmapping_465141);
	{
		if (!!((generatedheader_468202 == NIM_NIL))) goto LA27;
		writeheader_505643(generatedheader_468202);
	}
	LA27: ;
}

N_NIMCALL(void, nullify_505409)(trope145007** arr_505415) {
	NU8 i_505427;
	NU8 res_505429;
	i_505427 = 0;
	res_505429 = ((NU8) 0);
	while (1) {
		if (!(res_505429 <= ((NU8) 17))) goto LA1;
		i_505427 = res_505429;
		unsureAsgnRef((void**) &arr_505415[(i_505427)- 0], NIM_NIL);
		res_505429 += 1;
	} LA1: ;
}

N_NIMCALL(void, nullify_505436)(trope145007** arr_505442) {
	NIM_CHAR i_505475;
	NIM_CHAR res_505477;
	i_505475 = 0;
	res_505477 = 48;
	while (1) {
		if (!((NU8)(((NIM_CHAR) (((NU8)(res_505477))))) <= (NU8)(57))) goto LA1;
		i_505475 = res_505477;
		unsureAsgnRef((void**) &arr_505442[(((NU8)(i_505475)))- 48], NIM_NIL);
		res_505477 += 1;
	} LA1: ;
}

N_NIMCALL(void, resetmodule_505348)(tcgen465030* m) {
	initlinkedlist_118036(&(*m).Headerfiles);
	initintset_185918(&(*m).Declaredprotos);
	initidtable_189120(&(*m).Forwtypecache);
	asgnRef((void**) &(*m).Initproc, newproc_465208(NIM_NIL, m));
	(*(*m).Initproc).Options = initprocoptions_505190(m);
	asgnRef((void**) &(*m).Preinitproc, newpreinitproc_505176(m));
	asgnRef((void**) &(*m).Postinitproc, newpostinitproc_505183(m));
	initnodetable_189135(&(*m).Datacache);
	if ((*m).Typestack) nimGCunrefNoCycle((*m).Typestack);
	(*m).Typestack = (ttypeseq188835*) newSeqRC1((&NTI188835), 0);
	if ((*m).Forwardedprocs) nimGCunrefNoCycle((*m).Forwardedprocs);
	(*m).Forwardedprocs = (tsymseq188805*) newSeqRC1((&NTI188805), 0);
	asgnRefNoCycle((void**) &(*m).Typenodesname, gettempname_470368());
	asgnRefNoCycle((void**) &(*m).Nimtypesname, gettempname_470368());
	(*m).Preventstacktrace = (((*(*m).Module).Flags &(1<<((((NU8) 13))&31)))!=0);
	nullify_505409((*m).S);
	(*m).Usesthreadvars = NIM_FALSE;
	(*m).Typenodes = 0;
	(*m).Nimtypes = 0;
	nullify_505436((*m).Extensionloaders);
	(*m).Sup.Fromcache = NIM_TRUE;
}

N_NIMCALL(void, resetcgenmodules_505484)(void) {
	tcgen465030* m_505486;
	NI i_505488;
	NI HEX3Atmp_505490;
	NI res_505492;
	m_505486 = 0;
	i_505488 = 0;
	HEX3Atmp_505490 = 0;
	HEX3Atmp_505490 = (gmodules_465163->Sup.len-1);
	res_505492 = 0;
	while (1) {
		if (!(res_505492 <= HEX3Atmp_505490)) goto LA1;
		i_505488 = res_505492;
		{
			if (!!((gmodules_465163->data[i_505488] == NIM_NIL))) goto LA4;
			m_505486 = gmodules_465163->data[i_505488];
			resetmodule_505348(m_505486);
		}
		LA4: ;
		res_505492 += 1;
	} LA1: ;
}
N_NOINLINE(void, cgenInit)(void) {
	asgnRefNoCycle((void**) &indent_469031, torope_145058(((NimStringDesc*) &TMP961)));
	if (nimtvdeps_475959) nimGCunrefNoCycle(nimtvdeps_475959);
	nimtvdeps_475959 = (ttypeseq188835*) newSeqRC1((&NTI188835), 0);
	chckNil((void*)&nimtvdeclared_475960);
	genericReset((void*)&nimtvdeclared_475960, (&NTI185047));
	initintset_185918(&nimtvdeclared_475960);
	breakpointid_487867 = 0;
}

N_NOINLINE(void, cgenDatInit)(void) {
}

