/* Generated by Nim Compiler v0.10.2 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 64
#include "nimbase.h"

#include <string.h>
typedef struct tcgen549035 tcgen549035;
typedef struct trope177009 trope177009;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tcell44935 tcell44935;
typedef struct TNimType TNimType;
typedef struct tcellseq44951 tcellseq44951;
typedef struct tgcheap47016 tgcheap47016;
typedef struct tcellset44947 tcellset44947;
typedef struct tpagedesc44943 tpagedesc44943;
typedef struct tmemregion27210 tmemregion27210;
typedef struct tsmallchunk26440 tsmallchunk26440;
typedef struct tllchunk27204 tllchunk27204;
typedef struct tbigchunk26442 tbigchunk26442;
typedef struct tintset26417 tintset26417;
typedef struct ttrunk26413 ttrunk26413;
typedef struct tavlnode27208 tavlnode27208;
typedef struct tgcstat47014 tgcstat47014;
typedef struct ttypeseq225848 ttypeseq225848;
typedef struct ttype225852 ttype225852;
typedef struct TNimNode TNimNode;
typedef struct intset222056 intset222056;
typedef struct ttrunk222052 ttrunk222052;
typedef struct ttrunkseq222054 ttrunkseq222054;
typedef struct tpasscontext286005 tpasscontext286005;
typedef struct tsym225846 tsym225846;
typedef struct tidobj200015 tidobj200015;
typedef struct TNimObject TNimObject;
typedef struct tscope225840 tscope225840;
typedef struct TY225947 TY225947;
typedef struct tinstantiation225836 tinstantiation225836;
typedef struct tstrtable225820 tstrtable225820;
typedef struct tsymseq225818 tsymseq225818;
typedef struct tident200021 tident200021;
typedef struct tlineinfo195539 tlineinfo195539;
typedef struct tnode225816 tnode225816;
typedef struct tloc225830 tloc225830;
typedef struct tlib225834 tlib225834;
typedef struct TY549150 TY549150;
typedef struct TY84745 TY84745;
typedef struct tidtable225864 tidtable225864;
typedef struct tidpairseq225862 tidpairseq225862;
typedef struct tidpair225860 tidpair225860;
typedef struct tlinkedlist127028 tlinkedlist127028;
typedef struct tlistentry127022 tlistentry127022;
typedef struct tcproc549031 tcproc549031;
typedef struct tnodetable225876 tnodetable225876;
typedef struct tnodepairseq225874 tnodepairseq225874;
typedef struct tnodepair225872 tnodepair225872;
typedef struct tnodeseq225810 tnodeseq225810;
typedef struct TY195552 TY195552;
typedef struct TY549102 TY549102;
typedef struct tblock549029 tblock549029;
typedef struct tinfocc202016 tinfocc202016;
typedef struct ttraversalclosure558233 ttraversalclosure558233;
typedef struct tbitset283012 tbitset283012;
typedef struct TY119808 TY119808;
typedef struct trodreader276030 trodreader276030;
typedef struct TY195621 TY195621;
typedef struct tfileinfo195537 tfileinfo195537;
typedef struct tinfoos174048 tinfoos174048;
typedef struct tinfocpu174463 tinfocpu174463;
typedef struct tstrentry127024 tstrentry127024;
typedef struct TY117604 TY117604;
typedef struct tbasechunk26438 tbasechunk26438;
typedef struct tfreecell26430 tfreecell26430;
typedef struct TY225936 TY225936;
typedef struct tindex276028 tindex276028;
typedef struct tiitable235274 tiitable235274;
typedef struct tiipairseq235272 tiipairseq235272;
typedef struct tiipair235270 tiipair235270;
typedef struct memfile274208 memfile274208;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tcell44935  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq44951  {
NI Len;
NI Cap;
tcell44935** D;
};
struct  tcellset44947  {
NI Counter;
NI Max;
tpagedesc44943* Head;
tpagedesc44943** Data;
};
typedef tsmallchunk26440* TY27222[512];
typedef ttrunk26413* ttrunkbuckets26415[256];
struct  tintset26417  {
ttrunkbuckets26415 Data;
};
struct  tmemregion27210  {
NI Minlargeobj;
NI Maxlargeobj;
TY27222 Freesmallchunks;
tllchunk27204* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk26442* Freechunkslist;
tintset26417 Chunkstarts;
tavlnode27208* Root;
tavlnode27208* Deleted;
tavlnode27208* Last;
tavlnode27208* Freeavlnodes;
};
struct  tgcstat47014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap47016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq44951 Zct;
tcellseq44951 Decstack;
tcellset44947 Cycleroots;
tcellseq44951 Tempstack;
NI Recgclock;
tmemregion27210 Region;
tgcstat47014 Stat;
};
typedef N_NIMCALL_PTR(void, TY3089) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3094) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3089 marker;
TY3094 deepcopy;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  intset222056  {
NI Counter;
NI Max;
ttrunk222052* Head;
ttrunkseq222054* Data;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tidobj200015  {
  TNimObject Sup;
NI Id;
};
struct  tstrtable225820  {
NI Counter;
tsymseq225818* Data;
};
struct  tlineinfo195539  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  tloc225830  {
NU8 K;
NU8 S;
NU8 Flags;
ttype225852* T;
trope177009* R;
trope177009* Heaproot;
};
struct  tsym225846  {
  tidobj200015 Sup;
NU8 Kind;
union {
struct {ttypeseq225848* Typeinstcache;
tscope225840* Typscope;
} S1;
struct {TY225947* Procinstcache;
tscope225840* Scope;
} S2;
struct {TY225947* Usedgenerics;
tstrtable225820 Tab;
} S3;
struct {tsym225846* Guard;
} S4;
} kindU;
NU16 Magic;
ttype225852* Typ;
tident200021* Name;
tlineinfo195539 Info;
tsym225846* Owner;
NU32 Flags;
tnode225816* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc225830 Loc;
tlib225834* Annex;
tnode225816* Constraint;
};
struct TY84745 {
NimStringDesc* Field0;
NI Field1;
};
struct  tpasscontext286005  {
  TNimObject Sup;
NIM_BOOL Fromcache;
};
typedef trope177009* tcfilesections549019[18];
struct  tidpair225860  {
tidobj200015* Key;
TNimObject* Val;
};
struct  tidtable225864  {
NI Counter;
tidpairseq225862* Data;
};
struct  tlinkedlist127028  {
tlistentry127022* Head;
tlistentry127022* Tail;
NI Counter;
};
struct  tnodepair225872  {
NI H;
tnode225816* Key;
NI Val;
};
struct  tnodetable225876  {
NI Counter;
tnodepairseq225874* Data;
};
typedef trope177009* TY549138[10];
struct  tcgen549035  {
  tpasscontext286005 Sup;
tsym225846* Module;
NimStringDesc* Filename;
tcfilesections549019 S;
NIM_BOOL Preventstacktrace;
NIM_BOOL Usesthreadvars;
NIM_BOOL Framedeclared;
NIM_BOOL Isheaderfile;
NIM_BOOL Includesstringh;
NIM_BOOL Objhaskidsvalid;
NimStringDesc* Cfilename;
tidtable225864 Typecache;
tidtable225864 Forwtypecache;
intset222056 Declaredthings;
intset222056 Declaredprotos;
tlinkedlist127028 Headerfiles;
intset222056 Typeinfomarker;
tcproc549031* Initproc;
tcproc549031* Postinitproc;
tcproc549031* Preinitproc;
ttypeseq225848* Typestack;
tnodetable225876 Datacache;
tsymseq225818* Forwardedprocs;
NI Typenodes;
NI Nimtypes;
trope177009* Typenodesname;
trope177009* Nimtypesname;
NI Labels;
TY549138 Extensionloaders;
trope177009* Injectstmt;
};
typedef trope177009* tcprocsections549023[3];
struct  tblock549029  {
NI Id;
trope177009* Label;
tcprocsections549023 Sections;
NIM_BOOL Isloop;
NI16 Nestedtrystmts;
NI16 Nestedexceptstmts;
NI16 Framelen;
};
struct  tcproc549031  {
tsym225846* Prc;
NIM_BOOL Beforeretneeded;
NIM_BOOL Threadvaraccessed;
tnodeseq225810* Nestedtrystmts;
NI Inexceptblock;
TY195552* Finallysafepoints;
NI Labels;
TY549102* Blocks;
NI Breakidx;
NU32 Options;
NI Maxframelen;
tcgen549035* Module;
NI Withinloop;
NI Gcframeid;
trope177009* Gcframetype;
};
typedef trope177009* TY553703[1];
struct  tident200021  {
  tidobj200015 Sup;
NimStringDesc* S;
tident200021* Next;
NI H;
};
struct  tlistentry127022  {
  TNimObject Sup;
tlistentry127022* Prev;
tlistentry127022* Next;
};
struct  tlib225834  {
  tlistentry127022 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope177009* Name;
tnode225816* Path;
};
typedef trope177009* TY588896[2];
struct  ttype225852  {
  tidobj200015 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq225848* Sons;
tnode225816* N;
tsym225846* Owner;
tsym225846* Sym;
tsym225846* Destructor;
tsym225846* Deepcopy;
NI64 Size;
NI16 Align;
NI16 Locklevel;
tloc225830 Loc;
};
typedef trope177009* TY554018[3];
typedef NimStringDesc* TY555091[14];
struct  tnode225816  {
ttype225852* Typ;
tlineinfo195539 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym225846* Sym;
} S4;
struct {tident200021* Ident;
} S5;
struct {tnodeseq225810* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
typedef trope177009* TY556046[4];
typedef NimStringDesc* TY225020[10];
struct tinfocc202016 {
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 tinfocc202016 TY202435[12];
typedef trope177009* TY177515[1];
struct  ttraversalclosure558233  {
tcproc549031* P;
NimStringDesc* Visitorfrmt;
};
typedef trope177009* TY558098[6];
typedef trope177009* TY557403[7];
typedef trope177009* TY557593[5];
typedef NimStringDesc* TY577903[21];
typedef NimStringDesc* TY576898[4];
typedef NimStringDesc* TY584003[4];
typedef NimStringDesc* TY577050[53];
typedef NimStringDesc* TY576515[10];
typedef NimStringDesc* TY583263[6];
struct  tfileinfo195537  {
NimStringDesc* Fullpath;
NimStringDesc* Projpath;
NimStringDesc* Shortname;
trope177009* Quotedname;
TY195552* Lines;
};
struct tinfoos174048 {
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 tinfoos174048 TY174070[23];
struct tinfocpu174463 {
NimStringDesc* Field0;
NI Field1;
NU8 Field2;
NI Field3;
NI Field4;
};
typedef tinfocpu174463 TY174481[14];
struct  tstrentry127024  {
  tlistentry127022 Sup;
NimStringDesc* Data;
};
struct TY117604 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
struct  trope177009  {
  TNimObject Sup;
trope177009* Left;
trope177009* Right;
NI Length;
NimStringDesc* Data;
};
typedef NI TY26420[8];
struct  tpagedesc44943  {
tpagedesc44943* Next;
NI Key;
TY26420 Bits;
};
struct  tbasechunk26438  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk26440  {
  tbasechunk26438 Sup;
tsmallchunk26440* Next;
tsmallchunk26440* Prev;
tfreecell26430* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk27204  {
NI Size;
NI Acc;
tllchunk27204* Next;
};
struct  tbigchunk26442  {
  tbasechunk26438 Sup;
tbigchunk26442* Next;
tbigchunk26442* Prev;
NI Align;
NF Data;
};
struct  ttrunk26413  {
ttrunk26413* Next;
NI Key;
TY26420 Bits;
};
typedef tavlnode27208* TY27214[2];
struct  tavlnode27208  {
TY27214 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  ttrunk222052  {
ttrunk222052* Next;
NI Key;
TY26420 Bits;
};
struct  tscope225840  {
NI Depthlevel;
tstrtable225820 Symbols;
tnodeseq225810* Usingsyms;
tscope225840* Parent;
};
struct  tinstantiation225836  {
tsym225846* Sym;
ttypeseq225848* Concretetypes;
TY225936* Usedby;
};
struct  tiipair235270  {
NI Key;
NI Val;
};
struct  tiitable235274  {
NI Counter;
tiipairseq235272* Data;
};
struct  tindex276028  {
NI Lastidxkey;
NI Lastidxval;
tiitable235274 Tab;
NimStringDesc* R;
NI Offset;
};
struct  memfile274208  {
void* Mem;
NI Size;
int Handle;
};
struct  trodreader276030  {
  TNimObject Sup;
NI Pos;
NCSTRING S;
NU32 Options;
NU8 Reason;
TY225936* Moddeps;
TY225936* Files;
NI Dataidx;
NI Convertersidx;
NI Initidx;
NI Interfidx;
NI Compilerprocsidx;
NI Methodsidx;
NimStringDesc* Filename;
tindex276028 Index;
tindex276028 Imports;
NI Readerindex;
NI Line;
NI Moduleid;
tidtable225864 Syms;
memfile274208 Memfile;
tsymseq225818* Methods;
NimStringDesc* Origfile;
NIM_BOOL Inviewmode;
};
struct  tfreecell26430  {
tfreecell26430* Next;
NI Zerofield;
};
struct ttypeseq225848 {
  TGenericSeq Sup;
  ttype225852* data[SEQ_DECL_SIZE];
};
struct ttrunkseq222054 {
  TGenericSeq Sup;
  ttrunk222052* data[SEQ_DECL_SIZE];
};
struct TY225947 {
  TGenericSeq Sup;
  tinstantiation225836* data[SEQ_DECL_SIZE];
};
struct tsymseq225818 {
  TGenericSeq Sup;
  tsym225846* data[SEQ_DECL_SIZE];
};
struct TY549150 {
  TGenericSeq Sup;
  tcgen549035* data[SEQ_DECL_SIZE];
};
struct tidpairseq225862 {
  TGenericSeq Sup;
  tidpair225860 data[SEQ_DECL_SIZE];
};
struct tnodepairseq225874 {
  TGenericSeq Sup;
  tnodepair225872 data[SEQ_DECL_SIZE];
};
struct tnodeseq225810 {
  TGenericSeq Sup;
  tnode225816* data[SEQ_DECL_SIZE];
};
struct TY195552 {
  TGenericSeq Sup;
  trope177009* data[SEQ_DECL_SIZE];
};
struct TY549102 {
  TGenericSeq Sup;
  tblock549029 data[SEQ_DECL_SIZE];
};
struct tbitset283012 {
  TGenericSeq Sup;
  NI8 data[SEQ_DECL_SIZE];
};
struct TY119808 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct TY195621 {
  TGenericSeq Sup;
  tfileinfo195537 data[SEQ_DECL_SIZE];
};
struct TY225936 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct tiipairseq235272 {
  TGenericSeq Sup;
  tiipair235270 data[SEQ_DECL_SIZE];
};
N_NIMCALL(trope177009*, torope_177076)(NimStringDesc* s);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tcell44935*, usrtocell_48646)(void* usr);
static N_INLINE(void, rtladdzct_50204)(tcell44935* c);
N_NOINLINE(void, addzct_48617)(tcellseq44951* s, tcell44935* c);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(void, initintset_222950)(intset222056* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_NIMCALL(tcgen549035*, newmodule_591437)(tsym225846* module);
N_NIMCALL(tcgen549035*, getcgenmodule_552291)(tsym225846* s);
N_NIMCALL(void, internalerror_198006)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_198126)(TY84745 x_198130);
N_NIMCALL(tcgen549035*, rawnewmodule_591427)(tsym225846* module);
N_NIMCALL(tcgen549035*, rawnewmodule_591102)(tsym225846* module, NimStringDesc* filename);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_NIMCALL(void, initlinkedlist_127043)(tlinkedlist127028* list);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_NIMCALL(void, initidtable_226167)(tidtable225864* x);
N_NIMCALL(tcproc549031*, newproc_549230)(tsym225846* prc, tcgen549035* module);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_51025)(tcell44935* c);
static N_INLINE(NIM_BOOL, canbecycleroot_48667)(tcell44935* c);
static N_INLINE(void, rtladdcycleroot_49429)(tcell44935* c);
N_NOINLINE(void, incl_45671)(tcellset44947* s, tcell44935* cell);
static N_INLINE(void, decref_50604)(tcell44935* c);
N_NIMCALL(NU32, initprocoptions_591061)(tcgen549035* m);
N_NIMCALL(tcproc549031*, newpreinitproc_591039)(tcgen549035* m);
N_NIMCALL(tcproc549031*, newpostinitproc_591050)(tcgen549035* m);
N_NIMCALL(void, initnodetable_226188)(tnodetable225876* x);
N_NIMCALL(trope177009*, gettempname_554244)(void);
N_NIMCALL(trope177009*, ropecg_552615)(tcgen549035* m, NimStringDesc* frmt, trope177009** args, NI argsLen0);
N_NIMCALL(void, app_177060)(trope177009** a, NimStringDesc* b);
N_NIMCALL(void, app_177052)(trope177009** a, trope177009* 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_74828, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(trope177009*, cgsym_552608)(tcgen549035* m, NimStringDesc* name);
N_NIMCALL(tsym225846*, getcompilerproc_282036)(NimStringDesc* name);
N_NIMCALL(void, genproc_553629)(tcgen549035* m, tsym225846* prc);
N_NIMCALL(NIM_BOOL, isactivated_589444)(tsym225846* prc);
N_NIMCALL(void, fillprocloc_561229)(tsym225846* sym);
N_NIMCALL(void, fillloc_552376)(tloc225830* a, NU8 k, ttype225852* typ, trope177009* r, NU8 s);
N_NIMCALL(ttype225852*, getuniquetype_548401)(ttype225852* key);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(trope177009*, manglename_553667)(tsym225846* s);
N_NIMCALL(trope177009*, ropef_177107)(NimStringDesc* frmt, trope177009** args, NI argsLen0);
N_NIMCALL(void, internalerror_197987)(tlineinfo195539 info, NimStringDesc* errmsg);
N_NIMCALL(NIM_BOOL, iskeyword_553651)(tident200021* w);
N_NIMCALL(trope177009*, newrope_177176)(NimStringDesc* data);
N_NIMCALL(NimStringDesc*, mangle_548763)(NimStringDesc* name);
N_NIMCALL(trope177009*, torope_177082)(NI64 i);
N_NIMCALL(void, addforwardedproc_552251)(tcgen549035* m, tsym225846* prc);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(void, genprocnoforward_588973)(tcgen549035* m, tsym225846* prc);
N_NIMCALL(void, useheader_552469)(tcgen549035* m, tsym225846* sym);
N_NIMCALL(NIM_BOOL, includestr_127297)(tlinkedlist127028* list, NimStringDesc* data);
N_NIMCALL(NimStringDesc*, getstr_232587)(tnode225816* a);
N_NIMCALL(void, genprocprototype_561314)(tcgen549035* m, tsym225846* sym);
N_NIMCALL(tsym225846*, getmodule_235243)(tsym225846* s);
N_NIMCALL(NIM_BOOL, containsorincl_222916)(intset222056* s, NI key);
N_NIMCALL(trope177009*, gettypedesc_556307)(tcgen549035* m, ttype225852* typ);
N_NIMCALL(trope177009*, gettypedescaux_554117)(tcgen549035* m, ttype225852* typ, intset222056* check);
N_NIMCALL(trope177009*, gettypepre_555101)(tcgen549035* m, ttype225852* typ);
N_NIMCALL(trope177009*, getsimpletypedesc_555085)(tcgen549035* m, ttype225852* typ);
N_NIMCALL(trope177009*, typenameorliteral_555038)(ttype225852* t, NimStringDesc* literal);
N_NIMCALL(trope177009*, gettypename_553914)(ttype225852* typ);
N_NIMCALL(trope177009*, con_177024)(trope177009* a, trope177009* b);
N_NIMCALL(trope177009*, typename_553883)(ttype225852* typ);
N_NIMCALL(trope177009*, con_177045)(trope177009** a, NI aLen0);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_80907, TNimType* typ);
N_NIMCALL(NI64, firstord_263004)(ttype225852* t);
N_NIMCALL(NI64, getsize_263199)(ttype225852* typ);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(trope177009*, cachegettype_554236)(tidtable225864 tab, ttype225852* key);
N_NIMCALL(TNimObject*, idtableget_235182)(tidtable225864 t, tidobj200015* key);
N_NIMCALL(NimStringDesc*, typetostring_263031)(ttype225852* typ, NU8 prefer);
static N_INLINE(ttype225852*, lastson_226267)(ttype225852* n);
static N_INLINE(NI, sonslen_226255)(ttype225852* n);
N_NIMCALL(ttype225852*, elemtype_263656)(ttype225852* t);
N_NIMCALL(trope177009*, gettypeforward_555192)(tcgen549035* m, ttype225852* typ);
N_NIMCALL(NIM_BOOL, isimportedtype_555001)(ttype225852* t);
N_NIMCALL(void, appf_177115)(trope177009** c, NimStringDesc* frmt, trope177009** args, NI argsLen0);
N_NIMCALL(NimStringDesc*, getforwardstructformat_555163)(tcgen549035* m);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(trope177009*, structorunion_555143)(ttype225852* t);
N_NIMCALL(void, idtableput_235196)(tidtable225864* t, tidobj200015* key, TNimObject* val);
N_NIMCALL(trope177009*, con_177031)(trope177009* a, NimStringDesc* b);
N_NIMCALL(void, pushtype_555916)(tcgen549035* m, ttype225852* typ);
N_NIMCALL(void, genprocparams_554626)(tcgen549035* m, ttype225852* t, trope177009** rettype, trope177009** params, intset222056* check, NIM_BOOL declareenvironment);
N_NIMCALL(NIM_BOOL, isinvalidreturntype_554176)(ttype225852* rettype);
N_NIMCALL(NU8, maptype_554055)(ttype225852* typ);
N_NIMCALL(NU8, mapsettype_554047)(ttype225852* typ);
N_NIMCALL(ttype225852*, skiptypes_230245)(ttype225852* t, NU64 kinds);
N_NIMCALL(NIM_BOOL, needscomplexassignment_554123)(ttype225852* typ);
N_NIMCALL(NIM_BOOL, containsgarbagecollectedref_263163)(ttype225852* typ);
static N_INLINE(NIM_BOOL, isobjlackingtypefield_554130)(ttype225852* typ);
N_NIMCALL(NIM_BOOL, ispureobject_263205)(ttype225852* typ);
static N_INLINE(NI, sonslen_226249)(tnode225816* n);
static N_INLINE(NIM_BOOL, iscompiletimeonly_273466)(ttype225852* t);
N_NIMCALL(NU8, paramstorageloc_554604)(tsym225846* param);
N_NIMCALL(trope177009*, getparamtypedesc_554527)(tcgen549035* m, ttype225852* t, intset222056* check);
N_NIMCALL(NIM_BOOL, ccgintroducedptr_554264)(tsym225846* s);
N_NIMCALL(void, appff_552228)(trope177009** dest, NimStringDesc* cformat, NimStringDesc* llvmformat, trope177009** args, NI argsLen0);
N_NIMCALL(NU8, mapreturntype_554101)(ttype225852* typ);
N_NIMCALL(trope177009*, con_177038)(NimStringDesc* a, trope177009* b);
N_NIMCALL(void, appcg_553004)(tcgen549035* m, trope177009** c, NimStringDesc* frmt, trope177009** args, NI argsLen0);
N_NIMCALL(NI64, lengthord_263016)(ttype225852* t);
N_NIMCALL(trope177009*, getrecorddesc_555668)(tcgen549035* m, ttype225852* typ, trope177009* name, intset222056* check);
N_NIMCALL(trope177009*, getrecordfields_555658)(tcgen549035* m, ttype225852* typ, intset222056* check);
N_NIMCALL(trope177009*, genrecordfieldsaux_555326)(tcgen549035* m, tnode225816* n, trope177009* accessexpr, ttype225852* rectype, intset222056* check);
static N_INLINE(tnode225816*, lastson_226261)(tnode225816* n);
N_NIMCALL(trope177009*, manglerecfieldname_555247)(tsym225846* field, ttype225852* rectype);
N_NIMCALL(NimStringDesc*, manglefield_553644)(NimStringDesc* name);
N_NIMCALL(NIM_CHAR, nsuToUpperChar)(NIM_CHAR c);
N_NIMCALL(trope177009*, gettupledesc_555846)(tcgen549035* m, ttype225852* typ, trope177009* name, intset222056* check);
N_NIMCALL(void, excl_222884)(intset222056* s, NI key);
N_NIMCALL(trope177009*, mangledynlibproc_560938)(tsym225846* sym);
N_NIMCALL(trope177009*, genprocheader_556516)(tcgen549035* m, tsym225846* prc);
N_NIMCALL(void, genclinedir_553424)(trope177009** r, tlineinfo195539 info);
N_NIMCALL(void, genclinedir_553252)(trope177009** r, NimStringDesc* filename, NI line);
N_NIMCALL(NimStringDesc*, makesinglelinecstring_548737)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, tofullpath_197037)(NI32 fileidx);
N_NIMCALL(NI, safelinenm_553241)(tlineinfo195539 info);
static N_INLINE(NI, tolinenumber_197073)(tlineinfo195539 info);
static N_INLINE(NIM_BOOL, crossescppboundary_588817)(tcgen549035* m, tsym225846* sym);
N_NIMCALL(void, genprocaux_588269)(tcgen549035* m, tsym225846* prc);
static N_INLINE(NI, len_226364)(tnode225816* n);
N_NIMCALL(void, assignlocalvar_560577)(tcproc549031* p, tsym225846* s);
N_NIMCALL(void, line_553100)(tcproc549031* p, NU8 s, trope177009* r);
static N_INLINE(trope177009**, s_549183)(tcproc549031* p, NU8 s);
N_NIMCALL(trope177009*, indentline_553049)(tcproc549031* p, trope177009* r);
N_NIMCALL(void, prepend_177068)(trope177009** a, trope177009* b);
N_NIMCALL(void, localdebuginfo_560469)(tcproc549031* p, tsym225846* s);
N_NIMCALL(void, linef_553122)(tcproc549031* p, NU8 s, NimStringDesc* frmt, trope177009** args, NI argsLen0);
N_NIMCALL(trope177009*, makecstring_195659)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(trope177009*, gentypeinfo_556602)(tcgen549035* m, ttype225852* t_556605);
N_NIMCALL(tcgen549035*, bmod_549220)(tsym225846* module);
N_NIMCALL(void, gentypeinfoauxbase_556801)(tcgen549035* m, ttype225852* typ, trope177009* name, trope177009* base);
N_NIMCALL(NIM_BOOL, canformacycle_263175)(ttype225852* typ);
N_NIMCALL(void, gentupleinfo_557717)(tcgen549035* m, ttype225852* typ, trope177009* name);
N_NIMCALL(trope177009*, getnimnode_556606)(tcgen549035* m);
N_NIMCALL(ttype225852*, fakeclosuretype_558218)(tsym225846* owner);
N_NIMCALL(ttype225852*, newtype_226083)(NU8 kind, tsym225846* owner);
N_NIMCALL(void, rawaddson_230562)(ttype225852* father, ttype225852* son);
N_NIMCALL(void, gentypeinfoaux_556859)(tcgen549035* m, ttype225852* typ, trope177009* name);
N_NIMCALL(trope177009*, gentraverseproc_559044)(tcgen549035* m, ttype225852* typ, NU8 reason);
N_NIMCALL(trope177009*, getglobaltempname_554254)(void);
static N_INLINE(NI, backendid_224425)(void);
N_NIMCALL(void, gentraverseprocseq_558879)(ttraversalclosure558233* c, trope177009* accessor, ttype225852* typ);
N_NIMCALL(void, gettemp_558246)(tcproc549031* p, ttype225852* t, tloc225830* result, NIM_BOOL needsinit);
N_NIMCALL(void, linefmt_553148)(tcproc549031* p, NU8 s, NimStringDesc* frmt, trope177009** args, NI argsLen0);
N_NIMCALL(void, constructloc_559924)(tcproc549031* p, tloc225830* loc, NIM_BOOL istemp);
static N_INLINE(NIM_BOOL, iscomplexvaluetype_559828)(ttype225852* t);
N_NIMCALL(trope177009*, rdloc_559637)(tloc225830* a);
N_NIMCALL(void, usestringh_552459)(tcgen549035* m);
N_NIMCALL(trope177009*, addrloc_559664)(tloc225830* a);
N_NIMCALL(void, genobjectinit_559721)(tcproc549031* p, NU8 section, ttype225852* t, tloc225830* a, NIM_BOOL takeaddr);
N_NIMCALL(NU8, analyseobjectwithtypefield_263225)(ttype225852* t);
N_NIMCALL(ttype225852*, getsystype_282030)(NU8 kind);
N_NIMCALL(void, gentraverseproc_558236)(ttraversalclosure558233* c, trope177009* accessor, ttype225852* typ_558241);
static N_INLINE(trope177009*, parentobj_558700)(trope177009* accessor, tcgen549035* m);
N_NIMCALL(void, gentraverseproc_558253)(ttraversalclosure558233* c, trope177009* accessor, tnode225816* n);
N_NIMCALL(void, gencaserange_558242)(tcproc549031* p, tnode225816* branch);
static N_INLINE(tnode225816*, HEX5BHEX5D_226698)(tnode225816* n, NI i);
N_NIMCALL(trope177009*, genliteral_561345)(tcproc549031* p, tnode225816* n);
N_NIMCALL(trope177009*, genliteral_574007)(tcproc549031* p, tnode225816* n, ttype225852* ty);
N_NIMCALL(trope177009*, intliteral_561339)(NI64 i);
N_NIMCALL(trope177009*, int32literal_573942)(NI i);
N_NIMCALL(trope177009*, int64literal_573879)(NI64 i);
N_NIMCALL(trope177009*, uint64literal_573900)(NU64 i);
N_NIMCALL(NimStringDesc*, HEX24_6201)(NU64 x);
N_NIMCALL(NI, nodetabletestorset_288121)(tnodetable225876* t, tnode225816* key, NI val);
N_NIMCALL(trope177009*, getstrlit_573994)(tcgen549035* m, NimStringDesc* s);
N_NIMCALL(NimStringDesc*, tostrmaxprecision_234024)(NF f);
N_NIMCALL(tnode225816*, copynode_226323)(tnode225816* src);
N_NIMCALL(void, linecg_553135)(tcproc549031* p, NU8 s, NimStringDesc* frmt, trope177009** args, NI argsLen0);
N_NIMCALL(void, genarrayinfo_558210)(tcgen549035* m, ttype225852* typ, trope177009* name);
N_NIMCALL(void, gensetinfo_558132)(tcgen549035* m, ttype225852* typ, trope177009* name);
N_NIMCALL(void, genenuminfo_557789)(tcgen549035* m, ttype225852* typ, trope177009* name);
N_NIMCALL(void, genobjectinfo_557653)(tcgen549035* m, ttype225852* typ, trope177009* name);
N_NIMCALL(void, genobjectfields_556956)(tcgen549035* m, ttype225852* typ, tnode225816* n, trope177009* expr);
N_NIMCALL(trope177009*, discriminatortablename_556887)(tcgen549035* m, ttype225852* objtype_556890, tsym225846* d);
N_NIMCALL(tsym225846*, lookupinrecord_235236)(tnode225816* n, tident200021* field);
N_NIMCALL(NI64, getordvalue_263187)(tnode225816* n);
N_NIMCALL(void, gendeepcopyproc_559484)(tcgen549035* m, tsym225846* s, trope177009* result);
N_NIMCALL(void, initlocalvar_559943)(tcproc549031* p, tsym225846* v, NIM_BOOL immediateasgn);
N_NIMCALL(void, fillresult_554488)(tsym225846* param);
N_NIMCALL(void, assignparam_561159)(tcproc549031* p, tsym225846* s);
N_NIMCALL(void, allocparam_560344)(tcproc549031* p, tsym225846* s);
N_NIMCALL(void, closuresetup_588217)(tcproc549031* p, tsym225846* prc);
N_NIMCALL(void, genstmts_561298)(tcproc549031* p, tnode225816* t);
N_NIMCALL(void, expr_561305)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(tnode225816*, getbody_279269)(tsym225846* s);
N_NIMCALL(void, putlocintodest_561321)(tcproc549031* p, tloc225830* d, tloc225830* s);
N_NIMCALL(void, genassignment_561330)(tcproc549031* p, tloc225830* dest, tloc225830* src, NU8 flags);
N_NIMCALL(void, genrefassign_559819)(tcproc549031* p, tloc225830* dest, tloc225830* src, NU8 flags);
static N_INLINE(NIM_BOOL, usesnativegc_169179)(void);
N_NIMCALL(void, keepalive_560007)(tcproc549031* p, tloc225830* tokeepalive);
N_NIMCALL(void, optasgnloc_574761)(tloc225830* a, ttype225852* t, trope177009* field, tloc225830* Result);
N_NIMCALL(NI, len_230005)(ttype225852* n);
N_NIMCALL(void, genoptasgntuple_574774)(tcproc549031* p, tloc225830* dest, tloc225830* src, NU8 flags);
N_NIMCALL(void, gengenericasgn_575008)(tcproc549031* p, tloc225830* dest, tloc225830* src, NU8 flags);
N_NIMCALL(NI, asgncomplexity_574702)(tnode225816* n);
N_NIMCALL(void, genoptasgnobject_574885)(tcproc549031* p, tloc225830* dest, tloc225830* src, NU8 flags, tnode225816* t);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(void, genvarprototype_561284)(tcgen549035* m, tsym225846* sym);
N_NIMCALL(void, genvarprototypeaux_566482)(tcgen549035* m, tsym225846* sym);
N_NIMCALL(void, declarethreadvar_560753)(tcgen549035* m, tsym225846* s, NIM_BOOL isextern);
static N_INLINE(NIM_BOOL, emulatedthreadvars_553624)(void);
N_NIMCALL(NIM_BOOL, issimpleconst_552416)(ttype225852* typ);
N_NIMCALL(void, putintodest_575477)(tcproc549031* p, tloc225830* d, ttype225852* t, trope177009* r);
N_NIMCALL(void, initloc_552361)(tloc225830* result, NU8 k, ttype225852* typ, NU8 s);
N_NIMCALL(void, gencomplexconst_585731)(tcproc549031* p, tsym225846* sym, tloc225830* d);
N_NIMCALL(void, requestconstimpl_561291)(tcproc549031* p, tsym225846* sym);
N_NIMCALL(tcgen549035*, findpendingmodule_552313)(tcgen549035* m, tsym225846* s);
N_NIMCALL(trope177009*, genconstexpr_584775)(tcproc549031* p, tnode225816* n);
N_NIMCALL(void, tobitset_284004)(tnode225816* s, tbitset283012** b);
N_NIMCALL(trope177009*, genrawsetdata_574444)(tbitset283012* cs, NI size);
N_NIMCALL(NimStringDesc*, nsuToHex)(NI64 x, NI len);
N_NIMCALL(NI64, bitsettoword_574296)(tbitset283012* s, NI size);
N_NIMCALL(trope177009*, genconstseq_587122)(tcproc549031* p, tnode225816* n, ttype225852* t);
N_NIMCALL(void, appcg_553018)(tcgen549035* m, NU8 s, NimStringDesc* frmt, trope177009** args, NI argsLen0);
N_NIMCALL(trope177009*, genconstsimplelist_587042)(tcproc549031* p, tnode225816* n);
N_NIMCALL(trope177009*, gennamedconstexpr_587011)(tcproc549031* p, tnode225816* n);
N_NIMCALL(void, initlocexpr_561352)(tcproc549031* p, tnode225816* e, tloc225830* result);
N_NIMCALL(void, accessthreadlocalvar_553617)(tcproc549031* p, tsym225846* s);
static N_INLINE(trope177009**, procsec_549207)(tcproc549031* p, NU8 s);
static N_INLINE(NIM_BOOL, isemptytype_232991)(ttype225852* t);
N_NIMCALL(void, putdataintodest_575439)(tcproc549031* p, tloc225830* d, ttype225852* t, trope177009* r);
N_NIMCALL(void, genlinedir_553435)(tcproc549031* p, tnode225816* t);
N_NIMCALL(trope177009*, sourceline_196274)(tlineinfo195539 i);
N_NIMCALL(NimStringDesc*, tofilename_197025)(NI32 fileidx);
N_NIMCALL(trope177009*, quotedfilename_198178)(tlineinfo195539 i);
N_NIMCALL(void, genmagicexpr_584474)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 op);
N_NIMCALL(void, genandor_579938)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 m);
N_NIMCALL(trope177009*, getlabel_561248)(tcproc549031* p);
N_NIMCALL(void, fixlabel_561270)(tcproc549031* p, trope177009* labl);
N_NIMCALL(void, unaryarith_577895)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 op);
N_NIMCALL(void, unaryarithoverflow_576890)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 m);
N_NIMCALL(void, binaryfloatarith_583958)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 m);
N_NIMCALL(void, binaryarith_577042)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 op);
N_NIMCALL(void, geneqproc_577444)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, binaryarithoverflow_576502)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 m);
N_NIMCALL(NI64, lastord_263010)(ttype225852* t);
N_NIMCALL(void, genrepr_581781)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(trope177009*, lenfield_561364)(tcproc549031* p);
N_NIMCALL(void, gcusage_580100)(tnode225816* n);
N_NIMCALL(void, message_197976)(tlineinfo195539 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, rendertree_250058)(tnode225816* n, NU8 renderflags);
N_NIMCALL(void, gengettypeinfo_581893)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, genswap_582287)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, unaryexpr_576440)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt);
N_NIMCALL(void, binaryexpr_575669)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt);
N_NIMCALL(void, binarystmt_575515)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt);
N_NIMCALL(void, genstrconcat_580115)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, genstrappend_580309)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, genseqelemappend_580589)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, genstrequals_583805)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, genisnil_577853)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, gendollar_581917)(tcproc549031* p, tnode225816* n, tloc225830* d, NimStringDesc* frmt);
N_NIMCALL(void, genof_581744)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(void, genof_581604)(tcproc549031* p, tnode225816* x, ttype225852* typ, tloc225830* d);
N_NIMCALL(void, globalerror_197934)(tlineinfo195539 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(trope177009*, genofhelper_581451)(tcproc549031* p, ttype225852* dest, trope177009* a);
N_NIMCALL(void, gennew_580777)(tcproc549031* p, tnode225816* e);
N_NIMCALL(void, rawgennew_580723)(tcproc549031* p, tloc225830* a, trope177009* sizeexpr_580727);
N_NIMCALL(void, gennewfinalize_581375)(tcproc549031* p, tnode225816* e);
N_NIMCALL(void, gennewseq_580855)(tcproc549031* p, tnode225816* e);
N_NIMCALL(void, gennewseqaux_580818)(tcproc549031* p, tloc225830* dest, trope177009* length);
N_NIMCALL(void, gensomecast_583392)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(trope177009*, getclosuretype_556322)(tcgen549035* m, ttype225852* t, NU8 kind);
N_NIMCALL(trope177009*, rdcharloc_559698)(tloc225830* a);
N_NIMCALL(void, genord_583383)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, unaryexprchar_576471)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt);
N_NIMCALL(void, genarraylen_581958)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 op);
N_NIMCALL(void, unarystmt_575572)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt);
N_NIMCALL(void, gensetlengthstr_582278)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, gensetlengthseq_582074)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, gensetop_583255)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 op);
N_NIMCALL(void, binarystmtinexcl_582493)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt);
N_NIMCALL(trope177009*, rdsetelemloc_582353)(tloc225830* a, ttype225852* settype);
N_NIMCALL(void, binaryexprchar_576040)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt);
N_NIMCALL(void, geninop_582640)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(NIM_BOOL, fewcmps_582408)(tnode225816* s);
N_NIMCALL(void, geninexpraux_578619)(tcproc549031* p, tnode225816* e, tloc225830* a, tloc225830* b, tloc225830* d);
N_NIMCALL(void, binaryexprin_582451)(tcproc549031* p, tnode225816* e, tloc225830* a, tloc225830* b, tloc225830* d, NimStringDesc* frmt);
N_NIMCALL(NimStringDesc*, ropetostr_177101)(trope177009* p);
N_NIMCALL(void, gencall_565235)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, genclosurecall_562683)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* d);
N_NIMCALL(trope177009*, genarg_562069)(tcproc549031* p, tnode225816* n_562072, tsym225846* param);
static N_INLINE(trope177009*, genargstringtocstring_562040)(tcproc549031* p, tnode225816* n);
N_NIMCALL(trope177009*, openarrayloc_561955)(tcproc549031* p, tnode225816* n);
N_NIMCALL(tnode225816*, skipconv_273732)(tnode225816* n);
N_NIMCALL(NU16, getmagic_261845)(tnode225816* op);
N_NIMCALL(trope177009*, genargnoparam_562129)(tcproc549031* p, tnode225816* n);
N_NIMCALL(trope177009*, getrawproctype_562690)(tcproc549031* p, ttype225852* t);
N_NIMCALL(NIM_BOOL, leftappearsonrightside_561396)(tnode225816* le, tnode225816* ri);
N_NIMCALL(NU8, ispartof_478430)(tnode225816* a, tnode225816* b);
static N_INLINE(NIM_BOOL, hasnoinit_561468)(tnode225816* call);
N_NIMCALL(void, resetloc_559870)(tcproc549031* p, tloc225830* loc);
N_NIMCALL(trope177009*, addcomma_562695)(trope177009* r);
N_NIMCALL(void, geninfixcall_563441)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* d);
N_NIMCALL(void, fixupcall_561539)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* d, trope177009* callee, trope177009* params);
N_NIMCALL(void, gennamedparamcall_564281)(tcproc549031* p, tnode225816* ri, tloc225830* d);
N_NIMCALL(void, genprefixcall_562149)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* d);
static N_INLINE(void, poststmtactions_553608)(tcproc549031* p);
N_NIMCALL(void, genreset_580695)(tcproc549031* p, tnode225816* n);
N_NIMCALL(void, genecho_580011)(tcproc549031* p, tnode225816* n);
N_NIMCALL(NimStringDesc*, nsuRepeatStr)(NI count, NimStringDesc* s);
N_NIMCALL(void, genarrtoseq_581230)(tcproc549031* p, tnode225816* t, tloc225830* d);
N_NIMCALL(void, genseqconstr_581162)(tcproc549031* p, tnode225816* t, tloc225830* d);
N_NIMCALL(void, localerror_197955)(tlineinfo195539 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(tnode225816*, wrapprocforspawn_426897)(tsym225846* owner, tnode225816* spawnexpr, ttype225852* rettype, tnode225816* barrier, tnode225816* dest);
N_NIMCALL(tnode225816*, liftparallel_485972)(tsym225846* owner, tnode225816* n);
N_NIMCALL(void, gendeepcopy_575338)(tcproc549031* p, tloc225830* dest, tloc225830* src);
N_NIMCALL(NIM_BOOL, isdeepconstexpr_261958)(tnode225816* n);
N_NIMCALL(trope177009*, gensetnode_574497)(tcproc549031* p, tnode225816* n);
N_NIMCALL(void, gensetconstr_584832)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, exprcomplexconst_586230)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(void, genarrayconstr_585663)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(NIM_BOOL, handleconstexpr_584779)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(void, gentupleconstr_585145)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(void, genobjconstr_580896)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, genfieldcheck_578627)(tcproc549031* p, tnode225816* e, trope177009* obj, tsym225846* field);
N_NIMCALL(tnode225816*, newstrnode_226118)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(void, gencast_583477)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, genconv_583708)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(NIM_BOOL, comparetypes_270571)(ttype225852* x, ttype225852* y, NU8 cmp, NU8 flags);
N_NIMCALL(void, genaddr_578115)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, genbracketexpr_579781)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(void, genarrayelem_579509)(tcproc549031* p, tnode225816* x, tnode225816* y, tloc225830* d);
N_NIMCALL(NIM_BOOL, isconstexpr_261921)(tnode225816* n);
N_NIMCALL(void, genopenarrayelem_579643)(tcproc549031* p, tnode225816* x, tnode225816* y, tloc225830* d);
N_NIMCALL(void, genseqelem_579689)(tcproc549031* p, tnode225816* x, tnode225816* y, tloc225830* d);
N_NIMCALL(void, gencstringelem_579613)(tcproc549031* p, tnode225816* x, tnode225816* y, tloc225830* d);
N_NIMCALL(void, gentupleelem_578322)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, genderef_565881)(tcproc549031* p, tnode225816* e, tloc225830* d, NIM_BOOL enforcederef);
N_NIMCALL(void, genrecordfield_578443)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(ttype225852*, genrecordfieldaux_578231)(tcproc549031* p, tnode225816* e, tloc225830* d, tloc225830* a);
N_NIMCALL(void, gencheckedrecordfield_579280)(tcproc549031* p, tnode225816* e, tloc225830* d);
N_NIMCALL(void, genblock_568796)(tcproc549031* p, tnode225816* t, tloc225830* d);
N_NIMCALL(NI, startblock_565985)(tcproc549031* p, NimStringDesc* start, trope177009** args, NI argsLen0);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, endblock_566106)(tcproc549031* p);
N_NIMCALL(void, endblock_566069)(tcproc549031* p, trope177009* blockend);
N_NIMCALL(trope177009*, blockbody_566053)(tblock549029* b);
N_NIMCALL(void, genstmtlistexpr_585804)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(void, genif_567223)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(void, lineff_553218)(tcproc549031* p, NU8 s, NimStringDesc* cformat, NimStringDesc* llvmformat, trope177009** args, NI argsLen0);
N_NIMCALL(void, downconv_586061)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(NI, inheritancediff_270588)(ttype225852* a, ttype225852* b);
N_NIMCALL(void, upconv_585871)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(void, genrangechck_583574)(tcproc549031* p, tnode225816* n, tloc225830* d, NimStringDesc* magic);
N_NIMCALL(NIM_BOOL, levalue_235487)(tnode225816* a, tnode225816* b);
N_NIMCALL(void, convstrtocstr_583745)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(void, convcstrtostr_583775)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(void, genclosure_585501)(tcproc549031* p, tnode225816* n, tloc225830* d);
static N_INLINE(NIM_BOOL, isconstclosure_585420)(tnode225816* n);
static N_INLINE(NIM_BOOL, isroutine_232781)(tsym225846* s);
N_NIMCALL(void, genwhilestmt_568504)(tcproc549031* p, tnode225816* t);
static N_INLINE(trope177009*, assignlabel_566045)(tblock549029* b);
N_NIMCALL(NIM_BOOL, stmtscontainpragma_548128)(tnode225816* n, NU8 w);
N_NIMCALL(void, gencomputedgoto_568038)(tcproc549031* p, tnode225816* n);
N_NIMCALL(void, localerror_197966)(tlineinfo195539 info, NimStringDesc* arg);
N_NIMCALL(void, genvarstmt_566830)(tcproc549031* p, tnode225816* n);
N_NIMCALL(void, gensinglevar_566486)(tcproc549031* p, tnode225816* a);
N_NIMCALL(void, assignglobalvar_560944)(tcproc549031* p, tsym225846* s);
N_NIMCALL(void, varindynamiclib_560931)(tcgen549035* m, tsym225846* sym);
N_NIMCALL(void, loaddynamiclib_587311)(tcgen549035* m, tlib225834* lib);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, libcandidates_170409)(NimStringDesc* s, TY119808** dest);
N_NIMCALL(void, msgwriteln_197236)(NimStringDesc* s);
N_NIMCALL(trope177009*, cstringlit_560296)(tcgen549035* m, trope177009** r, NimStringDesc* s);
N_NIMCALL(trope177009*, makellvmstring_548816)(NimStringDesc* s);
N_NIMCALL(trope177009*, cstringlit_560237)(tcproc549031* p, trope177009** r, NimStringDesc* s);
N_NIMCALL(void, registergcroot_565607)(tcproc549031* p, tsym225846* v);
N_NIMCALL(trope177009*, gentraverseprocforglobal_559442)(tcgen549035* m, tsym225846* s);
static N_INLINE(NIM_BOOL, isassignedimmediately_565633)(tnode225816* n);
static N_INLINE(void, loadinto_565888)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* a);
N_NIMCALL(void, genasgncall_565404)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* d);
N_NIMCALL(void, genclosurevar_566753)(tcproc549031* p, tnode225816* a);
N_NIMCALL(void, genvartuple_565649)(tcproc549031* p, tnode225816* n);
N_NIMCALL(tnode225816*, lowertupleunpacking_424184)(tnode225816* n, tsym225846* owner);
N_NIMCALL(void, genconststmt_566925)(tcproc549031* p, tnode225816* t);
N_NIMCALL(NIM_BOOL, containscompiletimeonly_273490)(ttype225852* t);
static N_INLINE(NIM_BOOL, emitlazily_552325)(tsym225846* s);
N_NIMCALL(void, gencase_571419)(tcproc549031* p, tnode225816* t, tloc225830* d);
N_NIMCALL(void, genstringcase_570655)(tcproc549031* p, tnode225816* t, tloc225830* d);
N_NIMCALL(NI, nextpoweroftwo_146528)(NI x);
N_NIMCALL(void, gencasestringbranch_570258)(tcproc549031* p, tnode225816* b, tloc225830* e, trope177009* labl, trope177009** branches, NI branchesLen0);
N_NIMCALL(NI64, hashstring_548156)(NimStringDesc* s);
N_NIMCALL(trope177009*, gencasesecondpass_569974)(tcproc549031* p, tnode225816* t, tloc225830* d, NI labid, NI until);
N_NIMCALL(void, exprblock_566174)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(void, gencasegeneric_570229)(tcproc549031* p, tnode225816* t, tloc225830* d, NimStringDesc* rangeformat, NimStringDesc* eqformat);
N_NIMCALL(trope177009*, genifforcaseuntil_570114)(tcproc549031* p, tnode225816* t, tloc225830* d, NimStringDesc* rangeformat, NimStringDesc* eqformat, NI until, tloc225830* a);
N_NIMCALL(void, gencasegenericbranch_569826)(tcproc549031* p, tnode225816* b, tloc225830* e, NimStringDesc* rangeformat, NimStringDesc* eqformat, trope177009* labl);
N_NIMCALL(void, genordinalcase_571278)(tcproc549031* p, tnode225816* n, tloc225830* d);
N_NIMCALL(NI, ifswitchsplitpoint_571090)(tcproc549031* p, tnode225816* n);
N_NIMCALL(NIM_BOOL, branchhastoobigrange_570947)(tnode225816* b);
N_NIMCALL(void, genreturnstmt_567948)(tcproc549031* p, tnode225816* t);
N_NIMCALL(void, blockleaveactions_567662)(tcproc549031* p, NI howmanytrys, NI howmanyexcepts);
static N_INLINE(tnode225816*, pop_567744)(tnodeseq225810** s_567752);
N_NIMCALL(void, genbreakstmt_569347)(tcproc549031* p, tnode225816* t);
N_NIMCALL(void, genasgn_573740)(tcproc549031* p, tnode225816* e, NIM_BOOL fastasgn);
N_NIMCALL(NIM_BOOL, fielddiscriminantcheckneeded_573403)(tcproc549031* p, tnode225816* asgn);
N_NIMCALL(void, asgnfielddiscriminant_573614)(tcproc549031* p, tnode225816* e);
N_NIMCALL(void, gendiscriminantcheck_573555)(tcproc549031* p, tloc225830* a, tloc225830* tmp, ttype225852* objtype, tsym225846* field);
N_NIMCALL(trope177009*, discriminatortabledecl_556942)(tcgen549035* m, ttype225852* objtype, tsym225846* d);
N_NIMCALL(void, genasmstmt_572899)(tcproc549031* p, tnode225816* t);
N_NIMCALL(trope177009*, genasmoremitstmt_572652)(tcproc549031* p, tnode225816* t, NIM_BOOL isasmstmt);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(void, gentrycpp_571518)(tcproc549031* p, tnode225816* t, tloc225830* d);
static N_INLINE(void, gensimpleblock_566160)(tcproc549031* p, tnode225816* stmts);
N_NIMCALL(void, gentry_572059)(tcproc549031* p, tnode225816* t, tloc225830* d);
N_NIMCALL(NIM_BOOL, isdefined_201036)(NimStringDesc* symbol);
N_NIMCALL(void, line_553111)(tcproc549031* p, NU8 s, NimStringDesc* r);
static N_INLINE(trope177009*, pop_177533)(TY195552** s_177541);
N_NIMCALL(void, genraisestmt_569687)(tcproc549031* p, tnode225816* t);
N_NIMCALL(NimStringDesc*, getraisefrmt_569641)(tcproc549031* p);
N_NIMCALL(void, gentypesection_559627)(tcgen549035* m, tnode225816* n);
N_NIMCALL(void, genpragma_573320)(tcproc549031* p_573322, tnode225816* n);
N_NIMCALL(NU8, whichpragma_262304)(tnode225816* n);
N_NIMCALL(void, genemit_573031)(tcproc549031* p, tnode225816* t);
N_NIMCALL(void, genbreakpoint_573073)(tcproc549031* p, tnode225816* t);
N_NIMCALL(void, genwatchpoint_573250)(tcproc549031* p, tnode225816* n);
N_NIMCALL(tsym225846*, skipgenericowner_232699)(tsym225846* s);
N_NIMCALL(void, genparforstmt_569047)(tcproc549031* p, tnode225816* t);
N_NIMCALL(void, genstate_566194)(tcproc549031* p, tnode225816* n);
N_NIMCALL(void, gengotostate_566287)(tcproc549031* p, tnode225816* n);
N_NIMCALL(void, genbreakstate_566398)(tcproc549031* p, tnode225816* n);
N_NIMCALL(trope177009*, initgcframe_560204)(tcproc549031* p);
N_NIMCALL(trope177009*, initframe_588179)(tcproc549031* p, trope177009* procname, trope177009* filename);
N_NIMCALL(void, appcg_553032)(tcproc549031* p, NU8 s, NimStringDesc* frmt, trope177009** args, NI argsLen0);
N_NIMCALL(trope177009*, deinitgcframe_560219)(tcproc549031* p);
N_NIMCALL(trope177009*, deinitframe_588200)(tcproc549031* p);
N_NIMCALL(void, symindynamiclib_587819)(tcgen549035* m, tsym225846* sym);
N_NIMCALL(NIM_BOOL, isgetprocaddr_587256)(tlib225834* lib);
N_NIMCALL(void, symindynamiclibpartial_588054)(tcgen549035* m, tsym225846* sym);
N_NIMCALL(void, rawmessage_197733)(NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, completecfilepath_202855)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(void, readmergeinfo_550815)(NimStringDesc* cfilename, tcgen549035* m);
N_NIMCALL(NimStringDesc*, getcfile_591662)(tcgen549035* m);
N_NIMCALL(NimStringDesc*, withpackagename_169946)(NimStringDesc* path);
static N_INLINE(NIM_BOOL, skipcodegen_286083)(tnode225816* n);
N_NIMCALL(void, registermoduletomain_590667)(tsym225846* m);
N_NIMCALL(trope177009*, getinitname_590647)(tsym225846* m);
N_NIMCALL(trope177009*, getsomeinitname_590213)(tsym225846* m, NimStringDesc* suffix);
N_NIMCALL(trope177009*, getdatinitname_590657)(tsym225846* m);
N_NIMCALL(trope177009*, ropeff_552206)(NimStringDesc* cformat, NimStringDesc* llvmformat, trope177009** args, NI argsLen0);
N_NIMCALL(tnode225816*, generatemethoddispatchers_423508)(void);
N_NIMCALL(void, genmainproc_589998)(tcgen549035* m);
N_NIMCALL(trope177009*, genfilenames_589935)(tcgen549035* m);
N_NIMCALL(void, finishmodule_591837)(tcgen549035* m);
N_NIMCALL(void, updatecachedmodule_592221)(tcgen549035* m);
N_NIMCALL(NIM_BOOL, mergerequired_551137)(tcgen549035* m);
N_NIMCALL(void, mergefiles_551303)(NimStringDesc* cfilename, tcgen549035* m);
N_NIMCALL(void, geninitcode_590726)(tcgen549035* m);
N_NIMCALL(trope177009*, gensectionstart_550126)(NU8 ps);
N_NIMCALL(trope177009*, gensectionend_550177)(NU8 ps);
N_NIMCALL(trope177009*, gensectionstart_550028)(NU8 fs);
N_NIMCALL(trope177009*, gensectionend_550079)(NU8 fs);
N_NIMCALL(void, finishtypedescriptions_556475)(tcgen549035* m);
N_NIMCALL(trope177009*, genmodule_590962)(tcgen549035* m, NimStringDesc* cfile);
N_NIMCALL(trope177009*, getfileheader_589924)(NimStringDesc* cfile);
N_NIMCALL(trope177009*, getcopyright_589893)(NimStringDesc* cfile);
N_NIMCALL(NimStringDesc*, getcompilecfilecmd_203262)(NimStringDesc* cfilename, NIM_BOOL isexternal);
static N_INLINE(void, addinttypes_589879)(trope177009** result);
N_NIMCALL(trope177009*, genmergeinfo_550329)(tcgen549035* m);
N_NIMCALL(void, generateheaders_588093)(tcgen549035* m);
N_NIMCALL(void, generatethreadlocalstorage_560806)(tcgen549035* m);
N_NIMCALL(void, writerope_178423)(trope177009* head, NimStringDesc* filename, NIM_BOOL usewarning);
N_NIMCALL(void, addfiletocompile_202876)(NimStringDesc* filename);
N_NIMCALL(void, addfiletolink_202897)(NimStringDesc* filename);
N_NIMCALL(void, writemodule_592067)(tcgen549035* m, NIM_BOOL pending);
N_NIMCALL(void, generatethreadvarssize_560875)(tcgen549035* m);
N_NIMCALL(NIM_BOOL, shouldrecompile_592042)(trope177009* code, NimStringDesc* cfile);
N_NIMCALL(NimStringDesc*, toobjfile_202866)(NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, writeropeifnotequal_177094)(trope177009* r, NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, nosfileNewer)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, writemapping_203898)(trope177009* gsymbolmapping);
N_NIMCALL(void, writeheader_591583)(tcgen549035* m);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY117604* Result);
N_NIMCALL(void, resetmodule_591229)(tcgen549035* m);
N_NIMCALL(void, nullify_591290)(trope177009** arr_591296);
N_NIMCALL(void, nullify_591329)(trope177009** arr_591335);
STRING_LITERAL(TMP980, "\011", 1);
STRING_LITERAL(TMP3352, "compiler/cgen.nim", 17);
NIM_CONST TY84745 TMP3351 = {((NimStringDesc*) &TMP3352),
1271}
;
STRING_LITERAL(TMP3353, "$", 1);
STRING_LITERAL(TMP3354, "ropes: invalid format string $", 30);
STRING_LITERAL(TMP3359, "@", 1);
STRING_LITERAL(TMP3360, "%", 1);
STRING_LITERAL(TMP3361, "mangleName", 10);
STRING_LITERAL(TMP3364, "_", 1);
STRING_LITERAL(TMP3365, "extern $1 $2;$n", 15);
STRING_LITERAL(TMP3366, "getTypeDescAux: t == nil", 24);
STRING_LITERAL(TMP3367, "void", 4);
STRING_LITERAL(TMP3368, "TY", 2);
STRING_LITERAL(TMP3369, "getTypeName: ", 13);
STRING_LITERAL(TMP3370, "void*", 5);
STRING_LITERAL(TMP3371, "NI32", 4);
STRING_LITERAL(TMP3372, "NU8", 3);
STRING_LITERAL(TMP3373, "NU16", 4);
STRING_LITERAL(TMP3374, "NI64", 4);
STRING_LITERAL(TMP3375, "getSimpleTypeDesc: ", 19);
STRING_LITERAL(TMP3376, "NimStringDesc", 13);
STRING_LITERAL(TMP3377, "NimStringDesc*", 14);
STRING_LITERAL(TMP3378, "NCSTRING", 8);
STRING_LITERAL(TMP3379, "NIM_BOOL", 8);
STRING_LITERAL(TMP3380, "NIM_CHAR", 8);
STRING_LITERAL(TMP3381, "0", 1);
STRING_LITERAL(TMP3382, "NI", 2);
STRING_LITERAL(TMP3383, "NI8", 3);
STRING_LITERAL(TMP3384, "NI16", 4);
STRING_LITERAL(TMP3385, "NF", 2);
STRING_LITERAL(TMP3386, "NF32", 4);
STRING_LITERAL(TMP3387, "NF64", 4);
STRING_LITERAL(TMP3388, "NF128", 5);
STRING_LITERAL(TMP3389, "NU", 2);
STRING_LITERAL(TMP3390, "NU32", 4);
STRING_LITERAL(TMP3391, "NU64", 4);
NIM_CONST TY555091 numericaltypetostr_555090 = {((NimStringDesc*) &TMP3382),
((NimStringDesc*) &TMP3383),
((NimStringDesc*) &TMP3384),
((NimStringDesc*) &TMP3371),
((NimStringDesc*) &TMP3374),
((NimStringDesc*) &TMP3385),
((NimStringDesc*) &TMP3386),
((NimStringDesc*) &TMP3387),
((NimStringDesc*) &TMP3388),
((NimStringDesc*) &TMP3389),
((NimStringDesc*) &TMP3372),
((NimStringDesc*) &TMP3373),
((NimStringDesc*) &TMP3390),
((NimStringDesc*) &TMP3391)}
;
STRING_LITERAL(TMP3392, "cannot generate C type for: ", 28);
STRING_LITERAL(TMP3393, "$1 $2;$n", 8);
STRING_LITERAL(TMP3394, "typedef $1 $2 $2;$n", 19);
STRING_LITERAL(TMP3395, "union", 5);
STRING_LITERAL(TMP3396, "struct", 6);
STRING_LITERAL(TMP3397, "getTypeForward(", 15);
STRING_LITERAL(TMP3398, "*", 1);
STRING_LITERAL(TMP3399, "**", 2);
STRING_LITERAL(TMP3400, "mapType", 7);
STRING_LITERAL(TMP3401, "genProcParams", 13);
STRING_LITERAL(TMP3402, ", ", 2);
STRING_LITERAL(TMP3403, " ", 1);
STRING_LITERAL(TMP3404, ", NI $1Len$2", 12);
STRING_LITERAL(TMP3405, ", @NI $1Len$2", 13);
STRING_LITERAL(TMP3406, " Result", 7);
STRING_LITERAL(TMP3407, " @Result", 8);
STRING_LITERAL(TMP3408, "void* ClEnv", 11);
STRING_LITERAL(TMP3409, "...", 3);
STRING_LITERAL(TMP3410, "void)", 5);
STRING_LITERAL(TMP3411, ")", 1);
STRING_LITERAL(TMP3412, "(", 1);
STRING_LITERAL(TMP3413, "typedef $1_PTR($2, $3) $4;$n", 28);
STRING_LITERAL(TMP3414, "N_NIMCALL", 9);
STRING_LITERAL(TMP3415, "N_STDCALL", 9);
STRING_LITERAL(TMP3416, "N_CDECL", 7);
STRING_LITERAL(TMP3417, "N_SAFECALL", 10);
STRING_LITERAL(TMP3418, "N_SYSCALL", 9);
STRING_LITERAL(TMP3419, "N_INLINE", 8);
STRING_LITERAL(TMP3420, "N_NOINLINE", 10);
STRING_LITERAL(TMP3421, "N_FASTCALL", 10);
STRING_LITERAL(TMP3422, "N_CLOSURE", 9);
STRING_LITERAL(TMP3423, "N_NOCONV", 8);
NIM_CONST TY225020 callingconvtostr_554224 = {((NimStringDesc*) &TMP3414),
((NimStringDesc*) &TMP3415),
((NimStringDesc*) &TMP3416),
((NimStringDesc*) &TMP3417),
((NimStringDesc*) &TMP3418),
((NimStringDesc*) &TMP3419),
((NimStringDesc*) &TMP3420),
((NimStringDesc*) &TMP3421),
((NimStringDesc*) &TMP3422),
((NimStringDesc*) &TMP3423)}
;
STRING_LITERAL(TMP3424, "typedef struct {$nN_NIMCALL_PTR($2, ClPrc) $3;$nvoid* ClEnv;$n}"
" $1;$n", 69);
STRING_LITERAL(TMP3425, "struct $2 : #TGenericSeq {$n", 28);
STRING_LITERAL(TMP3426, "struct $2 {$n  #TGenericSeq Sup;$n", 34);
STRING_LITERAL(TMP3427, "  $1 data[SEQ_DECL_SIZE];$n};$n", 31);
STRING_LITERAL(TMP3428, "TGenericSeq", 11);
STRING_LITERAL(TMP3429, "typedef $1 $2[$3];$n", 20);
extern NIM_CONST TY202435 cc_202434;
STRING_LITERAL(TMP3430, " {$n", 4);
STRING_LITERAL(TMP3431, " {$n#TNimType* m_type;$n", 24);
STRING_LITERAL(TMP3432, " : public $1 {$n", 16);
STRING_LITERAL(TMP3433, " {$n  $1 Sup;$n", 15);
STRING_LITERAL(TMP3434, "genRecordFieldsAux", 18);
STRING_LITERAL(TMP3435, "$1.$2", 5);
STRING_LITERAL(TMP3436, "union {", 7);
STRING_LITERAL(TMP3437, "S", 1);
STRING_LITERAL(TMP3438, "struct {", 8);
STRING_LITERAL(TMP3439, "} $1;$n", 7);
STRING_LITERAL(TMP3440, "genRecordFieldsAux(record case branch)", 38);
STRING_LITERAL(TMP3441, "mangleRecFieldName", 18);
STRING_LITERAL(TMP3442, "$1 $2[SEQ_DECL_SIZE];$n", 23);
STRING_LITERAL(TMP3443, "genRecordFieldsAux()", 20);
STRING_LITERAL(TMP3444, "char dummy;$n", 13);
STRING_LITERAL(TMP3445, "};", 2);
STRING_LITERAL(TMP3446, "$1 $2 {$n", 9);
STRING_LITERAL(TMP3447, "$1 Field$2;$n", 13);
STRING_LITERAL(TMP3448, "char dummy;", 11);
STRING_LITERAL(TMP3449, "typedef NU8 $1[$2];$n", 21);
STRING_LITERAL(TMP3450, "getTypeDescAux(", 15);
STRING_LITERAL(TMP3451, "Dl_$1", 5);
STRING_LITERAL(TMP3452, "$N#line $2 $1$N", 15);
STRING_LITERAL(TMP3453, "; line $2 \"$1\"$n", 16);
STRING_LITERAL(TMP3455, "N_LIB_IMPORT ", 13);
STRING_LITERAL(TMP3456, "N_LIB_EXPORT ", 13);
STRING_LITERAL(TMP3457, "static ", 7);
STRING_LITERAL(TMP3458, "$1($2, $3)$4", 12);
STRING_LITERAL(TMP3459, "extern \"C\" ", 11);
STRING_LITERAL(TMP3460, " __attribute__((naked))", 23);
STRING_LITERAL(TMP3461, "$1;$n", 5);
STRING_LITERAL(TMP3462, "proc has no result symbol", 25);
STRING_LITERAL(TMP3463, " register", 9);
STRING_LITERAL(TMP3464, " volatile", 9);
STRING_LITERAL(TMP3465, " $1;$n", 6);
STRING_LITERAL(TMP3466, ";$n", 3);
STRING_LITERAL(TMP3467, "&", 1);
STRING_LITERAL(TMP3468, "F.s[$1].address = (void*)$3; F.s[$1].typ = $4; F.s[$1].name = $"
"2;$n", 67);
STRING_LITERAL(TMP3469, "NTI$1", 5);
STRING_LITERAL(TMP3470, "(&", 2);
STRING_LITERAL(TMP3471, "TNimType", 8);
STRING_LITERAL(TMP3472, "TNimNode", 8);
STRING_LITERAL(TMP3473, "extern TNimType $1; /* $2 */$n", 30);
STRING_LITERAL(TMP3474, "0", 1);
STRING_LITERAL(TMP3475, "void*", 5);
STRING_LITERAL(TMP3476, "$1.size = sizeof($2);$n$1.kind = $3;$n$1.base = $4;$n", 53);
STRING_LITERAL(TMP3477, "$1.flags = $2;$n", 16);
STRING_LITERAL(TMP3478, "TNimType $1; /* $2 */$n", 23);
STRING_LITERAL(TMP3479, "$1[$2]", 6);
STRING_LITERAL(TMP3480, "static TNimNode* $1[$2];$n", 26);
STRING_LITERAL(TMP3481, "$1[$2] = &$3;$n", 15);
STRING_LITERAL(TMP3482, "$1.kind = 1;$n$1.offset = offsetof($2, Field$3);$n$1.typ = $4;$"
"n$1.name = \"Field$3\";$n", 86);
STRING_LITERAL(TMP3483, "$1.len = $2; $1.kind = 2; $1.sons = &$3[0];$n", 45);
STRING_LITERAL(TMP3484, "$1.len = $2; $1.kind = 2;$n", 27);
STRING_LITERAL(TMP3485, "$1.node = &$2;$n", 16);
STRING_LITERAL(TMP3486, "TMP$1", 5);
STRING_LITERAL(TMP3487, "#nimGCvisit((void*)$1, op);$n", 29);
STRING_LITERAL(TMP3488, "N_NIMCALL(void, $1)(void* p, NI op)", 35);
STRING_LITERAL(TMP3489, "$1 a;$n", 7);
STRING_LITERAL(TMP3490, "a = ($1)p;$n", 12);
STRING_LITERAL(TMP3491, "%LOC", 4);
STRING_LITERAL(TMP3492, "LOC", 3);
STRING_LITERAL(TMP3493, "$1 = 0;$n", 9);
STRING_LITERAL(TMP3494, "(*$1)", 5);
STRING_LITERAL(TMP3495, "<string.h>", 10);
STRING_LITERAL(TMP3496, "memset((void*)$1, 0, sizeof($2));$n", 35);
STRING_LITERAL(TMP3497, ".Sup", 4);
STRING_LITERAL(TMP3498, "$1.m_type = $2;$n", 17);
STRING_LITERAL(TMP3499, "#objectInit($1, $2);$n", 22);
STRING_LITERAL(TMP3500, "for ($1 = 0; $1 < $2->$3; $1++) {$n", 35);
STRING_LITERAL(TMP3501, "len", 3);
STRING_LITERAL(TMP3502, "Sup.len", 7);
STRING_LITERAL(TMP3503, "for ($1 = 0; $1 < $2; $1++) {$n", 31);
STRING_LITERAL(TMP3504, "}$n", 3);
STRING_LITERAL(TMP3505, "$1.Sup", 6);
STRING_LITERAL(TMP3506, "genTraverseProc", 15);
STRING_LITERAL(TMP3507, "switch ($1.$2) {$n", 18);
STRING_LITERAL(TMP3508, "case $1 ... $2:$n", 17);
STRING_LITERAL(TMP3509, "genLiteral: ty is nil", 21);
STRING_LITERAL(TMP3510, "(-2147483647 -1)", 16);
STRING_LITERAL(TMP3511, "IL64($1)", 8);
STRING_LITERAL(TMP3512, "(IL64(-9223372036854775807) - IL64(1))", 38);
STRING_LITERAL(TMP3513, "NIM_TRUE", 8);
STRING_LITERAL(TMP3514, "NIM_FALSE", 9);
STRING_LITERAL(TMP3515, "ULL", 3);
STRING_LITERAL(TMP3516, "(($1) $2)", 9);
STRING_LITERAL(TMP3517, "TMP", 3);
STRING_LITERAL(TMP3518, "static NIM_CONST $1 $2 = {NIM_NIL,NIM_NIL};$n", 45);
STRING_LITERAL(TMP3519, "NIM_NIL", 7);
STRING_LITERAL(TMP3520, "((#NimStringDesc*) &$1)", 23);
STRING_LITERAL(TMP3521, "STRING_LITERAL($1, $2, $3);$n", 29);
STRING_LITERAL(TMP3522, "((#NimStringDesc*) &TMP$1)", 26);
STRING_LITERAL(TMP3527, "genLiteral(", 11);
STRING_LITERAL(TMP3528, "case $1:$n", 10);
STRING_LITERAL(TMP3529, "default:$n", 10);
STRING_LITERAL(TMP3530, "break;$n", 8);
STRING_LITERAL(TMP3531, "} $n", 4);
STRING_LITERAL(TMP3532, "genTraverseProc()", 17);
STRING_LITERAL(TMP3533, "$1.Field$2", 10);
STRING_LITERAL(TMP3534, "$1.ClEnv", 8);
STRING_LITERAL(TMP3535, "$1->data[$2]", 12);
STRING_LITERAL(TMP3536, "a", 1);
STRING_LITERAL(TMP3537, "(*a)", 4);
STRING_LITERAL(TMP3538, "$1 {$n$2$3$4}$n", 15);
STRING_LITERAL(TMP3539, "$1.marker = $2;$n", 17);
STRING_LITERAL(TMP3540, "$1.len = $2; $1.kind = 0;$n$3.node = &$1;$n", 43);
STRING_LITERAL(TMP3541, "$1.offset = $2;$n", 17);
STRING_LITERAL(TMP3542, "NI $1;$n", 8);
STRING_LITERAL(TMP3543, "static char* NIM_CONST $1[$2] = {$n$3};$n", 41);
STRING_LITERAL(TMP3544, "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(TMP3545, "$1.len = $2; $1.kind = 2; $1.sons = &$3[0];$n$4.node = &$1;$n", 61);
STRING_LITERAL(TMP3546, "$1.flags = 1<<2;$n", 18);
STRING_LITERAL(TMP3547, "anonymous obj with discriminator", 32);
STRING_LITERAL(TMP3548, "NimDT_$1_$2", 11);
STRING_LITERAL(TMP3549, "$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(TMP3550, "TNimNode* $1[$2];$n", 19);
STRING_LITERAL(TMP3551, "genObjectFields; nkOfBranch broken", 34);
STRING_LITERAL(TMP3552, "genObjectFields(nkRecCase)", 26);
STRING_LITERAL(TMP3553, "$1.kind = 1;$n$1.offset = offsetof($2, $3);$n$1.typ = $4;$n$1.n"
"ame = $5;$n", 74);
STRING_LITERAL(TMP3554, "genObjectFields", 15);
STRING_LITERAL(TMP3555, "genTypeInfo(", 12);
STRING_LITERAL(TMP3556, "$1.deepcopy =(void* (N_RAW_NIMCALL*)(void*))$2;$n", 49);
STRING_LITERAL(TMP3557, "\011return $1;$n", 13);
STRING_LITERAL(TMP3558, "Result", 6);
STRING_LITERAL(TMP3559, "$1 = alloca $3$nstore $3 $2, $3* $1$n", 37);
STRING_LITERAL(TMP3560, "closure generation failed", 25);
STRING_LITERAL(TMP3561, "$1 = ($2) ClEnv;$n", 18);
STRING_LITERAL(TMP3562, "$1 = $2;$n", 10);
STRING_LITERAL(TMP3563, "#asgnRef((void**) $1, $2);$n", 28);
STRING_LITERAL(TMP3564, "#asgnRefNoCycle((void**) $1, $2);$n", 35);
STRING_LITERAL(TMP3565, "#unsureAsgnRef((void**) $1, $2);$n", 34);
STRING_LITERAL(TMP3566, "#genericSeqAssign($1, $2, $3);$n", 32);
STRING_LITERAL(TMP3567, "$1 = #copyString($2);$n", 23);
STRING_LITERAL(TMP3568, "$3 = $1; $1 = #copyStringRC1($2);$n", 35);
STRING_LITERAL(TMP3569, "if ($1) #nimGCunrefNoCycle($1);$n", 33);
STRING_LITERAL(TMP3570, "#unsureAsgnRef((void**) $1, #copyString($2));$n", 47);
STRING_LITERAL(TMP3571, ".", 1);
STRING_LITERAL(TMP3572, "ClEnv", 5);
STRING_LITERAL(TMP3573, "$1.ClPrc = $2.ClPrc;$n", 22);
STRING_LITERAL(TMP3574, "Field$1", 7);
STRING_LITERAL(TMP3575, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($3));$n", 53);
STRING_LITERAL(TMP3576, "#genericShallowAssign((void*)$1, (void*)$2, $3);$n", 50);
STRING_LITERAL(TMP3577, "#genericAssign((void*)$1, (void*)$2, $3);$n", 43);
STRING_LITERAL(TMP3579, "compiler/ccgexprs.nim", 21);
NIM_CONST TY84745 TMP3578 = {((NimStringDesc*) &TMP3579),
336}
;
STRING_LITERAL(TMP3580, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($1));$n", 53);
STRING_LITERAL(TMP3581, "#genericAssignOpenArray((void*)$1, (void*)$2, $1Len0, $3);$n", 60);
STRING_LITERAL(TMP3582, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($1[0])*$1Len0);$n", 63);
STRING_LITERAL(TMP3583, "memcpy((void*)$1, (NIM_CONST void*)$2, $3);$n", 45);
STRING_LITERAL(TMP3584, "genAssignment: ", 15);
STRING_LITERAL(TMP3585, "expr: proc not init ", 20);
STRING_LITERAL(TMP3586, "extern ", 7);
STRING_LITERAL(TMP3587, "NIM_THREADVAR ", 14);
STRING_LITERAL(TMP3588, "NIM_CONST $1 $2 = $3;$n", 23);
STRING_LITERAL(TMP3589, "{$n", 3);
STRING_LITERAL(TMP3590, "0x$1,$n", 7);
STRING_LITERAL(TMP3591, "0x$1, ", 6);
STRING_LITERAL(TMP3592, "0x$1}$n", 7);
STRING_LITERAL(TMP3593, "{{$1, $1}", 9);
STRING_LITERAL(TMP3594, ", {", 3);
STRING_LITERAL(TMP3595, ",$n", 3);
STRING_LITERAL(TMP3596, "}", 1);
STRING_LITERAL(TMP3597, "CNSTSEQ", 7);
STRING_LITERAL(TMP3598, "NIM_CONST struct {$n  #TGenericSeq Sup;$n  $1 data[$2];$n} $3 ="
" $4;$n", 69);
STRING_LITERAL(TMP3599, "(($1)&$2)", 9);
STRING_LITERAL(TMP3600, "{", 1);
STRING_LITERAL(TMP3601, "$1,$n", 5);
STRING_LITERAL(TMP3602, "extern NIM_CONST $1 $2;$n", 25);
STRING_LITERAL(TMP3603, "expr: var not init ", 19);
STRING_LITERAL(TMP3604, "\011NimThreadVars* NimTV;$n", 24);
STRING_LITERAL(TMP3605, "\011NimTV = (NimThreadVars*) #GetThreadLocalVars();$n", 50);
STRING_LITERAL(TMP3606, "NimTV->", 7);
STRING_LITERAL(TMP3607, "expr: temp not init ", 20);
STRING_LITERAL(TMP3608, "expr: param not init ", 21);
STRING_LITERAL(TMP3609, "expr(", 5);
STRING_LITERAL(TMP3610, "); unknown symbol", 17);
STRING_LITERAL(TMP3611, "//", 2);
STRING_LITERAL(TMP3612, "#endb($1, $2);$n", 16);
STRING_LITERAL(TMP3613, "nimln($1, $2);$n", 16);
STRING_LITERAL(TMP3615, "LA", 2);
STRING_LITERAL(TMP3616, "if ($1) goto $2;$n", 18);
STRING_LITERAL(TMP3617, "if (!($1)) goto $2;$n", 21);
STRING_LITERAL(TMP3618, "$1: ;$n", 7);
STRING_LITERAL(TMP3619, "!($1)", 5);
STRING_LITERAL(TMP3620, "$1", 2);
STRING_LITERAL(TMP3621, "($3)((NU$2) ~($1))", 18);
STRING_LITERAL(TMP3622, "-($1)", 5);
STRING_LITERAL(TMP3623, "($1 > 0? ($1) : -($1))", 22);
STRING_LITERAL(TMP3624, "(($3)(NU)(NU8)($1))", 19);
STRING_LITERAL(TMP3625, "(($3)(NU64)(NU8)($1))", 21);
STRING_LITERAL(TMP3626, "(($3)(NU)(NU16)($1))", 20);
STRING_LITERAL(TMP3627, "(($3)(NU64)(NU16)($1))", 22);
STRING_LITERAL(TMP3628, "(($3)(NU64)(NU32)($1))", 22);
STRING_LITERAL(TMP3629, "(($3)(NU64)(NU)($1))", 20);
STRING_LITERAL(TMP3630, "(($3)(NU8)(NU)($1))", 19);
STRING_LITERAL(TMP3631, "(($3)(NU16)(NU)($1))", 20);
STRING_LITERAL(TMP3632, "(($3)(NU32)(NU64)($1))", 22);
STRING_LITERAL(TMP3633, "((double) ($1))", 15);
STRING_LITERAL(TMP3634, "float64ToInt32($1)", 18);
STRING_LITERAL(TMP3635, "float64ToInt64($1)", 18);
NIM_CONST TY577903 unarithtab_577902 = {((NimStringDesc*) &TMP3619),
((NimStringDesc*) &TMP3620),
((NimStringDesc*) &TMP3621),
((NimStringDesc*) &TMP3620),
((NimStringDesc*) &TMP3621),
((NimStringDesc*) &TMP3620),
((NimStringDesc*) &TMP3622),
((NimStringDesc*) &TMP3623),
((NimStringDesc*) &TMP3624),
((NimStringDesc*) &TMP3625),
((NimStringDesc*) &TMP3626),
((NimStringDesc*) &TMP3627),
((NimStringDesc*) &TMP3628),
((NimStringDesc*) &TMP3629),
((NimStringDesc*) &TMP3630),
((NimStringDesc*) &TMP3631),
((NimStringDesc*) &TMP3632),
((NimStringDesc*) &TMP3633),
((NimStringDesc*) &TMP3633),
((NimStringDesc*) &TMP3634),
((NimStringDesc*) &TMP3635)}
;
STRING_LITERAL(TMP3636, "if ($1 == $2) #raiseOverflow();$n", 33);
STRING_LITERAL(TMP3637, "((NI$2)-($1))", 13);
NIM_CONST TY576898 opr_576897 = {((NimStringDesc*) &TMP3637),
((NimStringDesc*) &TMP3622),
((NimStringDesc*) &TMP3623),
((NimStringDesc*) &TMP3623)}
;
STRING_LITERAL(TMP3638, "(($4)($2) $1 ($4)($3))", 22);
STRING_LITERAL(TMP3639, "+", 1);
STRING_LITERAL(TMP3640, "-", 1);
STRING_LITERAL(TMP3641, "/", 1);
NIM_CONST TY584003 opr_584002 = {((NimStringDesc*) &TMP3639),
((NimStringDesc*) &TMP3640),
((NimStringDesc*) &TMP3398),
((NimStringDesc*) &TMP3641)}
;
STRING_LITERAL(TMP3642, "#nanCheck($1);$n", 16);
STRING_LITERAL(TMP3643, "#infCheck($1);$n", 16);
STRING_LITERAL(TMP3644, "(($4)($1) + ($4)($2))", 21);
STRING_LITERAL(TMP3645, "(($4)($1) - ($4)($2))", 21);
STRING_LITERAL(TMP3646, "(($4)($1) * ($4)($2))", 21);
STRING_LITERAL(TMP3647, "(($4)($1) / ($4)($2))", 21);
STRING_LITERAL(TMP3648, "($4)((NU$3)($1) >> (NU$3)($2))", 30);
STRING_LITERAL(TMP3649, "($4)((NU$3)($1) << (NU$3)($2))", 30);
STRING_LITERAL(TMP3650, "($4)($1 & $2)", 13);
STRING_LITERAL(TMP3651, "($4)($1 | $2)", 13);
STRING_LITERAL(TMP3652, "($4)($1 ^ $2)", 13);
STRING_LITERAL(TMP3653, "(($1 <= $2) ? $1 : $2)", 22);
STRING_LITERAL(TMP3654, "(($1 >= $2) ? $1 : $2)", 22);
STRING_LITERAL(TMP3655, "($4)((NU64)($1) >> (NU64)($2))", 30);
STRING_LITERAL(TMP3656, "($4)((NU64)($1) << (NU64)($2))", 30);
STRING_LITERAL(TMP3657, "($4)((NU$3)($1) + (NU$3)($2))", 29);
STRING_LITERAL(TMP3658, "($4)((NU$3)($1) - (NU$3)($2))", 29);
STRING_LITERAL(TMP3659, "($4)((NU$3)($1) * (NU$3)($2))", 29);
STRING_LITERAL(TMP3660, "($4)((NU$3)($1) / (NU$3)($2))", 29);
STRING_LITERAL(TMP3661, "($4)((NU$3)($1) % (NU$3)($2))", 29);
STRING_LITERAL(TMP3662, "($1 == $2)", 10);
STRING_LITERAL(TMP3663, "($1 <= $2)", 10);
STRING_LITERAL(TMP3664, "($1 < $2)", 9);
STRING_LITERAL(TMP3665, "((NU$3)($1) <= (NU$3)($2))", 26);
STRING_LITERAL(TMP3666, "((NU$3)($1) < (NU$3)($2))", 25);
STRING_LITERAL(TMP3667, "((NU64)($1) <= (NU64)($2))", 26);
STRING_LITERAL(TMP3668, "((NU64)($1) < (NU64)($2))", 25);
STRING_LITERAL(TMP3669, "((NU8)($1) == (NU8)($2))", 24);
STRING_LITERAL(TMP3670, "((NU8)($1) <= (NU8)($2))", 24);
STRING_LITERAL(TMP3671, "((NU8)($1) < (NU8)($2))", 23);
STRING_LITERAL(TMP3672, "($1 != $2)", 10);
NIM_CONST TY577050 binarithtab_577049 = {((NimStringDesc*) &TMP3644),
((NimStringDesc*) &TMP3645),
((NimStringDesc*) &TMP3646),
((NimStringDesc*) &TMP3647),
((NimStringDesc*) &TMP3648),
((NimStringDesc*) &TMP3649),
((NimStringDesc*) &TMP3650),
((NimStringDesc*) &TMP3651),
((NimStringDesc*) &TMP3652),
((NimStringDesc*) &TMP3653),
((NimStringDesc*) &TMP3654),
((NimStringDesc*) &TMP3655),
((NimStringDesc*) &TMP3656),
((NimStringDesc*) &TMP3650),
((NimStringDesc*) &TMP3651),
((NimStringDesc*) &TMP3652),
((NimStringDesc*) &TMP3653),
((NimStringDesc*) &TMP3654),
((NimStringDesc*) &TMP3653),
((NimStringDesc*) &TMP3654),
((NimStringDesc*) &TMP3657),
((NimStringDesc*) &TMP3658),
((NimStringDesc*) &TMP3659),
((NimStringDesc*) &TMP3660),
((NimStringDesc*) &TMP3661),
((NimStringDesc*) &TMP3662),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3662),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3662),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3665),
((NimStringDesc*) &TMP3666),
((NimStringDesc*) &TMP3667),
((NimStringDesc*) &TMP3668),
((NimStringDesc*) &TMP3662),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3669),
((NimStringDesc*) &TMP3670),
((NimStringDesc*) &TMP3671),
((NimStringDesc*) &TMP3662),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3662),
((NimStringDesc*) &TMP3662),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3662),
((NimStringDesc*) &TMP3672)}
;
STRING_LITERAL(TMP3673, "($1.ClPrc == $2.ClPrc && $1.ClEnv == $2.ClEnv)", 46);
STRING_LITERAL(TMP3674, "(NI$4)($2 $1 $3)", 16);
NIM_CONST TY576515 opr_576514 = {((NimStringDesc*) &TMP3639),
((NimStringDesc*) &TMP3640),
((NimStringDesc*) &TMP3398),
((NimStringDesc*) &TMP3641),
((NimStringDesc*) &TMP3360),
((NimStringDesc*) &TMP3639),
((NimStringDesc*) &TMP3640),
((NimStringDesc*) &TMP3398),
((NimStringDesc*) &TMP3641),
((NimStringDesc*) &TMP3360)}
;
STRING_LITERAL(TMP3675, "$1 = #$2($3, $4);$n", 19);
STRING_LITERAL(TMP3676, "addInt", 6);
STRING_LITERAL(TMP3677, "subInt", 6);
STRING_LITERAL(TMP3678, "mulInt", 6);
STRING_LITERAL(TMP3679, "divInt", 6);
STRING_LITERAL(TMP3680, "modInt", 6);
STRING_LITERAL(TMP3681, "addInt64", 8);
STRING_LITERAL(TMP3682, "subInt64", 8);
STRING_LITERAL(TMP3683, "mulInt64", 8);
STRING_LITERAL(TMP3684, "divInt64", 8);
STRING_LITERAL(TMP3685, "modInt64", 8);
NIM_CONST TY576515 prc_576509 = {((NimStringDesc*) &TMP3676),
((NimStringDesc*) &TMP3677),
((NimStringDesc*) &TMP3678),
((NimStringDesc*) &TMP3679),
((NimStringDesc*) &TMP3680),
((NimStringDesc*) &TMP3681),
((NimStringDesc*) &TMP3682),
((NimStringDesc*) &TMP3683),
((NimStringDesc*) &TMP3684),
((NimStringDesc*) &TMP3685)}
;
STRING_LITERAL(TMP3686, "if ($1 < $2 || $1 > $3) #raiseOverflow();$n", 43);
STRING_LITERAL(TMP3687, "(NI$1)($2)", 10);
STRING_LITERAL(TMP3688, "#reprInt((NI64)$1)", 18);
STRING_LITERAL(TMP3689, "#reprFloat($1)", 14);
STRING_LITERAL(TMP3690, "#reprBool($1)", 13);
STRING_LITERAL(TMP3691, "#reprChar($1)", 13);
STRING_LITERAL(TMP3692, "#reprEnum($1, $2)", 17);
STRING_LITERAL(TMP3693, "#reprStr($1)", 12);
STRING_LITERAL(TMP3694, "#reprSet($1, $2)", 16);
STRING_LITERAL(TMP3695, "$1, $1Len0", 10);
STRING_LITERAL(TMP3696, "$1->data, $1->$2", 16);
STRING_LITERAL(TMP3697, "$1, $2", 6);
STRING_LITERAL(TMP3698, "genRepr()", 9);
STRING_LITERAL(TMP3699, "#reprOpenArray($1, $2)", 22);
STRING_LITERAL(TMP3700, "#reprAny($1, $2)", 16);
STRING_LITERAL(TMP3701, "($1 - 1)", 8);
STRING_LITERAL(TMP3702, "#subInt($1, 1)", 14);
STRING_LITERAL(TMP3703, "($1 - $2)", 9);
STRING_LITERAL(TMP3704, "#subInt($1, $2)", 15);
STRING_LITERAL(TMP3705, "($1 + $2)", 9);
STRING_LITERAL(TMP3706, "#addInt($1, $2)", 15);
STRING_LITERAL(TMP3707, "binaryStmt", 10);
STRING_LITERAL(TMP3708, "$1 += $2;$n", 11);
STRING_LITERAL(TMP3709, "$1 = #addInt64($1, $2);$n", 25);
STRING_LITERAL(TMP3710, "$1 = #addInt($1, $2);$n", 23);
STRING_LITERAL(TMP3711, "$1 -= $2;$n", 11);
STRING_LITERAL(TMP3712, "$1 = #subInt64($1, $2);$n", 25);
STRING_LITERAL(TMP3713, "$1 = #subInt($1, $2);$n", 23);
STRING_LITERAL(TMP3714, "#appendChar($1, $2);$n", 22);
STRING_LITERAL(TMP3715, "$1->$2 + ", 9);
STRING_LITERAL(TMP3716, "#appendString($1, $2);$n", 24);
STRING_LITERAL(TMP3717, "$1 = #rawNewString($2$3);$n", 27);
STRING_LITERAL(TMP3718, "$1 = #addChar($1, $2);$n", 24);
STRING_LITERAL(TMP3719, "$1 = #resizeString($1, $2$3);$n", 31);
STRING_LITERAL(TMP3720, "$1 = ($2) #incrSeq(&($1)->Sup, sizeof($3));$n", 45);
STRING_LITERAL(TMP3721, "$1 = ($2) #incrSeq($1, sizeof($3));$n", 37);
STRING_LITERAL(TMP3722, "$1->data[$1->$2-1]", 18);
STRING_LITERAL(TMP3723, "(($1) && ($1)->$2 == 0)", 23);
STRING_LITERAL(TMP3724, "#eqStrings($1, $2)", 18);
STRING_LITERAL(TMP3725, "(#cmpStrings($1, $2) <= 0)", 26);
STRING_LITERAL(TMP3726, "(#cmpStrings($1, $2) < 0)", 25);
STRING_LITERAL(TMP3727, "$1.ClPrc == 0", 13);
STRING_LITERAL(TMP3728, "$1 == 0", 7);
STRING_LITERAL(TMP3729, "#nimIntToStr($1)", 16);
STRING_LITERAL(TMP3730, "#nimInt64ToStr($1)", 18);
STRING_LITERAL(TMP3731, "#nimBoolToStr($1)", 17);
STRING_LITERAL(TMP3732, "#nimCharToStr($1)", 17);
STRING_LITERAL(TMP3733, "#nimFloatToStr($1)", 18);
STRING_LITERAL(TMP3734, "#cstrToNimstr($1)", 17);
STRING_LITERAL(TMP3735, "no \'of\' operator available for pure objects", 43);
STRING_LITERAL(TMP3736, "(($1) && ($2))", 14);
STRING_LITERAL(TMP3737, "$1.m_type == $2", 15);
STRING_LITERAL(TMP3738, "Nim_OfCheck_CACHE", 17);
STRING_LITERAL(TMP3739, "static TNimType* $#[2];$n", 25);
STRING_LITERAL(TMP3740, "#isObjWithCache($#.m_type, $#, $#)", 34);
STRING_LITERAL(TMP3741, "($1)", 4);
STRING_LITERAL(TMP3742, "sizeof($1)", 10);
STRING_LITERAL(TMP3743, "if ($1) #nimGCunref($1);$n", 26);
STRING_LITERAL(TMP3744, "($1) #newObjRC1($2, $3)", 23);
STRING_LITERAL(TMP3745, "($1) #newObj($2, $3)", 20);
STRING_LITERAL(TMP3746, "$1->finalizer = (void*)$2;$n", 28);
STRING_LITERAL(TMP3747, "($1) #newObj($2, sizeof($3))", 28);
STRING_LITERAL(TMP3748, "($1) #newSeqRC1($2, $3)", 23);
STRING_LITERAL(TMP3749, "($1) #newSeq($2, $3)", 20);
STRING_LITERAL(TMP3750, "((NI)sizeof($1))", 16);
STRING_LITERAL(TMP3751, "(*($1*) ($2))", 13);
STRING_LITERAL(TMP3752, "(($1) ($2))", 11);
STRING_LITERAL(TMP3753, "((NU8)($1))", 11);
STRING_LITERAL(TMP3754, "($1Len0-1)", 10);
STRING_LITERAL(TMP3755, "$1Len0", 6);
STRING_LITERAL(TMP3756, "(strlen($1)-1)", 14);
STRING_LITERAL(TMP3757, "strlen($1)", 10);
STRING_LITERAL(TMP3758, "($1->Sup.len-1)", 15);
STRING_LITERAL(TMP3759, "$1->Sup.len", 11);
STRING_LITERAL(TMP3760, "($1->len-1)", 11);
STRING_LITERAL(TMP3761, "$1->len", 7);
STRING_LITERAL(TMP3762, "genArrayLen()", 13);
STRING_LITERAL(TMP3763, "unaryStmt", 9);
STRING_LITERAL(TMP3764, "#nimGCref($1);$n", 16);
STRING_LITERAL(TMP3765, "#nimGCunref($1);$n", 18);
STRING_LITERAL(TMP3766, "$1 = #setLengthStr($1, $2);$n", 29);
STRING_LITERAL(TMP3767, "$1 = ($3) #setLengthSeq(&($1)->Sup, sizeof($4), $2);$n", 54);
STRING_LITERAL(TMP3768, "$1 = ($3) #setLengthSeq($1, sizeof($4), $2);$n", 46);
STRING_LITERAL(TMP3769, "($1- $2)", 8);
STRING_LITERAL(TMP3770, "$1 |= ((", 8);
STRING_LITERAL(TMP3771, ")1)<<(($2)%(sizeof(", 19);
STRING_LITERAL(TMP3772, ")*8));$n", 8);
STRING_LITERAL(TMP3773, "$1 &= ~(((", 10);
STRING_LITERAL(TMP3774, ")1) << (($2) % (sizeof(", 23);
STRING_LITERAL(TMP3775, ")*8)));$n", 9);
STRING_LITERAL(TMP3776, "#countBits32($1)", 16);
STRING_LITERAL(TMP3777, "#countBits64($1)", 16);
STRING_LITERAL(TMP3778, "(($1 & ~ $2 ==0)&&($1 != $2))", 29);
STRING_LITERAL(TMP3779, "(($1 & ~ $2)==0)", 16);
STRING_LITERAL(TMP3780, "($1 & $2)", 9);
STRING_LITERAL(TMP3781, "($1 | $2)", 9);
STRING_LITERAL(TMP3782, "($1 & ~ $2)", 11);
STRING_LITERAL(TMP3783, "($1 ^ $2)", 9);
STRING_LITERAL(TMP3784, "fewCmps", 7);
STRING_LITERAL(TMP3785, "$1 >= $2 && $1 <= $3", 20);
STRING_LITERAL(TMP3786, "$1 == $2", 8);
STRING_LITERAL(TMP3787, " || ", 4);
STRING_LITERAL(TMP3788, "(($1 &(1<<(($2)&7)))!=0)", 24);
STRING_LITERAL(TMP3789, "(($1 &(1<<(($2)&15)))!=0)", 25);
STRING_LITERAL(TMP3790, "(($1 &(1<<(($2)&31)))!=0)", 25);
STRING_LITERAL(TMP3791, "(($1 &(IL64(1)<<(($2)&IL64(63))))!=0)", 37);
STRING_LITERAL(TMP3792, "(($1[$2/8] &(1<<($2%8)))!=0)", 28);
STRING_LITERAL(TMP3793, "genSetOp()", 10);
STRING_LITERAL(TMP3794, "$1[$2/8] |=(1<<($2%8));$n", 25);
STRING_LITERAL(TMP3795, "$1[$2/8] &= ~(1<<($2%8));$n", 27);
STRING_LITERAL(TMP3796, "#cardSet($1, ", 13);
STRING_LITERAL(TMP3797, "for ($1 = 0; $1 < $2; $1++) { $n  $3 = (($4[$1] & ~ $5[$1]) == "
"0);$n  if (!$3) break;}$n", 88);
STRING_LITERAL(TMP3798, "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(TMP3799, "|", 1);
STRING_LITERAL(TMP3800, "& ~", 3);
STRING_LITERAL(TMP3801, "^", 1);
NIM_CONST TY583263 lookupopr_583262 = {((NimStringDesc*) &TMP3797),
((NimStringDesc*) &TMP3798),
((NimStringDesc*) &TMP3467),
((NimStringDesc*) &TMP3799),
((NimStringDesc*) &TMP3800),
((NimStringDesc*) &TMP3801)}
;
STRING_LITERAL(TMP3802, "(memcmp($1, $2, ", 16);
STRING_LITERAL(TMP3803, ")==0)", 5);
STRING_LITERAL(TMP3804, "for ($1 = 0; $1 < $2; $1++) $n  $3[$1] = $4[$1] $6 $5[$1];$n", 60);
STRING_LITERAL(TMP3805, "genSetOp", 8);
STRING_LITERAL(TMP3806, "$1->data", 8);
STRING_LITERAL(TMP3807, "($1)+($2), ($3)-($2)+1", 22);
STRING_LITERAL(TMP3808, "(*$1)->data+($2), ($3)-($2)+1", 29);
STRING_LITERAL(TMP3809, "$1->data+($2), ($3)-($2)+1", 26);
STRING_LITERAL(TMP3810, "openArrayLoc: ", 14);
STRING_LITERAL(TMP3811, "", 0);
STRING_LITERAL(TMP3812, "(*$1)->data, (*$1)->$2", 22);
STRING_LITERAL(TMP3813, "$1.ClPrc($3$1.ClEnv)", 20);
STRING_LITERAL(TMP3814, "$1.ClEnv? $1.ClPrc($3$1.ClEnv):(($4)($1.ClPrc))($2)", 51);
STRING_LITERAL(TMP3815, "#chckNil((void*)$1);$n", 22);
STRING_LITERAL(TMP3816, "#genericReset((void*)$1, $2);$n", 31);
STRING_LITERAL(TMP3817, "->", 2);
STRING_LITERAL(TMP3818, ");$n", 4);
STRING_LITERAL(TMP3819, "[", 1);
STRING_LITERAL(TMP3820, ": ", 2);
STRING_LITERAL(TMP3821, "varargs for objective C method?", 31);
STRING_LITERAL(TMP3822, "Result: ", 8);
STRING_LITERAL(TMP3823, "];$n", 4);
STRING_LITERAL(TMP3824, "]", 1);
NIM_CONST TY84745 TMP3825 = {((NimStringDesc*) &TMP3579),
930}
;
STRING_LITERAL(TMP3826, "<stdio.h>", 9);
STRING_LITERAL(TMP3827, ", ($1)->data", 12);
STRING_LITERAL(TMP3828, "printf($1$2);$n", 15);
STRING_LITERAL(TMP3829, "%s", 2);
STRING_LITERAL(TMP3891, "#genericDeepCopy((void*)$1, (void*)$2, $3);$n", 45);
STRING_LITERAL(TMP3892, "#genericSeqDeepCopy($1, $2, $3);$n", 34);
STRING_LITERAL(TMP3893, "#genericDeepCopyOpenArray((void*)$1, (void*)$2, $1Len0, $3);$n", 62);
STRING_LITERAL(TMP3894, "genDeepCopy: ", 13);
STRING_LITERAL(TMP3895, "genMagicExpr: ", 14);
STRING_LITERAL(TMP3896, "static NIM_CONST $1 $2 = $3;$n", 30);
STRING_LITERAL(TMP3897, "memset($1, 0, sizeof($1));$n", 28);
STRING_LITERAL(TMP3898, "for ($1 = $3; $1 <= $4; $1++) $n$2[$1/8] |=(1<<($1%8));$n", 57);
STRING_LITERAL(TMP3899, "for ($1 = $3; $1 <= $4; $1++) $n$2 |=(1<<((", 43);
STRING_LITERAL(TMP3900, ")($1)%(sizeof(", 14);
STRING_LITERAL(TMP3901, "$1 |=(1<<((", 11);
STRING_LITERAL(TMP3902, ")($2)%(sizeof(", 14);
STRING_LITERAL(TMP3903, "genObjConstr", 12);
STRING_LITERAL(TMP3904, "if ($1) #raiseFieldError(((#NimStringDesc*) &$2));$n", 52);
STRING_LITERAL(TMP3905, "if (!($1)) #raiseFieldError(((#NimStringDesc*) &$2));$n", 55);
STRING_LITERAL(TMP3906, "LOC$1.source", 12);
STRING_LITERAL(TMP3907, "union { $1 source; $2 dest; } LOC$3;$n", 38);
STRING_LITERAL(TMP3908, "LOC$#.dest", 10);
STRING_LITERAL(TMP3909, "if ((NU)($1) > (NU)($2)) #raiseIndexError();$n", 46);
STRING_LITERAL(TMP3910, "if ($1 < $2 || $1 > $3) #raiseIndexError();$n", 45);
STRING_LITERAL(TMP3911, "$1[($2)- $3]", 12);
STRING_LITERAL(TMP3912, "if ((NU)($1) >= (NU)($2Len0)) #raiseIndexError();$n", 51);
STRING_LITERAL(TMP3913, "if ((NU)($1) > (NU)($2->$3)) #raiseIndexError();$n", 50);
STRING_LITERAL(TMP3914, "if ((NU)($1) >= (NU)($2->$3)) #raiseIndexError();$n", 51);
STRING_LITERAL(TMP3915, "genTupleElem", 12);
STRING_LITERAL(TMP3916, ".Field$1", 8);
STRING_LITERAL(TMP3917, "expr(nkBracketExpr, ", 20);
STRING_LITERAL(TMP3918, "genDeref ", 9);
STRING_LITERAL(TMP3919, "genRecordFieldAux", 17);
STRING_LITERAL(TMP3920, "genRecordField", 14);
STRING_LITERAL(TMP3921, "genRecordField 2 ", 17);
STRING_LITERAL(TMP3922, "genRecordField 3", 16);
STRING_LITERAL(TMP3923, ".$1", 3);
STRING_LITERAL(TMP3924, "genCheckedRecordField", 21);
STRING_LITERAL(TMP3925, "} $1: ;$n", 9);
STRING_LITERAL(TMP3926, "F.len-=$1;$n", 12);
STRING_LITERAL(TMP3927, "F.len+=$1;$n", 12);
STRING_LITERAL(TMP3928, "if (!$1) goto $2;$n", 19);
STRING_LITERAL(TMP3929, "br i1 $1, label %LOC$3, label %$2$nLOC$3: $n", 44);
STRING_LITERAL(TMP3930, "goto $1;$n", 10);
STRING_LITERAL(TMP3931, "br label %$1$n", 14);
STRING_LITERAL(TMP3932, "genIf()", 7);
STRING_LITERAL(TMP3933, "->Sup", 5);
STRING_LITERAL(TMP3934, "$1 = &$2;$n", 11);
STRING_LITERAL(TMP3935, "if ($1) #chckObj($2.m_type, $3);$n", 34);
STRING_LITERAL(TMP3936, "#chckObj($1.m_type, $2);$n", 26);
STRING_LITERAL(TMP3937, "range check will always fail; empty range", 41);
STRING_LITERAL(TMP3938, "(($1)#$5($2, $3, $4))", 21);
STRING_LITERAL(TMP3939, "chckRangeF", 10);
STRING_LITERAL(TMP3940, "chckRange64", 11);
STRING_LITERAL(TMP3941, "chckRange", 9);
STRING_LITERAL(TMP3942, "$1.ClPrc = $2; $1.ClEnv = $3;$n", 31);
STRING_LITERAL(TMP3943, "while (1) {$n", 13);
STRING_LITERAL(TMP3944, "case statement must be exhaustive for computed goto", 51);
STRING_LITERAL(TMP3945, "case statement has too many cases for computed goto", 51);
STRING_LITERAL(TMP3946, "case statement has to start at 0 for computed goto", 50);
STRING_LITERAL(TMP3947, "no case statement found for computed goto", 41);
STRING_LITERAL(TMP3948, "static void* $#[$#] = {", 23);
STRING_LITERAL(TMP3949, "&&TMP$#, ", 9);
STRING_LITERAL(TMP3950, "&&TMP$#};$n", 11);
STRING_LITERAL(TMP3951, "goto *$#[$#];$n", 15);
STRING_LITERAL(TMP3952, "range notation not available for computed goto", 46);
STRING_LITERAL(TMP3953, "TMP$#:$n", 8);
STRING_LITERAL(TMP3954, "#nimProfile();$n", 16);
STRING_LITERAL(TMP3955, "static void* $1;$n", 18);
STRING_LITERAL(TMP3956, "Dependency: ", 12);
STRING_LITERAL(TMP3957, "||", 2);
STRING_LITERAL(TMP3958, "($1 = #nimLoadLibrary((#NimStringDesc*) &$2))$n", 47);
STRING_LITERAL(TMP3959, "if (!($1)) #nimLoadLibraryError((#NimStringDesc*) &$2);$n", 57);
STRING_LITERAL(TMP3960, "if (!($1 = #nimLoadLibrary($2))) #nimLoadLibraryError($2);$n", 60);
STRING_LITERAL(TMP3961, "loadDynamicLib", 14);
STRING_LITERAL(TMP3962, "$1 = ($2*) #nimGetProcAddr($3, $4);$n", 37);
STRING_LITERAL(TMP3963, "%MOC$1", 6);
STRING_LITERAL(TMP3964, "@MOC$1 = private constant [$2 x i8] $3$n", 40);
STRING_LITERAL(TMP3967, "$1 = getelementptr [$2 x i8]* @MOC$3, %NI 0, %NI 0$n", 52);
STRING_LITERAL(TMP3968, "$2* $1;$n", 9);
STRING_LITERAL(TMP3969, "#dbgRegisterGlobal($1, &$2, $3);$n", 34);
STRING_LITERAL(TMP3970, "%LOC$1", 6);
STRING_LITERAL(TMP3971, "@C$1 = private constant [$2 x i8] $3$n", 38);
STRING_LITERAL(TMP3972, "$1 = getelementptr [$2 x i8]* @C$3, %NI 0, %NI 0$n", 50);
STRING_LITERAL(TMP3973, "#nimGCvisit((void*)$1, 0);$n", 28);
STRING_LITERAL(TMP3974, "N_NIMCALL(void, $1)()", 21);
STRING_LITERAL(TMP3975, "#nimRegisterGlobalMarker($1);$n", 31);
STRING_LITERAL(TMP3976, "genVarTuple", 11);
STRING_LITERAL(TMP3977, "genConstStmt", 12);
STRING_LITERAL(TMP3978, "for statement not eliminated", 28);
STRING_LITERAL(TMP3979, "if (#eqStrings($1, $2)) goto $3;$n", 34);
STRING_LITERAL(TMP3980, "switch (#hashString($1) & $2) {$n", 33);
STRING_LITERAL(TMP3981, "case $1: $n$2break;$n", 21);
STRING_LITERAL(TMP3982, "goto LA$1;$n", 12);
STRING_LITERAL(TMP3983, "LA$1: ;$n", 9);
STRING_LITERAL(TMP3984, "if ($1 >= $2 && $1 <= $3) goto $4;$n", 36);
STRING_LITERAL(TMP3985, "if ($1 == $2) goto $3;$n", 24);
STRING_LITERAL(TMP3986, "switch ($1) {$n", 15);
STRING_LITERAL(TMP3987, "default: __assume(0);$n", 23);
STRING_LITERAL(TMP3988, "#popSafePoint();$n", 18);
STRING_LITERAL(TMP3989, "#popCurrentException();$n", 25);
STRING_LITERAL(TMP3990, "if ($1.status != 0) #popCurrentException();$n", 45);
STRING_LITERAL(TMP3991, "goto BeforeRet;$n", 17);
STRING_LITERAL(TMP3992, "br label %BeforeRet$n", 21);
STRING_LITERAL(TMP3993, "no loop to break", 16);
STRING_LITERAL(TMP3994, "extern $1", 9);
STRING_LITERAL(TMP3995, "#FieldDiscriminantCheck((NI)(NU)($1), (NI)(NU)($2), $3, $4);$n", 62);
STRING_LITERAL(TMP3996, "genAsmOrEmitStmt()", 18);
STRING_LITERAL(TMP3997, "\"", 1);
STRING_LITERAL(TMP3998, "\\n\"\012", 4);
STRING_LITERAL(TMP3999, "Exception", 9);
STRING_LITERAL(TMP4000, "E_Base", 6);
STRING_LITERAL(TMP4001, "try {$n", 7);
STRING_LITERAL(TMP4002, "} catch (NimException& $1) {$n", 30);
STRING_LITERAL(TMP4003, "#setFrame((TFrame*)&F);$n", 25);
STRING_LITERAL(TMP4004, "else ", 5);
STRING_LITERAL(TMP4005, "#isObj($1.exp->m_type, $2)", 26);
STRING_LITERAL(TMP4006, "if ($1) ", 8);
STRING_LITERAL(TMP4007, "throw;$n", 8);
STRING_LITERAL(TMP4008, "<setjmp.h>", 10);
STRING_LITERAL(TMP4009, "#TSafePoint $1;$n", 17);
STRING_LITERAL(TMP4010, "#pushSafePoint(&$1);$n", 22);
STRING_LITERAL(TMP4011, "nimStdSetjmp", 12);
STRING_LITERAL(TMP4012, "$1.status = setjmp($1.context);$n", 33);
STRING_LITERAL(TMP4013, "nimSigSetjmp", 12);
STRING_LITERAL(TMP4014, "$1.status = sigsetjmp($1.context, 0);$n", 39);
STRING_LITERAL(TMP4015, "nimRawSetjmp", 12);
STRING_LITERAL(TMP4016, "$1.status = _setjmp($1.context);$n", 34);
STRING_LITERAL(TMP4017, "if ($1.status == 0) {$n", 23);
STRING_LITERAL(TMP4018, "else {$n", 8);
STRING_LITERAL(TMP4019, "else", 4);
STRING_LITERAL(TMP4020, "$1.status = 0;$n", 16);
STRING_LITERAL(TMP4021, "#isObj(#getCurrentException()->Sup.m_type, $1)", 46);
STRING_LITERAL(TMP4022, "if ($1) {$n", 11);
STRING_LITERAL(TMP4023, "if ($1.status != 0) #reraiseException();$n", 42);
STRING_LITERAL(TMP4024, "throw NimException($1, $2);$n", 29);
STRING_LITERAL(TMP4025, "#raiseException((#Exception*)$1, $2);$n", 39);
STRING_LITERAL(TMP4026, "#raiseException((#E_Base*)$1, $2);$n", 36);
STRING_LITERAL(TMP4027, "#reraiseException();$n", 22);
STRING_LITERAL(TMP4028, "bp", 2);
STRING_LITERAL(TMP4029, "#dbgRegisterBreakpoint($1, (NCSTRING)$2, (NCSTRING)$3);$n", 57);
STRING_LITERAL(TMP4030, "#dbgRegisterWatchpoint($1, (NCSTRING)$2, $3);$n", 47);
STRING_LITERAL(TMP4031, "#pragma omp parallel for $4$nfor ($1 = $2; $1 <= $3; ++$1)", 58);
STRING_LITERAL(TMP4033, "compiler/ccgstmts.nim", 21);
NIM_CONST TY84745 TMP4032 = {((NimStringDesc*) &TMP4033),
146}
;
STRING_LITERAL(TMP4034, "STATE$1: ;$n", 12);
STRING_LITERAL(TMP4035, "case -1: goto BeforeRet;$n", 26);
STRING_LITERAL(TMP4036, "case $1: goto STATE$1;$n", 24);
STRING_LITERAL(TMP4037, "if (((NI*) $1)[0] < 0) break;$n", 31);
STRING_LITERAL(TMP4038, "if ((((NI*) $1.ClEnv)[0]) < 0) break;$n", 39);
STRING_LITERAL(TMP4039, "); unknown node kind", 20);
NIM_CONST TY84745 TMP4040 = {((NimStringDesc*) &TMP4033),
1056}
;
STRING_LITERAL(TMP4041, "__declspec(naked) ", 18);
STRING_LITERAL(TMP4042, "$N$1 {$n$2$3$4}$N$N", 19);
STRING_LITERAL(TMP4043, "$N$1 {$N", 8);
STRING_LITERAL(TMP4044, "struct {$1} GCFRAME;$n", 22);
STRING_LITERAL(TMP4045, "nimFrame", 8);
STRING_LITERAL(TMP4046, "TVarSlot", 8);
STRING_LITERAL(TMP4047, "\011nimfrs($1, $2, $3, $4)$N", 25);
STRING_LITERAL(TMP4048, "\011nimfr($1, $2)$N", 16);
STRING_LITERAL(TMP4049, "\011#nimProfile();$n", 17);
STRING_LITERAL(TMP4050, "\011BeforeRet: ;$n", 15);
STRING_LITERAL(TMP4051, "if (((NU)&GCFRAME) < 4096) #nimGCFrame(&GCFRAME);$n", 51);
STRING_LITERAL(TMP4052, "\011#popFrame();$n", 15);
STRING_LITERAL(TMP4053, "}$N", 3);
STRING_LITERAL(TMP4054, "\011$1 = ($2) ($3$4));$n", 21);
NIM_CONST TY84745 TMP4055 = {((NimStringDesc*) &TMP3352),
669}
;
STRING_LITERAL(TMP4056, "wrong index: ", 13);
STRING_LITERAL(TMP4057, "\011$1 = ($2) #nimGetProcAddr($3, $4);$n", 37);
STRING_LITERAL(TMP4058, "$2 $1;$n", 8);
STRING_LITERAL(TMP4059, "$1 = linkonce global $2 zeroinitializer$n", 41);
STRING_LITERAL(TMP4060, "cgsym: ", 7);
STRING_LITERAL(TMP4061, "added pending module twice: ", 28);
STRING_LITERAL(TMP4062, ".h", 2);
STRING_LITERAL(TMP4072, ".cpp", 4);
STRING_LITERAL(TMP4073, ".m", 2);
STRING_LITERAL(TMP4074, ".c", 2);
STRING_LITERAL(TMP4075, "Init", 4);
STRING_LITERAL(TMP4076, "DatInit", 7);
STRING_LITERAL(TMP4077, "NIM_EXTERNC N_NOINLINE(void, $1)(void);$N", 41);
STRING_LITERAL(TMP4078, "declare void $1() noinline$N", 28);
STRING_LITERAL(TMP4079, "\011$1();$N", 8);
STRING_LITERAL(TMP4080, "call void ()* $1$n", 18);
STRING_LITERAL(TMP4083, "N_CDECL(void, NimMainInner)(void) {$N$1}$N$NN_CDECL(void, NimMa"
"in)(void) {$N\011void (*volatile inner)();$N\011PreMain();$N\011inner = N"
"imMainInner;$N$2\011(*inner)();$N}$N$N", 162);
STRING_LITERAL(TMP4084, "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(TMP4085, "N_LIB_EXPORT N_CDECL(void, NimMainInner)(void) {$N$1}$N$NN_CDEC"
"L(void, NimMain)(void) {$N\011void (*volatile inner)();$N\011PreMain()"
";$N\011inner = NimMainInner;$N$2\011(*inner)();$N}$N$N", 175);
STRING_LITERAL(TMP4086, "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(TMP4087, "<windows.h>", 11);
STRING_LITERAL(TMP4088, "void NIM_POSIX_INIT NimMainInit(void) {$N\011NimMain();$N}$N$N", 59);
STRING_LITERAL(TMP4089, "int cmdCount;$Nchar** cmdLine;$Nchar** gEnv;$NN_CDECL(void, Nim"
"MainInner)(void) {$N$1}$N$NN_CDECL(void, NimMain)(void) {$N\011void"
" (*volatile inner)();$N\011PreMain();$N\011inner = NimMainInner;$N$2\011("
"*inner)();$N}$N$N", 208);
STRING_LITERAL(TMP4090, "int main(void) {$N\011NimMain();$N\011return 0;$N}$N$N", 48);
STRING_LITERAL(TMP4091, "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(TMP4092, "dbgRegisterBreakpoint", 21);
STRING_LITERAL(TMP4093, "dbgRegisterFilename", 19);
STRING_LITERAL(TMP4094, "dbgRegisterFilename($1);$N", 26);
STRING_LITERAL(TMP4095, "\011#initStackBottomWith((void *)&inner);$N", 40);
STRING_LITERAL(TMP4096, "void PreMainInner() {$N\011systemInit();$N$1$2$3}$N$Nvoid PreMain("
") {$N\011void (*volatile inner)();$N\011systemDatInit();$N\011inner = Pre"
"MainInner;$N$4$5\011(*inner)();$N}$N$N", 162);
STRING_LITERAL(TMP4097, "\011#initThreadVarsEmulation();$N", 30);
STRING_LITERAL(TMP4141, "still forwarded: ", 17);
STRING_LITERAL(TMP4167, "NIM_EXTERNC N_NOINLINE(void, $1)(void) {$N", 42);
STRING_LITERAL(TMP4168, "define void $1() noinline {$n", 29);
STRING_LITERAL(TMP4169, "static #TNimNode $1[$2];$n", 26);
STRING_LITERAL(TMP4170, "static #TNimType $1[$2];$n", 26);
STRING_LITERAL(TMP4173, "\011TFrame F; F.len = 0;$N", 23);
STRING_LITERAL(TMP4174, "}$N$N", 5);
STRING_LITERAL(TMP4175, "N_NIMCALL(void, nimLoadProcs$1)(void) {$2}$N$N", 46);
STRING_LITERAL(TMP4176, "/* Generated by Nim Compiler v$1 */$N/*   (c) 2014 Andreas Rump"
"f */$N/* The generated code is subject to the original license. "
"*/$N", 131);
STRING_LITERAL(TMP4177, "; Generated by Nim Compiler v$1$N;   (c) 2012 Andreas Rumpf$N", 61);
STRING_LITERAL(TMP4178, "0.10.2", 6);
STRING_LITERAL(TMP4179, "/* Generated by Nim Compiler v$1 */$N/*   (c) 2014 Andreas Rump"
"f */$N/* The generated code is subject to the original license. "
"*/$N/* Compiled for: $2, $3, $4 */$N/* Command for C compiler:$n"
"   $5 */$N", 201);
STRING_LITERAL(TMP4180, "; Generated by Nim Compiler v$1$N;   (c) 2014 Andreas Rumpf$N; "
"Compiled for: $2, $3, $4$N; Command for LLVM compiler:$N   $5$N", 126);
extern NIM_CONST TY174070 os_174069;
extern NIM_CONST TY174481 cpu_174480;
STRING_LITERAL(TMP4181, "#define NIM_INTBITS $1", 22);
STRING_LITERAL(TMP4189, "#include \"nimbase.h\"", 20);
STRING_LITERAL(TMP4190, "$N#include \"$1\"$N", 17);
STRING_LITERAL(TMP4191, "$N#include $1$N", 15);
STRING_LITERAL(TMP4192, "typedef struct {$1} NimThreadVars;$n", 36);
STRING_LITERAL(TMP4194, "extern \"C\"", 10);
STRING_LITERAL(TMP4195, "$#NI NimThreadVarsSize(){return (NI)sizeof(NimThreadVars);}$n", 61);
STRING_LITERAL(TMP4205, "__$1__", 6);
STRING_LITERAL(TMP4206, "#ifndef $1$n#define $1$n", 24);
STRING_LITERAL(TMP4207, "N_CDECL(void, NimMain)(void);$n", 31);
STRING_LITERAL(TMP4208, "#endif /* $1 */$n", 17);
tcgen549035* generatedheader_552201;
trope177009* indent_553045;
extern tgcheap47016 gch_47044;
trope177009* nimtv_560729;
ttypeseq225848* nimtvdeps_560751;
extern TNimType NTI225848; /* TTypeSeq */
intset222056 nimtvdeclared_560752;
extern TNimType NTI222056; /* IntSet */
NI breakpointid_573071;
trope177009* gbreakpoints_573072;
extern TY549150* gmodules_549171;
extern TNimType NTI549025; /* BModule */
extern TNimType NTI549035; /* TCGen */
extern NU32 goptions_169116;
extern TNimType NTI225818; /* TSymSeq */
extern trope177009* rnl_178454;
extern NU8 gcmd_169120;
extern NI gforwardedprocscounter_549172;
extern TNimType NTI225258; /* TTypeKind */
extern NI floatsize_174611;
extern NU8 ccompiler_202461;
extern NimStringDesc* tnl_174613;
extern NU8 gselectedgc_169121;
extern NI gbackendid_224013;
extern TNimType NTI225029; /* TNodeKind */
extern TNimType NTI225830; /* TLoc */
extern NU32 gglobaloptions_169118;
extern TNimType NTI225445; /* TSymKind */
extern NI intsize_174610;
extern TNimType NTI225532; /* TMagic */
extern TNimType NTI119808; /* seq[string] */
extern NI gverbosity_169127;
extern TNimType NTI195552; /* seq[PRope] */
extern TNimType NTI225810; /* TNodeSeq */
extern NimStringDesc* headerfile_169126;
extern NimStringDesc* gprojectfull_169236;
extern NI gerrorcounter_196303;
extern trope177009* mainmodprocs_549145;
extern trope177009* maindatinit_549148;
extern trope177009* mainmodinit_549146;
extern trope177009* othermodsinit_549147;
extern NU8 targetos_174589;
extern TY195621* fileinfos_195642;
extern NU8 targetcpu_174587;
extern trope177009* gmapping_549149;

static N_INLINE(tcell44935*, usrtocell_48646)(void* usr) {
	tcell44935* result;
	result = 0;
	result = ((tcell44935*) ((NI)((NU64)(((NI) (usr))) - (NU64)(((NI)sizeof(tcell44935))))));
	return result;
}

static N_INLINE(void, rtladdzct_50204)(tcell44935* c) {
	addzct_48617((&gch_47044.Zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tcell44935* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_48646(src);
		(*c).Refcount += 8;
	}
	LA3: ;
	{
		tcell44935* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_48646((*dest));
		{
			(*c).Refcount -= 8;
			if (!((NU64)((*c).Refcount) < (NU64)(8))) goto LA11;
			rtladdzct_50204(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tcell44935* c;
	c = usrtocell_48646(p);
	{
		(*c).Refcount -= 8;
		if (!((NU64)((*c).Refcount) < (NU64)(8))) goto LA3;
		rtladdzct_50204(c);
	}
	LA3: ;
}

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

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

static N_INLINE(void, rtladdcycleroot_49429)(tcell44935* c) {
	{
		if (!!((((NI) ((NI)((*c).Refcount & 3))) == 3))) goto LA3;
		(*c).Refcount = (NI)((NI)((*c).Refcount & -4) | 3);
		incl_45671((&gch_47044.Cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_51025)(tcell44935* c) {
	(*c).Refcount = (NI)((NU64)((*c).Refcount) + (NU64)(8));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_48667(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_49429(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_50604)(tcell44935* c) {
	{
		(*c).Refcount -= 8;
		if (!((NU64)((*c).Refcount) < (NU64)(8))) goto LA3;
		rtladdzct_50204(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_48667(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_49429(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tcell44935* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_48646(src);
		incref_51025(LOC5);
	}
	LA3: ;
	{
		tcell44935* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_48646((*dest));
		decref_50604(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

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

N_NIMCALL(tcproc549031*, newpreinitproc_591039)(tcgen549035* m) {
	tcproc549031* result;
	result = 0;
	result = newproc_549230(NIM_NIL, m);
	(*result).Labels = 100000;
	return result;
}

N_NIMCALL(tcproc549031*, newpostinitproc_591050)(tcgen549035* m) {
	tcproc549031* result;
	result = 0;
	result = newproc_549230(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)), (NI64)((*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[((NI64)((*dest).Sup.len + 1))- 0] = 0;
	(*dest).Sup.len += 1;
}

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

N_NIMCALL(void, fillloc_552376)(tloc225830* a, NU8 k, ttype225852* typ, trope177009* r, NU8 s) {
	{
		if (!((*a).K == ((NU8) 0))) goto LA3;
		(*a).K = k;
		unsureAsgnRef((void**) (&(*a).T), getuniquetype_548401(typ));
		(*a).S = s;
		{
			if (!((*a).R == NIM_NIL)) goto LA7;
			unsureAsgnRef((void**) (&(*a).R), r);
		}
		LA7: ;
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, iskeyword_553651)(tident200021* w) {
	NIM_BOOL result;
	result = 0;
	switch ((*w).Sup.Id) {
	case 192 ... 254:
	case 4 ... 69:
	case 132:
	{
		result = NIM_TRUE;
		goto BeforeRet;
	}
	break;
	default:
	{
		result = NIM_FALSE;
		goto BeforeRet;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope177009*, manglename_553667)(tsym225846* s) {
	trope177009* 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_169120 == ((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):
			{
				TY553703 LOC10;
				memset((void*)LOC10, 0, sizeof(LOC10));
				result = ropef_177107(((NimStringDesc*) &TMP3359), LOC10, 0);
			}
			break;
			case ((NU8) 8):
			case ((NU8) 21):
			case ((NU8) 11):
			case ((NU8) 9):
			{
				{
					TY553703 LOC16;
					if (!(((*s).Flags &(1<<((((NU8) 3))&31)))!=0)) goto LA14;
					memset((void*)LOC16, 0, sizeof(LOC16));
					result = ropef_177107(((NimStringDesc*) &TMP3359), LOC16, 0);
				}
				goto LA12;
				LA14: ;
				{
					TY553703 LOC18;
					memset((void*)LOC18, 0, sizeof(LOC18));
					result = ropef_177107(((NimStringDesc*) &TMP3360), LOC18, 0);
				}
				LA12: ;
			}
			break;
			case ((NU8) 5):
			case ((NU8) 3):
			case ((NU8) 7):
			case ((NU8) 20):
			case ((NU8) 6):
			{
				TY553703 LOC20;
				memset((void*)LOC20, 0, sizeof(LOC20));
				result = ropef_177107(((NimStringDesc*) &TMP3360), LOC20, 0);
			}
			break;
			default:
			{
				internalerror_197987((*s).Info, ((NimStringDesc*) &TMP3361));
			}
			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_553651((*s).Name);
		LOC22 = !(LOC26);
		LA25: ;
		keeporigname = LOC22;
		{
			NimStringDesc* LOC31;
			if (!keeporigname) goto LA29;
			LOC31 = 0;
			LOC31 = mangle_548763((*(*s).Name).S);
			result = newrope_177176(LOC31);
		}
		goto LA27;
		LA29: ;
		{
			NimStringDesc* LOC33;
			trope177009* LOC34;
			TY553703 LOC35;
			trope177009* LOC36;
			trope177009* LOC37;
			LOC33 = 0;
			LOC33 = mangle_548763((*(*s).Name).S);
			LOC34 = 0;
			LOC34 = newrope_177176(LOC33);
			app_177052(&result, LOC34);
			memset((void*)LOC35, 0, sizeof(LOC35));
			LOC36 = 0;
			LOC36 = ropef_177107(((NimStringDesc*) &TMP3364), LOC35, 0);
			app_177052(&result, LOC36);
			LOC37 = 0;
			LOC37 = torope_177082(((NI64) ((*s).Sup.Id)));
			app_177052(&result, LOC37);
		}
		LA27: ;
		asgnRefNoCycle((void**) (&(*s).Loc.R), result);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, fillprocloc_561229)(tsym225846* sym) {
	{
		trope177009* LOC5;
		if (!((*sym).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_553667(sym);
		fillloc_552376((&(*sym).Loc), ((NU8) 8), (*sym).Typ, LOC5, ((NU8) 1));
	}
	LA3: ;
}

N_NIMCALL(void, addforwardedproc_552251)(tcgen549035* m, tsym225846* prc) {
	(*m).Forwardedprocs = (tsymseq225818*) incrSeq(&((*m).Forwardedprocs)->Sup, sizeof(tsym225846*));
	asgnRefNoCycle((void**) (&(*m).Forwardedprocs->data[(*m).Forwardedprocs->Sup.len-1]), prc);
	gforwardedprocscounter_549172 += 1;
}

N_NIMCALL(void, useheader_552469)(tcgen549035* m, tsym225846* sym) {
	{
		NimStringDesc* LOC5;
		NIM_BOOL LOC6;
		if (!(((*sym).Loc.Flags &(1<<((((NU8) 6))&7)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = getstr_232587((*(*sym).Annex).Path);
		LOC6 = 0;
		LOC6 = includestr_127297((&(*m).Headerfiles), LOC5);
	}
	LA3: ;
}

N_NIMCALL(trope177009*, typename_553883)(ttype225852* typ) {
	trope177009* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!!(((*typ).Sym == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = mangle_548763((*(*(*typ).Sym).Name).S);
		result = torope_177076(LOC5);
	}
	goto LA1;
	LA3: ;
	{
		TY553703 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		result = ropef_177107(((NimStringDesc*) &TMP3368), LOC7, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, gettypename_553914)(ttype225852* typ) {
	trope177009* 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_169120 == ((NU8) 5)));
		LA6: ;
		if (!LOC3) goto LA7;
		result = (*(*typ).Sym).Loc.R;
	}
	goto LA1;
	LA7: ;
	{
		{
			if (!((*typ).Loc.R == NIM_NIL)) goto LA12;
			{
				trope177009* LOC18;
				trope177009* LOC19;
				if (!!((gcmd_169120 == ((NU8) 5)))) goto LA16;
				LOC18 = 0;
				LOC18 = typename_553883(typ);
				LOC19 = 0;
				LOC19 = torope_177082(((NI64) ((*typ).Sup.Id)));
				asgnRefNoCycle((void**) (&(*typ).Loc.R), con_177024(LOC18, LOC19));
			}
			goto LA14;
			LA16: ;
			{
				TY554018 LOC21;
				TY553703 LOC22;
				memset((void*)LOC21, 0, sizeof(LOC21));
				memset((void*)LOC22, 0, sizeof(LOC22));
				LOC21[0] = ropef_177107(((NimStringDesc*) &TMP3360), LOC22, 0);
				LOC21[1] = typename_553883(typ);
				LOC21[2] = torope_177082(((NI64) ((*typ).Sup.Id)));
				asgnRefNoCycle((void**) (&(*typ).Loc.R), con_177045(LOC21, 3));
			}
			LA14: ;
		}
		LA12: ;
		result = (*typ).Loc.R;
	}
	LA1: ;
	{
		NimStringDesc* LOC27;
		if (!(result == NIM_NIL)) goto LA25;
		LOC27 = 0;
		LOC27 = rawNewString(reprEnum((*typ).Kind, (&NTI225258))->Sup.len + 13);
appendString(LOC27, ((NimStringDesc*) &TMP3369));
appendString(LOC27, reprEnum((*typ).Kind, (&NTI225258)));
		internalerror_198006(LOC27);
	}
	LA25: ;
	return result;
}

N_NIMCALL(trope177009*, typenameorliteral_555038)(ttype225852* t, NimStringDesc* literal) {
	trope177009* 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_553914(t);
	}
	goto LA1;
	LA7: ;
	{
		result = torope_177076(literal);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, getsimpletypedesc_555085)(tcgen549035* m, ttype225852* typ) {
	trope177009* result;
	result = 0;
	switch ((*typ).Kind) {
	case ((NU8) 26):
	{
		result = typenameorliteral_555038(typ, ((NimStringDesc*) &TMP3370));
	}
	break;
	case ((NU8) 14):
	{
		{
			NI64 LOC5;
			LOC5 = 0;
			LOC5 = firstord_263004(typ);
			if (!(LOC5 < IL64(0))) goto LA6;
			result = typenameorliteral_555038(typ, ((NimStringDesc*) &TMP3371));
		}
		goto LA3;
		LA6: ;
		{
			NI64 LOC9;
			LOC9 = 0;
			LOC9 = getsize_263199(typ);
			switch (((NI) (LOC9))) {
			case 1:
			{
				result = typenameorliteral_555038(typ, ((NimStringDesc*) &TMP3372));
			}
			break;
			case 2:
			{
				result = typenameorliteral_555038(typ, ((NimStringDesc*) &TMP3373));
			}
			break;
			case 4:
			{
				result = typenameorliteral_555038(typ, ((NimStringDesc*) &TMP3371));
			}
			break;
			case 8:
			{
				result = typenameorliteral_555038(typ, ((NimStringDesc*) &TMP3374));
			}
			break;
			default:
			{
				NimStringDesc* LOC15;
				NI64 LOC16;
				NimStringDesc* LOC17;
				LOC15 = 0;
				LOC16 = 0;
				LOC16 = getsize_263199(typ);
				LOC17 = 0;
				LOC17 = nimInt64ToStr(LOC16);
				LOC15 = rawNewString(LOC17->Sup.len + 19);
appendString(LOC15, ((NimStringDesc*) &TMP3375));
appendString(LOC15, LOC17);
				internalerror_197987((*(*typ).Sym).Info, LOC15);
				result = NIM_NIL;
			}
			break;
			}
		}
		LA3: ;
	}
	break;
	case ((NU8) 28):
	{
		trope177009* LOC19;
		LOC19 = 0;
		LOC19 = cgsym_552608(m, ((NimStringDesc*) &TMP3376));
		result = typenameorliteral_555038(typ, ((NimStringDesc*) &TMP3377));
	}
	break;
	case ((NU8) 29):
	{
		result = typenameorliteral_555038(typ, ((NimStringDesc*) &TMP3378));
	}
	break;
	case ((NU8) 1):
	{
		result = typenameorliteral_555038(typ, ((NimStringDesc*) &TMP3379));
	}
	break;
	case ((NU8) 2):
	{
		result = typenameorliteral_555038(typ, ((NimStringDesc*) &TMP3380));
	}
	break;
	case ((NU8) 5):
	{
		result = typenameorliteral_555038(typ, ((NimStringDesc*) &TMP3381));
	}
	break;
	case ((NU8) 31) ... ((NU8) 44):
	{
		result = typenameorliteral_555038(typ, numericaltypetostr_555090[((*typ).Kind)- 31]);
	}
	break;
	case ((NU8) 13):
	case ((NU8) 20):
	{
		result = getsimpletypedesc_555085(m, (*typ).Sons->data[0]);
	}
	break;
	default:
	{
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(trope177009*, cachegettype_554236)(tidtable225864 tab, ttype225852* key) {
	trope177009* result;
	tidobj200015* LOC1;
	TNimObject* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = &key->Sup;
	LOC2 = 0;
	LOC2 = idtableget_235182(tab, LOC1);
	result = ((trope177009*) (LOC2));
	return result;
}

N_NIMCALL(trope177009*, gettypepre_555101)(tcgen549035* m, ttype225852* typ) {
	trope177009* result;
	result = 0;
	{
		if (!(typ == NIM_NIL)) goto LA3;
		result = torope_177076(((NimStringDesc*) &TMP3367));
	}
	goto LA1;
	LA3: ;
	{
		result = getsimpletypedesc_555085(m, typ);
		{
			if (!(result == NIM_NIL)) goto LA8;
			result = cachegettype_554236((*m).Typecache, typ);
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

static N_INLINE(NI, sonslen_226255)(ttype225852* 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(ttype225852*, lastson_226267)(ttype225852* n) {
	ttype225852* result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = sonslen_226255(n);
	result = (*n).Sons->data[(NI64)(LOC1 - 1)];
	return result;
}

N_NIMCALL(NIM_BOOL, isimportedtype_555001)(ttype225852* 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_555163)(tcgen549035* m) {
	NimStringDesc* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_169120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		result = copyString(((NimStringDesc*) &TMP3393));
	}
	goto LA1;
	LA5: ;
	{
		result = copyString(((NimStringDesc*) &TMP3394));
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, structorunion_555143)(ttype225852* t) {
	trope177009* result;
	result = 0;
	{
		if (!(((*t).Flags &(1<<((((NU8) 1))&31)))!=0)) goto LA3;
		result = torope_177076(((NimStringDesc*) &TMP3395));
	}
	goto LA1;
	LA3: ;
	{
		result = torope_177076(((NimStringDesc*) &TMP3396));
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, gettypeforward_555192)(tcgen549035* m, ttype225852* typ) {
	trope177009* result;
	result = 0;
	result = cachegettype_554236((*m).Forwtypecache, typ);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = gettypepre_555101(m, typ);
	{
		if (!!((result == NIM_NIL))) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	switch ((*typ).Kind) {
	case ((NU8) 24):
	case ((NU8) 18):
	case ((NU8) 17):
	{
		tidobj200015* LOC17;
		TNimObject* LOC18;
		result = gettypename_553914(typ);
		{
			NIM_BOOL LOC12;
			NimStringDesc* LOC15;
			TY588896 LOC16;
			LOC12 = 0;
			LOC12 = isimportedtype_555001(typ);
			if (!!(LOC12)) goto LA13;
			LOC15 = 0;
			LOC15 = getforwardstructformat_555163(m);
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = structorunion_555143(typ);
			LOC16[1] = result;
			appf_177115(&(*m).S[(((NU8) 2))- 0], LOC15, LOC16, 2);
		}
		LA13: ;
		LOC17 = 0;
		LOC17 = &typ->Sup;
		LOC18 = 0;
		LOC18 = &result->Sup;
		idtableput_235196((&(*m).Forwtypecache), LOC17, LOC18);
	}
	break;
	default:
	{
		NimStringDesc* LOC20;
		LOC20 = 0;
		LOC20 = rawNewString(reprEnum((*typ).Kind, (&NTI225258))->Sup.len + 16);
appendString(LOC20, ((NimStringDesc*) &TMP3397));
appendString(LOC20, reprEnum((*typ).Kind, (&NTI225258)));
appendChar(LOC20, 41);
		internalerror_198006(LOC20);
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, pushtype_555916)(tcgen549035* m, ttype225852* typ) {
	(*m).Typestack = (ttypeseq225848*) incrSeq(&((*m).Typestack)->Sup, sizeof(ttype225852*));
	asgnRefNoCycle((void**) (&(*m).Typestack->data[(*m).Typestack->Sup.len-1]), typ);
}

N_NIMCALL(NU8, mapsettype_554047)(ttype225852* typ) {
	NU8 result;
	NI64 LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getsize_263199(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_554055)(ttype225852* 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_554047(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):
	{
		ttype225852* LOC8;
		LOC8 = 0;
		LOC8 = lastson_226267(typ);
		result = maptype_554055(LOC8);
	}
	break;
	case ((NU8) 14):
	{
		{
			NI64 LOC12;
			LOC12 = 0;
			LOC12 = firstord_263004(typ);
			if (!(LOC12 < IL64(0))) goto LA13;
			result = ((NU8) 6);
		}
		goto LA10;
		LA13: ;
		{
			NI64 LOC16;
			LOC16 = 0;
			LOC16 = getsize_263199(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_198006(((NimStringDesc*) &TMP3400));
			}
			break;
			}
		}
		LA10: ;
	}
	break;
	case ((NU8) 20):
	{
		result = maptype_554055((*typ).Sons->data[0]);
	}
	break;
	case ((NU8) 21):
	case ((NU8) 23):
	case ((NU8) 22):
	{
		ttype225852* base;
		ttype225852* LOC24;
		LOC24 = 0;
		LOC24 = lastson_226267(typ);
		base = skiptypes_230245(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) ((NI64)(((NI) ((NI64)(((NI) ((*typ).Kind)) - 31))) + 3)));
	}
	break;
	default:
	{
		internalerror_198006(((NimStringDesc*) &TMP3400));
	}
	break;
	}
	return result;
}

N_NIMCALL(NIM_BOOL, needscomplexassignment_554123)(ttype225852* typ) {
	NIM_BOOL result;
	result = 0;
	result = containsgarbagecollectedref_263163(typ);
	return result;
}

static N_INLINE(NIM_BOOL, isobjlackingtypefield_554130)(ttype225852* 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_263205(typ);
	LA6: ;
	LOC1 = LOC3;
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NIM_BOOL, isinvalidreturntype_554176)(ttype225852* rettype) {
	NIM_BOOL result;
	result = 0;
	{
		if (!(rettype == NIM_NIL)) goto LA3;
		result = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		NU8 LOC6;
		LOC6 = 0;
		LOC6 = maptype_554055(rettype);
		switch (LOC6) {
		case ((NU8) 17):
		{
			ttype225852* LOC8;
			LOC8 = 0;
			LOC8 = skiptypes_230245(rettype, IL64(211106232576256));
			result = !(((14680064 &(IL64(1)<<(((*LOC8).Kind)&IL64(63))))!=0));
		}
		break;
		case ((NU8) 19):
		{
			ttype225852* t;
			NIM_BOOL LOC10;
			NIM_BOOL LOC12;
			NIM_BOOL LOC14;
			t = skiptypes_230245(rettype, IL64(211106232576256));
			LOC10 = 0;
			LOC10 = needscomplexassignment_554123(t);
			if (LOC10) goto LA11;
			LOC12 = 0;
			LOC12 = ((*t).Kind == ((NU8) 17));
			if (!(LOC12)) goto LA13;
			LOC14 = 0;
			LOC14 = isobjlackingtypefield_554130(t);
			LOC12 = !(LOC14);
			LA13: ;
			LOC10 = LOC12;
			LA11: ;
			result = LOC10;
		}
		break;
		default:
		{
			result = NIM_FALSE;
		}
		break;
		}
	}
	LA1: ;
	return result;
}

static N_INLINE(NI, sonslen_226249)(tnode225816* 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_273466)(ttype225852* t) {
	NIM_BOOL result;
	result = 0;
	result = ((IL64(576460752303423744) &(IL64(1)<<(((*t).Kind)&IL64(63))))!=0);
	return result;
}

N_NIMCALL(NU8, paramstorageloc_554604)(tsym225846* param) {
	NU8 result;
	result = 0;
	{
		ttype225852* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_230245((*param).Typ, 8388864);
		if (!!(((134283264 &(IL64(1)<<(((*LOC3).Kind)&IL64(63))))!=0))) goto LA4;
		result = ((NU8) 1);
	}
	goto LA1;
	LA4: ;
	{
		result = ((NU8) 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, getparamtypedesc_554527)(tcgen549035* m, ttype225852* t, intset222056* check) {
	trope177009* result;
	result = 0;
	result = gettypedescaux_554117(m, t, check);
	return result;
}

N_NIMCALL(NIM_BOOL, ccgintroducedptr_554264)(tsym225846* s) {
	NIM_BOOL result;
	ttype225852* pt;
	result = 0;
	pt = skiptypes_230245((*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_263199(pt);
			LOC11 = (((NI64) ((NI64)(floatsize_174611 * 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_263199(pt);
		LOC23 = (((NI64) ((NI64)(floatsize_174611 * 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_552228)(trope177009** dest, NimStringDesc* cformat, NimStringDesc* llvmformat, trope177009** args, NI argsLen0) {
	{
		if (!(gcmd_169120 == ((NU8) 5))) goto LA3;
		appf_177115(dest, llvmformat, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		appf_177115(dest, cformat, args, argsLen0);
	}
	LA1: ;
}

N_NIMCALL(NU8, mapreturntype_554101)(ttype225852* typ) {
	NU8 result;
	result = 0;
	{
		ttype225852* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_230245(typ, IL64(211106232576256));
		if (!((*LOC3).Kind == ((NU8) 16))) goto LA4;
		result = ((NU8) 20);
	}
	goto LA1;
	LA4: ;
	{
		result = maptype_554055(typ);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genprocparams_554626)(tcgen549035* m, ttype225852* t, trope177009** rettype, trope177009** params, intset222056* check, NIM_BOOL declareenvironment) {
	unsureAsgnRef((void**) (&(*params)), NIM_NIL);
	{
		NIM_BOOL LOC3;
		TY553703 LOC7;
		LOC3 = 0;
		LOC3 = ((*t).Sons->data[0] == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = isinvalidreturntype_554176((*t).Sons->data[0]);
		LA4: ;
		if (!LOC3) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		unsureAsgnRef((void**) (&(*rettype)), ropef_177107(((NimStringDesc*) &TMP3367), LOC7, 0));
	}
	goto LA1;
	LA5: ;
	{
		unsureAsgnRef((void**) (&(*rettype)), gettypedescaux_554117(m, (*t).Sons->data[0], check));
	}
	LA1: ;
	{
		NI i_554672;
		NI HEX3Atmp_554975;
		NI LOC10;
		NI res_554978;
		i_554672 = 0;
		HEX3Atmp_554975 = 0;
		LOC10 = 0;
		LOC10 = sonslen_226249((*t).N);
		HEX3Atmp_554975 = (NI64)(LOC10 - 1);
		res_554978 = 1;
		{
			while (1) {
				if (!(res_554978 <= HEX3Atmp_554975)) goto LA12;
				i_554672 = res_554978;
				{
					tsym225846* param;
					trope177009* LOC29;
					NU8 LOC30;
					trope177009* LOC31;
					TY553703 LOC39;
					trope177009* LOC40;
					ttype225852* arr;
					NI j;
					{
						if (!!(((*(*(*t).N).kindU.S6.Sons->data[i_554672]).Kind == ((NU8) 3)))) goto LA16;
						internalerror_197987((*(*t).N).Info, ((NimStringDesc*) &TMP3401));
					}
					LA16: ;
					param = (*(*(*t).N).kindU.S6.Sons->data[i_554672]).kindU.S4.Sym;
					{
						NIM_BOOL LOC20;
						LOC20 = 0;
						LOC20 = iscompiletimeonly_273466((*param).Typ);
						if (!LOC20) goto LA21;
						goto LA13;
					}
					LA21: ;
					{
						TY553703 LOC27;
						trope177009* LOC28;
						if (!!(((*params) == NIM_NIL))) goto LA25;
						memset((void*)LOC27, 0, sizeof(LOC27));
						LOC28 = 0;
						LOC28 = ropef_177107(((NimStringDesc*) &TMP3402), LOC27, 0);
						app_177052(params, LOC28);
					}
					LA25: ;
					LOC29 = 0;
					LOC29 = manglename_553667(param);
					LOC30 = 0;
					LOC30 = paramstorageloc_554604(param);
					fillloc_552376((&(*param).Loc), ((NU8) 4), (*param).Typ, LOC29, LOC30);
					LOC31 = 0;
					LOC31 = getparamtypedesc_554527(m, (*param).Typ, check);
					app_177052(params, LOC31);
					{
						NIM_BOOL LOC34;
						TY553703 LOC37;
						trope177009* LOC38;
						LOC34 = 0;
						LOC34 = ccgintroducedptr_554264(param);
						if (!LOC34) goto LA35;
						memset((void*)LOC37, 0, sizeof(LOC37));
						LOC38 = 0;
						LOC38 = ropef_177107(((NimStringDesc*) &TMP3398), LOC37, 0);
						app_177052(params, LOC38);
						(*param).Loc.Flags |= ((NI8)1)<<((((NU8) 0))%(sizeof(NI8)*8));
						(*param).Loc.S = ((NU8) 0);
					}
					LA35: ;
					memset((void*)LOC39, 0, sizeof(LOC39));
					LOC40 = 0;
					LOC40 = ropef_177107(((NimStringDesc*) &TMP3403), LOC39, 0);
					app_177052(params, LOC40);
					app_177052(params, (*param).Loc.R);
					arr = (*param).Typ;
					{
						if (!((*arr).Kind == ((NU8) 23))) goto LA43;
						arr = (*arr).Sons->data[0];
					}
					LA43: ;
					j = 0;
					{
						while (1) {
							TY588896 LOC51;
							if (!((IL64(281475110928384) &(IL64(1)<<(((*arr).Kind)&IL64(63))))!=0)) goto LA46;
							{
								if (!((*(*param).Typ).Kind == ((NU8) 23))) goto LA49;
								(*param).Loc.S = ((NU8) 0);
							}
							LA49: ;
							memset((void*)LOC51, 0, sizeof(LOC51));
							LOC51[0] = (*param).Loc.R;
							LOC51[1] = torope_177082(((NI64) (j)));
							appff_552228(params, ((NimStringDesc*) &TMP3404), ((NimStringDesc*) &TMP3405), LOC51, 2);
							j += 1;
							arr = (*arr).Sons->data[0];
						} LA46: ;
					}
				} LA13: ;
				res_554978 += 1;
			} LA12: ;
		}
	}
	{
		NIM_BOOL LOC54;
		ttype225852* arr;
		trope177009* LOC62;
		TY553703 LOC70;
		LOC54 = 0;
		LOC54 = !(((*t).Sons->data[0] == NIM_NIL));
		if (!(LOC54)) goto LA55;
		LOC54 = isinvalidreturntype_554176((*t).Sons->data[0]);
		LA55: ;
		if (!LOC54) goto LA56;
		arr = (*t).Sons->data[0];
		{
			if (!!(((*params) == NIM_NIL))) goto LA60;
			app_177060(params, ((NimStringDesc*) &TMP3402));
		}
		LA60: ;
		LOC62 = 0;
		LOC62 = gettypedescaux_554117(m, arr, check);
		app_177052(params, LOC62);
		{
			NIM_BOOL LOC65;
			NU8 LOC66;
			LOC65 = 0;
			LOC66 = 0;
			LOC66 = mapreturntype_554101((*t).Sons->data[0]);
			LOC65 = !((LOC66 == ((NU8) 17)));
			if (LOC65) goto LA67;
			LOC65 = (gcmd_169120 == ((NU8) 5));
			LA67: ;
			if (!LOC65) goto LA68;
			app_177060(params, ((NimStringDesc*) &TMP3398));
		}
		LA68: ;
		memset((void*)LOC70, 0, sizeof(LOC70));
		appff_552228(params, ((NimStringDesc*) &TMP3406), ((NimStringDesc*) &TMP3407), LOC70, 0);
	}
	LA56: ;
	{
		NIM_BOOL LOC73;
		LOC73 = 0;
		LOC73 = ((*t).Callconv == ((NU8) 8));
		if (!(LOC73)) goto LA74;
		LOC73 = declareenvironment;
		LA74: ;
		if (!LOC73) goto LA75;
		{
			if (!!(((*params) == NIM_NIL))) goto LA79;
			app_177060(params, ((NimStringDesc*) &TMP3402));
		}
		LA79: ;
		app_177060(params, ((NimStringDesc*) &TMP3408));
	}
	LA75: ;
	{
		if (!(((*t).Flags &(1<<((((NU8) 0))&31)))!=0)) goto LA83;
		{
			if (!!(((*params) == NIM_NIL))) goto LA87;
			app_177060(params, ((NimStringDesc*) &TMP3402));
		}
		LA87: ;
		app_177060(params, ((NimStringDesc*) &TMP3409));
	}
	LA83: ;
	{
		NIM_BOOL LOC91;
		LOC91 = 0;
		LOC91 = ((*params) == NIM_NIL);
		if (!(LOC91)) goto LA92;
		LOC91 = !((gcmd_169120 == ((NU8) 5)));
		LA92: ;
		if (!LOC91) goto LA93;
		app_177060(params, ((NimStringDesc*) &TMP3410));
	}
	goto LA89;
	LA93: ;
	{
		app_177060(params, ((NimStringDesc*) &TMP3411));
	}
	LA89: ;
	unsureAsgnRef((void**) (&(*params)), con_177038(((NimStringDesc*) &TMP3412), (*params)));
}

N_NIMCALL(void, appcg_553004)(tcgen549035* m, trope177009** c, NimStringDesc* frmt, trope177009** args, NI argsLen0) {
	trope177009* LOC1;
	LOC1 = 0;
	LOC1 = ropecg_552615(m, frmt, args, argsLen0);
	app_177052(c, LOC1);
}

static N_INLINE(tnode225816*, lastson_226261)(tnode225816* n) {
	tnode225816* result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = sonslen_226249(n);
	result = (*n).kindU.S6.Sons->data[(NI64)(LOC1 - 1)];
	return result;
}

N_NIMCALL(NimStringDesc*, manglefield_553644)(NimStringDesc* name) {
	NimStringDesc* result;
	result = 0;
	result = mangle_548763(name);
	result->data[0] = nsuToUpperChar(result->data[0]);
	return result;
}

N_NIMCALL(trope177009*, manglerecfieldname_555247)(tsym225846* field, ttype225852* rectype) {
	trope177009* 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_553644((*(*field).Name).S);
		result = torope_177076(LOC8);
	}
	LA1: ;
	{
		if (!(result == NIM_NIL)) goto LA11;
		internalerror_197987((*field).Info, ((NimStringDesc*) &TMP3441));
	}
	LA11: ;
	return result;
}

N_NIMCALL(trope177009*, genrecordfieldsaux_555326)(tcgen549035* m, tnode225816* n, trope177009* accessexpr, ttype225852* rectype, intset222056* check) {
	trope177009* result;
	trope177009* ae;
	trope177009* uname;
	trope177009* sname;
	trope177009* a;
	tnode225816* k;
	tsym225846* field;
	result = 0;
	ae = 0;
	uname = 0;
	sname = 0;
	a = 0;
	k = 0;
	field = 0;
	result = NIM_NIL;
	switch ((*n).Kind) {
	case ((NU8) 137):
	{
		{
			NI i_555353;
			NI HEX3Atmp_555626;
			NI LOC3;
			NI res_555629;
			i_555353 = 0;
			HEX3Atmp_555626 = 0;
			LOC3 = 0;
			LOC3 = sonslen_226249(n);
			HEX3Atmp_555626 = (NI64)(LOC3 - 1);
			res_555629 = 0;
			{
				while (1) {
					trope177009* LOC6;
					if (!(res_555629 <= HEX3Atmp_555626)) goto LA5;
					i_555353 = res_555629;
					LOC6 = 0;
					LOC6 = genrecordfieldsaux_555326(m, (*n).kindU.S6.Sons->data[i_555353], accessexpr, rectype, check);
					app_177052(&result, LOC6);
					res_555629 += 1;
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 138):
	{
		trope177009* LOC12;
		NimStringDesc* LOC13;
		NimStringDesc* LOC14;
		NimStringDesc* LOC21;
		TY177515 LOC42;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA10;
			internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3434));
		}
		LA10: ;
		LOC12 = 0;
		LOC12 = genrecordfieldsaux_555326(m, (*n).kindU.S6.Sons->data[0], accessexpr, rectype, check);
		app_177052(&result, LOC12);
		LOC13 = 0;
		LOC14 = 0;
		LOC14 = mangle_548763((*(*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
		LOC13 = rawNewString(LOC14->Sup.len + 1);
appendString(LOC13, LOC14);
appendChar(LOC13, 85);
		uname = torope_177076(LOC13);
		{
			TY588896 LOC19;
			if (!!((accessexpr == NIM_NIL))) goto LA17;
			memset((void*)LOC19, 0, sizeof(LOC19));
			LOC19[0] = accessexpr;
			LOC19[1] = uname;
			ae = ropef_177107(((NimStringDesc*) &TMP3435), LOC19, 2);
		}
		goto LA15;
		LA17: ;
		{
			ae = uname;
		}
		LA15: ;
		LOC21 = 0;
		LOC21 = rawNewString(tnl_174613->Sup.len + 7);
appendString(LOC21, ((NimStringDesc*) &TMP3436));
appendString(LOC21, tnl_174613);
		app_177060(&result, LOC21);
		{
			NI i_555469;
			NI HEX3Atmp_555632;
			NI LOC23;
			NI res_555635;
			i_555469 = 0;
			HEX3Atmp_555632 = 0;
			LOC23 = 0;
			LOC23 = sonslen_226249(n);
			HEX3Atmp_555632 = (NI64)(LOC23 - 1);
			res_555635 = 1;
			{
				while (1) {
					if (!(res_555635 <= HEX3Atmp_555632)) goto LA25;
					i_555469 = res_555635;
					switch ((*(*n).kindU.S6.Sons->data[i_555469]).Kind) {
					case ((NU8) 85):
					case ((NU8) 88):
					{
						k = lastson_226261((*n).kindU.S6.Sons->data[i_555469]);
						{
							trope177009* LOC31;
							TY588896 LOC32;
							trope177009* LOC33;
							if (!!(((*k).Kind == ((NU8) 3)))) goto LA29;
							LOC31 = 0;
							LOC31 = torope_177082(((NI64) (i_555469)));
							sname = con_177038(((NimStringDesc*) &TMP3437), LOC31);
							memset((void*)LOC32, 0, sizeof(LOC32));
							LOC32[0] = ae;
							LOC32[1] = sname;
							LOC33 = 0;
							LOC33 = ropef_177107(((NimStringDesc*) &TMP3435), LOC32, 2);
							a = genrecordfieldsaux_555326(m, k, LOC33, rectype, check);
							{
								TY177515 LOC38;
								if (!!((a == NIM_NIL))) goto LA36;
								app_177060(&result, ((NimStringDesc*) &TMP3438));
								app_177052(&result, a);
								memset((void*)LOC38, 0, sizeof(LOC38));
								LOC38[0] = sname;
								appf_177115(&result, ((NimStringDesc*) &TMP3439), LOC38, 1);
							}
							LA36: ;
						}
						goto LA27;
						LA29: ;
						{
							trope177009* LOC40;
							LOC40 = 0;
							LOC40 = genrecordfieldsaux_555326(m, k, ae, rectype, check);
							app_177052(&result, LOC40);
						}
						LA27: ;
					}
					break;
					default:
					{
						internalerror_198006(((NimStringDesc*) &TMP3440));
					}
					break;
					}
					res_555635 += 1;
				} LA25: ;
			}
		}
		memset((void*)LOC42, 0, sizeof(LOC42));
		LOC42[0] = uname;
		appf_177115(&result, ((NimStringDesc*) &TMP3439), LOC42, 1);
	}
	break;
	case ((NU8) 3):
	{
		ttype225852* fieldtype;
		field = (*n).kindU.S4.Sym;
		{
			if (!((*(*field).Typ).Kind == ((NU8) 3))) goto LA46;
			goto BeforeRet;
		}
		LA46: ;
		sname = manglerecfieldname_555247(field, rectype);
		{
			TY588896 LOC52;
			if (!!((accessexpr == NIM_NIL))) goto LA50;
			memset((void*)LOC52, 0, sizeof(LOC52));
			LOC52[0] = accessexpr;
			LOC52[1] = sname;
			ae = ropef_177107(((NimStringDesc*) &TMP3435), LOC52, 2);
		}
		goto LA48;
		LA50: ;
		{
			ae = sname;
		}
		LA48: ;
		fillloc_552376((&(*field).Loc), ((NU8) 5), (*field).Typ, ae, ((NU8) 0));
		fieldtype = (*field).Loc.T;
		{
			NIM_BOOL LOC56;
			TY588896 LOC60;
			ttype225852* LOC61;
			LOC56 = 0;
			LOC56 = ((*fieldtype).Kind == ((NU8) 16));
			if (!(LOC56)) goto LA57;
			LOC56 = (((*fieldtype).Flags &(1<<((((NU8) 0))&31)))!=0);
			LA57: ;
			if (!LOC56) goto LA58;
			memset((void*)LOC60, 0, sizeof(LOC60));
			LOC61 = 0;
			LOC61 = elemtype_263656(fieldtype);
			LOC60[0] = gettypedescaux_554117(m, LOC61, check);
			LOC60[1] = sname;
			appf_177115(&result, ((NimStringDesc*) &TMP3442), LOC60, 2);
		}
		goto LA54;
		LA58: ;
		{
			TY588896 LOC63;
			memset((void*)LOC63, 0, sizeof(LOC63));
			LOC63[0] = gettypedescaux_554117(m, fieldtype, check);
			LOC63[1] = sname;
			appf_177115(&result, ((NimStringDesc*) &TMP3393), LOC63, 2);
		}
		LA54: ;
	}
	break;
	default:
	{
		internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3443));
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope177009*, getrecordfields_555658)(tcgen549035* m, ttype225852* typ, intset222056* check) {
	trope177009* result;
	result = 0;
	result = genrecordfieldsaux_555326(m, (*typ).N, NIM_NIL, typ, check);
	return result;
}

N_NIMCALL(trope177009*, getrecorddesc_555668)(tcgen549035* m, ttype225852* typ, trope177009* name, intset222056* check) {
	trope177009* result;
	NIM_BOOL hasfield;
	trope177009* attribute;
	TY554018 LOC6;
	trope177009* desc;
	NimStringDesc* LOC44;
	result = 0;
	hasfield = NIM_FALSE;
	{
		if (!(((*typ).Flags &(1<<((((NU8) 21))&31)))!=0)) goto LA3;
		attribute = torope_177076(cc_202434[(ccompiler_202461)- 1].Field19);
	}
	goto LA1;
	LA3: ;
	{
		attribute = NIM_NIL;
	}
	LA1: ;
	memset((void*)LOC6, 0, sizeof(LOC6));
	LOC6[0] = structorunion_555143(typ);
	LOC6[1] = name;
	LOC6[2] = attribute;
	result = ropecg_552615(m, cc_202434[(ccompiler_202461)- 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;
				TY553703 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_553004(m, &result, ((NimStringDesc*) &TMP3430), LOC23, 0);
			}
			goto LA15;
			LA21: ;
			{
				TY588896 LOC25;
				memset((void*)LOC25, 0, sizeof(LOC25));
				LOC25[0] = name;
				LOC25[1] = attribute;
				appcg_553004(m, &result, ((NimStringDesc*) &TMP3431), LOC25, 2);
				hasfield = NIM_TRUE;
			}
			LA15: ;
		}
		goto LA11;
		LA13: ;
		{
			NIM_BOOL LOC27;
			TY177515 LOC31;
			LOC27 = 0;
			LOC27 = (gcmd_169120 == ((NU8) 2));
			if (LOC27) goto LA28;
			LOC27 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
			LA28: ;
			if (!LOC27) goto LA29;
			memset((void*)LOC31, 0, sizeof(LOC31));
			LOC31[0] = gettypedescaux_554117(m, (*typ).Sons->data[0], check);
			appcg_553004(m, &result, ((NimStringDesc*) &TMP3432), LOC31, 1);
			hasfield = NIM_TRUE;
		}
		goto LA11;
		LA29: ;
		{
			TY177515 LOC33;
			memset((void*)LOC33, 0, sizeof(LOC33));
			LOC33[0] = gettypedescaux_554117(m, (*typ).Sons->data[0], check);
			appcg_553004(m, &result, ((NimStringDesc*) &TMP3433), LOC33, 1);
			hasfield = NIM_TRUE;
		}
		LA11: ;
	}
	goto LA7;
	LA9: ;
	{
		TY177515 LOC35;
		memset((void*)LOC35, 0, sizeof(LOC35));
		LOC35[0] = name;
		appf_177115(&result, ((NimStringDesc*) &TMP3430), LOC35, 1);
	}
	LA7: ;
	desc = getrecordfields_555658(m, typ, check);
	{
		NIM_BOOL LOC38;
		TY553703 LOC42;
		LOC38 = 0;
		LOC38 = (desc == NIM_NIL);
		if (!(LOC38)) goto LA39;
		LOC38 = !(hasfield);
		LA39: ;
		if (!LOC38) goto LA40;
		memset((void*)LOC42, 0, sizeof(LOC42));
		appf_177115(&result, ((NimStringDesc*) &TMP3444), LOC42, 0);
	}
	goto LA36;
	LA40: ;
	{
		app_177052(&result, desc);
	}
	LA36: ;
	LOC44 = 0;
	LOC44 = rawNewString(tnl_174613->Sup.len + 2);
appendString(LOC44, ((NimStringDesc*) &TMP3445));
appendString(LOC44, tnl_174613);
	app_177060(&result, LOC44);
	return result;
}

N_NIMCALL(trope177009*, gettupledesc_555846)(tcgen549035* m, ttype225852* typ, trope177009* name, intset222056* check) {
	trope177009* result;
	TY588896 LOC1;
	trope177009* desc;
	NimStringDesc* LOC13;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = structorunion_555143(typ);
	LOC1[1] = name;
	result = ropef_177107(((NimStringDesc*) &TMP3446), LOC1, 2);
	desc = NIM_NIL;
	{
		NI i_555871;
		NI HEX3Atmp_555899;
		NI LOC3;
		NI res_555902;
		i_555871 = 0;
		HEX3Atmp_555899 = 0;
		LOC3 = 0;
		LOC3 = sonslen_226255(typ);
		HEX3Atmp_555899 = (NI64)(LOC3 - 1);
		res_555902 = 0;
		{
			while (1) {
				TY588896 LOC6;
				if (!(res_555902 <= HEX3Atmp_555899)) goto LA5;
				i_555871 = res_555902;
				memset((void*)LOC6, 0, sizeof(LOC6));
				LOC6[0] = gettypedescaux_554117(m, (*typ).Sons->data[i_555871], check);
				LOC6[1] = torope_177082(((NI64) (i_555871)));
				appf_177115(&desc, ((NimStringDesc*) &TMP3447), LOC6, 2);
				res_555902 += 1;
			} LA5: ;
		}
	}
	{
		NimStringDesc* LOC11;
		if (!(desc == NIM_NIL)) goto LA9;
		LOC11 = 0;
		LOC11 = rawNewString(tnl_174613->Sup.len + 11);
appendString(LOC11, ((NimStringDesc*) &TMP3448));
appendString(LOC11, tnl_174613);
		app_177060(&result, LOC11);
	}
	goto LA7;
	LA9: ;
	{
		app_177052(&result, desc);
	}
	LA7: ;
	LOC13 = 0;
	LOC13 = rawNewString(tnl_174613->Sup.len + 2);
appendString(LOC13, ((NimStringDesc*) &TMP3445));
appendString(LOC13, tnl_174613);
	app_177060(&result, LOC13);
	return result;
}

N_NIMCALL(trope177009*, gettypedescaux_554117)(tcgen549035* m, ttype225852* typ, intset222056* check) {
	trope177009* result;
	trope177009* name;
	trope177009* rettype;
	trope177009* desc;
	trope177009* recdesc;
	NI64 n;
	ttype225852* t;
	ttype225852* et;
	result = 0;
	name = 0;
	rettype = 0;
	desc = 0;
	recdesc = 0;
	n = 0;
	t = 0;
	et = 0;
	t = getuniquetype_548401(typ);
	{
		if (!(t == NIM_NIL)) goto LA3;
		internalerror_198006(((NimStringDesc*) &TMP3366));
	}
	LA3: ;
	{
		if (!!(((*t).Sym == NIM_NIL))) goto LA7;
		useheader_552469(m, (*t).Sym);
	}
	LA7: ;
	result = gettypepre_555101(m, t);
	{
		if (!!((result == NIM_NIL))) goto LA11;
		goto BeforeRet;
	}
	LA11: ;
	{
		NIM_BOOL LOC15;
		NimStringDesc* LOC18;
		NimStringDesc* LOC19;
		LOC15 = 0;
		LOC15 = containsorincl_222916(check, (*t).Sup.Id);
		if (!LOC15) goto LA16;
		LOC18 = 0;
		LOC19 = 0;
		LOC19 = typetostring_263031(typ, ((NU8) 0));
		LOC18 = rawNewString(LOC19->Sup.len + 28);
appendString(LOC18, ((NimStringDesc*) &TMP3392));
appendString(LOC18, LOC19);
		internalerror_198006(LOC18);
	}
	LA16: ;
	switch ((*t).Kind) {
	case ((NU8) 22):
	case ((NU8) 21):
	case ((NU8) 23):
	{
		ttype225852* LOC21;
		LOC21 = 0;
		LOC21 = lastson_226267(t);
		et = getuniquetype_548401(LOC21);
		{
			ttype225852* LOC26;
			if (!((IL64(281475110993936) &(IL64(1)<<(((*et).Kind)&IL64(63))))!=0)) goto LA24;
			LOC26 = 0;
			LOC26 = elemtype_263656(et);
			et = getuniquetype_548401(LOC26);
		}
		LA24: ;
		switch ((*et).Kind) {
		case ((NU8) 17):
		case ((NU8) 18):
		{
			tidobj200015* LOC28;
			TNimObject* LOC29;
			name = gettypeforward_555192(m, et);
			result = con_177031(name, ((NimStringDesc*) &TMP3398));
			LOC28 = 0;
			LOC28 = &t->Sup;
			LOC29 = 0;
			LOC29 = &result->Sup;
			idtableput_235196((&(*m).Typecache), LOC28, LOC29);
			pushtype_555916(m, et);
		}
		break;
		case ((NU8) 24):
		{
			tidobj200015* LOC31;
			TNimObject* LOC32;
			name = gettypeforward_555192(m, et);
			result = con_177031(name, ((NimStringDesc*) &TMP3399));
			LOC31 = 0;
			LOC31 = &t->Sup;
			LOC32 = 0;
			LOC32 = &result->Sup;
			idtableput_235196((&(*m).Typecache), LOC31, LOC32);
			pushtype_555916(m, et);
		}
		break;
		default:
		{
			trope177009* LOC34;
			tidobj200015* LOC35;
			TNimObject* LOC36;
			LOC34 = 0;
			LOC34 = gettypedescaux_554117(m, et, check);
			result = con_177031(LOC34, ((NimStringDesc*) &TMP3398));
			LOC35 = 0;
			LOC35 = &t->Sup;
			LOC36 = 0;
			LOC36 = &result->Sup;
			idtableput_235196((&(*m).Typecache), LOC35, LOC36);
		}
		break;
		}
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		trope177009* LOC38;
		tidobj200015* LOC39;
		TNimObject* LOC40;
		et = getuniquetype_548401((*t).Sons->data[0]);
		LOC38 = 0;
		LOC38 = gettypedescaux_554117(m, et, check);
		result = con_177031(LOC38, ((NimStringDesc*) &TMP3398));
		LOC39 = 0;
		LOC39 = &t->Sup;
		LOC40 = 0;
		LOC40 = &result->Sup;
		idtableput_235196((&(*m).Typecache), LOC39, LOC40);
	}
	break;
	case ((NU8) 25):
	{
		tidobj200015* LOC42;
		TNimObject* LOC43;
		result = gettypename_553914(t);
		LOC42 = 0;
		LOC42 = &t->Sup;
		LOC43 = 0;
		LOC43 = &result->Sup;
		idtableput_235196((&(*m).Typecache), LOC42, LOC43);
		genprocparams_554626(m, t, &rettype, &desc, check, NIM_TRUE);
		{
			NIM_BOOL LOC46;
			LOC46 = 0;
			LOC46 = isimportedtype_555001(t);
			if (!!(LOC46)) goto LA47;
			{
				TY556046 LOC53;
				if (!!(((*t).Callconv == ((NU8) 8)))) goto LA51;
				memset((void*)LOC53, 0, sizeof(LOC53));
				LOC53[0] = torope_177076(callingconvtostr_554224[((*t).Callconv)- 0]);
				LOC53[1] = rettype;
				LOC53[2] = result;
				LOC53[3] = desc;
				appf_177115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3413), LOC53, 4);
			}
			goto LA49;
			LA51: ;
			{
				TY554018 LOC55;
				memset((void*)LOC55, 0, sizeof(LOC55));
				LOC55[0] = result;
				LOC55[1] = rettype;
				LOC55[2] = desc;
				appf_177115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3424), LOC55, 3);
			}
			LA49: ;
		}
		LA47: ;
	}
	break;
	case ((NU8) 24):
	{
		tidobj200015* LOC70;
		trope177009* LOC71;
		TNimObject* LOC72;
		result = cachegettype_554236((*m).Forwtypecache, t);
		{
			tidobj200015* LOC68;
			TNimObject* LOC69;
			if (!(result == NIM_NIL)) goto LA59;
			result = gettypename_553914(t);
			{
				NIM_BOOL LOC63;
				NimStringDesc* LOC66;
				TY588896 LOC67;
				LOC63 = 0;
				LOC63 = isimportedtype_555001(t);
				if (!!(LOC63)) goto LA64;
				LOC66 = 0;
				LOC66 = getforwardstructformat_555163(m);
				memset((void*)LOC67, 0, sizeof(LOC67));
				LOC67[0] = structorunion_555143(t);
				LOC67[1] = result;
				appf_177115(&(*m).S[(((NU8) 2))- 0], LOC66, LOC67, 2);
			}
			LA64: ;
			LOC68 = 0;
			LOC68 = &t->Sup;
			LOC69 = 0;
			LOC69 = &result->Sup;
			idtableput_235196((&(*m).Forwtypecache), LOC68, LOC69);
		}
		LA59: ;
		LOC70 = 0;
		LOC70 = &t->Sup;
		LOC71 = 0;
		LOC71 = con_177031(result, ((NimStringDesc*) &TMP3398));
		LOC72 = 0;
		LOC72 = &LOC71->Sup;
		idtableput_235196((&(*m).Typecache), LOC70, LOC72);
		{
			NIM_BOOL LOC75;
			LOC75 = 0;
			LOC75 = isimportedtype_555001(t);
			if (!!(LOC75)) goto LA76;
			{
				ttype225852* LOC80;
				NimStringDesc* LOC83;
				NimStringDesc* LOC84;
				TY588896 LOC92;
				LOC80 = 0;
				LOC80 = skiptypes_230245((*t).Sons->data[0], IL64(211106232576256));
				if (!!(((*LOC80).Kind == ((NU8) 3)))) goto LA81;
				LOC83 = 0;
				LOC84 = 0;
				{
					NIM_BOOL LOC87;
					LOC87 = 0;
					LOC87 = (gcmd_169120 == ((NU8) 2));
					if (LOC87) goto LA88;
					LOC87 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
					LA88: ;
					if (!LOC87) goto LA89;
					LOC84 = copyString(((NimStringDesc*) &TMP3425));
				}
				goto LA85;
				LA89: ;
				{
					LOC84 = copyString(((NimStringDesc*) &TMP3426));
				}
				LA85: ;
				LOC83 = rawNewString(LOC84->Sup.len + 31);
appendString(LOC83, LOC84);
appendString(LOC83, ((NimStringDesc*) &TMP3427));
				memset((void*)LOC92, 0, sizeof(LOC92));
				LOC92[0] = gettypedescaux_554117(m, (*t).Sons->data[0], check);
				LOC92[1] = result;
				appcg_553004(m, &(*m).S[(((NU8) 4))- 0], LOC83, LOC92, 2);
			}
			goto LA78;
			LA81: ;
			{
				result = torope_177076(((NimStringDesc*) &TMP3428));
			}
			LA78: ;
		}
		LA76: ;
		app_177060(&result, ((NimStringDesc*) &TMP3398));
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		tidobj200015* LOC99;
		TNimObject* LOC100;
		n = lengthord_263016(t);
		{
			if (!(n <= IL64(0))) goto LA97;
			n = IL64(1);
		}
		LA97: ;
		result = gettypename_553914(t);
		LOC99 = 0;
		LOC99 = &t->Sup;
		LOC100 = 0;
		LOC100 = &result->Sup;
		idtableput_235196((&(*m).Typecache), LOC99, LOC100);
		{
			NIM_BOOL LOC103;
			TY554018 LOC106;
			LOC103 = 0;
			LOC103 = isimportedtype_555001(t);
			if (!!(LOC103)) goto LA104;
			memset((void*)LOC106, 0, sizeof(LOC106));
			LOC106[0] = gettypedescaux_554117(m, (*t).Sons->data[1], check);
			LOC106[1] = result;
			LOC106[2] = torope_177082(n);
			appf_177115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3429), LOC106, 3);
		}
		LA104: ;
	}
	break;
	case ((NU8) 17):
	case ((NU8) 18):
	{
		tidobj200015* LOC121;
		TNimObject* LOC122;
		result = cachegettype_554236((*m).Forwtypecache, t);
		{
			tidobj200015* LOC119;
			TNimObject* LOC120;
			if (!(result == NIM_NIL)) goto LA110;
			result = gettypename_553914(t);
			{
				NIM_BOOL LOC114;
				NimStringDesc* LOC117;
				TY588896 LOC118;
				LOC114 = 0;
				LOC114 = isimportedtype_555001(t);
				if (!!(LOC114)) goto LA115;
				LOC117 = 0;
				LOC117 = getforwardstructformat_555163(m);
				memset((void*)LOC118, 0, sizeof(LOC118));
				LOC118[0] = structorunion_555143(t);
				LOC118[1] = result;
				appf_177115(&(*m).S[(((NU8) 2))- 0], LOC117, LOC118, 2);
			}
			LA115: ;
			LOC119 = 0;
			LOC119 = &t->Sup;
			LOC120 = 0;
			LOC120 = &result->Sup;
			idtableput_235196((&(*m).Forwtypecache), LOC119, LOC120);
		}
		LA110: ;
		LOC121 = 0;
		LOC121 = &t->Sup;
		LOC122 = 0;
		LOC122 = &result->Sup;
		idtableput_235196((&(*m).Typecache), LOC121, LOC122);
		{
			if (!!(((*t).Kind == ((NU8) 18)))) goto LA125;
			recdesc = getrecorddesc_555668(m, t, result, check);
		}
		goto LA123;
		LA125: ;
		{
			recdesc = gettupledesc_555846(m, t, result, check);
		}
		LA123: ;
		{
			NIM_BOOL LOC130;
			LOC130 = 0;
			LOC130 = isimportedtype_555001(t);
			if (!!(LOC130)) goto LA131;
			app_177052(&(*m).S[(((NU8) 3))- 0], recdesc);
		}
		LA131: ;
	}
	break;
	case ((NU8) 19):
	{
		NI64 LOC134;
		LOC134 = 0;
		LOC134 = getsize_263199(t);
		switch (((NI) (LOC134))) {
		case 1:
		{
			result = torope_177076(((NimStringDesc*) &TMP3372));
		}
		break;
		case 2:
		{
			result = torope_177076(((NimStringDesc*) &TMP3373));
		}
		break;
		case 4:
		{
			result = torope_177076(((NimStringDesc*) &TMP3390));
		}
		break;
		case 8:
		{
			result = torope_177076(((NimStringDesc*) &TMP3391));
		}
		break;
		default:
		{
			tidobj200015* LOC140;
			TNimObject* LOC141;
			result = gettypename_553914(t);
			LOC140 = 0;
			LOC140 = &t->Sup;
			LOC141 = 0;
			LOC141 = &result->Sup;
			idtableput_235196((&(*m).Typecache), LOC140, LOC141);
			{
				NIM_BOOL LOC144;
				TY588896 LOC147;
				NI64 LOC148;
				LOC144 = 0;
				LOC144 = isimportedtype_555001(t);
				if (!!(LOC144)) goto LA145;
				memset((void*)LOC147, 0, sizeof(LOC147));
				LOC147[0] = result;
				LOC148 = 0;
				LOC148 = getsize_263199(t);
				LOC147[1] = torope_177082(LOC148);
				appf_177115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3449), LOC147, 2);
			}
			LA145: ;
		}
		break;
		}
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	case ((NU8) 15):
	case ((NU8) 46):
	case ((NU8) 47):
	case ((NU8) 49):
	case ((NU8) 8):
	{
		ttype225852* LOC150;
		LOC150 = 0;
		LOC150 = lastson_226267(t);
		result = gettypedescaux_554117(m, LOC150, check);
	}
	break;
	default:
	{
		NimStringDesc* LOC152;
		LOC152 = 0;
		LOC152 = rawNewString(reprEnum((*t).Kind, (&NTI225258))->Sup.len + 16);
appendString(LOC152, ((NimStringDesc*) &TMP3450));
appendString(LOC152, reprEnum((*t).Kind, (&NTI225258)));
appendChar(LOC152, 41);
		internalerror_198006(LOC152);
		result = NIM_NIL;
	}
	break;
	}
	excl_222884(check, (*t).Sup.Id);
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope177009*, gettypedesc_556307)(tcgen549035* m, ttype225852* typ) {
	trope177009* result;
	intset222056 check;
	result = 0;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_222950((&check));
	result = gettypedescaux_554117(m, typ, (&check));
	return result;
}

N_NIMCALL(trope177009*, mangledynlibproc_560938)(tsym225846* sym) {
	trope177009* result;
	result = 0;
	{
		if (!(((*sym).Flags &(1<<((((NU8) 16))&31)))!=0)) goto LA3;
		result = torope_177076((*(*sym).Name).S);
	}
	goto LA1;
	LA3: ;
	{
		TY177515 LOC6;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = torope_177082(((NI64) ((*sym).Sup.Id)));
		result = ropef_177107(((NimStringDesc*) &TMP3451), LOC6, 1);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genclinedir_553252)(trope177009** r, NimStringDesc* filename, NI line) {
	{
		TY588896 LOC5;
		NimStringDesc* LOC6;
		if (!((goptions_169116 &(1<<((((NU8) 10))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC6 = 0;
		LOC6 = makesinglelinecstring_548737(filename);
		LOC5[0] = torope_177076(LOC6);
		LOC5[1] = torope_177082(((NI64) (line)));
		appff_552228(r, ((NimStringDesc*) &TMP3452), ((NimStringDesc*) &TMP3453), LOC5, 2);
	}
	LA3: ;
}

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

N_NIMCALL(NI, safelinenm_553241)(tlineinfo195539 info) {
	NI result;
	result = 0;
	result = tolinenumber_197073(info);
	{
		if (!(result < 0)) goto LA3;
		result = 0;
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, genclinedir_553424)(trope177009** r, tlineinfo195539 info) {
	NimStringDesc* LOC1;
	NI LOC2;
	LOC1 = 0;
	LOC1 = tofullpath_197037(info.Fileindex);
	LOC2 = 0;
	LOC2 = safelinenm_553241(info);
	genclinedir_553252(r, LOC1, LOC2);
}

N_NIMCALL(trope177009*, genprocheader_556516)(tcgen549035* m, tsym225846* prc) {
	trope177009* result;
	trope177009* rettype;
	trope177009* params;
	intset222056 check;
	trope177009* LOC15;
	result = 0;
	rettype = 0;
	params = 0;
	genclinedir_553424(&result, (*prc).Info);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !((gcmd_169120 == ((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_177060(&result, ((NimStringDesc*) &TMP3455));
		}
		goto LA7;
		LA9: ;
		{
			app_177060(&result, ((NimStringDesc*) &TMP3456));
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		if (!((*(*prc).Typ).Callconv == ((NU8) 5))) goto LA13;
		app_177060(&result, ((NimStringDesc*) &TMP3457));
	}
	goto LA1;
	LA13: ;
	LA1: ;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_222950((&check));
	LOC15 = 0;
	LOC15 = manglename_553667(prc);
	fillloc_552376((&(*prc).Loc), ((NU8) 8), (*prc).Typ, LOC15, ((NU8) 0));
	genprocparams_554626(m, (*prc).Typ, &rettype, &params, (&check), NIM_TRUE);
	{
		TY556046 LOC20;
		if (!(*prc).Constraint == 0) goto LA18;
		memset((void*)LOC20, 0, sizeof(LOC20));
		LOC20[0] = torope_177076(callingconvtostr_554224[((*(*prc).Typ).Callconv)- 0]);
		LOC20[1] = rettype;
		LOC20[2] = (*prc).Loc.R;
		LOC20[3] = params;
		appf_177115(&result, ((NimStringDesc*) &TMP3458), LOC20, 4);
	}
	goto LA16;
	LA18: ;
	{
		TY554018 LOC22;
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = rettype;
		LOC22[1] = (*prc).Loc.R;
		LOC22[2] = params;
		result = ropef_177107((*(*prc).Constraint).kindU.S3.Strval, LOC22, 3);
	}
	LA16: ;
	return result;
}

static N_INLINE(NIM_BOOL, crossescppboundary_588817)(tcgen549035* m, tsym225846* sym) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	tsym225846* LOC4;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
	if (!(LOC2)) goto LA3;
	LOC4 = 0;
	LOC4 = getmodule_235243(sym);
	LOC2 = !((((*LOC4).Flags &(1<<((((NU8) 27))&31)))!=0));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA5;
	LOC1 = !((gcmd_169120 == ((NU8) 2)));
	LA5: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genprocprototype_561314)(tcgen549035* m, tsym225846* sym) {
	useheader_552469(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;
			tsym225846* LOC12;
			NIM_BOOL LOC14;
			TY588896 LOC17;
			trope177009* LOC18;
			LOC11 = 0;
			LOC12 = 0;
			LOC12 = getmodule_235243(sym);
			LOC11 = !(((*LOC12).Sup.Id == (*(*m).Module).Sup.Id));
			if (!(LOC11)) goto LA13;
			LOC14 = 0;
			LOC14 = containsorincl_222916((&(*m).Declaredthings), (*sym).Sup.Id);
			LOC11 = !(LOC14);
			LA13: ;
			if (!LOC11) goto LA15;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = gettypedesc_556307(m, (*sym).Loc.T);
			LOC17[1] = mangledynlibproc_560938(sym);
			LOC18 = 0;
			LOC18 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3365), LOC17, 2);
			app_177052(&(*m).S[(((NU8) 9))- 0], LOC18);
			{
				if (!(gcmd_169120 == ((NU8) 5))) goto LA21;
				(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 0))%(sizeof(NI8)*8));
			}
			LA21: ;
		}
		LA15: ;
	}
	goto LA5;
	LA7: ;
	{
		NIM_BOOL LOC24;
		trope177009* header;
		TY177515 LOC39;
		trope177009* LOC40;
		LOC24 = 0;
		LOC24 = containsorincl_222916((&(*m).Declaredprotos), (*sym).Sup.Id);
		if (!!(LOC24)) goto LA25;
		header = genprocheader_556516(m, sym);
		{
			NIM_BOOL LOC29;
			LOC29 = 0;
			LOC29 = !(((*(*sym).Typ).Callconv == ((NU8) 5)));
			if (!(LOC29)) goto LA30;
			LOC29 = crossescppboundary_588817(m, sym);
			LA30: ;
			if (!LOC29) goto LA31;
			header = con_177038(((NimStringDesc*) &TMP3459), header);
		}
		LA31: ;
		{
			NIM_BOOL LOC35;
			LOC35 = 0;
			LOC35 = (((*sym).Flags &(1<<((((NU8) 9))&31)))!=0);
			if (!(LOC35)) goto LA36;
			LOC35 = ((cc_202434[(ccompiler_202461)- 1].Field20 &(1<<((((NU8) 7))&7)))!=0);
			LA36: ;
			if (!LOC35) goto LA37;
			app_177060(&header, ((NimStringDesc*) &TMP3460));
		}
		LA37: ;
		memset((void*)LOC39, 0, sizeof(LOC39));
		LOC39[0] = header;
		LOC40 = 0;
		LOC40 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3461), LOC39, 1);
		app_177052(&(*m).S[(((NU8) 7))- 0], LOC40);
	}
	goto LA5;
	LA25: ;
	LA5: ;
	BeforeRet: ;
}

static N_INLINE(NI, len_226364)(tnode225816* 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(trope177009**, s_549183)(tcproc549031* p, NU8 s) {
	trope177009** result;
	result = 0;
	result = &(*p).Blocks->data[(NI64)((*p).Blocks->Sup.len - 1)].Sections[(s)- 0];
	return result;
}

N_NIMCALL(trope177009*, indentline_553049)(tcproc549031* p, trope177009* r) {
	trope177009* result;
	result = 0;
	result = r;
	{
		NI i_553077;
		NI HEX3Atmp_553080;
		NI res_553083;
		i_553077 = 0;
		HEX3Atmp_553080 = 0;
		HEX3Atmp_553080 = (NI64)((*p).Blocks->Sup.len - 1);
		res_553083 = 0;
		{
			while (1) {
				if (!(res_553083 <= HEX3Atmp_553080)) goto LA3;
				i_553077 = res_553083;
				prepend_177068(&result, indent_553045);
				res_553083 += 1;
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(void, line_553100)(tcproc549031* p, NU8 s, trope177009* r) {
	trope177009** LOC1;
	trope177009* LOC2;
	LOC1 = 0;
	LOC1 = s_549183(p, s);
	LOC2 = 0;
	LOC2 = indentline_553049(p, r);
	app_177052(LOC1, LOC2);
}

N_NIMCALL(void, linef_553122)(tcproc549031* p, NU8 s, NimStringDesc* frmt, trope177009** args, NI argsLen0) {
	trope177009** LOC1;
	trope177009* LOC2;
	trope177009* LOC3;
	LOC1 = 0;
	LOC1 = s_549183(p, s);
	LOC2 = 0;
	LOC2 = ropef_177107(frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_553049(p, LOC2);
	app_177052(LOC1, LOC3);
}

N_NIMCALL(void, gentypeinfoauxbase_556801)(tcgen549035* m, ttype225852* typ, trope177009* name, trope177009* base) {
	NI nimtypekind;
	trope177009* size;
	TY556046 LOC12;
	NI flags;
	trope177009* LOC28;
	TY588896 LOC29;
	NimStringDesc* LOC30;
	nimtypekind = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isobjlackingtypefield_554130(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_177076(((NimStringDesc*) &TMP3475));
	}
	goto LA7;
	LA9: ;
	{
		size = gettypedesc_556307(m, typ);
	}
	LA7: ;
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = name;
	LOC12[1] = size;
	LOC12[2] = torope_177082(((NI64) (nimtypekind)));
	LOC12[3] = base;
	appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3476), LOC12, 4);
	flags = 0;
	{
		NIM_BOOL LOC15;
		LOC15 = 0;
		LOC15 = containsgarbagecollectedref_263163(typ);
		if (!!(LOC15)) goto LA16;
		flags = (NI)(flags | 1);
	}
	LA16: ;
	{
		NIM_BOOL LOC20;
		LOC20 = 0;
		LOC20 = canformacycle_263175(typ);
		if (!!(LOC20)) goto LA21;
		flags = (NI)(flags | 2);
	}
	LA21: ;
	{
		TY588896 LOC27;
		if (!!((flags == 0))) goto LA25;
		memset((void*)LOC27, 0, sizeof(LOC27));
		LOC27[0] = name;
		LOC27[1] = torope_177082(((NI64) (flags)));
		appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3477), LOC27, 2);
	}
	LA25: ;
	LOC28 = 0;
	LOC28 = cgsym_552608(m, ((NimStringDesc*) &TMP3471));
	memset((void*)LOC29, 0, sizeof(LOC29));
	LOC29[0] = name;
	LOC30 = 0;
	LOC30 = typetostring_263031(typ, ((NU8) 0));
	LOC29[1] = torope_177076(LOC30);
	appf_177115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3478), LOC29, 2);
}

N_NIMCALL(trope177009*, getnimnode_556606)(tcgen549035* m) {
	trope177009* result;
	TY588896 LOC1;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = (*m).Typenodesname;
	LOC1[1] = torope_177082(((NI64) ((*m).Typenodes)));
	result = ropef_177107(((NimStringDesc*) &TMP3479), LOC1, 2);
	(*m).Typenodes += 1;
	return result;
}

N_NIMCALL(void, gentupleinfo_557717)(tcgen549035* m, ttype225852* typ, trope177009* name) {
	trope177009* LOC1;
	trope177009* expr;
	NI length;
	TY588896 LOC15;
	LOC1 = 0;
	LOC1 = torope_177076(((NimStringDesc*) &TMP3381));
	gentypeinfoauxbase_556801(m, typ, name, LOC1);
	expr = getnimnode_556606(m);
	length = sonslen_226255(typ);
	{
		trope177009* tmp;
		TY588896 LOC6;
		TY554018 LOC12;
		if (!(0 < length)) goto LA4;
		tmp = gettempname_554244();
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = tmp;
		LOC6[1] = torope_177082(((NI64) (length)));
		appf_177115(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3480), LOC6, 2);
		{
			NI i_557743;
			NI HEX3Atmp_557772;
			NI res_557775;
			i_557743 = 0;
			HEX3Atmp_557772 = 0;
			HEX3Atmp_557772 = (NI64)(length - 1);
			res_557775 = 0;
			{
				while (1) {
					ttype225852* a;
					trope177009* tmp2;
					TY554018 LOC10;
					TY556046 LOC11;
					if (!(res_557775 <= HEX3Atmp_557772)) goto LA9;
					i_557743 = res_557775;
					a = (*typ).Sons->data[i_557743];
					tmp2 = getnimnode_556606(m);
					memset((void*)LOC10, 0, sizeof(LOC10));
					LOC10[0] = tmp;
					LOC10[1] = torope_177082(((NI64) (i_557743)));
					LOC10[2] = tmp2;
					appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3481), LOC10, 3);
					memset((void*)LOC11, 0, sizeof(LOC11));
					LOC11[0] = tmp2;
					LOC11[1] = gettypedesc_556307(m, typ);
					LOC11[2] = torope_177082(((NI64) (i_557743)));
					LOC11[3] = gentypeinfo_556602(m, a);
					appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3482), LOC11, 4);
					res_557775 += 1;
				} LA9: ;
			}
		}
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = expr;
		LOC12[1] = torope_177082(((NI64) (length)));
		LOC12[2] = tmp;
		appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3483), LOC12, 3);
	}
	goto LA2;
	LA4: ;
	{
		TY588896 LOC14;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = expr;
		LOC14[1] = torope_177082(((NI64) (length)));
		appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3484), LOC14, 2);
	}
	LA2: ;
	memset((void*)LOC15, 0, sizeof(LOC15));
	LOC15[0] = name;
	LOC15[1] = expr;
	appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3485), LOC15, 2);
}

N_NIMCALL(ttype225852*, fakeclosuretype_558218)(tsym225846* owner) {
	ttype225852* result;
	ttype225852* LOC1;
	ttype225852* r;
	ttype225852* LOC2;
	result = 0;
	result = newtype_226083(((NU8) 18), owner);
	LOC1 = 0;
	LOC1 = newtype_226083(((NU8) 26), owner);
	rawaddson_230562(result, LOC1);
	r = newtype_226083(((NU8) 22), owner);
	LOC2 = 0;
	LOC2 = newtype_226083(((NU8) 18), owner);
	rawaddson_230562(r, LOC2);
	rawaddson_230562(result, r);
	return result;
}

N_NIMCALL(void, gentypeinfoaux_556859)(tcgen549035* m, ttype225852* typ, trope177009* name) {
	trope177009* base;
	base = 0;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_226255(typ);
		LOC3 = (0 < LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = !(((*typ).Sons->data[0] == NIM_NIL));
		LA5: ;
		if (!LOC3) goto LA6;
		base = gentypeinfo_556602(m, (*typ).Sons->data[0]);
	}
	goto LA1;
	LA6: ;
	{
		base = torope_177076(((NimStringDesc*) &TMP3381));
	}
	LA1: ;
	gentypeinfoauxbase_556801(m, typ, name, base);
}

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

N_NIMCALL(trope177009*, getglobaltempname_554254)(void) {
	trope177009* result;
	TY177515 LOC1;
	NI LOC2;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = backendid_224425();
	LOC1[0] = torope_177082(((NI64) (LOC2)));
	result = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3486), LOC1, 1);
	return result;
}

N_NIMCALL(void, linefmt_553148)(tcproc549031* p, NU8 s, NimStringDesc* frmt, trope177009** args, NI argsLen0) {
	trope177009** LOC1;
	trope177009* LOC2;
	trope177009* LOC3;
	LOC1 = 0;
	LOC1 = s_549183(p, s);
	LOC2 = 0;
	LOC2 = ropecg_552615((*p).Module, frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_553049(p, LOC2);
	app_177052(LOC1, LOC3);
}

static N_INLINE(NIM_BOOL, iscomplexvaluetype_559828)(ttype225852* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((983056 &(IL64(1)<<(((*t).Kind)&IL64(63))))!=0);
	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(trope177009*, rdloc_559637)(tloc225830* a) {
	trope177009* result;
	result = 0;
	result = (*a).R;
	{
		TY177515 LOC5;
		if (!(((*a).Flags &(1<<((((NU8) 0))&7)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = result;
		result = ropef_177107(((NimStringDesc*) &TMP3494), LOC5, 1);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, usestringh_552459)(tcgen549035* m) {
	{
		NIM_BOOL LOC5;
		if (!!((*m).Includesstringh)) goto LA3;
		(*m).Includesstringh = NIM_TRUE;
		LOC5 = 0;
		LOC5 = includestr_127297((&(*m).Headerfiles), ((NimStringDesc*) &TMP3495));
	}
	LA3: ;
}

N_NIMCALL(trope177009*, addrloc_559664)(tloc225830* a) {
	trope177009* result;
	result = 0;
	result = (*a).R;
	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		trope177009* LOC8;
		LOC3 = 0;
		LOC3 = !((((*a).Flags &(1<<((((NU8) 0))&7)))!=0));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = maptype_554055((*a).T);
		LOC3 = !((LOC5 == ((NU8) 17)));
		LA4: ;
		if (!LOC3) goto LA6;
		LOC8 = 0;
		LOC8 = con_177038(((NimStringDesc*) &TMP3470), result);
		result = con_177031(LOC8, ((NimStringDesc*) &TMP3411));
	}
	LA6: ;
	return result;
}

N_NIMCALL(void, genobjectinit_559721)(tcproc549031* p, NU8 section, ttype225852* t, tloc225830* a, NIM_BOOL takeaddr) {
	NU8 LOC1;
	LOC1 = 0;
	LOC1 = analyseobjectwithtypefield_263225(t);
	switch (LOC1) {
	case ((NU8) 0):
	{
	}
	break;
	case ((NU8) 1):
	{
		trope177009* r;
		ttype225852* s;
		TY588896 LOC19;
		r = rdloc_559637(a);
		{
			TY177515 LOC8;
			if (!!(takeaddr)) goto LA6;
			memset((void*)LOC8, 0, sizeof(LOC8));
			LOC8[0] = r;
			r = ropef_177107(((NimStringDesc*) &TMP3494), LOC8, 1);
		}
		LA6: ;
		s = skiptypes_230245(t, IL64(211106232576256));
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = (gcmd_169120 == ((NU8) 2));
			if (LOC11) goto LA12;
			LOC11 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
			LA12: ;
			if (!!(LOC11)) goto LA13;
			{
				while (1) {
					NIM_BOOL LOC17;
					LOC17 = 0;
					LOC17 = ((*s).Kind == ((NU8) 17));
					if (!(LOC17)) goto LA18;
					LOC17 = !(((*s).Sons->data[0] == NIM_NIL));
					LA18: ;
					if (!LOC17) goto LA16;
					app_177060(&r, ((NimStringDesc*) &TMP3497));
					s = skiptypes_230245((*s).Sons->data[0], IL64(211106232576256));
				} LA16: ;
			}
		}
		LA13: ;
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = r;
		LOC19[1] = gentypeinfo_556602((*p).Module, t);
		linefmt_553148(p, section, ((NimStringDesc*) &TMP3498), LOC19, 2);
	}
	break;
	case ((NU8) 2):
	{
		trope177009* r;
		TY588896 LOC26;
		{
			if (!takeaddr) goto LA23;
			r = addrloc_559664(a);
		}
		goto LA21;
		LA23: ;
		{
			r = rdloc_559637(a);
		}
		LA21: ;
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = r;
		LOC26[1] = gentypeinfo_556602((*p).Module, t);
		linefmt_553148(p, section, ((NimStringDesc*) &TMP3499), LOC26, 2);
	}
	break;
	}
}

N_NIMCALL(void, constructloc_559924)(tcproc549031* p, tloc225830* loc, NIM_BOOL istemp) {
	{
		ttype225852* LOC3;
		NIM_BOOL LOC4;
		TY177515 LOC7;
		LOC3 = 0;
		LOC3 = skiptypes_230245((*loc).T, IL64(211106233624832));
		LOC4 = 0;
		LOC4 = iscomplexvaluetype_559828(LOC3);
		if (!!(LOC4)) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_559637(loc);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3493), LOC7, 1);
	}
	goto LA1;
	LA5: ;
	{
		{
			NIM_BOOL LOC11;
			TY588896 LOC15;
			LOC11 = 0;
			LOC11 = !(istemp);
			if (LOC11) goto LA12;
			LOC11 = containsgarbagecollectedref_263163((*loc).T);
			LA12: ;
			if (!LOC11) goto LA13;
			usestringh_552459((*p).Module);
			memset((void*)LOC15, 0, sizeof(LOC15));
			LOC15[0] = addrloc_559664(loc);
			LOC15[1] = rdloc_559637(loc);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3496), LOC15, 2);
		}
		LA13: ;
		genobjectinit_559721(p, ((NU8) 2), (*loc).T, loc, NIM_TRUE);
	}
	LA1: ;
}

N_NIMCALL(void, gettemp_558246)(tcproc549031* p, ttype225852* t, tloc225830* result, NIM_BOOL needsinit) {
	(*p).Labels += 1;
	{
		trope177009* LOC5;
		if (!(gcmd_169120 == ((NU8) 5))) goto LA3;
		LOC5 = 0;
		LOC5 = torope_177082(((NI64) ((*p).Labels)));
		unsureAsgnRef((void**) (&(*result).R), con_177038(((NimStringDesc*) &TMP3491), LOC5));
	}
	goto LA1;
	LA3: ;
	{
		trope177009* LOC7;
		TY588896 LOC8;
		LOC7 = 0;
		LOC7 = torope_177082(((NI64) ((*p).Labels)));
		unsureAsgnRef((void**) (&(*result).R), con_177038(((NimStringDesc*) &TMP3492), LOC7));
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = gettypedesc_556307((*p).Module, t);
		LOC8[1] = (*result).R;
		linefmt_553148(p, ((NU8) 0), ((NimStringDesc*) &TMP3393), LOC8, 2);
	}
	LA1: ;
	(*result).K = ((NU8) 1);
	unsureAsgnRef((void**) (&(*result).T), getuniquetype_548401(t));
	(*result).S = ((NU8) 1);
	(*result).Flags = 0;
	constructloc_559924(p, (&(*result)), !(needsinit));
}

static N_INLINE(trope177009*, parentobj_558700)(trope177009* accessor, tcgen549035* m) {
	trope177009* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		TY177515 LOC7;
		LOC3 = 0;
		LOC3 = (gcmd_169120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!!(LOC3)) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = accessor;
		result = ropef_177107(((NimStringDesc*) &TMP3505), LOC7, 1);
	}
	goto LA1;
	LA5: ;
	{
		result = accessor;
	}
	LA1: ;
	return result;
}

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

N_NIMCALL(trope177009*, intliteral_561339)(NI64 i) {
	trope177009* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (IL64(-2147483648) < i);
		if (!(LOC3)) goto LA4;
		LOC3 = (i <= IL64(2147483647));
		LA4: ;
		if (!LOC3) goto LA5;
		result = torope_177082(i);
	}
	goto LA1;
	LA5: ;
	{
		TY553703 LOC10;
		if (!(i == IL64(-2147483648))) goto LA8;
		memset((void*)LOC10, 0, sizeof(LOC10));
		result = ropef_177107(((NimStringDesc*) &TMP3510), LOC10, 0);
	}
	goto LA1;
	LA8: ;
	{
		TY177515 LOC14;
		if (!((IL64(-9223372036854775807) - IL64(1)) < i)) goto LA12;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = torope_177082(i);
		result = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3511), LOC14, 1);
	}
	goto LA1;
	LA12: ;
	{
		TY553703 LOC16;
		memset((void*)LOC16, 0, sizeof(LOC16));
		result = ropef_177107(((NimStringDesc*) &TMP3512), LOC16, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, int32literal_573942)(NI i) {
	trope177009* result;
	result = 0;
	{
		TY553703 LOC5;
		if (!(i == (-2147483647 -1))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		result = ropef_177107(((NimStringDesc*) &TMP3510), LOC5, 0);
	}
	goto LA1;
	LA3: ;
	{
		result = torope_177082(((NI64) (i)));
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, int64literal_573879)(NI64 i) {
	trope177009* result;
	result = 0;
	{
		TY177515 LOC5;
		if (!((IL64(-9223372036854775807) - IL64(1)) < i)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_177082(i);
		result = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3511), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY553703 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		result = ropef_177107(((NimStringDesc*) &TMP3512), LOC7, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, uint64literal_573900)(NU64 i) {
	trope177009* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = HEX24_6201(i);
	LOC1 = rawNewString(LOC2->Sup.len + 3);
appendString(LOC1, LOC2);
appendString(LOC1, ((NimStringDesc*) &TMP3515));
	result = torope_177076(LOC1);
	return result;
}

N_NIMCALL(trope177009*, getstrlit_573994)(tcgen549035* m, NimStringDesc* s) {
	trope177009* result;
	trope177009* LOC1;
	NI LOC2;
	trope177009* LOC3;
	TY554018 LOC4;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_552608(m, ((NimStringDesc*) &TMP3428));
	LOC2 = 0;
	LOC2 = backendid_224425();
	LOC3 = 0;
	LOC3 = torope_177082(((NI64) (LOC2)));
	result = con_177038(((NimStringDesc*) &TMP3517), LOC3);
	memset((void*)LOC4, 0, sizeof(LOC4));
	LOC4[0] = result;
	LOC4[1] = makecstring_195659(s);
	LOC4[2] = torope_177082(((NI64) (s->Sup.len)));
	appf_177115(&(*m).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3521), LOC4, 3);
	return result;
}

N_NIMCALL(trope177009*, genliteral_574007)(tcproc549031* p, tnode225816* n, ttype225852* ty) {
	trope177009* result;
	result = 0;
	{
		if (!(ty == NIM_NIL)) goto LA3;
		internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3509));
	}
	LA3: ;
	switch ((*n).Kind) {
	case ((NU8) 5) ... ((NU8) 15):
	{
		ttype225852* LOC6;
		LOC6 = 0;
		LOC6 = skiptypes_230245(ty, IL64(211106242013440));
		switch ((*LOC6).Kind) {
		case ((NU8) 2):
		case ((NU8) 5):
		{
			result = intliteral_561339((*n).kindU.S1.Intval);
		}
		break;
		case ((NU8) 31):
		{
			{
				NIM_BOOL LOC11;
				LOC11 = 0;
				LOC11 = (IL64(-2147483648) <= (*n).kindU.S1.Intval);
				if (!(LOC11)) goto LA12;
				LOC11 = ((*n).kindU.S1.Intval <= IL64(2147483647));
				LA12: ;
				if (!LOC11) goto LA13;
				result = int32literal_573942(((NI) (((NI32) ((*n).kindU.S1.Intval)))));
			}
			goto LA9;
			LA13: ;
			{
				result = intliteral_561339((*n).kindU.S1.Intval);
			}
			LA9: ;
		}
		break;
		case ((NU8) 1):
		{
			{
				TY553703 LOC21;
				if (!!(((*n).kindU.S1.Intval == IL64(0)))) goto LA19;
				memset((void*)LOC21, 0, sizeof(LOC21));
				result = ropef_177107(((NimStringDesc*) &TMP3513), LOC21, 0);
			}
			goto LA17;
			LA19: ;
			{
				TY553703 LOC23;
				memset((void*)LOC23, 0, sizeof(LOC23));
				result = ropef_177107(((NimStringDesc*) &TMP3514), LOC23, 0);
			}
			LA17: ;
		}
		break;
		case ((NU8) 35):
		{
			result = int64literal_573879((*n).kindU.S1.Intval);
		}
		break;
		case ((NU8) 44):
		{
			result = uint64literal_573900(((NU64) ((*n).kindU.S1.Intval)));
		}
		break;
		default:
		{
			TY588896 LOC27;
			ttype225852* LOC28;
			memset((void*)LOC27, 0, sizeof(LOC27));
			LOC28 = 0;
			LOC28 = skiptypes_230245(ty, IL64(211106242013440));
			LOC27[0] = gettypedesc_556307((*p).Module, LOC28);
			LOC27[1] = intliteral_561339((*n).kindU.S1.Intval);
			result = ropef_177107(((NimStringDesc*) &TMP3516), LOC27, 2);
		}
		break;
		}
	}
	break;
	case ((NU8) 23):
	{
		ttype225852* t;
		t = skiptypes_230245(ty, IL64(211106242013440));
		{
			NIM_BOOL LOC32;
			NI id;
			trope177009* LOC36;
			LOC32 = 0;
			LOC32 = ((*t).Kind == ((NU8) 25));
			if (!(LOC32)) goto LA33;
			LOC32 = ((*t).Callconv == ((NU8) 8));
			LA33: ;
			if (!LOC32) goto LA34;
			id = nodetabletestorset_288121((&(*(*p).Module).Datacache), n, gbackendid_224013);
			LOC36 = 0;
			LOC36 = torope_177082(((NI64) (id)));
			result = con_177038(((NimStringDesc*) &TMP3517), LOC36);
			{
				TY588896 LOC41;
				if (!(id == gbackendid_224013)) goto LA39;
				gbackendid_224013 += 1;
				memset((void*)LOC41, 0, sizeof(LOC41));
				LOC41[0] = gettypedesc_556307((*p).Module, t);
				LOC41[1] = result;
				appf_177115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3518), LOC41, 2);
			}
			LA39: ;
		}
		goto LA30;
		LA34: ;
		{
			result = torope_177076(((NimStringDesc*) &TMP3519));
		}
		LA30: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		{
			ttype225852* LOC46;
			NI id;
			LOC46 = 0;
			LOC46 = skiptypes_230245(ty, IL64(211106242013440));
			if (!((*LOC46).Kind == ((NU8) 28))) goto LA47;
			id = nodetabletestorset_288121((&(*(*p).Module).Datacache), n, gbackendid_224013);
			{
				TY177515 LOC53;
				if (!(id == gbackendid_224013)) goto LA51;
				memset((void*)LOC53, 0, sizeof(LOC53));
				LOC53[0] = getstrlit_573994((*p).Module, (*n).kindU.S3.Strval);
				result = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3520), LOC53, 1);
			}
			goto LA49;
			LA51: ;
			{
				TY177515 LOC55;
				memset((void*)LOC55, 0, sizeof(LOC55));
				LOC55[0] = torope_177082(((NI64) (id)));
				result = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3522), LOC55, 1);
			}
			LA49: ;
		}
		goto LA44;
		LA47: ;
		{
			result = makecstring_195659((*n).kindU.S3.Strval);
		}
		LA44: ;
	}
	break;
	case ((NU8) 16) ... ((NU8) 18):
	{
		NimStringDesc* LOC58;
		LOC58 = 0;
		LOC58 = tostrmaxprecision_234024((*n).kindU.S2.Floatval);
		result = torope_177076(LOC58);
	}
	break;
	default:
	{
		NimStringDesc* LOC60;
		LOC60 = 0;
		LOC60 = rawNewString(reprEnum((*n).Kind, (&NTI225029))->Sup.len + 12);
appendString(LOC60, ((NimStringDesc*) &TMP3527));
appendString(LOC60, reprEnum((*n).Kind, (&NTI225029)));
appendChar(LOC60, 41);
		internalerror_197987((*n).Info, LOC60);
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(trope177009*, genliteral_561345)(tcproc549031* p, tnode225816* n) {
	trope177009* result;
	result = 0;
	result = genliteral_574007(p, n, (*n).Typ);
	return result;
}

N_NIMCALL(void, gencaserange_558242)(tcproc549031* p, tnode225816* branch) {
	NI length;
	length = len_226364(branch);
	{
		NI j_571163;
		NI HEX3Atmp_571255;
		NI res_571258;
		j_571163 = 0;
		HEX3Atmp_571255 = 0;
		HEX3Atmp_571255 = (NI64)(length - 2);
		res_571258 = 0;
		{
			while (1) {
				if (!(res_571258 <= HEX3Atmp_571255)) goto LA3;
				j_571163 = res_571258;
				{
					tnode225816* LOC6;
					LOC6 = 0;
					LOC6 = HEX5BHEX5D_226698(branch, j_571163);
					if (!((*LOC6).Kind == ((NU8) 44))) goto LA7;
					{
						TY588896 LOC13;
						tnode225816* LOC14;
						tnode225816* LOC15;
						tnode225816* LOC16;
						tnode225816* LOC17;
						if (!((cc_202434[(ccompiler_202461)- 1].Field20 &(1<<((((NU8) 0))&7)))!=0)) goto LA11;
						memset((void*)LOC13, 0, sizeof(LOC13));
						LOC14 = 0;
						LOC14 = HEX5BHEX5D_226698(branch, j_571163);
						LOC15 = 0;
						LOC15 = HEX5BHEX5D_226698(LOC14, 0);
						LOC13[0] = genliteral_561345(p, LOC15);
						LOC16 = 0;
						LOC16 = HEX5BHEX5D_226698(branch, j_571163);
						LOC17 = 0;
						LOC17 = HEX5BHEX5D_226698(LOC16, 1);
						LOC13[1] = genliteral_561345(p, LOC17);
						linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3508), LOC13, 2);
					}
					goto LA9;
					LA11: ;
					{
						tnode225816* v;
						tnode225816* LOC19;
						tnode225816* LOC20;
						LOC19 = 0;
						LOC19 = HEX5BHEX5D_226698(branch, j_571163);
						LOC20 = 0;
						LOC20 = HEX5BHEX5D_226698(LOC19, 0);
						v = copynode_226323(LOC20);
						{
							while (1) {
								tnode225816* LOC23;
								tnode225816* LOC24;
								TY177515 LOC25;
								LOC23 = 0;
								LOC23 = HEX5BHEX5D_226698(branch, j_571163);
								LOC24 = 0;
								LOC24 = HEX5BHEX5D_226698(LOC23, 1);
								if (!((*v).kindU.S1.Intval <= (*LOC24).kindU.S1.Intval)) goto LA22;
								memset((void*)LOC25, 0, sizeof(LOC25));
								LOC25[0] = genliteral_561345(p, v);
								linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3528), LOC25, 1);
								(*v).kindU.S1.Intval += 1;
							} LA22: ;
						}
					}
					LA9: ;
				}
				goto LA4;
				LA7: ;
				{
					TY177515 LOC27;
					tnode225816* LOC28;
					memset((void*)LOC27, 0, sizeof(LOC27));
					LOC28 = 0;
					LOC28 = HEX5BHEX5D_226698(branch, j_571163);
					LOC27[0] = genliteral_561345(p, LOC28);
					linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3528), LOC27, 1);
				}
				LA4: ;
				res_571258 += 1;
			} LA3: ;
		}
	}
}

N_NIMCALL(void, gentraverseproc_558253)(ttraversalclosure558233* c, trope177009* accessor, tnode225816* n) {
	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).Kind) {
	case ((NU8) 137):
	{
		{
			NI i_558288;
			NI HEX3Atmp_558668;
			NI LOC7;
			NI res_558671;
			i_558288 = 0;
			HEX3Atmp_558668 = 0;
			LOC7 = 0;
			LOC7 = sonslen_226249(n);
			HEX3Atmp_558668 = (NI64)(LOC7 - 1);
			res_558671 = 0;
			{
				while (1) {
					if (!(res_558671 <= HEX3Atmp_558668)) goto LA9;
					i_558288 = res_558671;
					gentraverseproc_558253(c, accessor, (*n).kindU.S6.Sons->data[i_558288]);
					res_558671 += 1;
				} LA9: ;
			}
		}
	}
	break;
	case ((NU8) 138):
	{
		tcproc549031* p;
		tsym225846* disc;
		TY588896 LOC15;
		TY553703 LOC28;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA13;
			internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3506));
		}
		LA13: ;
		p = (*c).P;
		disc = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = accessor;
		LOC15[1] = (*disc).Loc.R;
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3507), LOC15, 2);
		{
			NI i_558372;
			NI HEX3Atmp_558674;
			NI LOC17;
			NI res_558677;
			i_558372 = 0;
			HEX3Atmp_558674 = 0;
			LOC17 = 0;
			LOC17 = sonslen_226249(n);
			HEX3Atmp_558674 = (NI64)(LOC17 - 1);
			res_558677 = 1;
			{
				while (1) {
					tnode225816* branch;
					tnode225816* LOC26;
					TY553703 LOC27;
					if (!(res_558677 <= HEX3Atmp_558674)) goto LA19;
					i_558372 = res_558677;
					branch = (*n).kindU.S6.Sons->data[i_558372];
					{
						if (!((*branch).Kind == ((NU8) 85))) goto LA22;
						gencaserange_558242((*c).P, branch);
					}
					goto LA20;
					LA22: ;
					{
						TY553703 LOC25;
						memset((void*)LOC25, 0, sizeof(LOC25));
						linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3529), LOC25, 0);
					}
					LA20: ;
					LOC26 = 0;
					LOC26 = lastson_226261(branch);
					gentraverseproc_558253(c, accessor, LOC26);
					memset((void*)LOC27, 0, sizeof(LOC27));
					linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3530), LOC27, 0);
					res_558677 += 1;
				} LA19: ;
			}
		}
		memset((void*)LOC28, 0, sizeof(LOC28));
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3531), LOC28, 0);
	}
	break;
	case ((NU8) 3):
	{
		tsym225846* field;
		TY588896 LOC34;
		trope177009* LOC35;
		field = (*n).kindU.S4.Sym;
		{
			if (!((*field).Loc.T == NIM_NIL)) goto LA32;
			internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3532));
		}
		LA32: ;
		memset((void*)LOC34, 0, sizeof(LOC34));
		LOC34[0] = accessor;
		LOC34[1] = (*field).Loc.R;
		LOC35 = 0;
		LOC35 = ropef_177107(((NimStringDesc*) &TMP3435), LOC34, 2);
		gentraverseproc_558236(c, LOC35, (*field).Loc.T);
	}
	break;
	default:
	{
		internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3532));
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, linecg_553135)(tcproc549031* p, NU8 s, NimStringDesc* frmt, trope177009** args, NI argsLen0) {
	trope177009** LOC1;
	trope177009* LOC2;
	trope177009* LOC3;
	LOC1 = 0;
	LOC1 = s_549183(p, s);
	LOC2 = 0;
	LOC2 = ropecg_552615((*p).Module, frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_553049(p, LOC2);
	app_177052(LOC1, LOC3);
}

N_NIMCALL(void, gentraverseproc_558236)(ttraversalclosure558233* c, trope177009* accessor, ttype225852* typ_558241) {
	tcproc549031* p;
	{
		if (!(typ_558241 == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	p = (*c).P;
	switch ((*typ_558241).Kind) {
	case ((NU8) 11):
	case ((NU8) 10):
	case ((NU8) 8):
	{
		ttype225852* LOC6;
		LOC6 = 0;
		LOC6 = lastson_226267(typ_558241);
		gentraverseproc_558236(c, accessor, LOC6);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		NI64 arraysize;
		tloc225830 i;
		ttype225852* LOC8;
		TY588896 LOC9;
		TY588896 LOC10;
		trope177009* LOC11;
		TY553703 LOC12;
		arraysize = lengthord_263016((*typ_558241).Sons->data[0]);
		memset((void*)(&i), 0, sizeof(i));
		LOC8 = 0;
		LOC8 = getsystype_282030(((NU8) 31));
		gettemp_558246(p, LOC8, (&i), NIM_FALSE);
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = i.R;
		LOC9[1] = torope_177082(arraysize);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3503), LOC9, 2);
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC10[0] = accessor;
		LOC10[1] = i.R;
		LOC11 = 0;
		LOC11 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3479), LOC10, 2);
		gentraverseproc_558236(c, LOC11, (*typ_558241).Sons->data[1]);
		memset((void*)LOC12, 0, sizeof(LOC12));
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3504), LOC12, 0);
	}
	break;
	case ((NU8) 17):
	{
		{
			NI i_558788;
			NI HEX3Atmp_558847;
			NI LOC15;
			NI res_558850;
			i_558788 = 0;
			HEX3Atmp_558847 = 0;
			LOC15 = 0;
			LOC15 = sonslen_226255(typ_558241);
			HEX3Atmp_558847 = (NI64)(LOC15 - 1);
			res_558850 = 0;
			{
				while (1) {
					trope177009* LOC18;
					if (!(res_558850 <= HEX3Atmp_558847)) goto LA17;
					i_558788 = res_558850;
					LOC18 = 0;
					LOC18 = parentobj_558700(accessor, (*(*c).P).Module);
					gentraverseproc_558236(c, LOC18, (*typ_558241).Sons->data[i_558788]);
					res_558850 += 1;
				} LA17: ;
			}
		}
		{
			if (!!(((*typ_558241).N == NIM_NIL))) goto LA21;
			gentraverseproc_558253(c, accessor, (*typ_558241).N);
		}
		LA21: ;
	}
	break;
	case ((NU8) 18):
	{
		ttype225852* typ;
		typ = getuniquetype_548401(typ_558241);
		{
			NI i_558819;
			NI HEX3Atmp_558853;
			NI LOC25;
			NI res_558856;
			i_558819 = 0;
			HEX3Atmp_558853 = 0;
			LOC25 = 0;
			LOC25 = sonslen_226255(typ);
			HEX3Atmp_558853 = (NI64)(LOC25 - 1);
			res_558856 = 0;
			{
				while (1) {
					TY588896 LOC28;
					trope177009* LOC29;
					if (!(res_558856 <= HEX3Atmp_558853)) goto LA27;
					i_558819 = res_558856;
					memset((void*)LOC28, 0, sizeof(LOC28));
					LOC28[0] = accessor;
					LOC28[1] = torope_177082(((NI64) (i_558819)));
					LOC29 = 0;
					LOC29 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3533), LOC28, 2);
					gentraverseproc_558236(c, LOC29, (*typ).Sons->data[i_558819]);
					res_558856 += 1;
				} LA27: ;
			}
		}
	}
	break;
	case ((NU8) 22):
	case ((NU8) 28):
	case ((NU8) 24):
	{
		TY177515 LOC31;
		memset((void*)LOC31, 0, sizeof(LOC31));
		LOC31[0] = accessor;
		linecg_553135(p, ((NU8) 2), (*c).Visitorfrmt, LOC31, 1);
	}
	break;
	case ((NU8) 25):
	{
		{
			TY177515 LOC37;
			TY177515 LOC38;
			if (!((*typ_558241).Callconv == ((NU8) 8))) goto LA35;
			memset((void*)LOC37, 0, sizeof(LOC37));
			memset((void*)LOC38, 0, sizeof(LOC38));
			LOC38[0] = accessor;
			LOC37[0] = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3534), LOC38, 1);
			linecg_553135(p, ((NU8) 2), (*c).Visitorfrmt, LOC37, 1);
		}
		LA35: ;
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, gentraverseprocseq_558879)(ttraversalclosure558233* c, trope177009* accessor, ttype225852* typ) {
	tcproc549031* p;
	tloc225830 i;
	ttype225852* LOC1;
	TY554018 LOC2;
	NimStringDesc* LOC3;
	TY588896 LOC11;
	trope177009* LOC12;
	TY553703 LOC13;
	p = (*c).P;
	memset((void*)(&i), 0, sizeof(i));
	LOC1 = 0;
	LOC1 = getsystype_282030(((NU8) 31));
	gettemp_558246(p, LOC1, (&i), NIM_FALSE);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = i.R;
	LOC2[1] = accessor;
	LOC3 = 0;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = (gcmd_169120 == ((NU8) 2));
		if (LOC6) goto LA7;
		LOC6 = (((*(*(*(*c).P).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA7: ;
		if (!LOC6) goto LA8;
		LOC3 = copyString(((NimStringDesc*) &TMP3501));
	}
	goto LA4;
	LA8: ;
	{
		LOC3 = copyString(((NimStringDesc*) &TMP3502));
	}
	LA4: ;
	LOC2[2] = torope_177076(LOC3);
	linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3500), LOC2, 3);
	memset((void*)LOC11, 0, sizeof(LOC11));
	LOC11[0] = accessor;
	LOC11[1] = i.R;
	LOC12 = 0;
	LOC12 = ropef_177107(((NimStringDesc*) &TMP3535), LOC11, 2);
	gentraverseproc_558236(c, LOC12, (*typ).Sons->data[0]);
	memset((void*)LOC13, 0, sizeof(LOC13));
	linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3504), LOC13, 0);
}

N_NIMCALL(trope177009*, gentraverseproc_559044)(tcgen549035* m, ttype225852* typ, NU8 reason) {
	trope177009* result;
	ttraversalclosure558233 c;
	tcproc549031* p;
	trope177009* header;
	TY177515 LOC3;
	trope177009* t;
	TY177515 LOC4;
	TY177515 LOC5;
	trope177009* generatedproc;
	TY556046 LOC20;
	trope177009** LOC21;
	trope177009** LOC22;
	trope177009** LOC23;
	TY177515 LOC24;
	result = 0;
	memset((void*)(&c), 0, sizeof(c));
	p = newproc_549230(NIM_NIL, m);
	result = getglobaltempname_554254();
	switch (reason) {
	case ((NU8) 0):
	{
		c.Visitorfrmt = copyString(((NimStringDesc*) &TMP3487));
	}
	break;
	default:
	{
	}
	break;
	}
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = result;
	header = ropef_177107(((NimStringDesc*) &TMP3488), LOC3, 1);
	t = gettypedesc_556307(m, typ);
	memset((void*)LOC4, 0, sizeof(LOC4));
	LOC4[0] = t;
	linef_553122(p, ((NU8) 0), ((NimStringDesc*) &TMP3489), LOC4, 1);
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = t;
	linef_553122(p, ((NU8) 1), ((NimStringDesc*) &TMP3490), LOC5, 1);
	c.P = p;
	{
		trope177009* LOC10;
		if (!((*typ).Kind == ((NU8) 24))) goto LA8;
		LOC10 = 0;
		LOC10 = torope_177076(((NimStringDesc*) &TMP3536));
		gentraverseprocseq_558879((&c), LOC10, typ);
	}
	goto LA6;
	LA8: ;
	{
		{
			ttype225852* LOC14;
			trope177009* LOC17;
			LOC14 = 0;
			LOC14 = skiptypes_230245((*typ).Sons->data[0], IL64(211106232576256));
			if (!((65552 &(IL64(1)<<(((*LOC14).Kind)&IL64(63))))!=0)) goto LA15;
			LOC17 = 0;
			LOC17 = torope_177076(((NimStringDesc*) &TMP3536));
			gentraverseproc_558236((&c), LOC17, (*typ).Sons->data[0]);
		}
		goto LA12;
		LA15: ;
		{
			trope177009* LOC19;
			LOC19 = 0;
			LOC19 = torope_177076(((NimStringDesc*) &TMP3537));
			gentraverseproc_558236((&c), LOC19, (*typ).Sons->data[0]);
		}
		LA12: ;
	}
	LA6: ;
	memset((void*)LOC20, 0, sizeof(LOC20));
	LOC20[0] = header;
	LOC21 = 0;
	LOC21 = s_549183(p, ((NU8) 0));
	unsureAsgnRef((void**) (&LOC20[1]), (*LOC21));
	LOC22 = 0;
	LOC22 = s_549183(p, ((NU8) 1));
	unsureAsgnRef((void**) (&LOC20[2]), (*LOC22));
	LOC23 = 0;
	LOC23 = s_549183(p, ((NU8) 2));
	unsureAsgnRef((void**) (&LOC20[3]), (*LOC23));
	generatedproc = ropef_177107(((NimStringDesc*) &TMP3538), LOC20, 4);
	memset((void*)LOC24, 0, sizeof(LOC24));
	LOC24[0] = header;
	appf_177115(&(*m).S[(((NU8) 7))- 0], ((NimStringDesc*) &TMP3461), LOC24, 1);
	app_177052(&(*m).S[(((NU8) 10))- 0], generatedproc);
	return result;
}

N_NIMCALL(void, genarrayinfo_558210)(tcgen549035* m, ttype225852* typ, trope177009* name) {
	trope177009* LOC1;
	LOC1 = 0;
	LOC1 = gentypeinfo_556602(m, (*typ).Sons->data[1]);
	gentypeinfoauxbase_556801(m, typ, name, LOC1);
}

N_NIMCALL(void, gensetinfo_558132)(tcgen549035* m, ttype225852* typ, trope177009* name) {
	trope177009* tmp;
	TY554018 LOC1;
	NI64 LOC2;
	gentypeinfoaux_556859(m, typ, name);
	tmp = getnimnode_556606(m);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = tmp;
	LOC2 = 0;
	LOC2 = firstord_263004(typ);
	LOC1[1] = torope_177082(LOC2);
	LOC1[2] = name;
	appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3540), LOC1, 3);
}

N_NIMCALL(void, genenuminfo_557789)(tcgen549035* m, ttype225852* typ, trope177009* name) {
	trope177009* nodeptrs;
	NI length;
	TY588896 LOC1;
	trope177009* enumnames;
	trope177009* specialcases;
	NI firstnimnode;
	NIM_BOOL hasholes;
	trope177009* enumarray;
	trope177009* counter;
	TY177515 LOC24;
	TY554018 LOC25;
	TY558098 LOC26;
	TY556046 LOC27;
	gentypeinfoaux_556859(m, typ, name);
	nodeptrs = gettempname_554244();
	length = sonslen_226249((*typ).N);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = nodeptrs;
	LOC1[1] = torope_177082(((NI64) (length)));
	appf_177115(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3480), LOC1, 2);
	enumnames = 0;
	specialcases = 0;
	firstnimnode = (*m).Typenodes;
	hasholes = NIM_FALSE;
	{
		NI i_557817;
		NI HEX3Atmp_558115;
		NI res_558118;
		i_557817 = 0;
		HEX3Atmp_558115 = 0;
		HEX3Atmp_558115 = (NI64)(length - 1);
		res_558118 = 0;
		{
			while (1) {
				tsym225846* field;
				trope177009* elemnode;
				if (!(res_558118 <= HEX3Atmp_558115)) goto LA4;
				i_557817 = res_558118;
				field = (*(*(*typ).N).kindU.S6.Sons->data[i_557817]).kindU.S4.Sym;
				elemnode = getnimnode_556606(m);
				{
					trope177009* LOC9;
					if (!((*field).Ast == NIM_NIL)) goto LA7;
					LOC9 = 0;
					LOC9 = makecstring_195659((*(*field).Name).S);
					app_177052(&enumnames, LOC9);
				}
				goto LA5;
				LA7: ;
				{
					trope177009* LOC11;
					LOC11 = 0;
					LOC11 = makecstring_195659((*(*field).Ast).kindU.S3.Strval);
					app_177052(&enumnames, LOC11);
				}
				LA5: ;
				{
					NimStringDesc* LOC16;
					if (!(i_557817 < (NI64)(length - 1))) goto LA14;
					LOC16 = 0;
					LOC16 = rawNewString(tnl_174613->Sup.len + 2);
appendString(LOC16, ((NimStringDesc*) &TMP3402));
appendString(LOC16, tnl_174613);
					app_177060(&enumnames, LOC16);
				}
				LA14: ;
				{
					NIM_BOOL LOC19;
					TY588896 LOC23;
					LOC19 = 0;
					LOC19 = !(((*field).Position == i_557817));
					if (LOC19) goto LA20;
					LOC19 = (((*typ).Flags &(1<<((((NU8) 5))&31)))!=0);
					LA20: ;
					if (!LOC19) goto LA21;
					memset((void*)LOC23, 0, sizeof(LOC23));
					LOC23[0] = elemnode;
					LOC23[1] = torope_177082(((NI64) ((*field).Position)));
					appf_177115(&specialcases, ((NimStringDesc*) &TMP3541), LOC23, 2);
					hasholes = NIM_TRUE;
				}
				LA21: ;
				res_558118 += 1;
			} LA4: ;
		}
	}
	enumarray = gettempname_554244();
	counter = gettempname_554244();
	memset((void*)LOC24, 0, sizeof(LOC24));
	LOC24[0] = counter;
	appf_177115(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3542), LOC24, 1);
	memset((void*)LOC25, 0, sizeof(LOC25));
	LOC25[0] = enumarray;
	LOC25[1] = torope_177082(((NI64) (length)));
	LOC25[2] = enumnames;
	appf_177115(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3543), LOC25, 3);
	memset((void*)LOC26, 0, sizeof(LOC26));
	LOC26[0] = counter;
	LOC26[1] = torope_177082(((NI64) (length)));
	LOC26[2] = (*m).Typenodesname;
	LOC26[3] = torope_177082(((NI64) (firstnimnode)));
	LOC26[4] = enumarray;
	LOC26[5] = nodeptrs;
	appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3544), LOC26, 6);
	app_177052(&(*m).S[(((NU8) 14))- 0], specialcases);
	memset((void*)LOC27, 0, sizeof(LOC27));
	LOC27[0] = getnimnode_556606(m);
	LOC27[1] = torope_177082(((NI64) (length)));
	LOC27[2] = nodeptrs;
	LOC27[3] = name;
	appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3545), LOC27, 4);
	{
		TY177515 LOC32;
		if (!hasholes) goto LA30;
		memset((void*)LOC32, 0, sizeof(LOC32));
		LOC32[0] = name;
		appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3546), LOC32, 1);
	}
	LA30: ;
}

N_NIMCALL(trope177009*, discriminatortablename_556887)(tcgen549035* m, ttype225852* objtype_556890, tsym225846* d) {
	trope177009* result;
	ttype225852* objtype;
	TY588896 LOC8;
	NimStringDesc* LOC9;
	result = 0;
	objtype = objtype_556890;
	{
		while (1) {
			tsym225846* LOC3;
			LOC3 = 0;
			LOC3 = lookupinrecord_235236((*objtype).N, (*d).Name);
			if (!(LOC3 == NIM_NIL)) goto LA2;
			objtype = (*objtype).Sons->data[0];
		} LA2: ;
	}
	{
		if (!((*objtype).Sym == NIM_NIL)) goto LA6;
		internalerror_197987((*d).Info, ((NimStringDesc*) &TMP3547));
	}
	LA6: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = torope_177082(((NI64) ((*objtype).Sup.Id)));
	LOC9 = 0;
	LOC9 = mangle_548763((*(*d).Name).S);
	LOC8[1] = torope_177076(LOC9);
	result = ropef_177107(((NimStringDesc*) &TMP3548), LOC8, 2);
	return result;
}

N_NIMCALL(void, genobjectfields_556956)(tcgen549035* m, ttype225852* typ, tnode225816* n, trope177009* expr) {
	switch ((*n).Kind) {
	case ((NU8) 137):
	{
		NI l;
		l = sonslen_226249(n);
		{
			if (!(l == 1)) goto LA4;
			genobjectfields_556956(m, typ, (*n).kindU.S6.Sons->data[0], expr);
		}
		goto LA2;
		LA4: ;
		{
			trope177009* tmp;
			TY588896 LOC9;
			TY554018 LOC14;
			if (!(0 < l)) goto LA7;
			tmp = gettempname_554244();
			memset((void*)LOC9, 0, sizeof(LOC9));
			LOC9[0] = tmp;
			LOC9[1] = torope_177082(((NI64) (l)));
			appf_177115(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3480), LOC9, 2);
			{
				NI i_556996;
				NI HEX3Atmp_557597;
				NI res_557600;
				i_556996 = 0;
				HEX3Atmp_557597 = 0;
				HEX3Atmp_557597 = (NI64)(l - 1);
				res_557600 = 0;
				{
					while (1) {
						trope177009* tmp2;
						TY554018 LOC13;
						if (!(res_557600 <= HEX3Atmp_557597)) goto LA12;
						i_556996 = res_557600;
						tmp2 = getnimnode_556606(m);
						memset((void*)LOC13, 0, sizeof(LOC13));
						LOC13[0] = tmp;
						LOC13[1] = torope_177082(((NI64) (i_556996)));
						LOC13[2] = tmp2;
						appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3481), LOC13, 3);
						genobjectfields_556956(m, typ, (*n).kindU.S6.Sons->data[i_556996], tmp2);
						res_557600 += 1;
					} LA12: ;
				}
			}
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = expr;
			LOC14[1] = torope_177082(((NI64) (l)));
			LOC14[2] = tmp;
			appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3483), LOC14, 3);
		}
		goto LA2;
		LA7: ;
		{
			TY588896 LOC16;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = expr;
			LOC16[1] = torope_177082(((NI64) (l)));
			appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3484), LOC16, 2);
		}
		LA2: ;
	}
	break;
	case ((NU8) 138):
	{
		tsym225846* field;
		trope177009* tmp;
		NI64 l;
		TY557403 LOC18;
		TY588896 LOC19;
		field = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		tmp = discriminatortablename_556887(m, typ, field);
		l = lengthord_263016((*field).Typ);
		memset((void*)LOC18, 0, sizeof(LOC18));
		LOC18[0] = expr;
		LOC18[1] = gettypedesc_556307(m, typ);
		LOC18[2] = (*field).Loc.R;
		LOC18[3] = gentypeinfo_556602(m, (*field).Typ);
		LOC18[4] = makecstring_195659((*(*field).Name).S);
		LOC18[5] = tmp;
		LOC18[6] = torope_177082(l);
		appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3549), LOC18, 7);
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = tmp;
		LOC19[1] = torope_177082((NI64)(l + IL64(1)));
		appf_177115(&(*m).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3550), LOC19, 2);
		{
			NI i_557423;
			NI HEX3Atmp_557612;
			NI LOC21;
			NI res_557615;
			i_557423 = 0;
			HEX3Atmp_557612 = 0;
			LOC21 = 0;
			LOC21 = sonslen_226249(n);
			HEX3Atmp_557612 = (NI64)(LOC21 - 1);
			res_557615 = 1;
			{
				while (1) {
					tnode225816* b;
					trope177009* tmp2;
					tnode225816* LOC24;
					if (!(res_557615 <= HEX3Atmp_557612)) goto LA23;
					i_557423 = res_557615;
					b = (*n).kindU.S6.Sons->data[i_557423];
					tmp2 = getnimnode_556606(m);
					LOC24 = 0;
					LOC24 = lastson_226261(b);
					genobjectfields_556956(m, typ, LOC24, tmp2);
					switch ((*b).Kind) {
					case ((NU8) 85):
					{
						{
							NI LOC28;
							LOC28 = 0;
							LOC28 = sonslen_226249(b);
							if (!(LOC28 < 2)) goto LA29;
							internalerror_197987((*b).Info, ((NimStringDesc*) &TMP3551));
						}
						LA29: ;
						{
							NI j_557453;
							NI HEX3Atmp_557607;
							NI LOC32;
							NI res_557610;
							j_557453 = 0;
							HEX3Atmp_557607 = 0;
							LOC32 = 0;
							LOC32 = sonslen_226249(b);
							HEX3Atmp_557607 = (NI64)(LOC32 - 2);
							res_557610 = 0;
							{
								while (1) {
									if (!(res_557610 <= HEX3Atmp_557607)) goto LA34;
									j_557453 = res_557610;
									{
										NI x;
										NI64 LOC39;
										NI y;
										NI64 LOC40;
										if (!((*(*b).kindU.S6.Sons->data[j_557453]).Kind == ((NU8) 44))) goto LA37;
										LOC39 = 0;
										LOC39 = getordvalue_263187((*(*b).kindU.S6.Sons->data[j_557453]).kindU.S6.Sons->data[0]);
										x = ((NI) (LOC39));
										LOC40 = 0;
										LOC40 = getordvalue_263187((*(*b).kindU.S6.Sons->data[j_557453]).kindU.S6.Sons->data[1]);
										y = ((NI) (LOC40));
										{
											while (1) {
												TY554018 LOC43;
												if (!(x <= y)) goto LA42;
												memset((void*)LOC43, 0, sizeof(LOC43));
												LOC43[0] = tmp;
												LOC43[1] = torope_177082(((NI64) (x)));
												LOC43[2] = tmp2;
												appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3481), LOC43, 3);
												x += 1;
											} LA42: ;
										}
									}
									goto LA35;
									LA37: ;
									{
										TY554018 LOC45;
										NI64 LOC46;
										memset((void*)LOC45, 0, sizeof(LOC45));
										LOC45[0] = tmp;
										LOC46 = 0;
										LOC46 = getordvalue_263187((*b).kindU.S6.Sons->data[j_557453]);
										LOC45[1] = torope_177082(LOC46);
										LOC45[2] = tmp2;
										appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3481), LOC45, 3);
									}
									LA35: ;
									res_557610 += 1;
								} LA34: ;
							}
						}
					}
					break;
					case ((NU8) 88):
					{
						TY554018 LOC48;
						memset((void*)LOC48, 0, sizeof(LOC48));
						LOC48[0] = tmp;
						LOC48[1] = torope_177082(l);
						LOC48[2] = tmp2;
						appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3481), LOC48, 3);
					}
					break;
					default:
					{
						internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3552));
					}
					break;
					}
					res_557615 += 1;
				} LA23: ;
			}
		}
	}
	break;
	case ((NU8) 3):
	{
		tsym225846* field;
		TY557593 LOC51;
		field = (*n).kindU.S4.Sym;
		memset((void*)LOC51, 0, sizeof(LOC51));
		LOC51[0] = expr;
		LOC51[1] = gettypedesc_556307(m, typ);
		LOC51[2] = (*field).Loc.R;
		LOC51[3] = gentypeinfo_556602(m, (*field).Typ);
		LOC51[4] = makecstring_195659((*(*field).Name).S);
		appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3553), LOC51, 5);
	}
	break;
	default:
	{
		internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3554));
	}
	break;
	}
}

N_NIMCALL(void, genobjectinfo_557653)(tcgen549035* m, ttype225852* typ, trope177009* name) {
	trope177009* tmp;
	TY588896 LOC7;
	ttype225852* t;
	{
		if (!((*typ).Kind == ((NU8) 17))) goto LA3;
		gentypeinfoaux_556859(m, typ, name);
	}
	goto LA1;
	LA3: ;
	{
		trope177009* LOC6;
		LOC6 = 0;
		LOC6 = torope_177076(((NimStringDesc*) &TMP3381));
		gentypeinfoauxbase_556801(m, typ, name, LOC6);
	}
	LA1: ;
	tmp = getnimnode_556606(m);
	genobjectfields_556956(m, typ, (*typ).N, tmp);
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = name;
	LOC7[1] = tmp;
	appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3485), LOC7, 2);
	t = (*typ).Sons->data[0];
	{
		while (1) {
			if (!!((t == NIM_NIL))) goto LA9;
			t = skiptypes_230245(t, IL64(211106232576256));
			(*t).Flags |= ((NI32)1)<<((((NU8) 5))%(sizeof(NI32)*8));
			t = (*t).Sons->data[0];
		} LA9: ;
	}
}

N_NIMCALL(void, gendeepcopyproc_559484)(tcgen549035* m, tsym225846* s, trope177009* result) {
	TY588896 LOC1;
	genproc_553629(m, s);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = result;
	LOC1[1] = (*s).Loc.R;
	appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3556), LOC1, 2);
}

N_NIMCALL(trope177009*, gentypeinfo_556602)(tcgen549035* m, ttype225852* t_556605) {
	trope177009* result;
	ttype225852* origtype;
	ttype225852* t;
	TY177515 LOC1;
	tsym225846* owner;
	ttype225852* LOC10;
	TY554018 LOC54;
	result = 0;
	origtype = t_556605;
	t = getuniquetype_548401(t_556605);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = torope_177082(((NI64) ((*t).Sup.Id)));
	result = ropef_177107(((NimStringDesc*) &TMP3469), LOC1, 1);
	{
		NIM_BOOL LOC4;
		TY554018 LOC7;
		LOC4 = 0;
		LOC4 = containsorincl_222916((&(*m).Typeinfomarker), (*t).Sup.Id);
		if (!LOC4) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = torope_177076(((NimStringDesc*) &TMP3470));
		LOC7[1] = result;
		LOC7[2] = torope_177076(((NimStringDesc*) &TMP3411));
		result = con_177045(LOC7, 3);
		goto BeforeRet;
	}
	LA5: ;
	{
		while (1) {
			if (!((*t).Kind == ((NU8) 13))) goto LA9;
			t = lastson_226267(t);
		} LA9: ;
	}
	LOC10 = 0;
	LOC10 = skiptypes_230245(t, IL64(211106247256320));
	owner = getmodule_235243((*LOC10).Owner);
	{
		tcgen549035* LOC15;
		trope177009* LOC16;
		trope177009* LOC17;
		trope177009* LOC18;
		TY588896 LOC19;
		NimStringDesc* LOC20;
		TY554018 LOC21;
		if (!!((owner == (*m).Module))) goto LA13;
		LOC15 = 0;
		LOC15 = bmod_549220(owner);
		LOC16 = 0;
		LOC16 = gentypeinfo_556602(LOC15, t);
		LOC17 = 0;
		LOC17 = cgsym_552608(m, ((NimStringDesc*) &TMP3471));
		LOC18 = 0;
		LOC18 = cgsym_552608(m, ((NimStringDesc*) &TMP3472));
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = result;
		LOC20 = 0;
		LOC20 = typetostring_263031(t, ((NU8) 0));
		LOC19[1] = torope_177076(LOC20);
		appf_177115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3473), LOC19, 2);
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = torope_177076(((NimStringDesc*) &TMP3470));
		LOC21[1] = result;
		LOC21[2] = torope_177076(((NimStringDesc*) &TMP3411));
		result = con_177045(LOC21, 3);
		goto BeforeRet;
	}
	LA13: ;
	switch ((*t).Kind) {
	case ((NU8) 3):
	{
		result = torope_177076(((NimStringDesc*) &TMP3474));
	}
	break;
	case ((NU8) 26):
	case ((NU8) 1):
	case ((NU8) 2):
	case ((NU8) 29):
	case ((NU8) 28):
	case ((NU8) 31) ... ((NU8) 44):
	case ((NU8) 23):
	{
		trope177009* LOC24;
		LOC24 = 0;
		LOC24 = torope_177076(((NimStringDesc*) &TMP3474));
		gentypeinfoauxbase_556801(m, t, result, LOC24);
	}
	break;
	case ((NU8) 25):
	{
		{
			trope177009* LOC30;
			if (!!(((*t).Callconv == ((NU8) 8)))) goto LA28;
			LOC30 = 0;
			LOC30 = torope_177076(((NimStringDesc*) &TMP3474));
			gentypeinfoauxbase_556801(m, t, result, LOC30);
		}
		goto LA26;
		LA28: ;
		{
			ttype225852* LOC32;
			LOC32 = 0;
			LOC32 = fakeclosuretype_558218((*t).Owner);
			gentupleinfo_557717(m, LOC32, result);
		}
		LA26: ;
	}
	break;
	case ((NU8) 24):
	case ((NU8) 22):
	{
		gentypeinfoaux_556859(m, t, result);
		{
			trope177009* markerproc;
			TY588896 LOC38;
			if (!(((NU8) 2) <= gselectedgc_169121)) goto LA36;
			markerproc = gentraverseproc_559044(m, t, ((NU8) 0));
			memset((void*)LOC38, 0, sizeof(LOC38));
			LOC38[0] = result;
			LOC38[1] = markerproc;
			appf_177115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3539), LOC38, 2);
		}
		LA36: ;
	}
	break;
	case ((NU8) 21):
	case ((NU8) 20):
	{
		gentypeinfoaux_556859(m, t, result);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		genarrayinfo_558210(m, t, result);
	}
	break;
	case ((NU8) 19):
	{
		gensetinfo_558132(m, t, result);
	}
	break;
	case ((NU8) 14):
	{
		genenuminfo_557789(m, t, result);
	}
	break;
	case ((NU8) 17):
	{
		genobjectinfo_557653(m, t, result);
	}
	break;
	case ((NU8) 18):
	{
		gentupleinfo_557717(m, t, result);
	}
	break;
	default:
	{
		NimStringDesc* LOC46;
		LOC46 = 0;
		LOC46 = rawNewString(reprEnum((*t).Kind, (&NTI225258))->Sup.len + 13);
appendString(LOC46, ((NimStringDesc*) &TMP3555));
appendString(LOC46, reprEnum((*t).Kind, (&NTI225258)));
appendChar(LOC46, 41);
		internalerror_198006(LOC46);
	}
	break;
	}
	{
		if (!!(((*t).Deepcopy == NIM_NIL))) goto LA49;
		gendeepcopyproc_559484(m, (*t).Deepcopy, result);
	}
	goto LA47;
	LA49: ;
	{
		if (!!(((*origtype).Deepcopy == NIM_NIL))) goto LA52;
		gendeepcopyproc_559484(m, (*origtype).Deepcopy, result);
	}
	goto LA47;
	LA52: ;
	LA47: ;
	memset((void*)LOC54, 0, sizeof(LOC54));
	LOC54[0] = torope_177076(((NimStringDesc*) &TMP3470));
	LOC54[1] = result;
	LOC54[2] = torope_177076(((NimStringDesc*) &TMP3411));
	result = con_177045(LOC54, 3);
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, localdebuginfo_560469)(tcproc549031* p, tsym225846* s) {
	trope177009* a;
	TY556046 LOC16;
	NimStringDesc* LOC17;
	{
		if (!!(((163840 & (*p).Options) == 163840))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		ttype225852* LOC7;
		LOC7 = 0;
		LOC7 = skiptypes_230245((*s).Typ, IL64(211106240964864));
		if (!((IL64(281475110928384) &(IL64(1)<<(((*LOC7).Kind)&IL64(63))))!=0)) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	a = con_177038(((NimStringDesc*) &TMP3467), (*s).Loc.R);
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = ((*s).Kind == ((NU8) 3));
		if (!(LOC12)) goto LA13;
		LOC12 = ccgintroducedptr_554264(s);
		LA13: ;
		if (!LOC12) goto LA14;
		a = (*s).Loc.R;
	}
	LA14: ;
	memset((void*)LOC16, 0, sizeof(LOC16));
	LOC16[0] = torope_177082(((NI64) ((*p).Maxframelen)));
	LOC17 = 0;
	LOC17 = nsuNormalize((*(*s).Name).S);
	LOC16[1] = makecstring_195659(LOC17);
	LOC16[2] = a;
	LOC16[3] = gentypeinfo_556602((*p).Module, (*s).Loc.T);
	linef_553122(p, ((NU8) 1), ((NimStringDesc*) &TMP3468), LOC16, 4);
	(*p).Maxframelen += 1;
	(*p).Blocks->data[(NI64)((*p).Blocks->Sup.len - 1)].Framelen += 1;
	BeforeRet: ;
}

N_NIMCALL(void, assignlocalvar_560577)(tcproc549031* p, tsym225846* s) {
	trope177009* decl;
	{
		trope177009* LOC5;
		if (!((*s).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_553667(s);
		fillloc_552376((&(*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_556307((*p).Module, (*s).Loc.T);
	{
		TY177515 LOC22;
		if (!(*s).Constraint == 0) goto LA12;
		{
			if (!(((*s).Flags &(1<<((((NU8) 8))&31)))!=0)) goto LA16;
			app_177060(&decl, ((NimStringDesc*) &TMP3463));
		}
		LA16: ;
		{
			if (!(((*s).Flags &(1<<((((NU8) 7))&31)))!=0)) goto LA20;
			app_177060(&decl, ((NimStringDesc*) &TMP3464));
		}
		LA20: ;
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = (*s).Loc.R;
		appf_177115(&decl, ((NimStringDesc*) &TMP3465), LOC22, 1);
	}
	goto LA10;
	LA12: ;
	{
		NimStringDesc* LOC24;
		TY588896 LOC25;
		LOC24 = 0;
		LOC24 = rawNewString((*(*s).Constraint).kindU.S3.Strval->Sup.len + 3);
appendString(LOC24, (*(*s).Constraint).kindU.S3.Strval);
appendString(LOC24, ((NimStringDesc*) &TMP3466));
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = decl;
		LOC25[1] = (*s).Loc.R;
		decl = ropef_177107(LOC24, LOC25, 2);
	}
	LA10: ;
	line_553100(p, ((NU8) 0), decl);
	localdebuginfo_560469(p, s);
}

N_NIMCALL(void, initlocalvar_559943)(tcproc549031* p, tsym225846* v, NIM_BOOL immediateasgn) {
	{
		if (!!((((*v).Flags &(1<<((((NU8) 12))&31)))!=0))) goto LA3;
		{
			if (!!(immediateasgn)) goto LA7;
			constructloc_559924(p, (&(*v).Loc), NIM_FALSE);
		}
		LA7: ;
	}
	LA3: ;
}

N_NIMCALL(void, fillresult_554488)(tsym225846* param) {
	TY553703 LOC1;
	trope177009* LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = ropef_177107(((NimStringDesc*) &TMP3558), LOC1, 0);
	fillloc_552376((&(*param).Loc), ((NU8) 4), (*param).Typ, LOC2, ((NU8) 1));
	{
		NIM_BOOL LOC5;
		NU8 LOC6;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = mapreturntype_554101((*param).Typ);
		LOC5 = !((LOC6 == ((NU8) 17)));
		if (!(LOC5)) goto LA7;
		LOC5 = isinvalidreturntype_554176((*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_560344)(tcproc549031* p, tsym225846* s) {
	{
		trope177009* tmp;
		trope177009* LOC5;
		TY554018 LOC6;
		if (!!((((*s).Loc.Flags &(1<<((((NU8) 1))&7)))!=0))) goto LA3;
		(*p).Labels += 1;
		LOC5 = 0;
		LOC5 = torope_177082(((NI64) ((*p).Labels)));
		tmp = con_177038(((NimStringDesc*) &TMP3491), 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_556307((*p).Module, (*s).Loc.T);
		linef_553122(p, ((NU8) 1), ((NimStringDesc*) &TMP3559), LOC6, 3);
		asgnRefNoCycle((void**) (&(*s).Loc.R), tmp);
	}
	LA3: ;
}

N_NIMCALL(void, assignparam_561159)(tcproc549031* p, tsym225846* s) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*s).Flags &(1<<((((NU8) 15))&31)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = (gcmd_169120 == ((NU8) 5));
		LA4: ;
		if (!LOC3) goto LA5;
		allocparam_560344(p, s);
	}
	LA5: ;
	localdebuginfo_560469(p, s);
}

N_NIMCALL(void, closuresetup_588217)(tcproc549031* p, tsym225846* prc) {
	tnode225816* ls;
	tnode225816* LOC5;
	tsym225846* env;
	TY588896 LOC10;
	{
		if (!!((((*(*prc).Typ).Flags &(1<<((((NU8) 11))&31)))!=0))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = HEX5BHEX5D_226698((*prc).Ast, 3);
	ls = lastson_226261(LOC5);
	{
		if (!!(((*ls).Kind == ((NU8) 3)))) goto LA8;
		internalerror_197987((*prc).Info, ((NimStringDesc*) &TMP3560));
	}
	LA8: ;
	env = (*ls).kindU.S4.Sym;
	assignlocalvar_560577(p, env);
	memset((void*)LOC10, 0, sizeof(LOC10));
	LOC10[0] = rdloc_559637((&(*env).Loc));
	LOC10[1] = gettypedesc_556307((*p).Module, (*env).Typ);
	linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3561), LOC10, 2);
	BeforeRet: ;
}

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

N_NIMCALL(void, keepalive_560007)(tcproc549031* p, tloc225830* tokeepalive) {
}

N_NIMCALL(void, genrefassign_559819)(tcproc549031* p, tloc225830* dest, tloc225830* src, NU8 flags) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		TY588896 LOC8;
		LOC3 = 0;
		LOC3 = ((*dest).S == ((NU8) 1));
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = usesnativegc_169179();
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_559637(dest);
		LOC8[1] = rdloc_559637(src);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC8, 2);
		{
			if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA11;
			keepalive_560007(p, dest);
		}
		LA11: ;
	}
	goto LA1;
	LA6: ;
	{
		if (!((*dest).S == ((NU8) 2))) goto LA14;
		{
			NIM_BOOL LOC18;
			TY588896 LOC21;
			LOC18 = 0;
			LOC18 = canformacycle_263175((*dest).T);
			if (!LOC18) goto LA19;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = addrloc_559664(dest);
			LOC21[1] = rdloc_559637(src);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), LOC21, 2);
		}
		goto LA16;
		LA19: ;
		{
			TY588896 LOC23;
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = addrloc_559664(dest);
			LOC23[1] = rdloc_559637(src);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3564), LOC23, 2);
		}
		LA16: ;
	}
	goto LA1;
	LA14: ;
	{
		TY588896 LOC25;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = addrloc_559664(dest);
		LOC25[1] = rdloc_559637(src);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3565), LOC25, 2);
		{
			if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA28;
			keepalive_560007(p, dest);
		}
		LA28: ;
	}
	LA1: ;
}

N_NIMCALL(void, optasgnloc_574761)(tloc225830* a, ttype225852* t, trope177009* field, tloc225830* Result) {
	trope177009* LOC1;
	trope177009* LOC2;
	(*Result).K = ((NU8) 5);
	(*Result).S = (*a).S;
	unsureAsgnRef((void**) (&(*Result).T), t);
	LOC1 = 0;
	LOC1 = rdloc_559637(a);
	LOC2 = 0;
	LOC2 = con_177031(LOC1, ((NimStringDesc*) &TMP3571));
	unsureAsgnRef((void**) (&(*Result).R), con_177024(LOC2, field));
	unsureAsgnRef((void**) (&(*Result).Heaproot), (*a).Heaproot);
}

N_NIMCALL(void, genoptasgntuple_574774)(tcproc549031* p, tloc225830* dest, tloc225830* src, NU8 flags) {
	NU8 newflags;
	{
		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: ;
	{
		NI i_574860;
		NI HEX3Atmp_574868;
		NI LOC10;
		NI res_574871;
		i_574860 = 0;
		HEX3Atmp_574868 = 0;
		LOC10 = 0;
		LOC10 = len_230005((*dest).T);
		HEX3Atmp_574868 = (LOC10 - 1);
		res_574871 = 0;
		{
			while (1) {
				ttype225852* t;
				trope177009* field;
				TY177515 LOC13;
				tloc225830 LOC14;
				tloc225830 LOC15;
				if (!(res_574871 <= HEX3Atmp_574868)) goto LA12;
				i_574860 = res_574871;
				t = (*(*dest).T).Sons->data[i_574860];
				memset((void*)LOC13, 0, sizeof(LOC13));
				LOC13[0] = torope_177082(((NI64) (i_574860)));
				field = ropef_177107(((NimStringDesc*) &TMP3574), LOC13, 1);
				memset((void*)(&LOC14), 0, sizeof(LOC14));
				optasgnloc_574761(dest, t, field, (&LOC14));
				memset((void*)(&LOC15), 0, sizeof(LOC15));
				optasgnloc_574761(src, t, field, (&LOC15));
				genassignment_561330(p, (&LOC14), (&LOC15), newflags);
				res_574871 += 1;
			} LA12: ;
		}
	}
}

N_NIMCALL(void, gengenericasgn_575008)(tcproc549031* p, tloc225830* dest, tloc225830* src, NU8 flags) {
	{
		NIM_BOOL LOC3;
		ttype225852* LOC5;
		LOC3 = 0;
		LOC3 = !(((flags &(1<<((((NU8) 0))&7)))!=0));
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = skiptypes_230245((*dest).T, IL64(211106242013440));
		LOC3 = (((*LOC5).Flags &(1<<((((NU8) 6))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA6;
		{
			NIM_BOOL LOC10;
			NIM_BOOL LOC12;
			TY554018 LOC15;
			LOC10 = 0;
			LOC10 = ((*dest).S == ((NU8) 1));
			if (LOC10) goto LA11;
			LOC12 = 0;
			LOC12 = usesnativegc_169179();
			LOC10 = !(LOC12);
			LA11: ;
			if (!LOC10) goto LA13;
			usestringh_552459((*p).Module);
			memset((void*)LOC15, 0, sizeof(LOC15));
			LOC15[0] = addrloc_559664(dest);
			LOC15[1] = addrloc_559664(src);
			LOC15[2] = rdloc_559637(dest);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3575), LOC15, 3);
			{
				if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA18;
				keepalive_560007(p, dest);
			}
			LA18: ;
		}
		goto LA8;
		LA13: ;
		{
			TY554018 LOC21;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = addrloc_559664(dest);
			LOC21[1] = addrloc_559664(src);
			LOC21[2] = gentypeinfo_556602((*p).Module, (*dest).T);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3576), LOC21, 3);
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	{
		TY554018 LOC23;
		memset((void*)LOC23, 0, sizeof(LOC23));
		LOC23[0] = addrloc_559664(dest);
		LOC23[1] = addrloc_559664(src);
		LOC23[2] = gentypeinfo_556602((*p).Module, (*dest).T);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3577), LOC23, 3);
	}
	LA1: ;
}

N_NIMCALL(NI, asgncomplexity_574702)(tnode225816* n) {
	NI result;
	result = 0;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		switch ((*n).Kind) {
		case ((NU8) 3):
		{
			result = 1;
		}
		break;
		case ((NU8) 138):
		{
			result = 100;
		}
		break;
		case ((NU8) 137):
		{
			{
				tnode225816* t_574724;
				t_574724 = 0;
				{
					NI i_574741;
					NI HEX3Atmp_574743;
					NI LOC10;
					NI res_574745;
					i_574741 = 0;
					HEX3Atmp_574743 = 0;
					LOC10 = 0;
					LOC10 = len_226364(n);
					HEX3Atmp_574743 = (LOC10 - 1);
					res_574745 = 0;
					{
						while (1) {
							NI LOC13;
							if (!(res_574745 <= HEX3Atmp_574743)) goto LA12;
							i_574741 = res_574745;
							t_574724 = (*n).kindU.S6.Sons->data[i_574741];
							LOC13 = 0;
							LOC13 = asgncomplexity_574702(t_574724);
							result += LOC13;
							res_574745 += 1;
						} LA12: ;
					}
				}
			}
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, genoptasgnobject_574885)(tcproc549031* p, tloc225830* dest, tloc225830* src, NU8 flags, tnode225816* 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):
	{
		tsym225846* field;
		tloc225830 LOC14;
		tloc225830 LOC15;
		field = (*t).kindU.S4.Sym;
		memset((void*)(&LOC14), 0, sizeof(LOC14));
		optasgnloc_574761(dest, (*field).Typ, (*field).Loc.R, (&LOC14));
		memset((void*)(&LOC15), 0, sizeof(LOC15));
		optasgnloc_574761(src, (*field).Typ, (*field).Loc.R, (&LOC15));
		genassignment_561330(p, (&LOC14), (&LOC15), newflags);
	}
	break;
	case ((NU8) 137):
	{
		{
			tnode225816* child_574983;
			child_574983 = 0;
			{
				NI i_574988;
				NI HEX3Atmp_574990;
				NI LOC19;
				NI res_574992;
				i_574988 = 0;
				HEX3Atmp_574990 = 0;
				LOC19 = 0;
				LOC19 = len_226364(t);
				HEX3Atmp_574990 = (LOC19 - 1);
				res_574992 = 0;
				{
					while (1) {
						if (!(res_574992 <= HEX3Atmp_574990)) goto LA21;
						i_574988 = res_574992;
						child_574983 = (*t).kindU.S6.Sons->data[i_574988];
						genoptasgnobject_574885(p, dest, src, newflags, child_574983);
						res_574992 += 1;
					} LA21: ;
				}
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, genassignment_561330)(tcproc549031* p, tloc225830* dest, tloc225830* src, NU8 flags) {
	ttype225852* ty;
	{
		NIM_BOOL LOC3;
		TY588896 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_559637(dest);
		LOC7[1] = rdloc_559637(src);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC7, 2);
		goto BeforeRet;
	}
	LA5: ;
	ty = skiptypes_230245((*dest).T, IL64(211106233624832));
	switch ((*ty).Kind) {
	case ((NU8) 22):
	{
		genrefassign_559819(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_559819(p, dest, src, flags);
		}
		goto LA10;
		LA14: ;
		{
			TY554018 LOC17;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = addrloc_559664(dest);
			LOC17[1] = rdloc_559637(src);
			LOC17[2] = gentypeinfo_556602((*p).Module, (*dest).T);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3566), 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_559819(p, dest, src, flags);
		}
		goto LA19;
		LA23: ;
		{
			{
				NIM_BOOL LOC28;
				NIM_BOOL LOC30;
				TY588896 LOC33;
				LOC28 = 0;
				LOC28 = ((*dest).S == ((NU8) 1));
				if (LOC28) goto LA29;
				LOC30 = 0;
				LOC30 = usesnativegc_169179();
				LOC28 = !(LOC30);
				LA29: ;
				if (!LOC28) goto LA31;
				memset((void*)LOC33, 0, sizeof(LOC33));
				LOC33[0] = rdloc_559637(dest);
				LOC33[1] = rdloc_559637(src);
				linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3567), LOC33, 2);
				{
					if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA36;
					keepalive_560007(p, dest);
				}
				LA36: ;
			}
			goto LA26;
			LA31: ;
			{
				tloc225830 tmp;
				TY554018 LOC41;
				TY177515 LOC42;
				if (!((*dest).S == ((NU8) 2))) goto LA39;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_558246(p, ty, (&tmp), NIM_FALSE);
				memset((void*)LOC41, 0, sizeof(LOC41));
				LOC41[0] = rdloc_559637(dest);
				LOC41[1] = rdloc_559637(src);
				LOC41[2] = rdloc_559637((&tmp));
				linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3568), LOC41, 3);
				memset((void*)LOC42, 0, sizeof(LOC42));
				LOC42[0] = rdloc_559637((&tmp));
				linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3569), LOC42, 1);
			}
			goto LA26;
			LA39: ;
			{
				TY588896 LOC44;
				memset((void*)LOC44, 0, sizeof(LOC44));
				LOC44[0] = addrloc_559664(dest);
				LOC44[1] = rdloc_559637(src);
				linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3570), LOC44, 2);
				{
					if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA47;
					keepalive_560007(p, dest);
				}
				LA47: ;
			}
			LA26: ;
		}
		LA19: ;
	}
	break;
	case ((NU8) 25):
	{
		{
			NIM_BOOL LOC52;
			tloc225830 a;
			trope177009* LOC55;
			tloc225830 LOC56;
			tloc225830 b;
			trope177009* LOC57;
			tloc225830 LOC58;
			TY588896 LOC59;
			LOC52 = 0;
			LOC52 = needscomplexassignment_554123((*dest).T);
			if (!LOC52) goto LA53;
			memset((void*)(&a), 0, sizeof(a));
			LOC55 = 0;
			LOC55 = torope_177076(((NimStringDesc*) &TMP3572));
			memset((void*)(&LOC56), 0, sizeof(LOC56));
			optasgnloc_574761(dest, (*dest).T, LOC55, (&LOC56));
			memcpy((void*)(&a), (NIM_CONST void*)(&LOC56), sizeof(a));
			memset((void*)(&b), 0, sizeof(b));
			LOC57 = 0;
			LOC57 = torope_177076(((NimStringDesc*) &TMP3572));
			memset((void*)(&LOC58), 0, sizeof(LOC58));
			optasgnloc_574761(src, (*dest).T, LOC57, (&LOC58));
			memcpy((void*)(&b), (NIM_CONST void*)(&LOC58), sizeof(b));
			genrefassign_559819(p, (&a), (&b), flags);
			memset((void*)LOC59, 0, sizeof(LOC59));
			LOC59[0] = rdloc_559637(dest);
			LOC59[1] = rdloc_559637(src);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3573), LOC59, 2);
		}
		goto LA50;
		LA53: ;
		{
			TY588896 LOC61;
			memset((void*)LOC61, 0, sizeof(LOC61));
			LOC61[0] = rdloc_559637(dest);
			LOC61[1] = rdloc_559637(src);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC61, 2);
		}
		LA50: ;
	}
	break;
	case ((NU8) 18):
	{
		{
			NIM_BOOL LOC65;
			LOC65 = 0;
			LOC65 = needscomplexassignment_554123((*dest).T);
			if (!LOC65) goto LA66;
			{
				NI LOC70;
				LOC70 = 0;
				LOC70 = len_230005((*dest).T);
				if (!(LOC70 <= 4)) goto LA71;
				genoptasgntuple_574774(p, dest, src, flags);
			}
			goto LA68;
			LA71: ;
			{
				gengenericasgn_575008(p, dest, src, flags);
			}
			LA68: ;
		}
		goto LA63;
		LA66: ;
		{
			TY588896 LOC75;
			memset((void*)LOC75, 0, sizeof(LOC75));
			LOC75[0] = rdloc_559637(dest);
			LOC75[1] = rdloc_559637(src);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC75, 2);
		}
		LA63: ;
	}
	break;
	case ((NU8) 17):
	{
		{
			NIM_BOOL LOC79;
			LOC79 = 0;
			LOC79 = isobjlackingtypefield_554130(ty);
			if (!!(LOC79)) goto LA80;
			gengenericasgn_575008(p, dest, src, flags);
		}
		goto LA77;
		LA80: ;
		{
			NIM_BOOL LOC83;
			LOC83 = 0;
			LOC83 = needscomplexassignment_554123(ty);
			if (!LOC83) goto LA84;
			{
				NIM_BOOL LOC88;
				NI LOC90;
				trope177009* LOC93;
				LOC88 = 0;
				LOC88 = (*ty).Sons->data[0] == 0;
				if (!(LOC88)) goto LA89;
				LOC90 = 0;
				LOC90 = asgncomplexity_574702((*ty).N);
				LOC88 = (LOC90 <= 4);
				LA89: ;
				if (!LOC88) goto LA91;
				LOC93 = 0;
				LOC93 = gettypedesc_556307((*p).Module, ty);
				{
					NimStringDesc* LOC98;
					if (!!(!(((*ty).N == NIM_NIL)))) goto LA96;
					LOC98 = 0;
					LOC98 = HEX24_198126(TMP3578);
					internalerror_198006(LOC98);
				}
				LA96: ;
				genoptasgnobject_574885(p, dest, src, flags, (*ty).N);
			}
			goto LA86;
			LA91: ;
			{
				gengenericasgn_575008(p, dest, src, flags);
			}
			LA86: ;
		}
		goto LA77;
		LA84: ;
		{
			TY588896 LOC101;
			memset((void*)LOC101, 0, sizeof(LOC101));
			LOC101[0] = rdloc_559637(dest);
			LOC101[1] = rdloc_559637(src);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC101, 2);
		}
		LA77: ;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		{
			NIM_BOOL LOC105;
			LOC105 = 0;
			LOC105 = needscomplexassignment_554123((*dest).T);
			if (!LOC105) goto LA106;
			gengenericasgn_575008(p, dest, src, flags);
		}
		goto LA103;
		LA106: ;
		{
			TY588896 LOC109;
			usestringh_552459((*p).Module);
			memset((void*)LOC109, 0, sizeof(LOC109));
			LOC109[0] = rdloc_559637(dest);
			LOC109[1] = rdloc_559637(src);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3580), LOC109, 2);
		}
		LA103: ;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			NIM_BOOL LOC113;
			TY554018 LOC116;
			LOC113 = 0;
			LOC113 = needscomplexassignment_554123((*dest).T);
			if (!LOC113) goto LA114;
			memset((void*)LOC116, 0, sizeof(LOC116));
			LOC116[0] = addrloc_559664(dest);
			LOC116[1] = addrloc_559664(src);
			LOC116[2] = gentypeinfo_556602((*p).Module, (*dest).T);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3581), LOC116, 3);
		}
		goto LA111;
		LA114: ;
		{
			TY588896 LOC118;
			usestringh_552459((*p).Module);
			memset((void*)LOC118, 0, sizeof(LOC118));
			LOC118[0] = rdloc_559637(dest);
			LOC118[1] = rdloc_559637(src);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3582), LOC118, 2);
		}
		LA111: ;
	}
	break;
	case ((NU8) 19):
	{
		{
			NU8 LOC122;
			TY554018 LOC125;
			NI64 LOC126;
			LOC122 = 0;
			LOC122 = maptype_554055(ty);
			if (!(LOC122 == ((NU8) 17))) goto LA123;
			usestringh_552459((*p).Module);
			memset((void*)LOC125, 0, sizeof(LOC125));
			LOC125[0] = rdloc_559637(dest);
			LOC125[1] = rdloc_559637(src);
			LOC126 = 0;
			LOC126 = getsize_263199((*dest).T);
			LOC125[2] = torope_177082(LOC126);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3583), LOC125, 3);
		}
		goto LA120;
		LA123: ;
		{
			TY588896 LOC128;
			memset((void*)LOC128, 0, sizeof(LOC128));
			LOC128[0] = rdloc_559637(dest);
			LOC128[1] = rdloc_559637(src);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC128, 2);
		}
		LA120: ;
	}
	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):
	{
		TY588896 LOC130;
		memset((void*)LOC130, 0, sizeof(LOC130));
		LOC130[0] = rdloc_559637(dest);
		LOC130[1] = rdloc_559637(src);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC130, 2);
	}
	break;
	default:
	{
		NimStringDesc* LOC132;
		LOC132 = 0;
		LOC132 = rawNewString(reprEnum((*ty).Kind, (&NTI225258))->Sup.len + 15);
appendString(LOC132, ((NimStringDesc*) &TMP3584));
appendString(LOC132, reprEnum((*ty).Kind, (&NTI225258)));
		internalerror_198006(LOC132);
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, putlocintodest_561321)(tcproc549031* p, tloc225830* d, tloc225830* s) {
	{
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		{
			if (!(((*d).Flags &(1<<((((NU8) 2))&7)))!=0)) goto LA7;
			genassignment_561330(p, (&(*d)), s, 0);
		}
		goto LA5;
		LA7: ;
		{
			genassignment_561330(p, (&(*d)), s, 1);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		genericAssign((void*)(&(*d)), (void*)s, (&NTI225830));
	}
	LA1: ;
}

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

N_NIMCALL(void, declarethreadvar_560753)(tcgen549035* m, tsym225846* s, NIM_BOOL isextern) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = emulatedthreadvars_553624();
		if (!LOC3) goto LA4;
		{
			NIM_BOOL LOC8;
			TY588896 LOC11;
			LOC8 = 0;
			LOC8 = containsorincl_222916((&nimtvdeclared_560752), (*s).Sup.Id);
			if (!!(LOC8)) goto LA9;
			nimtvdeps_560751 = (ttypeseq225848*) incrSeq(&(nimtvdeps_560751)->Sup, sizeof(ttype225852*));
			asgnRefNoCycle((void**) (&nimtvdeps_560751->data[nimtvdeps_560751->Sup.len-1]), (*s).Loc.T);
			memset((void*)LOC11, 0, sizeof(LOC11));
			LOC11[0] = gettypedesc_556307(m, (*s).Loc.T);
			LOC11[1] = (*s).Loc.R;
			appf_177115(&nimtv_560729, ((NimStringDesc*) &TMP3393), LOC11, 2);
		}
		LA9: ;
	}
	goto LA1;
	LA4: ;
	{
		trope177009* LOC21;
		TY177515 LOC22;
		{
			if (!isextern) goto LA15;
			app_177060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3586));
		}
		LA15: ;
		{
			if (!((gglobaloptions_169118 &(1<<((((NU8) 21))&31)))!=0)) goto LA19;
			app_177060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3587));
		}
		LA19: ;
		LOC21 = 0;
		LOC21 = gettypedesc_556307(m, (*s).Loc.T);
		app_177052(&(*m).S[(((NU8) 9))- 0], LOC21);
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = (*s).Loc.R;
		appf_177115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3465), LOC22, 1);
	}
	LA1: ;
}

N_NIMCALL(void, genvarprototypeaux_566482)(tcgen549035* m, tsym225846* sym) {
	trope177009* LOC1;
	useheader_552469(m, sym);
	LOC1 = 0;
	LOC1 = manglename_553667(sym);
	fillloc_552376((&(*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_222916((&(*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_560753(m, sym, NIM_TRUE);
		}
		goto LA12;
		LA14: ;
		{
			trope177009* LOC17;
			TY177515 LOC30;
			app_177060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3586));
			LOC17 = 0;
			LOC17 = gettypedesc_556307(m, (*sym).Loc.T);
			app_177052(&(*m).S[(((NU8) 9))- 0], LOC17);
			{
				if (!(((*sym).Loc.Flags &(1<<((((NU8) 4))&7)))!=0)) goto LA20;
				app_177060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3398));
			}
			LA20: ;
			{
				if (!(((*sym).Flags &(1<<((((NU8) 8))&31)))!=0)) goto LA24;
				app_177060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3463));
			}
			LA24: ;
			{
				if (!(((*sym).Flags &(1<<((((NU8) 7))&31)))!=0)) goto LA28;
				app_177060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3464));
			}
			LA28: ;
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = (*sym).Loc.R;
			appf_177115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3465), LOC30, 1);
		}
		LA12: ;
	}
	LA10: ;
	BeforeRet: ;
}

N_NIMCALL(void, genvarprototype_561284)(tcgen549035* m, tsym225846* sym) {
	genvarprototypeaux_566482(m, sym);
}

N_NIMCALL(NIM_BOOL, issimpleconst_552416)(ttype225852* typ) {
	NIM_BOOL result;
	ttype225852* t;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	result = 0;
	t = skiptypes_230245(typ, IL64(211106240964864));
	LOC1 = 0;
	LOC1 = !(((17760272 &(IL64(1)<<(((*t).Kind)&IL64(63))))!=0));
	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_552361)(tloc225830* result, NU8 k, ttype225852* typ, NU8 s) {
	(*result).K = k;
	(*result).S = s;
	unsureAsgnRef((void**) (&(*result).T), getuniquetype_548401(typ));
	unsureAsgnRef((void**) (&(*result).R), NIM_NIL);
	(*result).Flags = 0;
}

N_NIMCALL(void, putintodest_575477)(tcproc549031* p, tloc225830* d, ttype225852* t, trope177009* r) {
	tloc225830 a;
	memset((void*)(&a), 0, sizeof(a));
	{
		ttype225852* LOC5;
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		LOC5 = 0;
		LOC5 = getuniquetype_548401(t);
		initloc_552361((&a), ((NU8) 7), LOC5, ((NU8) 0));
		a.R = r;
		{
			if (!(((*d).Flags &(1<<((((NU8) 2))&7)))!=0)) goto LA8;
			genassignment_561330(p, (&(*d)), (&a), 0);
		}
		goto LA6;
		LA8: ;
		{
			genassignment_561330(p, (&(*d)), (&a), 1);
		}
		LA6: ;
	}
	goto LA1;
	LA3: ;
	{
		(*d).K = ((NU8) 7);
		unsureAsgnRef((void**) (&(*d).T), getuniquetype_548401(t));
		unsureAsgnRef((void**) (&(*d).R), r);
	}
	LA1: ;
}

N_NIMCALL(tcgen549035*, findpendingmodule_552313)(tcgen549035* m, tsym225846* s) {
	tcgen549035* result;
	tsym225846* ms;
	result = 0;
	ms = getmodule_235243(s);
	result = gmodules_549171->data[(*ms).Position];
	return result;
}

N_NIMCALL(NI64, bitsettoword_574296)(tbitset283012* s, NI size) {
	NI64 result;
	result = 0;
	result = IL64(0);
	{
		NI j_574413;
		NI HEX3Atmp_574427;
		NI res_574430;
		j_574413 = 0;
		HEX3Atmp_574427 = 0;
		HEX3Atmp_574427 = (NI64)(size - 1);
		res_574430 = 0;
		{
			while (1) {
				if (!(res_574430 <= HEX3Atmp_574427)) goto LA3;
				j_574413 = res_574430;
				{
					if (!(j_574413 < s->Sup.len)) goto LA6;
					result = (NI64)(result | (NI64)((NU64)(((NI64)(NU64)(NU8)(s->data[j_574413]))) << (NU64)(((NI64) ((NI64)(j_574413 * 8))))));
				}
				LA6: ;
				res_574430 += 1;
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(trope177009*, genrawsetdata_574444)(tbitset283012* cs, NI size) {
	trope177009* result;
	NimStringDesc* frmt;
	result = 0;
	frmt = 0;
	{
		TY553703 LOC5;
		if (!(8 < size)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		result = ropef_177107(((NimStringDesc*) &TMP3589), LOC5, 0);
		{
			NI i_574470;
			NI HEX3Atmp_574480;
			NI res_574483;
			i_574470 = 0;
			HEX3Atmp_574480 = 0;
			HEX3Atmp_574480 = (NI64)(size - 1);
			res_574483 = 0;
			{
				while (1) {
					TY177515 LOC19;
					NimStringDesc* LOC20;
					if (!(res_574483 <= HEX3Atmp_574480)) goto LA8;
					i_574470 = res_574483;
					{
						if (!(i_574470 < (NI64)(size - 1))) goto LA11;
						{
							if (!(((NI) ((NI64)((NI64)(i_574470 + 1) % 8))) == 0)) goto LA15;
							frmt = copyString(((NimStringDesc*) &TMP3590));
						}
						goto LA13;
						LA15: ;
						{
							frmt = copyString(((NimStringDesc*) &TMP3591));
						}
						LA13: ;
					}
					goto LA9;
					LA11: ;
					{
						frmt = copyString(((NimStringDesc*) &TMP3592));
					}
					LA9: ;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC20 = 0;
					LOC20 = nsuToHex(((NI64)(NU64)(NU8)(cs->data[i_574470])), 2);
					LOC19[0] = torope_177076(LOC20);
					appf_177115(&result, frmt, LOC19, 1);
					res_574483 += 1;
				} LA8: ;
			}
		}
	}
	goto LA1;
	LA3: ;
	{
		NI64 LOC22;
		LOC22 = 0;
		LOC22 = bitsettoword_574296(cs, size);
		result = intliteral_561339(LOC22);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, appcg_553018)(tcgen549035* m, NU8 s, NimStringDesc* frmt, trope177009** args, NI argsLen0) {
	trope177009* LOC1;
	LOC1 = 0;
	LOC1 = ropecg_552615(m, frmt, args, argsLen0);
	app_177052(&(*m).S[(s)- 0], LOC1);
}

N_NIMCALL(trope177009*, genconstseq_587122)(tcproc549031* p, tnode225816* n, ttype225852* t) {
	trope177009* result;
	trope177009* data;
	TY177515 LOC1;
	NI LOC2;
	trope177009* LOC18;
	TY556046 LOC19;
	NI LOC20;
	TY588896 LOC21;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = len_226364(n);
	LOC1[0] = torope_177082(((NI64) (LOC2)));
	data = ropef_177107(((NimStringDesc*) &TMP3593), LOC1, 1);
	{
		NI LOC5;
		LOC5 = 0;
		LOC5 = len_226364(n);
		if (!(0 < LOC5)) goto LA6;
		app_177060(&data, ((NimStringDesc*) &TMP3594));
		{
			NI i_587147;
			NI HEX3Atmp_587195;
			NI LOC9;
			NI res_587198;
			i_587147 = 0;
			HEX3Atmp_587195 = 0;
			LOC9 = 0;
			LOC9 = len_226364(n);
			HEX3Atmp_587195 = (NI64)(LOC9 - 1);
			res_587198 = 0;
			{
				while (1) {
					trope177009* LOC17;
					if (!(res_587198 <= HEX3Atmp_587195)) goto LA11;
					i_587147 = res_587198;
					{
						TY553703 LOC16;
						if (!(0 < i_587147)) goto LA14;
						memset((void*)LOC16, 0, sizeof(LOC16));
						appf_177115(&data, ((NimStringDesc*) &TMP3595), LOC16, 0);
					}
					LA14: ;
					LOC17 = 0;
					LOC17 = genconstexpr_584775(p, (*n).kindU.S6.Sons->data[i_587147]);
					app_177052(&data, LOC17);
					res_587198 += 1;
				} LA11: ;
			}
		}
		app_177060(&data, ((NimStringDesc*) &TMP3596));
	}
	LA6: ;
	app_177060(&data, ((NimStringDesc*) &TMP3596));
	gbackendid_224013 += 1;
	LOC18 = 0;
	LOC18 = torope_177082(((NI64) (gbackendid_224013)));
	result = con_177038(((NimStringDesc*) &TMP3597), LOC18);
	memset((void*)LOC19, 0, sizeof(LOC19));
	LOC19[0] = gettypedesc_556307((*p).Module, (*t).Sons->data[0]);
	LOC20 = 0;
	LOC20 = len_226364(n);
	LOC19[1] = torope_177082(((NI64) (LOC20)));
	LOC19[2] = result;
	LOC19[3] = data;
	appcg_553018((*p).Module, ((NU8) 8), ((NimStringDesc*) &TMP3598), LOC19, 4);
	memset((void*)LOC21, 0, sizeof(LOC21));
	LOC21[0] = gettypedesc_556307((*p).Module, t);
	LOC21[1] = result;
	result = ropef_177107(((NimStringDesc*) &TMP3599), LOC21, 2);
	return result;
}

N_NIMCALL(trope177009*, gennamedconstexpr_587011)(tcproc549031* p, tnode225816* n) {
	trope177009* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		result = genconstexpr_584775(p, (*n).kindU.S6.Sons->data[1]);
	}
	goto LA1;
	LA3: ;
	{
		result = genconstexpr_584775(p, n);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, genconstsimplelist_587042)(tcproc549031* p, tnode225816* n) {
	trope177009* result;
	NI length;
	TY553703 LOC10;
	result = 0;
	length = sonslen_226249(n);
	result = torope_177076(((NimStringDesc*) &TMP3600));
	{
		NI i_587060;
		NI HEX3Atmp_587105;
		NI res_587108;
		i_587060 = 0;
		HEX3Atmp_587105 = 0;
		HEX3Atmp_587105 = (NI64)(length - 2);
		res_587108 = 0;
		{
			while (1) {
				TY177515 LOC4;
				if (!(res_587108 <= HEX3Atmp_587105)) goto LA3;
				i_587060 = res_587108;
				memset((void*)LOC4, 0, sizeof(LOC4));
				LOC4[0] = gennamedconstexpr_587011(p, (*n).kindU.S6.Sons->data[i_587060]);
				appf_177115(&result, ((NimStringDesc*) &TMP3601), LOC4, 1);
				res_587108 += 1;
			} LA3: ;
		}
	}
	{
		trope177009* LOC9;
		if (!(0 < length)) goto LA7;
		LOC9 = 0;
		LOC9 = gennamedconstexpr_587011(p, (*n).kindU.S6.Sons->data[(NI64)(length - 1)]);
		app_177052(&result, LOC9);
	}
	LA7: ;
	memset((void*)LOC10, 0, sizeof(LOC10));
	appf_177115(&result, ((NimStringDesc*) &TMP3504), LOC10, 0);
	return result;
}

N_NIMCALL(void, initlocexpr_561352)(tcproc549031* p, tnode225816* e, tloc225830* result) {
	initloc_552361(result, ((NU8) 0), (*e).Typ, ((NU8) 0));
	expr_561305(p, e, result);
}

N_NIMCALL(trope177009*, genconstexpr_584775)(tcproc549031* p, tnode225816* n) {
	trope177009* result;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 58):
	case ((NU8) 59):
	{
		result = genconstexpr_584775(p, (*n).kindU.S6.Sons->data[1]);
	}
	break;
	case ((NU8) 39):
	{
		tbitset283012* cs;
		NI64 LOC3;
		cs = 0;
		tobitset_284004(n, (&cs));
		LOC3 = 0;
		LOC3 = getsize_263199((*n).Typ);
		result = genrawsetdata_574444(cs, ((NI) (LOC3)));
	}
	break;
	case ((NU8) 41):
	case ((NU8) 37):
	case ((NU8) 154):
	{
		ttype225852* t;
		t = skiptypes_230245((*n).Typ, IL64(211106232576256));
		{
			if (!((*t).Kind == ((NU8) 24))) goto LA7;
			result = genconstseq_587122(p, n, t);
		}
		goto LA5;
		LA7: ;
		{
			result = genconstsimplelist_587042(p, n);
		}
		LA5: ;
	}
	break;
	default:
	{
		tloc225830 d;
		memset((void*)(&d), 0, sizeof(d));
		initlocexpr_561352(p, n, (&d));
		result = rdloc_559637((&d));
	}
	break;
	}
	return result;
}

N_NIMCALL(void, requestconstimpl_561291)(tcproc549031* p, tsym225846* sym) {
	tcgen549035* m;
	tcgen549035* q;
	m = (*p).Module;
	useheader_552469(m, sym);
	{
		trope177009* LOC5;
		if (!((*sym).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_553667(sym);
		fillloc_552376((&(*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_552313(m, sym);
	{
		NIM_BOOL LOC12;
		NIM_BOOL LOC14;
		TY554018 LOC17;
		LOC12 = 0;
		LOC12 = !((q == NIM_NIL));
		if (!(LOC12)) goto LA13;
		LOC14 = 0;
		LOC14 = containsorincl_222916((&(*q).Declaredthings), (*sym).Sup.Id);
		LOC12 = !(LOC14);
		LA13: ;
		if (!LOC12) goto LA15;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = gettypedesc_556307(q, (*sym).Typ);
		LOC17[1] = (*sym).Loc.R;
		LOC17[2] = genconstexpr_584775((*q).Initproc, (*sym).Ast);
		appf_177115(&(*q).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3588), LOC17, 3);
	}
	LA15: ;
	{
		NIM_BOOL LOC20;
		NIM_BOOL LOC22;
		trope177009* headerdecl;
		TY588896 LOC25;
		LOC20 = 0;
		LOC20 = !((q == m));
		if (!(LOC20)) goto LA21;
		LOC22 = 0;
		LOC22 = containsorincl_222916((&(*m).Declaredthings), (*sym).Sup.Id);
		LOC20 = !(LOC22);
		LA21: ;
		if (!LOC20) goto LA23;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = gettypedesc_556307(m, (*sym).Loc.T);
		LOC25[1] = (*sym).Loc.R;
		headerdecl = ropef_177107(((NimStringDesc*) &TMP3602), LOC25, 2);
		app_177052(&(*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_552201 == NIM_NIL));
			LA29: ;
			if (!LOC28) goto LA30;
			app_177052(&(*generatedheader_552201).S[(((NU8) 8))- 0], headerdecl);
		}
		LA30: ;
	}
	LA23: ;
	BeforeRet: ;
}

N_NIMCALL(void, gencomplexconst_585731)(tcproc549031* p, tsym225846* sym, tloc225830* d) {
	requestconstimpl_561291(p, sym);
	putlocintodest_561321(p, d, (&(*sym).Loc));
}

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

N_NIMCALL(void, accessthreadlocalvar_553617)(tcproc549031* p, tsym225846* s) {
	{
		NIM_BOOL LOC3;
		trope177009** LOC7;
		TY553703 LOC8;
		trope177009** LOC9;
		TY553703 LOC10;
		trope177009* LOC11;
		LOC3 = 0;
		LOC3 = emulatedthreadvars_553624();
		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_549207(p, ((NU8) 0));
		memset((void*)LOC8, 0, sizeof(LOC8));
		appf_177115(LOC7, ((NimStringDesc*) &TMP3604), LOC8, 0);
		LOC9 = 0;
		LOC9 = procsec_549207(p, ((NU8) 1));
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC11 = 0;
		LOC11 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3605), LOC10, 0);
		app_177052(LOC9, LOC11);
	}
	LA5: ;
}

static N_INLINE(NIM_BOOL, isemptytype_232991)(ttype225852* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = (t == NIM_NIL);
	if (LOC1) goto LA2;
	LOC1 = ((136 &(IL64(1)<<(((*t).Kind)&IL64(63))))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, putdataintodest_575439)(tcproc549031* p, tloc225830* d, ttype225852* t, trope177009* r) {
	tloc225830 a;
	memset((void*)(&a), 0, sizeof(a));
	{
		ttype225852* LOC5;
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		LOC5 = 0;
		LOC5 = getuniquetype_548401(t);
		initloc_552361((&a), ((NU8) 9), LOC5, ((NU8) 0));
		a.R = r;
		{
			if (!(((*d).Flags &(1<<((((NU8) 2))&7)))!=0)) goto LA8;
			genassignment_561330(p, (&(*d)), (&a), 0);
		}
		goto LA6;
		LA8: ;
		{
			genassignment_561330(p, (&(*d)), (&a), 1);
		}
		LA6: ;
	}
	goto LA1;
	LA3: ;
	{
		(*d).K = ((NU8) 9);
		unsureAsgnRef((void**) (&(*d).T), getuniquetype_548401(t));
		unsureAsgnRef((void**) (&(*d).R), r);
	}
	LA1: ;
}

N_NIMCALL(void, genlinedir_553435)(tcproc549031* p, tnode225816* t) {
	NI line;
	trope177009** LOC9;
	NimStringDesc* LOC10;
	line = safelinenm_553241((*t).Info);
	{
		trope177009** LOC5;
		TY554018 LOC6;
		TY553703 LOC7;
		trope177009* LOC8;
		if (!((gglobaloptions_169118 &(1<<((((NU8) 31))&31)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = s_549183(p, ((NU8) 2));
		memset((void*)LOC6, 0, sizeof(LOC6));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC6[0] = ropef_177107(((NimStringDesc*) &TMP3611), LOC7, 0);
		LOC6[1] = sourceline_196274((*t).Info);
		LOC6[2] = rnl_178454;
		LOC8 = 0;
		LOC8 = con_177045(LOC6, 3);
		app_177052(LOC5, LOC8);
	}
	LA3: ;
	LOC9 = 0;
	LOC9 = s_549183(p, ((NU8) 2));
	LOC10 = 0;
	LOC10 = tofullpath_197037((*t).Info.Fileindex);
	genclinedir_553252(LOC9, LOC10, line);
	{
		NIM_BOOL LOC13;
		NIM_BOOL LOC15;
		TY588896 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_177082(((NI64) (line)));
		LOC20 = 0;
		LOC20 = tofilename_197025((*t).Info.Fileindex);
		LOC19[1] = makecstring_195659(LOC20);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3612), LOC19, 2);
	}
	goto LA11;
	LA17: ;
	{
		NIM_BOOL LOC22;
		NIM_BOOL LOC23;
		NIM_BOOL LOC25;
		TY588896 LOC30;
		LOC22 = 0;
		LOC23 = 0;
		LOC23 = ((98304 & (*p).Options) == 98304);
		if (!(LOC23)) goto LA24;
		LOC25 = 0;
		LOC25 = ((*p).Prc == NIM_NIL);
		if (LOC25) goto LA26;
		LOC25 = !((((*(*p).Prc).Flags &(1<<((((NU8) 9))&31)))!=0));
		LA26: ;
		LOC23 = LOC25;
		LA24: ;
		LOC22 = LOC23;
		if (!(LOC22)) goto LA27;
		LOC22 = (((NI32) 0) <= (*t).Info.Fileindex);
		LA27: ;
		if (!LOC22) goto LA28;
		memset((void*)LOC30, 0, sizeof(LOC30));
		LOC30[0] = torope_177082(((NI64) (line)));
		LOC30[1] = quotedfilename_198178((*t).Info);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3613), LOC30, 2);
	}
	goto LA11;
	LA28: ;
	LA11: ;
}

N_NIMCALL(trope177009*, getlabel_561248)(tcproc549031* p) {
	trope177009* result;
	trope177009* LOC1;
	result = 0;
	(*p).Labels += 1;
	LOC1 = 0;
	LOC1 = torope_177082(((NI64) ((*p).Labels)));
	result = con_177038(((NimStringDesc*) &TMP3615), LOC1);
	return result;
}

N_NIMCALL(void, fixlabel_561270)(tcproc549031* p, trope177009* labl) {
	TY177515 LOC1;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = labl;
	linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3618), LOC1, 1);
}

N_NIMCALL(void, genandor_579938)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 m) {
	trope177009* l;
	tloc225830 tmp;
	l = 0;
	memset((void*)(&tmp), 0, sizeof(tmp));
	gettemp_558246(p, (*e).Typ, (&tmp), NIM_FALSE);
	expr_561305(p, (*e).kindU.S6.Sons->data[1], (&tmp));
	l = getlabel_561248(p);
	{
		TY588896 LOC5;
		if (!(m == ((NU16) 135))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_559637((&tmp));
		LOC5[1] = l;
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3616), LOC5, 2);
	}
	goto LA1;
	LA3: ;
	{
		TY588896 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_559637((&tmp));
		LOC7[1] = l;
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3617), LOC7, 2);
	}
	LA1: ;
	expr_561305(p, (*e).kindU.S6.Sons->data[2], (&tmp));
	fixlabel_561270(p, l);
	{
		if (!((*d).K == ((NU8) 0))) goto LA10;
		genericAssign((void*)(&(*d)), (void*)(&tmp), (&NTI225830));
	}
	goto LA8;
	LA10: ;
	{
		genassignment_561330(p, (&(*d)), (&tmp), 0);
	}
	LA8: ;
}

N_NIMCALL(void, unaryarith_577895)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 op) {
	tloc225830 a;
	ttype225852* t;
	TY554018 LOC1;
	NI64 LOC2;
	trope177009* LOC3;
	memset((void*)(&a), 0, sizeof(a));
	t = 0;
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	t = skiptypes_230245((*e).Typ, IL64(211106233624832));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_559637((&a));
	LOC2 = 0;
	LOC2 = getsize_263199(t);
	LOC1[1] = torope_177082((NI64)(LOC2 * IL64(8)));
	LOC1[2] = getsimpletypedesc_555085((*p).Module, (*e).Typ);
	LOC3 = 0;
	LOC3 = ropef_177107(unarithtab_577902[(op)- 105], LOC1, 3);
	putintodest_575477(p, d, (*e).Typ, LOC3);
}

N_NIMCALL(void, unaryarithoverflow_576890)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 m) {
	tloc225830 a;
	ttype225852* t;
	TY588896 LOC7;
	NI64 LOC8;
	trope177009* LOC9;
	memset((void*)(&a), 0, sizeof(a));
	t = 0;
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	t = skiptypes_230245((*e).Typ, IL64(211106233624832));
	{
		TY588896 LOC5;
		NI64 LOC6;
		if (!(((*p).Options &(1<<((((NU8) 5))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_559637((&a));
		LOC6 = 0;
		LOC6 = firstord_263004(t);
		LOC5[1] = intliteral_561339(LOC6);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3636), LOC5, 2);
	}
	LA3: ;
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = rdloc_559637((&a));
	LOC8 = 0;
	LOC8 = getsize_263199(t);
	LOC7[1] = torope_177082((NI64)(LOC8 * IL64(8)));
	LOC9 = 0;
	LOC9 = ropef_177107(opr_576897[(m)- 101], LOC7, 2);
	putintodest_575477(p, d, (*e).Typ, LOC9);
}

N_NIMCALL(void, binaryarith_577042)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 op) {
	tloc225830 a;
	tloc225830 b;
	NI64 s;
	NI64 LOC1;
	NI64 LOC2;
	TY556046 LOC3;
	trope177009* LOC4;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	s = 0;
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
	LOC1 = 0;
	LOC1 = getsize_263199(a.T);
	LOC2 = 0;
	LOC2 = getsize_263199(b.T);
	s = (NI64)(((LOC1 >= LOC2) ? LOC1 : LOC2) * IL64(8));
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = rdloc_559637((&a));
	LOC3[1] = rdloc_559637((&b));
	LOC3[2] = torope_177082(s);
	LOC3[3] = getsimpletypedesc_555085((*p).Module, (*e).Typ);
	LOC4 = 0;
	LOC4 = ropef_177107(binarithtab_577049[(op)- 47], LOC3, 4);
	putintodest_575477(p, d, (*e).Typ, LOC4);
}

N_NIMCALL(void, binaryfloatarith_583958)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 m) {
	{
		tloc225830 a;
		tloc225830 b;
		TY556046 LOC5;
		tnode225816* LOC6;
		trope177009* LOC7;
		if (!!(((384 & (*p).Options) == 0))) goto LA3;
		memset((void*)(&a), 0, sizeof(a));
		memset((void*)(&b), 0, sizeof(b));
		initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
		initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_177076(opr_584002[(m)- 47]);
		LOC5[1] = rdloc_559637((&a));
		LOC5[2] = rdloc_559637((&b));
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_226698(e, 1);
		LOC5[3] = getsimpletypedesc_555085((*p).Module, (*LOC6).Typ);
		LOC7 = 0;
		LOC7 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3638), LOC5, 4);
		putintodest_575477(p, d, (*e).Typ, LOC7);
		{
			TY177515 LOC12;
			if (!(((*p).Options &(1<<((((NU8) 7))&31)))!=0)) goto LA10;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_559637((&(*d)));
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3642), LOC12, 1);
		}
		LA10: ;
		{
			TY177515 LOC17;
			if (!(((*p).Options &(1<<((((NU8) 8))&31)))!=0)) goto LA15;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = rdloc_559637((&(*d)));
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3643), LOC17, 1);
		}
		LA15: ;
	}
	goto LA1;
	LA3: ;
	{
		binaryarith_577042(p, e, d, m);
	}
	LA1: ;
}

N_NIMCALL(void, geneqproc_577444)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 a;
	tloc225830 b;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
	{
		TY588896 LOC5;
		trope177009* LOC6;
		if (!((*a.T).Callconv == ((NU8) 8))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_559637((&a));
		LOC5[1] = rdloc_559637((&b));
		LOC6 = 0;
		LOC6 = ropef_177107(((NimStringDesc*) &TMP3673), LOC5, 2);
		putintodest_575477(p, d, (*e).Typ, LOC6);
	}
	goto LA1;
	LA3: ;
	{
		TY588896 LOC8;
		trope177009* LOC9;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_559637((&a));
		LOC8[1] = rdloc_559637((&b));
		LOC9 = 0;
		LOC9 = ropef_177107(((NimStringDesc*) &TMP3662), LOC8, 2);
		putintodest_575477(p, d, (*e).Typ, LOC9);
	}
	LA1: ;
}

N_NIMCALL(void, binaryarithoverflow_576502)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 m) {
	tloc225830 a;
	tloc225830 b;
	ttype225852* t;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
	t = skiptypes_230245((*e).Typ, IL64(211106233624832));
	{
		TY556046 LOC5;
		NI64 LOC6;
		trope177009* LOC7;
		if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_177076(opr_576514[(m)- 37]);
		LOC5[1] = rdloc_559637((&a));
		LOC5[2] = rdloc_559637((&b));
		LOC6 = 0;
		LOC6 = getsize_263199(t);
		LOC5[3] = torope_177082((NI64)(LOC6 * IL64(8)));
		LOC7 = 0;
		LOC7 = ropef_177107(((NimStringDesc*) &TMP3674), LOC5, 4);
		putintodest_575477(p, d, (*e).Typ, LOC7);
	}
	goto LA1;
	LA3: ;
	{
		trope177009* storage;
		NI64 size;
		trope177009* tmp;
		TY588896 LOC14;
		TY556046 LOC15;
		TY588896 LOC25;
		NI64 LOC26;
		trope177009* LOC27;
		storage = 0;
		size = getsize_263199(t);
		{
			if (!(size < ((NI64) (intsize_174610)))) goto LA11;
			storage = torope_177076(((NimStringDesc*) &TMP3382));
		}
		goto LA9;
		LA11: ;
		{
			storage = gettypedesc_556307((*p).Module, t);
		}
		LA9: ;
		tmp = gettempname_554244();
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = storage;
		LOC14[1] = tmp;
		linefmt_553148(p, ((NU8) 0), ((NimStringDesc*) &TMP3393), LOC14, 2);
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = tmp;
		LOC15[1] = torope_177076(prc_576509[(m)- 37]);
		LOC15[2] = rdloc_559637((&a));
		LOC15[3] = rdloc_559637((&b));
		linecg_553135(p, ((NU8) 2), ((NimStringDesc*) &TMP3675), LOC15, 4);
		{
			NIM_BOOL LOC18;
			TY554018 LOC22;
			NI64 LOC23;
			NI64 LOC24;
			LOC18 = 0;
			LOC18 = (size < ((NI64) (intsize_174610)));
			if (LOC18) goto LA19;
			LOC18 = ((1589248 &(IL64(1)<<(((*t).Kind)&IL64(63))))!=0);
			LA19: ;
			if (!LOC18) goto LA20;
			memset((void*)LOC22, 0, sizeof(LOC22));
			LOC22[0] = tmp;
			LOC23 = 0;
			LOC23 = firstord_263004(t);
			LOC22[1] = intliteral_561339(LOC23);
			LOC24 = 0;
			LOC24 = lastord_263010(t);
			LOC22[2] = intliteral_561339(LOC24);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3686), LOC22, 3);
		}
		LA20: ;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC26 = 0;
		LOC26 = getsize_263199(t);
		LOC25[0] = torope_177082((NI64)(LOC26 * IL64(8)));
		LOC25[1] = tmp;
		LOC27 = 0;
		LOC27 = ropef_177107(((NimStringDesc*) &TMP3687), LOC25, 2);
		putintodest_575477(p, d, (*e).Typ, LOC27);
	}
	LA1: ;
}

N_NIMCALL(trope177009*, lenfield_561364)(tcproc549031* p) {
	trope177009* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = (gcmd_169120 == ((NU8) 2));
		if (LOC4) goto LA5;
		LOC4 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA5: ;
		if (!LOC4) goto LA6;
		LOC1 = copyString(((NimStringDesc*) &TMP3501));
	}
	goto LA2;
	LA6: ;
	{
		LOC1 = copyString(((NimStringDesc*) &TMP3502));
	}
	LA2: ;
	result = torope_177076(LOC1);
	return result;
}

N_NIMCALL(void, gcusage_580100)(tnode225816* n) {
	{
		NimStringDesc* LOC5;
		if (!(gselectedgc_169121 == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_250058(n, 0);
		message_197976((*n).Info, ((NU16) 256), LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, genrepr_581781)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 a;
	ttype225852* t;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	t = skiptypes_230245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	switch ((*t).Kind) {
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 40) ... ((NU8) 44):
	{
		TY177515 LOC2;
		trope177009* LOC3;
		memset((void*)LOC2, 0, sizeof(LOC2));
		LOC2[0] = rdloc_559637((&a));
		LOC3 = 0;
		LOC3 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3688), LOC2, 1);
		putintodest_575477(p, d, (*e).Typ, LOC3);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		TY177515 LOC5;
		trope177009* LOC6;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_559637((&a));
		LOC6 = 0;
		LOC6 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3689), LOC5, 1);
		putintodest_575477(p, d, (*e).Typ, LOC6);
	}
	break;
	case ((NU8) 1):
	{
		TY177515 LOC8;
		trope177009* LOC9;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_559637((&a));
		LOC9 = 0;
		LOC9 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3690), LOC8, 1);
		putintodest_575477(p, d, (*e).Typ, LOC9);
	}
	break;
	case ((NU8) 2):
	{
		TY177515 LOC11;
		trope177009* LOC12;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = rdloc_559637((&a));
		LOC12 = 0;
		LOC12 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3691), LOC11, 1);
		putintodest_575477(p, d, (*e).Typ, LOC12);
	}
	break;
	case ((NU8) 14):
	case ((NU8) 15):
	{
		TY588896 LOC14;
		trope177009* LOC15;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = rdloc_559637((&a));
		LOC14[1] = gentypeinfo_556602((*p).Module, t);
		LOC15 = 0;
		LOC15 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3692), LOC14, 2);
		putintodest_575477(p, d, (*e).Typ, LOC15);
	}
	break;
	case ((NU8) 28):
	{
		TY177515 LOC17;
		trope177009* LOC18;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = rdloc_559637((&a));
		LOC18 = 0;
		LOC18 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3693), LOC17, 1);
		putintodest_575477(p, d, (*e).Typ, LOC18);
	}
	break;
	case ((NU8) 19):
	{
		TY588896 LOC20;
		trope177009* LOC21;
		memset((void*)LOC20, 0, sizeof(LOC20));
		LOC20[0] = addrloc_559664((&a));
		LOC20[1] = gentypeinfo_556602((*p).Module, t);
		LOC21 = 0;
		LOC21 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3694), LOC20, 2);
		putintodest_575477(p, d, (*e).Typ, LOC21);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		tloc225830 b;
		TY588896 LOC34;
		ttype225852* LOC35;
		trope177009* LOC36;
		memset((void*)(&b), 0, sizeof(b));
		switch ((*a.T).Kind) {
		case ((NU8) 27):
		case ((NU8) 48):
		{
			TY177515 LOC24;
			trope177009* LOC25;
			memset((void*)LOC24, 0, sizeof(LOC24));
			LOC24[0] = rdloc_559637((&a));
			LOC25 = 0;
			LOC25 = ropef_177107(((NimStringDesc*) &TMP3695), LOC24, 1);
			putintodest_575477(p, (&b), (*e).Typ, LOC25);
		}
		break;
		case ((NU8) 28):
		case ((NU8) 24):
		{
			TY588896 LOC27;
			trope177009* LOC28;
			memset((void*)LOC27, 0, sizeof(LOC27));
			LOC27[0] = rdloc_559637((&a));
			LOC27[1] = lenfield_561364(p);
			LOC28 = 0;
			LOC28 = ropef_177107(((NimStringDesc*) &TMP3696), LOC27, 2);
			putintodest_575477(p, (&b), (*e).Typ, LOC28);
		}
		break;
		case ((NU8) 16):
		case ((NU8) 4):
		{
			TY588896 LOC30;
			NI64 LOC31;
			trope177009* LOC32;
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = rdloc_559637((&a));
			LOC31 = 0;
			LOC31 = lengthord_263016(a.T);
			LOC30[1] = torope_177082(LOC31);
			LOC32 = 0;
			LOC32 = ropef_177107(((NimStringDesc*) &TMP3697), LOC30, 2);
			putintodest_575477(p, (&b), (*e).Typ, LOC32);
		}
		break;
		default:
		{
			internalerror_197987((*(*e).kindU.S6.Sons->data[0]).Info, ((NimStringDesc*) &TMP3698));
		}
		break;
		}
		memset((void*)LOC34, 0, sizeof(LOC34));
		LOC34[0] = rdloc_559637((&b));
		LOC35 = 0;
		LOC35 = elemtype_263656(t);
		LOC34[1] = gentypeinfo_556602((*p).Module, LOC35);
		LOC36 = 0;
		LOC36 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3699), LOC34, 2);
		putintodest_575477(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):
	{
		TY588896 LOC38;
		trope177009* LOC39;
		memset((void*)LOC38, 0, sizeof(LOC38));
		LOC38[0] = rdloc_559637((&a));
		LOC38[1] = gentypeinfo_556602((*p).Module, t);
		LOC39 = 0;
		LOC39 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3700), LOC38, 2);
		putintodest_575477(p, d, (*e).Typ, LOC39);
	}
	break;
	default:
	{
		TY588896 LOC41;
		trope177009* LOC42;
		memset((void*)LOC41, 0, sizeof(LOC41));
		LOC41[0] = addrloc_559664((&a));
		LOC41[1] = gentypeinfo_556602((*p).Module, t);
		LOC42 = 0;
		LOC42 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3700), LOC41, 2);
		putintodest_575477(p, d, (*e).Typ, LOC42);
	}
	break;
	}
	gcusage_580100(e);
}

N_NIMCALL(void, gengettypeinfo_581893)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	ttype225852* t;
	trope177009* LOC1;
	t = skiptypes_230245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	LOC1 = 0;
	LOC1 = gentypeinfo_556602((*p).Module, t);
	putintodest_575477(p, d, (*e).Typ, LOC1);
}

N_NIMCALL(void, genswap_582287)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 a;
	tloc225830 b;
	tloc225830 tmp;
	ttype225852* LOC1;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&tmp), 0, sizeof(tmp));
	LOC1 = 0;
	LOC1 = skiptypes_230245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	gettemp_558246(p, LOC1, (&tmp), NIM_FALSE);
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
	genassignment_561330(p, (&tmp), (&a), 0);
	genassignment_561330(p, (&a), (&b), 0);
	genassignment_561330(p, (&b), (&tmp), 0);
}

N_NIMCALL(void, unaryexpr_576440)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt) {
	tloc225830 a;
	TY177515 LOC1;
	trope177009* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_559637((&a));
	LOC2 = 0;
	LOC2 = ropecg_552615((*p).Module, frmt, LOC1, 1);
	putintodest_575477(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, binaryexpr_575669)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt) {
	tloc225830 a;
	tloc225830 b;
	TY588896 LOC1;
	trope177009* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_559637((&a));
	LOC1[1] = rdloc_559637((&b));
	LOC2 = 0;
	LOC2 = ropecg_552615((*p).Module, frmt, LOC1, 2);
	putintodest_575477(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, binarystmt_575515)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt) {
	tloc225830 a;
	tloc225830 b;
	TY588896 LOC5;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	{
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3707));
	}
	LA3: ;
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = rdloc_559637((&a));
	LOC5[1] = rdloc_559637((&b));
	linecg_553135(p, ((NU8) 2), frmt, LOC5, 2);
}

N_NIMCALL(void, genstrconcat_580115)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 a;
	tloc225830 tmp;
	NI l;
	trope177009* appends;
	trope177009* lens;
	TY554018 LOC21;
	trope177009** LOC22;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&tmp), 0, sizeof(tmp));
	gettemp_558246(p, (*e).Typ, (&tmp), NIM_FALSE);
	l = 0;
	appends = NIM_NIL;
	lens = NIM_NIL;
	{
		NI i_580139;
		NI HEX3Atmp_580292;
		NI LOC2;
		NI res_580295;
		i_580139 = 0;
		HEX3Atmp_580292 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226249(e);
		HEX3Atmp_580292 = (NI64)(LOC2 - 2);
		res_580295 = 0;
		{
			while (1) {
				if (!(res_580295 <= HEX3Atmp_580292)) goto LA4;
				i_580139 = res_580295;
				initlocexpr_561352(p, (*e).kindU.S6.Sons->data[(NI64)(i_580139 + 1)], (&a));
				{
					ttype225852* LOC7;
					TY588896 LOC10;
					trope177009* LOC11;
					LOC7 = 0;
					LOC7 = skiptypes_230245((*(*e).kindU.S6.Sons->data[(NI64)(i_580139 + 1)]).Typ, IL64(211106242013440));
					if (!((*LOC7).Kind == ((NU8) 2))) goto LA8;
					l += 1;
					memset((void*)LOC10, 0, sizeof(LOC10));
					LOC10[0] = tmp.R;
					LOC10[1] = rdloc_559637((&a));
					LOC11 = 0;
					LOC11 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3714), LOC10, 2);
					app_177052(&appends, LOC11);
				}
				goto LA5;
				LA8: ;
				{
					TY588896 LOC19;
					trope177009* LOC20;
					{
						if (!((*(*e).kindU.S6.Sons->data[(NI64)(i_580139 + 1)]).Kind >= ((NU8) 20) && (*(*e).kindU.S6.Sons->data[(NI64)(i_580139 + 1)]).Kind <= ((NU8) 22))) goto LA15;
						l += (*(*e).kindU.S6.Sons->data[(NI64)(i_580139 + 1)]).kindU.S3.Strval->Sup.len;
					}
					goto LA13;
					LA15: ;
					{
						TY588896 LOC18;
						memset((void*)LOC18, 0, sizeof(LOC18));
						LOC18[0] = rdloc_559637((&a));
						LOC18[1] = lenfield_561364(p);
						appf_177115(&lens, ((NimStringDesc*) &TMP3715), LOC18, 2);
					}
					LA13: ;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = tmp.R;
					LOC19[1] = rdloc_559637((&a));
					LOC20 = 0;
					LOC20 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3716), LOC19, 2);
					app_177052(&appends, LOC20);
				}
				LA5: ;
				res_580295 += 1;
			} LA4: ;
		}
	}
	memset((void*)LOC21, 0, sizeof(LOC21));
	LOC21[0] = tmp.R;
	LOC21[1] = lens;
	LOC21[2] = torope_177082(((NI64) (l)));
	linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3717), LOC21, 3);
	LOC22 = 0;
	LOC22 = s_549183(p, ((NU8) 2));
	app_177052(LOC22, appends);
	{
		if (!((*d).K == ((NU8) 0))) goto LA25;
		genericAssign((void*)(&(*d)), (void*)(&tmp), (&NTI225830));
		keepalive_560007(p, (&tmp));
	}
	goto LA23;
	LA25: ;
	{
		genassignment_561330(p, (&(*d)), (&tmp), 64);
	}
	LA23: ;
	gcusage_580100(e);
}

N_NIMCALL(void, genstrappend_580309)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 a;
	tloc225830 dest;
	trope177009* appends;
	trope177009* lens;
	NI l;
	TY554018 LOC21;
	trope177009** LOC22;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&dest), 0, sizeof(dest));
	appends = 0;
	lens = 0;
	l = 0;
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&dest));
	{
		NI i_580429;
		NI HEX3Atmp_580572;
		NI LOC2;
		NI res_580575;
		i_580429 = 0;
		HEX3Atmp_580572 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226249(e);
		HEX3Atmp_580572 = (NI64)(LOC2 - 3);
		res_580575 = 0;
		{
			while (1) {
				if (!(res_580575 <= HEX3Atmp_580572)) goto LA4;
				i_580429 = res_580575;
				initlocexpr_561352(p, (*e).kindU.S6.Sons->data[(NI64)(i_580429 + 2)], (&a));
				{
					ttype225852* LOC7;
					TY588896 LOC10;
					trope177009* LOC11;
					LOC7 = 0;
					LOC7 = skiptypes_230245((*(*e).kindU.S6.Sons->data[(NI64)(i_580429 + 2)]).Typ, IL64(211106242013440));
					if (!((*LOC7).Kind == ((NU8) 2))) goto LA8;
					l += 1;
					memset((void*)LOC10, 0, sizeof(LOC10));
					LOC10[0] = rdloc_559637((&dest));
					LOC10[1] = rdloc_559637((&a));
					LOC11 = 0;
					LOC11 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3714), LOC10, 2);
					app_177052(&appends, LOC11);
				}
				goto LA5;
				LA8: ;
				{
					TY588896 LOC19;
					trope177009* LOC20;
					{
						if (!((*(*e).kindU.S6.Sons->data[(NI64)(i_580429 + 2)]).Kind >= ((NU8) 20) && (*(*e).kindU.S6.Sons->data[(NI64)(i_580429 + 2)]).Kind <= ((NU8) 22))) goto LA15;
						l += (*(*e).kindU.S6.Sons->data[(NI64)(i_580429 + 2)]).kindU.S3.Strval->Sup.len;
					}
					goto LA13;
					LA15: ;
					{
						TY588896 LOC18;
						memset((void*)LOC18, 0, sizeof(LOC18));
						LOC18[0] = rdloc_559637((&a));
						LOC18[1] = lenfield_561364(p);
						appf_177115(&lens, ((NimStringDesc*) &TMP3715), LOC18, 2);
					}
					LA13: ;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = rdloc_559637((&dest));
					LOC19[1] = rdloc_559637((&a));
					LOC20 = 0;
					LOC20 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3716), LOC19, 2);
					app_177052(&appends, LOC20);
				}
				LA5: ;
				res_580575 += 1;
			} LA4: ;
		}
	}
	memset((void*)LOC21, 0, sizeof(LOC21));
	LOC21[0] = rdloc_559637((&dest));
	LOC21[1] = lens;
	LOC21[2] = torope_177082(((NI64) (l)));
	linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3719), LOC21, 3);
	keepalive_560007(p, (&dest));
	LOC22 = 0;
	LOC22 = s_549183(p, ((NU8) 2));
	app_177052(LOC22, appends);
	gcusage_580100(e);
}

N_NIMCALL(void, genseqelemappend_580589)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	NimStringDesc* seqappendpattern;
	tloc225830 a;
	tloc225830 b;
	tloc225830 dest;
	TY554018 LOC8;
	ttype225852* LOC9;
	ttype225852* LOC10;
	TY588896 LOC11;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_169120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!!(LOC3)) goto LA5;
		seqappendpattern = copyString(((NimStringDesc*) &TMP3720));
	}
	goto LA1;
	LA5: ;
	{
		seqappendpattern = copyString(((NimStringDesc*) &TMP3721));
	}
	LA1: ;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&dest), 0, sizeof(dest));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rdloc_559637((&a));
	LOC9 = 0;
	LOC9 = skiptypes_230245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	LOC8[1] = gettypedesc_556307((*p).Module, LOC9);
	LOC10 = 0;
	LOC10 = skiptypes_230245((*(*e).kindU.S6.Sons->data[2]).Typ, IL64(211106240964864));
	LOC8[2] = gettypedesc_556307((*p).Module, LOC10);
	linecg_553135(p, ((NU8) 2), seqappendpattern, LOC8, 3);
	keepalive_560007(p, (&a));
	initloc_552361((&dest), ((NU8) 7), b.T, ((NU8) 2));
	memset((void*)LOC11, 0, sizeof(LOC11));
	LOC11[0] = rdloc_559637((&a));
	LOC11[1] = lenfield_561364(p);
	dest.R = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3722), LOC11, 2);
	genassignment_561330(p, (&dest), (&b), 5);
	gcusage_580100(e);
}

N_NIMCALL(void, genstrequals_583805)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 x;
	tnode225816* a;
	tnode225816* 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_575669(p, e, d, ((NimStringDesc*) &TMP3662));
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC8;
		TY588896 LOC12;
		trope177009* 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_561352(p, (*e).kindU.S6.Sons->data[2], (&x));
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = rdloc_559637((&x));
		LOC12[1] = lenfield_561364(p);
		LOC13 = 0;
		LOC13 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3723), LOC12, 2);
		putintodest_575477(p, d, (*e).Typ, LOC13);
	}
	goto LA1;
	LA10: ;
	{
		NIM_BOOL LOC15;
		TY588896 LOC19;
		trope177009* 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_561352(p, (*e).kindU.S6.Sons->data[1], (&x));
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = rdloc_559637((&x));
		LOC19[1] = lenfield_561364(p);
		LOC20 = 0;
		LOC20 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3723), LOC19, 2);
		putintodest_575477(p, d, (*e).Typ, LOC20);
	}
	goto LA1;
	LA17: ;
	{
		binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3724));
	}
	LA1: ;
}

N_NIMCALL(void, genisnil_577853)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	ttype225852* t;
	t = skiptypes_230245((*(*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_576440(p, e, d, ((NimStringDesc*) &TMP3727));
	}
	goto LA1;
	LA5: ;
	{
		unaryexpr_576440(p, e, d, ((NimStringDesc*) &TMP3728));
	}
	LA1: ;
}

N_NIMCALL(void, gendollar_581917)(tcproc549031* p, tnode225816* n, tloc225830* d, NimStringDesc* frmt) {
	tloc225830 a;
	TY177515 LOC1;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*n).kindU.S6.Sons->data[1], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_559637((&a));
	a.R = ropecg_552615((*p).Module, frmt, LOC1, 1);
	{
		if (!((*d).K == ((NU8) 0))) goto LA4;
		gettemp_558246(p, (*n).Typ, d, NIM_FALSE);
	}
	LA4: ;
	genassignment_561330(p, (&(*d)), (&a), 64);
	gcusage_580100(n);
}

N_NIMCALL(trope177009*, genofhelper_581451)(tcproc549031* p, ttype225852* dest, trope177009* a) {
	trope177009* result;
	trope177009* ti;
	result = 0;
	ti = gentypeinfo_556602((*p).Module, dest);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		TY588896 LOC9;
		LOC3 = 0;
		LOC3 = (((*dest).Flags &(1<<((((NU8) 2))&31)))!=0);
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = (*(*p).Module).Objhaskidsvalid;
		if (!(LOC5)) goto LA6;
		LOC5 = !((((*dest).Flags &(1<<((((NU8) 5))&31)))!=0));
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA7;
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = a;
		LOC9[1] = ti;
		result = ropef_177107(((NimStringDesc*) &TMP3737), LOC9, 2);
	}
	goto LA1;
	LA7: ;
	{
		trope177009* LOC11;
		trope177009* cache;
		trope177009* LOC12;
		TY177515 LOC13;
		TY554018 LOC14;
		LOC11 = 0;
		LOC11 = cgsym_552608((*p).Module, ((NimStringDesc*) &TMP3471));
		(*(*p).Module).Labels += 1;
		LOC12 = 0;
		LOC12 = torope_177082(((NI64) ((*(*p).Module).Labels)));
		cache = con_177038(((NimStringDesc*) &TMP3738), LOC12);
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = cache;
		appf_177115(&(*(*p).Module).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3739), LOC13, 1);
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = a;
		LOC14[1] = ti;
		LOC14[2] = cache;
		result = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3740), LOC14, 3);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genof_581604)(tcproc549031* p, tnode225816* x, ttype225852* typ, tloc225830* d) {
	tloc225830 a;
	ttype225852* dest;
	trope177009* r;
	trope177009* nilcheck;
	ttype225852* t;
	ttype225852* LOC33;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, x, (&a));
	dest = skiptypes_230245(typ, IL64(211106247256320));
	r = rdloc_559637((&a));
	nilcheck = NIM_NIL;
	t = skiptypes_230245(a.T, IL64(211106232576256));
	{
		while (1) {
			TY177515 LOC7;
			ttype225852* LOC8;
			if (!((14680064 &(IL64(1)<<(((*t).Kind)&IL64(63))))!=0)) goto LA2;
			{
				if (!!(((*t).Kind == ((NU8) 23)))) goto LA5;
				nilcheck = r;
			}
			LA5: ;
			memset((void*)LOC7, 0, sizeof(LOC7));
			LOC7[0] = r;
			r = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3494), LOC7, 1);
			LOC8 = 0;
			LOC8 = lastson_226267(t);
			t = skiptypes_230245(LOC8, IL64(211106232576256));
		} LA2: ;
	}
	{
		NIM_BOOL LOC11;
		LOC11 = 0;
		LOC11 = (gcmd_169120 == ((NU8) 2));
		if (LOC11) goto LA12;
		LOC11 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA12: ;
		if (!!(LOC11)) goto LA13;
		{
			while (1) {
				NIM_BOOL LOC17;
				TY553703 LOC19;
				trope177009* LOC20;
				LOC17 = 0;
				LOC17 = ((*t).Kind == ((NU8) 17));
				if (!(LOC17)) goto LA18;
				LOC17 = !(((*t).Sons->data[0] == NIM_NIL));
				LA18: ;
				if (!LOC17) goto LA16;
				memset((void*)LOC19, 0, sizeof(LOC19));
				LOC20 = 0;
				LOC20 = ropef_177107(((NimStringDesc*) &TMP3497), LOC19, 0);
				app_177052(&r, LOC20);
				t = skiptypes_230245((*t).Sons->data[0], IL64(211106232576256));
			} LA16: ;
		}
	}
	LA13: ;
	{
		NIM_BOOL LOC23;
		LOC23 = 0;
		LOC23 = isobjlackingtypefield_554130(t);
		if (!LOC23) goto LA24;
		globalerror_197934((*x).Info, ((NU16) 4), ((NimStringDesc*) &TMP3735));
	}
	LA24: ;
	{
		TY588896 LOC30;
		if (!!((nilcheck == NIM_NIL))) goto LA28;
		memset((void*)LOC30, 0, sizeof(LOC30));
		LOC30[0] = nilcheck;
		LOC30[1] = genofhelper_581451(p, dest, r);
		r = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3736), LOC30, 2);
	}
	goto LA26;
	LA28: ;
	{
		TY177515 LOC32;
		memset((void*)LOC32, 0, sizeof(LOC32));
		LOC32[0] = genofhelper_581451(p, dest, r);
		r = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3741), LOC32, 1);
	}
	LA26: ;
	LOC33 = 0;
	LOC33 = getsystype_282030(((NU8) 1));
	putintodest_575477(p, d, LOC33, r);
}

N_NIMCALL(void, genof_581744)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	genof_581604(p, (*n).kindU.S6.Sons->data[1], (*(*n).kindU.S6.Sons->data[2]).Typ, d);
}

N_NIMCALL(void, rawgennew_580723)(tcproc549031* p, tloc225830* a, trope177009* sizeexpr_580727) {
	trope177009* sizeexpr;
	ttype225852* reftype;
	tloc225830 b;
	TY554018 args;
	ttype225852* bt;
	sizeexpr = sizeexpr_580727;
	reftype = skiptypes_230245((*a).T, IL64(211106242013440));
	memset((void*)(&b), 0, sizeof(b));
	initloc_552361((&b), ((NU8) 7), (*a).T, ((NU8) 2));
	{
		TY177515 LOC5;
		ttype225852* LOC6;
		if (!sizeexpr == 0) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC6 = 0;
		LOC6 = skiptypes_230245((*reftype).Sons->data[0], IL64(211106233624832));
		LOC5[0] = gettypedesc_556307((*p).Module, LOC6);
		sizeexpr = ropef_177107(((NimStringDesc*) &TMP3742), LOC5, 1);
	}
	LA3: ;
	memset((void*)args, 0, sizeof(args));
	args[0] = gettypedesc_556307((*p).Module, reftype);
	args[1] = gentypeinfo_556602((*p).Module, reftype);
	args[2] = sizeexpr;
	{
		NIM_BOOL LOC9;
		TY588896 LOC21;
		LOC9 = 0;
		LOC9 = ((*a).S == ((NU8) 2));
		if (!(LOC9)) goto LA10;
		LOC9 = usesnativegc_169179();
		LA10: ;
		if (!LOC9) goto LA11;
		{
			NIM_BOOL LOC15;
			TY177515 LOC18;
			LOC15 = 0;
			LOC15 = canformacycle_263175((*a).T);
			if (!LOC15) goto LA16;
			memset((void*)LOC18, 0, sizeof(LOC18));
			LOC18[0] = rdloc_559637(a);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3743), LOC18, 1);
		}
		goto LA13;
		LA16: ;
		{
			TY177515 LOC20;
			memset((void*)LOC20, 0, sizeof(LOC20));
			LOC20[0] = rdloc_559637(a);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3569), LOC20, 1);
		}
		LA13: ;
		b.R = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3744), args, 3);
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = rdloc_559637(a);
		LOC21[1] = rdloc_559637((&b));
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC21, 2);
	}
	goto LA7;
	LA11: ;
	{
		b.R = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3745), args, 3);
		genassignment_561330(p, a, (&b), 64);
	}
	LA7: ;
	bt = skiptypes_230245((*reftype).Sons->data[0], IL64(211106233624832));
	genobjectinit_559721(p, ((NU8) 2), bt, a, NIM_FALSE);
}

N_NIMCALL(void, gennew_580777)(tcproc549031* p, tnode225816* e) {
	tloc225830 a;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	{
		NI LOC3;
		tloc225830 se;
		trope177009* LOC6;
		LOC3 = 0;
		LOC3 = len_226364(e);
		if (!(LOC3 == 3)) goto LA4;
		memset((void*)(&se), 0, sizeof(se));
		initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&se));
		LOC6 = 0;
		LOC6 = rdloc_559637((&se));
		rawgennew_580723(p, (&a), LOC6);
	}
	goto LA1;
	LA4: ;
	{
		rawgennew_580723(p, (&a), NIM_NIL);
	}
	LA1: ;
	gcusage_580100(e);
}

N_NIMCALL(void, gennewfinalize_581375)(tcproc549031* p, tnode225816* e) {
	tloc225830 a;
	tloc225830 b;
	tloc225830 f;
	ttype225852* reftype;
	ttype225852* bt;
	trope177009* ti;
	tcgen549035* oldmodule;
	TY588896 LOC1;
	TY554018 LOC2;
	ttype225852* 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_230245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&f));
	initloc_552361((&b), ((NU8) 7), a.T, ((NU8) 2));
	ti = gentypeinfo_556602((*p).Module, reftype);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = ti;
	LOC1[1] = rdloc_559637((&f));
	appf_177115(&(*(*p).Module).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3746), LOC1, 2);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = gettypedesc_556307((*p).Module, reftype);
	LOC2[1] = ti;
	LOC3 = 0;
	LOC3 = skiptypes_230245((*reftype).Sons->data[0], IL64(211106233624832));
	LOC2[2] = gettypedesc_556307((*p).Module, LOC3);
	b.R = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3747), LOC2, 3);
	genassignment_561330(p, (&a), (&b), 64);
	bt = skiptypes_230245((*reftype).Sons->data[0], IL64(211106233624832));
	genobjectinit_559721(p, ((NU8) 2), bt, (&a), NIM_FALSE);
	gcusage_580100(e);
}

N_NIMCALL(void, gennewseqaux_580818)(tcproc549031* p, tloc225830* dest, trope177009* length) {
	ttype225852* seqtype;
	TY554018 args;
	tloc225830 call;
	seqtype = skiptypes_230245((*dest).T, IL64(211106242013440));
	memset((void*)args, 0, sizeof(args));
	args[0] = gettypedesc_556307((*p).Module, seqtype);
	args[1] = gentypeinfo_556602((*p).Module, seqtype);
	args[2] = length;
	memset((void*)(&call), 0, sizeof(call));
	initloc_552361((&call), ((NU8) 7), (*dest).T, ((NU8) 2));
	{
		NIM_BOOL LOC3;
		TY588896 LOC15;
		LOC3 = 0;
		LOC3 = ((*dest).S == ((NU8) 2));
		if (!(LOC3)) goto LA4;
		LOC3 = usesnativegc_169179();
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NIM_BOOL LOC9;
			TY177515 LOC12;
			LOC9 = 0;
			LOC9 = canformacycle_263175((*dest).T);
			if (!LOC9) goto LA10;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_559637(dest);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3743), LOC12, 1);
		}
		goto LA7;
		LA10: ;
		{
			TY177515 LOC14;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = rdloc_559637(dest);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3569), LOC14, 1);
		}
		LA7: ;
		call.R = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3748), args, 3);
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = rdloc_559637(dest);
		LOC15[1] = rdloc_559637((&call));
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC15, 2);
	}
	goto LA1;
	LA5: ;
	{
		call.R = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3749), args, 3);
		genassignment_561330(p, dest, (&call), 64);
	}
	LA1: ;
}

N_NIMCALL(void, gennewseq_580855)(tcproc549031* p, tnode225816* e) {
	tloc225830 a;
	tloc225830 b;
	trope177009* LOC1;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
	LOC1 = 0;
	LOC1 = rdloc_559637((&b));
	gennewseqaux_580818(p, (&a), LOC1);
	gcusage_580100(e);
}

N_NIMCALL(trope177009*, getclosuretype_556322)(tcgen549035* m, ttype225852* t, NU8 kind) {
	trope177009* result;
	intset222056 check;
	trope177009* rettype;
	trope177009* desc;
	result = 0;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_222950((&check));
	result = gettempname_554244();
	rettype = 0;
	desc = 0;
	genprocparams_554626(m, t, &rettype, &desc, (&check), !((kind == ((NU8) 0))));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isimportedtype_555001(t);
		if (!!(LOC3)) goto LA4;
		{
			NIM_BOOL LOC8;
			TY556046 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_177076(callingconvtostr_554224[((*t).Callconv)- 0]);
			LOC12[1] = rettype;
			LOC12[2] = result;
			LOC12[3] = desc;
			appf_177115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3413), LOC12, 4);
		}
		goto LA6;
		LA10: ;
		{
			TY554018 LOC14;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = result;
			LOC14[1] = rettype;
			LOC14[2] = desc;
			appf_177115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3424), LOC14, 3);
		}
		LA6: ;
	}
	LA4: ;
	return result;
}

N_NIMCALL(trope177009*, rdcharloc_559698)(tloc225830* a) {
	trope177009* result;
	result = 0;
	result = rdloc_559637(a);
	{
		ttype225852* LOC3;
		TY177515 LOC6;
		LOC3 = 0;
		LOC3 = skiptypes_230245((*a).T, IL64(211106233624832));
		if (!((*LOC3).Kind == ((NU8) 2))) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = result;
		result = ropef_177107(((NimStringDesc*) &TMP3753), LOC6, 1);
	}
	LA4: ;
	return result;
}

N_NIMCALL(void, gensomecast_583392)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 a;
	ttype225852* etyp;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	etyp = skiptypes_230245((*e).Typ, IL64(211106233624832));
	{
		NIM_BOOL LOC3;
		TY588896 LOC7;
		trope177009* LOC8;
		LOC3 = 0;
		LOC3 = ((IL64(281475111387152) &(IL64(1)<<(((*etyp).Kind)&IL64(63))))!=0);
		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_556307((*p).Module, (*e).Typ);
		LOC7[1] = addrloc_559664((&a));
		LOC8 = 0;
		LOC8 = ropef_177107(((NimStringDesc*) &TMP3751), LOC7, 2);
		putintodest_575477(p, d, (*e).Typ, LOC8);
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC10;
		TY588896 LOC14;
		trope177009* 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_556322((*p).Module, etyp, ((NU8) 1));
		LOC14[1] = rdcharloc_559698((&a));
		LOC15 = 0;
		LOC15 = ropef_177107(((NimStringDesc*) &TMP3752), LOC14, 2);
		putintodest_575477(p, d, (*e).Typ, LOC15);
	}
	goto LA1;
	LA12: ;
	{
		TY588896 LOC17;
		trope177009* LOC18;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = gettypedesc_556307((*p).Module, (*e).Typ);
		LOC17[1] = rdcharloc_559698((&a));
		LOC18 = 0;
		LOC18 = ropef_177107(((NimStringDesc*) &TMP3752), LOC17, 2);
		putintodest_575477(p, d, (*e).Typ, LOC18);
	}
	LA1: ;
}

N_NIMCALL(void, unaryexprchar_576471)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt) {
	tloc225830 a;
	TY177515 LOC1;
	trope177009* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdcharloc_559698((&a));
	LOC2 = 0;
	LOC2 = ropecg_552615((*p).Module, frmt, LOC1, 1);
	putintodest_575477(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, genord_583383)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	unaryexprchar_576471(p, e, d, ((NimStringDesc*) &TMP3620));
}

N_NIMCALL(void, genarraylen_581958)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 op) {
	tnode225816* a;
	ttype225852* 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_230245((*a).Typ, IL64(211106240964864));
	switch ((*typ).Kind) {
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			if (!(op == ((NU16) 5))) goto LA8;
			unaryexpr_576440(p, e, d, ((NimStringDesc*) &TMP3754));
		}
		goto LA6;
		LA8: ;
		{
			unaryexpr_576440(p, e, d, ((NimStringDesc*) &TMP3755));
		}
		LA6: ;
	}
	break;
	case ((NU8) 29):
	{
		usestringh_552459((*p).Module);
		{
			if (!(op == ((NU16) 5))) goto LA14;
			unaryexpr_576440(p, e, d, ((NimStringDesc*) &TMP3756));
		}
		goto LA12;
		LA14: ;
		{
			unaryexpr_576440(p, e, d, ((NimStringDesc*) &TMP3757));
		}
		LA12: ;
	}
	break;
	case ((NU8) 28):
	case ((NU8) 24):
	{
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = (gcmd_169120 == ((NU8) 2));
			if (LOC20) goto LA21;
			LOC20 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
			LA21: ;
			if (!!(LOC20)) goto LA22;
			{
				if (!(op == ((NU16) 5))) goto LA26;
				unaryexpr_576440(p, e, d, ((NimStringDesc*) &TMP3758));
			}
			goto LA24;
			LA26: ;
			{
				unaryexpr_576440(p, e, d, ((NimStringDesc*) &TMP3759));
			}
			LA24: ;
		}
		goto LA18;
		LA22: ;
		{
			{
				if (!(op == ((NU16) 5))) goto LA32;
				unaryexpr_576440(p, e, d, ((NimStringDesc*) &TMP3760));
			}
			goto LA30;
			LA32: ;
			{
				unaryexpr_576440(p, e, d, ((NimStringDesc*) &TMP3761));
			}
			LA30: ;
		}
		LA18: ;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		{
			NI64 LOC40;
			trope177009* LOC41;
			if (!(op == ((NU16) 5))) goto LA38;
			LOC40 = 0;
			LOC40 = lastord_263010(typ);
			LOC41 = 0;
			LOC41 = torope_177082(LOC40);
			putintodest_575477(p, d, (*e).Typ, LOC41);
		}
		goto LA36;
		LA38: ;
		{
			NI64 LOC43;
			trope177009* LOC44;
			LOC43 = 0;
			LOC43 = lengthord_263016(typ);
			LOC44 = 0;
			LOC44 = torope_177082(LOC43);
			putintodest_575477(p, d, (*e).Typ, LOC44);
		}
		LA36: ;
	}
	break;
	default:
	{
		internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3762));
	}
	break;
	}
}

N_NIMCALL(void, unarystmt_575572)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt) {
	tloc225830 a;
	TY177515 LOC5;
	memset((void*)(&a), 0, sizeof(a));
	{
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3763));
	}
	LA3: ;
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = rdloc_559637((&a));
	linecg_553135(p, ((NU8) 2), frmt, LOC5, 1);
}

N_NIMCALL(void, gensetlengthstr_582278)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	binarystmt_575515(p, e, d, ((NimStringDesc*) &TMP3766));
	keepalive_560007(p, (&(*d)));
	gcusage_580100(e);
}

N_NIMCALL(void, gensetlengthseq_582074)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 a;
	tloc225830 b;
	ttype225852* t;
	NimStringDesc* setlenpattern;
	TY556046 LOC8;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
	t = skiptypes_230245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_169120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!!(LOC3)) goto LA5;
		setlenpattern = copyString(((NimStringDesc*) &TMP3767));
	}
	goto LA1;
	LA5: ;
	{
		setlenpattern = copyString(((NimStringDesc*) &TMP3768));
	}
	LA1: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rdloc_559637((&a));
	LOC8[1] = rdloc_559637((&b));
	LOC8[2] = gettypedesc_556307((*p).Module, t);
	LOC8[3] = gettypedesc_556307((*p).Module, (*t).Sons->data[0]);
	linecg_553135(p, ((NU8) 2), setlenpattern, LOC8, 4);
	keepalive_560007(p, (&a));
	gcusage_580100(e);
}

N_NIMCALL(trope177009*, rdsetelemloc_582353)(tloc225830* a, ttype225852* settype) {
	trope177009* result;
	result = 0;
	result = rdcharloc_559698(a);
	{
		NI64 LOC3;
		TY588896 LOC6;
		NI64 LOC7;
		LOC3 = 0;
		LOC3 = firstord_263004(settype);
		if (!!((LOC3 == IL64(0)))) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = result;
		LOC7 = 0;
		LOC7 = firstord_263004(settype);
		LOC6[1] = torope_177082(LOC7);
		result = ropef_177107(((NimStringDesc*) &TMP3769), LOC6, 2);
	}
	LA4: ;
	return result;
}

N_NIMCALL(void, binarystmtinexcl_582493)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt) {
	tloc225830 a;
	tloc225830 b;
	TY588896 LOC1;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_559637((&a));
	LOC1[1] = rdsetelemloc_582353((&b), a.T);
	linef_553122(p, ((NU8) 2), frmt, LOC1, 2);
}

N_NIMCALL(void, binaryexprchar_576040)(tcproc549031* p, tnode225816* e, tloc225830* d, NimStringDesc* frmt) {
	tloc225830 a;
	tloc225830 b;
	TY588896 LOC1;
	trope177009* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdcharloc_559698((&a));
	LOC1[1] = rdcharloc_559698((&b));
	LOC2 = 0;
	LOC2 = ropecg_552615((*p).Module, frmt, LOC1, 2);
	putintodest_575477(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(NIM_BOOL, fewcmps_582408)(tnode225816* s) {
	NIM_BOOL result;
	result = 0;
	{
		if (!!(((*s).Kind == ((NU8) 39)))) goto LA3;
		internalerror_197987((*s).Info, ((NimStringDesc*) &TMP3784));
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		NI64 LOC8;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = getsize_263199((*s).Typ);
		LOC7 = (LOC8 <= ((NI64) (intsize_174610)));
		if (!(LOC7)) goto LA9;
		LOC7 = (((*s).Flags &(1<<((((NU8) 4))&15)))!=0);
		LA9: ;
		if (!LOC7) goto LA10;
		result = NIM_FALSE;
	}
	goto LA5;
	LA10: ;
	{
		ttype225852* LOC13;
		LOC13 = 0;
		LOC13 = elemtype_263656((*s).Typ);
		if (!((IL64(62277025792) &(IL64(1)<<(((*LOC13).Kind)&IL64(63))))!=0)) goto LA14;
		result = NIM_TRUE;
	}
	goto LA5;
	LA14: ;
	{
		NI LOC17;
		LOC17 = 0;
		LOC17 = sonslen_226249(s);
		result = (LOC17 <= 8);
	}
	LA5: ;
	return result;
}

N_NIMCALL(void, binaryexprin_582451)(tcproc549031* p, tnode225816* e, tloc225830* a, tloc225830* b, tloc225830* d, NimStringDesc* frmt) {
	TY588896 LOC1;
	trope177009* LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_559637((&(*a)));
	LOC1[1] = rdsetelemloc_582353((&(*b)), (*a).T);
	LOC2 = 0;
	LOC2 = ropef_177107(frmt, LOC1, 2);
	putintodest_575477(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, geninexpraux_578619)(tcproc549031* p, tnode225816* e, tloc225830* a, tloc225830* b, tloc225830* d) {
	ttype225852* LOC1;
	NI64 LOC2;
	LOC1 = 0;
	LOC1 = skiptypes_230245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	LOC2 = 0;
	LOC2 = getsize_263199(LOC1);
	switch (((NI) (LOC2))) {
	case 1:
	{
		binaryexprin_582451(p, e, a, b, d, ((NimStringDesc*) &TMP3788));
	}
	break;
	case 2:
	{
		binaryexprin_582451(p, e, a, b, d, ((NimStringDesc*) &TMP3789));
	}
	break;
	case 4:
	{
		binaryexprin_582451(p, e, a, b, d, ((NimStringDesc*) &TMP3790));
	}
	break;
	case 8:
	{
		binaryexprin_582451(p, e, a, b, d, ((NimStringDesc*) &TMP3791));
	}
	break;
	default:
	{
		binaryexprin_582451(p, e, a, b, d, ((NimStringDesc*) &TMP3792));
	}
	break;
	}
}

N_NIMCALL(void, geninop_582640)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 a;
	tloc225830 b;
	tloc225830 x;
	tloc225830 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;
		tnode225816* ea;
		NI length;
		LOC3 = 0;
		LOC3 = ((*(*e).kindU.S6.Sons->data[1]).Kind == ((NU8) 39));
		if (!(LOC3)) goto LA4;
		LOC3 = fewcmps_582408((*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_561352(p, ea, (&a));
		initloc_552361((&b), ((NU8) 7), (*e).Typ, ((NU8) 0));
		b.R = torope_177076(((NimStringDesc*) &TMP3412));
		length = sonslen_226249((*e).kindU.S6.Sons->data[1]);
		{
			NI i_582787;
			NI HEX3Atmp_583238;
			NI res_583241;
			i_582787 = 0;
			HEX3Atmp_583238 = 0;
			HEX3Atmp_583238 = (NI64)(length - 1);
			res_583241 = 0;
			{
				while (1) {
					if (!(res_583241 <= HEX3Atmp_583238)) goto LA14;
					i_582787 = res_583241;
					{
						TY554018 LOC19;
						if (!((*(*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_582787]).Kind == ((NU8) 44))) goto LA17;
						initlocexpr_561352(p, (*(*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_582787]).kindU.S6.Sons->data[0], (&x));
						initlocexpr_561352(p, (*(*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_582787]).kindU.S6.Sons->data[1], (&y));
						memset((void*)LOC19, 0, sizeof(LOC19));
						LOC19[0] = rdcharloc_559698((&a));
						LOC19[1] = rdcharloc_559698((&x));
						LOC19[2] = rdcharloc_559698((&y));
						appf_177115(&b.R, ((NimStringDesc*) &TMP3785), LOC19, 3);
					}
					goto LA15;
					LA17: ;
					{
						TY588896 LOC21;
						initlocexpr_561352(p, (*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_582787], (&x));
						memset((void*)LOC21, 0, sizeof(LOC21));
						LOC21[0] = rdcharloc_559698((&a));
						LOC21[1] = rdcharloc_559698((&x));
						appf_177115(&b.R, ((NimStringDesc*) &TMP3786), LOC21, 2);
					}
					LA15: ;
					{
						if (!(i_582787 < (NI64)(length - 1))) goto LA24;
						app_177060(&b.R, ((NimStringDesc*) &TMP3787));
					}
					LA24: ;
					res_583241 += 1;
				} LA14: ;
			}
		}
		app_177060(&b.R, ((NimStringDesc*) &TMP3411));
		putintodest_575477(p, d, (*e).Typ, b.R);
	}
	goto LA1;
	LA5: ;
	{
		initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
		initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
		geninexpraux_578619(p, e, (&a), (&b), d);
	}
	LA1: ;
}

N_NIMCALL(void, gensetop_583255)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 op) {
	tloc225830 a;
	tloc225830 b;
	tloc225830 i;
	ttype225852* 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_230245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	LOC1 = 0;
	LOC1 = getsize_263199(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((NI64)(size * 8));
			LOC4 = rawNewString(LOC5->Sup.len + 2);
appendString(LOC4, ((NimStringDesc*) &TMP3382));
appendString(LOC4, LOC5);
			ts = LOC4;
			LOC6 = 0;
			LOC6 = rawNewString(ts->Sup.len + ts->Sup.len + 35);
appendString(LOC6, ((NimStringDesc*) &TMP3770));
appendString(LOC6, ts);
appendString(LOC6, ((NimStringDesc*) &TMP3771));
appendString(LOC6, ts);
appendString(LOC6, ((NimStringDesc*) &TMP3772));
			binarystmtinexcl_582493(p, e, d, LOC6);
		}
		break;
		case ((NU16) 32):
		{
			NimStringDesc* ts;
			NimStringDesc* LOC8;
			NimStringDesc* LOC9;
			NimStringDesc* LOC10;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = nimIntToStr((NI64)(size * 8));
			LOC8 = rawNewString(LOC9->Sup.len + 2);
appendString(LOC8, ((NimStringDesc*) &TMP3382));
appendString(LOC8, LOC9);
			ts = LOC8;
			LOC10 = 0;
			LOC10 = rawNewString(ts->Sup.len + ts->Sup.len + 42);
appendString(LOC10, ((NimStringDesc*) &TMP3773));
appendString(LOC10, ts);
appendString(LOC10, ((NimStringDesc*) &TMP3774));
appendString(LOC10, ts);
appendString(LOC10, ((NimStringDesc*) &TMP3775));
			binarystmtinexcl_582493(p, e, d, LOC10);
		}
		break;
		case ((NU16) 33):
		{
			{
				if (!(size <= 4)) goto LA14;
				unaryexprchar_576471(p, e, d, ((NimStringDesc*) &TMP3776));
			}
			goto LA12;
			LA14: ;
			{
				unaryexprchar_576471(p, e, d, ((NimStringDesc*) &TMP3777));
			}
			LA12: ;
		}
		break;
		case ((NU16) 141):
		{
			binaryexprchar_576040(p, e, d, ((NimStringDesc*) &TMP3778));
		}
		break;
		case ((NU16) 140):
		{
			binaryexprchar_576040(p, e, d, ((NimStringDesc*) &TMP3779));
		}
		break;
		case ((NU16) 139):
		{
			binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3662));
		}
		break;
		case ((NU16) 142):
		{
			binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3780));
		}
		break;
		case ((NU16) 143):
		{
			binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3781));
		}
		break;
		case ((NU16) 144):
		{
			binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3782));
		}
		break;
		case ((NU16) 145):
		{
			binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3783));
		}
		break;
		case ((NU16) 159):
		{
			geninop_582640(p, e, d);
		}
		break;
		default:
		{
			internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3793));
		}
		break;
		}
	}
	break;
	default:
	{
		switch (op) {
		case ((NU16) 31):
		{
			binarystmtinexcl_582493(p, e, d, ((NimStringDesc*) &TMP3794));
		}
		break;
		case ((NU16) 32):
		{
			binarystmtinexcl_582493(p, e, d, ((NimStringDesc*) &TMP3795));
		}
		break;
		case ((NU16) 33):
		{
			NimStringDesc* LOC30;
			NimStringDesc* LOC31;
			LOC30 = 0;
			LOC31 = 0;
			LOC31 = nimIntToStr(size);
			LOC30 = rawNewString(LOC31->Sup.len + 14);
appendString(LOC30, ((NimStringDesc*) &TMP3796));
appendString(LOC30, LOC31);
appendChar(LOC30, 41);
			unaryexprchar_576471(p, e, d, LOC30);
		}
		break;
		case ((NU16) 141):
		case ((NU16) 140):
		{
			ttype225852* LOC33;
			TY557593 LOC39;
			LOC33 = 0;
			LOC33 = getsystype_282030(((NU8) 31));
			gettemp_558246(p, LOC33, (&i), NIM_FALSE);
			initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
			initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
			{
				ttype225852* LOC38;
				if (!((*d).K == ((NU8) 0))) goto LA36;
				LOC38 = 0;
				LOC38 = getsystype_282030(((NU8) 1));
				gettemp_558246(p, LOC38, d, NIM_FALSE);
			}
			LA36: ;
			memset((void*)LOC39, 0, sizeof(LOC39));
			LOC39[0] = rdloc_559637((&i));
			LOC39[1] = torope_177082(((NI64) (size)));
			LOC39[2] = rdloc_559637((&(*d)));
			LOC39[3] = rdloc_559637((&a));
			LOC39[4] = rdloc_559637((&b));
			linef_553122(p, ((NU8) 2), lookupopr_583262[(op)- 140], LOC39, 5);
		}
		break;
		case ((NU16) 139):
		{
			NimStringDesc* LOC41;
			NimStringDesc* LOC42;
			usestringh_552459((*p).Module);
			LOC41 = 0;
			LOC42 = 0;
			LOC42 = nimIntToStr(size);
			LOC41 = rawNewString(LOC42->Sup.len + 21);
appendString(LOC41, ((NimStringDesc*) &TMP3802));
appendString(LOC41, LOC42);
appendString(LOC41, ((NimStringDesc*) &TMP3803));
			binaryexprchar_576040(p, e, d, LOC41);
		}
		break;
		case ((NU16) 142):
		case ((NU16) 143):
		case ((NU16) 144):
		case ((NU16) 145):
		{
			ttype225852* LOC44;
			TY558098 LOC49;
			LOC44 = 0;
			LOC44 = getsystype_282030(((NU8) 31));
			gettemp_558246(p, LOC44, (&i), NIM_FALSE);
			initlocexpr_561352(p, (*e).kindU.S6.Sons->data[1], (&a));
			initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
			{
				if (!((*d).K == ((NU8) 0))) goto LA47;
				gettemp_558246(p, a.T, d, NIM_FALSE);
			}
			LA47: ;
			memset((void*)LOC49, 0, sizeof(LOC49));
			LOC49[0] = rdloc_559637((&i));
			LOC49[1] = torope_177082(((NI64) (size)));
			LOC49[2] = rdloc_559637((&(*d)));
			LOC49[3] = rdloc_559637((&a));
			LOC49[4] = rdloc_559637((&b));
			LOC49[5] = torope_177076(lookupopr_583262[(op)- 140]);
			linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3804), LOC49, 6);
		}
		break;
		case ((NU16) 159):
		{
			geninop_582640(p, e, d);
		}
		break;
		default:
		{
			internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3805));
		}
		break;
		}
	}
	break;
	}
}

static N_INLINE(trope177009*, genargstringtocstring_562040)(tcproc549031* p, tnode225816* n) {
	trope177009* result;
	tloc225830 a;
	TY177515 LOC1;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*n).kindU.S6.Sons->data[0], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_559637((&a));
	result = ropef_177107(((NimStringDesc*) &TMP3806), LOC1, 1);
	return result;
}

N_NIMCALL(trope177009*, openarrayloc_561955)(tcproc549031* p, tnode225816* n) {
	trope177009* result;
	tloc225830 a;
	tnode225816* q;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	q = skipconv_273732(n);
	{
		NU16 LOC3;
		tloc225830 b;
		tloc225830 c;
		tnode225816* LOC6;
		tnode225816* LOC7;
		tnode225816* LOC8;
		NimStringDesc* fmt;
		ttype225852* LOC9;
		TY554018 LOC21;
		LOC3 = 0;
		LOC3 = getmagic_261845(q);
		if (!(LOC3 == ((NU16) 151))) goto LA4;
		memset((void*)(&b), 0, sizeof(b));
		memset((void*)(&c), 0, sizeof(c));
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_226698(q, 1);
		initlocexpr_561352(p, LOC6, (&a));
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_226698(q, 2);
		initlocexpr_561352(p, LOC7, (&b));
		LOC8 = 0;
		LOC8 = HEX5BHEX5D_226698(q, 3);
		initlocexpr_561352(p, LOC8, (&c));
		LOC9 = 0;
		LOC9 = skiptypes_230245(a.T, IL64(211106243062016));
		switch ((*LOC9).Kind) {
		case ((NU8) 27):
		case ((NU8) 48):
		case ((NU8) 16):
		case ((NU8) 4):
		{
			fmt = copyString(((NimStringDesc*) &TMP3807));
		}
		break;
		case ((NU8) 28):
		case ((NU8) 24):
		{
			{
				ttype225852* LOC14;
				LOC14 = 0;
				LOC14 = skiptypes_230245((*n).Typ, IL64(211106232576256));
				if (!((*LOC14).Kind == ((NU8) 23))) goto LA15;
				fmt = copyString(((NimStringDesc*) &TMP3808));
			}
			goto LA12;
			LA15: ;
			{
				fmt = copyString(((NimStringDesc*) &TMP3809));
			}
			LA12: ;
		}
		break;
		default:
		{
			NimStringDesc* LOC19;
			NimStringDesc* LOC20;
			LOC19 = 0;
			LOC20 = 0;
			LOC20 = typetostring_263031(a.T, ((NU8) 0));
			LOC19 = rawNewString(LOC20->Sup.len + 14);
appendString(LOC19, ((NimStringDesc*) &TMP3810));
appendString(LOC19, LOC20);
			internalerror_198006(LOC19);
			fmt = copyString(((NimStringDesc*) &TMP3811));
		}
		break;
		}
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = rdloc_559637((&a));
		LOC21[1] = rdloc_559637((&b));
		LOC21[2] = rdloc_559637((&c));
		result = ropef_177107(fmt, LOC21, 3);
	}
	goto LA1;
	LA4: ;
	{
		ttype225852* LOC23;
		initlocexpr_561352(p, n, (&a));
		LOC23 = 0;
		LOC23 = skiptypes_230245(a.T, IL64(211106240964864));
		switch ((*LOC23).Kind) {
		case ((NU8) 27):
		case ((NU8) 48):
		{
			TY177515 LOC25;
			memset((void*)LOC25, 0, sizeof(LOC25));
			LOC25[0] = rdloc_559637((&a));
			result = ropef_177107(((NimStringDesc*) &TMP3695), LOC25, 1);
		}
		break;
		case ((NU8) 28):
		case ((NU8) 24):
		{
			{
				ttype225852* LOC29;
				TY588896 LOC32;
				LOC29 = 0;
				LOC29 = skiptypes_230245((*n).Typ, IL64(211106232576256));
				if (!((*LOC29).Kind == ((NU8) 23))) goto LA30;
				memset((void*)LOC32, 0, sizeof(LOC32));
				LOC32[0] = rdloc_559637((&a));
				LOC32[1] = lenfield_561364(p);
				result = ropef_177107(((NimStringDesc*) &TMP3812), LOC32, 2);
			}
			goto LA27;
			LA30: ;
			{
				TY588896 LOC34;
				memset((void*)LOC34, 0, sizeof(LOC34));
				LOC34[0] = rdloc_559637((&a));
				LOC34[1] = lenfield_561364(p);
				result = ropef_177107(((NimStringDesc*) &TMP3696), LOC34, 2);
			}
			LA27: ;
		}
		break;
		case ((NU8) 16):
		case ((NU8) 4):
		{
			TY588896 LOC36;
			NI64 LOC37;
			memset((void*)LOC36, 0, sizeof(LOC36));
			LOC36[0] = rdloc_559637((&a));
			LOC37 = 0;
			LOC37 = lengthord_263016(a.T);
			LOC36[1] = torope_177082(LOC37);
			result = ropef_177107(((NimStringDesc*) &TMP3697), LOC36, 2);
		}
		break;
		default:
		{
			NimStringDesc* LOC39;
			NimStringDesc* LOC40;
			LOC39 = 0;
			LOC40 = 0;
			LOC40 = typetostring_263031(a.T, ((NU8) 0));
			LOC39 = rawNewString(LOC40->Sup.len + 14);
appendString(LOC39, ((NimStringDesc*) &TMP3810));
appendString(LOC39, LOC40);
			internalerror_198006(LOC39);
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, genarg_562069)(tcproc549031* p, tnode225816* n_562072, tsym225846* param) {
	trope177009* result;
	tloc225830 a;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	{
		if (!((*n_562072).Kind == ((NU8) 71))) goto LA3;
		result = genargstringtocstring_562040(p, n_562072);
	}
	goto LA1;
	LA3: ;
	{
		ttype225852* LOC6;
		tnode225816* n;
		LOC6 = 0;
		LOC6 = skiptypes_230245((*param).Typ, IL64(211106240964864));
		if (!((IL64(281475110928384) &(IL64(1)<<(((*LOC6).Kind)&IL64(63))))!=0)) goto LA7;
		{
			if (!!(((*n_562072).Kind == ((NU8) 64)))) goto LA11;
			n = n_562072;
		}
		goto LA9;
		LA11: ;
		{
			n = (*n_562072).kindU.S6.Sons->data[0];
		}
		LA9: ;
		result = openarrayloc_561955(p, n);
	}
	goto LA1;
	LA7: ;
	{
		NIM_BOOL LOC15;
		LOC15 = 0;
		LOC15 = ccgintroducedptr_554264(param);
		if (!LOC15) goto LA16;
		initlocexpr_561352(p, n_562072, (&a));
		result = addrloc_559664((&a));
	}
	goto LA1;
	LA16: ;
	{
		initlocexpr_561352(p, n_562072, (&a));
		result = rdloc_559637((&a));
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, genargnoparam_562129)(tcproc549031* p, tnode225816* n) {
	trope177009* result;
	tloc225830 a;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	{
		if (!((*n).Kind == ((NU8) 71))) goto LA3;
		result = genargstringtocstring_562040(p, n);
	}
	goto LA1;
	LA3: ;
	{
		initlocexpr_561352(p, n, (&a));
		result = rdloc_559637((&a));
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope177009*, getrawproctype_562690)(tcproc549031* p, ttype225852* t) {
	trope177009* result;
	result = 0;
	result = getclosuretype_556322((*p).Module, t, ((NU8) 0));
	return result;
}

N_NIMCALL(NIM_BOOL, leftappearsonrightside_561396)(tnode225816* le, tnode225816* ri) {
	NIM_BOOL result;
	result = 0;
	{
		if (!!((le == NIM_NIL))) goto LA3;
		{
			NI i_561439;
			NI HEX3Atmp_561451;
			NI LOC6;
			NI res_561454;
			i_561439 = 0;
			HEX3Atmp_561451 = 0;
			LOC6 = 0;
			LOC6 = len_226364(ri);
			HEX3Atmp_561451 = (LOC6 - 1);
			res_561454 = 1;
			{
				while (1) {
					tnode225816* r;
					if (!(res_561454 <= HEX3Atmp_561451)) goto LA8;
					i_561439 = res_561454;
					r = HEX5BHEX5D_226698(ri, i_561439);
					{
						NU8 LOC11;
						LOC11 = 0;
						LOC11 = ispartof_478430(le, r);
						if (!!((LOC11 == ((NU8) 0)))) goto LA12;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA12: ;
					res_561454 += 1;
				} LA8: ;
			}
		}
	}
	LA3: ;
	BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, hasnoinit_561468)(tnode225816* 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_559870)(tcproc549031* p, tloc225830* loc) {
	NIM_BOOL containsgcref;
	containsgcref = containsgarbagecollectedref_263163((*loc).T);
	{
		ttype225852* LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC3 = skiptypes_230245((*loc).T, IL64(211106242013440));
		LOC4 = 0;
		LOC4 = iscomplexvaluetype_559828(LOC3);
		if (!!(LOC4)) goto LA5;
		{
			tloc225830 nilloc;
			if (!containsgcref) goto LA9;
			memset((void*)(&nilloc), 0, sizeof(nilloc));
			initloc_552361((&nilloc), ((NU8) 1), (*loc).T, ((NU8) 1));
			nilloc.R = torope_177076(((NimStringDesc*) &TMP3519));
			genrefassign_559819(p, (&(*loc)), (&nilloc), 16);
		}
		goto LA7;
		LA9: ;
		{
			TY177515 LOC12;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_559637((&(*loc)));
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3493), LOC12, 1);
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		{
			TY177515 LOC18;
			if (!(((*p).Options &(1<<((((NU8) 6))&31)))!=0)) goto LA16;
			memset((void*)LOC18, 0, sizeof(LOC18));
			LOC18[0] = addrloc_559664((&(*loc)));
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3815), LOC18, 1);
		}
		LA16: ;
		{
			TY588896 LOC23;
			if (!!(((*loc).S == ((NU8) 1)))) goto LA21;
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = addrloc_559664((&(*loc)));
			LOC23[1] = gentypeinfo_556602((*p).Module, (*loc).T);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3816), LOC23, 2);
			genobjectinit_559721(p, ((NU8) 2), (*loc).T, (&(*loc)), NIM_TRUE);
		}
		goto LA19;
		LA21: ;
		{
			TY588896 LOC25;
			usestringh_552459((*p).Module);
			memset((void*)LOC25, 0, sizeof(LOC25));
			LOC25[0] = addrloc_559664((&(*loc)));
			LOC25[1] = rdloc_559637((&(*loc)));
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3496), LOC25, 2);
			genobjectinit_559721(p, ((NU8) 2), (*loc).T, (&(*loc)), NIM_TRUE);
		}
		LA19: ;
	}
	LA1: ;
}

N_NIMCALL(trope177009*, addcomma_562695)(trope177009* r) {
	trope177009* result;
	result = 0;
	{
		if (!(r == NIM_NIL)) goto LA3;
		result = r;
	}
	goto LA1;
	LA3: ;
	{
		TY553703 LOC6;
		trope177009* LOC7;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC7 = 0;
		LOC7 = ropef_177107(((NimStringDesc*) &TMP3402), LOC6, 0);
		result = con_177024(r, LOC7);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genclosurecall_562683)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* d) {
	tloc225830 op;
	trope177009* pl;
	ttype225852* typ;
	NI length;
	trope177009* rawproc;
	NimStringDesc* callpattern;
	memset((void*)(&op), 0, sizeof(op));
	initlocexpr_561352(p, (*ri).kindU.S6.Sons->data[0], (&op));
	pl = 0;
	typ = skiptypes_230245((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_226249(ri);
	{
		NI i_562814;
		NI HEX3Atmp_563416;
		NI res_563419;
		i_562814 = 0;
		HEX3Atmp_563416 = 0;
		HEX3Atmp_563416 = (NI64)(length - 1);
		res_563419 = 1;
		{
			while (1) {
				if (!(res_563419 <= HEX3Atmp_563416)) goto LA3;
				i_562814 = res_563419;
				{
					NI LOC6;
					trope177009* LOC9;
					LOC6 = 0;
					LOC6 = sonslen_226255(typ);
					if (!(i_562814 < LOC6)) goto LA7;
					LOC9 = 0;
					LOC9 = genarg_562069(p, (*ri).kindU.S6.Sons->data[i_562814], (*(*(*typ).N).kindU.S6.Sons->data[i_562814]).kindU.S4.Sym);
					app_177052(&pl, LOC9);
				}
				goto LA4;
				LA7: ;
				{
					trope177009* LOC11;
					LOC11 = 0;
					LOC11 = genargnoparam_562129(p, (*ri).kindU.S6.Sons->data[i_562814]);
					app_177052(&pl, LOC11);
				}
				LA4: ;
				{
					TY553703 LOC16;
					trope177009* LOC17;
					if (!(i_562814 < (NI64)(length - 1))) goto LA14;
					memset((void*)LOC16, 0, sizeof(LOC16));
					LOC17 = 0;
					LOC17 = ropef_177107(((NimStringDesc*) &TMP3402), LOC16, 0);
					app_177052(&pl, LOC17);
				}
				LA14: ;
				res_563419 += 1;
			} LA3: ;
		}
	}
	rawproc = getrawproctype_562690(p, typ);
	{
		if (!(((*typ).Flags &(1<<((((NU8) 14))&31)))!=0)) goto LA20;
		callpattern = copyString(((NimStringDesc*) &TMP3813));
	}
	goto LA18;
	LA20: ;
	{
		callpattern = copyString(((NimStringDesc*) &TMP3814));
	}
	LA18: ;
	{
		if (!!(((*typ).Sons->data[0] == NIM_NIL))) goto LA25;
		{
			NIM_BOOL LOC29;
			LOC29 = 0;
			LOC29 = isinvalidreturntype_554176((*typ).Sons->data[0]);
			if (!LOC29) goto LA30;
			{
				NI LOC34;
				TY553703 LOC37;
				trope177009* LOC38;
				LOC34 = 0;
				LOC34 = sonslen_226249(ri);
				if (!(1 < LOC34)) goto LA35;
				memset((void*)LOC37, 0, sizeof(LOC37));
				LOC38 = 0;
				LOC38 = ropef_177107(((NimStringDesc*) &TMP3402), LOC37, 0);
				app_177052(&pl, LOC38);
			}
			LA35: ;
			{
				NIM_BOOL LOC41;
				NIM_BOOL LOC43;
				trope177009* LOC56;
				NimStringDesc* LOC57;
				TY556046 LOC58;
				LOC41 = 0;
				LOC41 = ((3 &(1<<(((*d).K)&15)))!=0);
				if (LOC41) goto LA42;
				LOC43 = 0;
				LOC43 = leftappearsonrightside_561396(le, ri);
				LOC41 = !(LOC43);
				LA42: ;
				if (!LOC41) goto LA44;
				{
					if (!((*d).K == ((NU8) 0))) goto LA48;
					gettemp_558246(p, (*typ).Sons->data[0], d, NIM_TRUE);
				}
				goto LA46;
				LA48: ;
				{
					NIM_BOOL LOC51;
					NIM_BOOL LOC53;
					LOC51 = 0;
					LOC51 = !(((130 &(1<<(((*d).K)&15)))!=0));
					if (!(LOC51)) goto LA52;
					LOC53 = 0;
					LOC53 = hasnoinit_561468(ri);
					LOC51 = !(LOC53);
					LA52: ;
					if (!LOC51) goto LA54;
					resetloc_559870(p, d);
				}
				goto LA46;
				LA54: ;
				LA46: ;
				LOC56 = 0;
				LOC56 = addrloc_559664((&(*d)));
				app_177052(&pl, LOC56);
				LOC57 = 0;
				LOC57 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC57, callpattern);
appendString(LOC57, ((NimStringDesc*) &TMP3466));
				memset((void*)LOC58, 0, sizeof(LOC58));
				LOC58[0] = op.R;
				LOC58[1] = pl;
				LOC58[2] = addcomma_562695(pl);
				LOC58[3] = rawproc;
				linef_553122(p, ((NU8) 2), LOC57, LOC58, 4);
			}
			goto LA39;
			LA44: ;
			{
				tloc225830 tmp;
				trope177009* LOC60;
				NimStringDesc* LOC61;
				TY556046 LOC62;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_558246(p, (*typ).Sons->data[0], (&tmp), NIM_TRUE);
				LOC60 = 0;
				LOC60 = addrloc_559664((&tmp));
				app_177052(&pl, LOC60);
				LOC61 = 0;
				LOC61 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC61, callpattern);
appendString(LOC61, ((NimStringDesc*) &TMP3466));
				memset((void*)LOC62, 0, sizeof(LOC62));
				LOC62[0] = op.R;
				LOC62[1] = pl;
				LOC62[2] = addcomma_562695(pl);
				LOC62[3] = rawproc;
				linef_553122(p, ((NU8) 2), LOC61, LOC62, 4);
				genassignment_561330(p, (&(*d)), (&tmp), 0);
			}
			LA39: ;
		}
		goto LA27;
		LA30: ;
		{
			tloc225830 list;
			TY556046 LOC68;
			{
				if (!((*d).K == ((NU8) 0))) goto LA66;
				gettemp_558246(p, (*typ).Sons->data[0], d, NIM_FALSE);
			}
			LA66: ;
			memset((void*)(&list), 0, sizeof(list));
			initloc_552361((&list), ((NU8) 10), (*d).T, ((NU8) 0));
			memset((void*)LOC68, 0, sizeof(LOC68));
			LOC68[0] = op.R;
			LOC68[1] = pl;
			LOC68[2] = addcomma_562695(pl);
			LOC68[3] = rawproc;
			list.R = ropef_177107(callpattern, LOC68, 4);
			genassignment_561330(p, (&(*d)), (&list), 0);
		}
		LA27: ;
	}
	goto LA23;
	LA25: ;
	{
		NimStringDesc* LOC70;
		TY556046 LOC71;
		LOC70 = 0;
		LOC70 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC70, callpattern);
appendString(LOC70, ((NimStringDesc*) &TMP3466));
		memset((void*)LOC71, 0, sizeof(LOC71));
		LOC71[0] = op.R;
		LOC71[1] = pl;
		LOC71[2] = addcomma_562695(pl);
		LOC71[3] = rawproc;
		linef_553122(p, ((NU8) 2), LOC70, LOC71, 4);
	}
	LA23: ;
}

N_NIMCALL(void, fixupcall_561539)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* d, trope177009* callee, trope177009* params) {
	trope177009* pl;
	TY554018 LOC1;
	TY553703 LOC2;
	ttype225852* typ;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = callee;
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC1[1] = ropef_177107(((NimStringDesc*) &TMP3412), LOC2, 0);
	LOC1[2] = params;
	pl = con_177045(LOC1, 3);
	typ = skiptypes_230245((*(*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_554176((*typ).Sons->data[0]);
			if (!LOC9) goto LA10;
			{
				TY553703 LOC16;
				trope177009* LOC17;
				if (!!((params == NIM_NIL))) goto LA14;
				memset((void*)LOC16, 0, sizeof(LOC16));
				LOC17 = 0;
				LOC17 = ropef_177107(((NimStringDesc*) &TMP3402), LOC16, 0);
				app_177052(&pl, LOC17);
			}
			LA14: ;
			{
				NIM_BOOL LOC20;
				NIM_BOOL LOC22;
				trope177009* LOC35;
				TY553703 LOC36;
				trope177009* LOC37;
				LOC20 = 0;
				LOC20 = ((3 &(1<<(((*d).K)&15)))!=0);
				if (LOC20) goto LA21;
				LOC22 = 0;
				LOC22 = leftappearsonrightside_561396(le, ri);
				LOC20 = !(LOC22);
				LA21: ;
				if (!LOC20) goto LA23;
				{
					if (!((*d).K == ((NU8) 0))) goto LA27;
					gettemp_558246(p, (*typ).Sons->data[0], d, NIM_TRUE);
				}
				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_561468(ri);
					LOC30 = !(LOC32);
					LA31: ;
					if (!LOC30) goto LA33;
					resetloc_559870(p, d);
				}
				goto LA25;
				LA33: ;
				LA25: ;
				LOC35 = 0;
				LOC35 = addrloc_559664((&(*d)));
				app_177052(&pl, LOC35);
				memset((void*)LOC36, 0, sizeof(LOC36));
				LOC37 = 0;
				LOC37 = ropef_177107(((NimStringDesc*) &TMP3818), LOC36, 0);
				app_177052(&pl, LOC37);
				line_553100(p, ((NU8) 2), pl);
			}
			goto LA18;
			LA23: ;
			{
				tloc225830 tmp;
				trope177009* LOC39;
				TY553703 LOC40;
				trope177009* LOC41;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_558246(p, (*typ).Sons->data[0], (&tmp), NIM_TRUE);
				LOC39 = 0;
				LOC39 = addrloc_559664((&tmp));
				app_177052(&pl, LOC39);
				memset((void*)LOC40, 0, sizeof(LOC40));
				LOC41 = 0;
				LOC41 = ropef_177107(((NimStringDesc*) &TMP3818), LOC40, 0);
				app_177052(&pl, LOC41);
				line_553100(p, ((NU8) 2), pl);
				genassignment_561330(p, (&(*d)), (&tmp), 0);
			}
			LA18: ;
		}
		goto LA7;
		LA10: ;
		{
			TY553703 LOC43;
			trope177009* LOC44;
			tloc225830 list;
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC44 = 0;
			LOC44 = ropef_177107(((NimStringDesc*) &TMP3411), LOC43, 0);
			app_177052(&pl, LOC44);
			{
				if (!((*d).K == ((NU8) 0))) goto LA47;
				gettemp_558246(p, (*typ).Sons->data[0], d, NIM_FALSE);
			}
			LA47: ;
			memset((void*)(&list), 0, sizeof(list));
			initloc_552361((&list), ((NU8) 10), (*d).T, ((NU8) 0));
			list.R = pl;
			genassignment_561330(p, (&(*d)), (&list), 0);
		}
		LA7: ;
	}
	goto LA3;
	LA5: ;
	{
		TY553703 LOC50;
		trope177009* LOC51;
		memset((void*)LOC50, 0, sizeof(LOC50));
		LOC51 = 0;
		LOC51 = ropef_177107(((NimStringDesc*) &TMP3818), LOC50, 0);
		app_177052(&pl, LOC51);
		line_553100(p, ((NU8) 2), pl);
	}
	LA3: ;
}

N_NIMCALL(void, geninfixcall_563441)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* d) {
	tloc225830 op;
	tloc225830 a;
	trope177009* pl;
	ttype225852* typ;
	NI length;
	tsym225846* param;
	trope177009* LOC1;
	trope177009* params;
	memset((void*)(&op), 0, sizeof(op));
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*ri).kindU.S6.Sons->data[0], (&op));
	pl = NIM_NIL;
	typ = skiptypes_230245((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_226249(ri);
	param = (*(*(*typ).N).kindU.S6.Sons->data[1]).kindU.S4.Sym;
	LOC1 = 0;
	LOC1 = genarg_562069(p, (*ri).kindU.S6.Sons->data[1], param);
	app_177052(&pl, LOC1);
	{
		ttype225852* LOC4;
		TY553703 LOC7;
		trope177009* LOC8;
		LOC4 = 0;
		LOC4 = skiptypes_230245((*param).Typ, 2048);
		if (!((*LOC4).Kind == ((NU8) 21))) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC8 = 0;
		LOC8 = ropef_177107(((NimStringDesc*) &TMP3817), LOC7, 0);
		app_177052(&pl, LOC8);
	}
	goto LA2;
	LA5: ;
	{
		TY553703 LOC10;
		trope177009* LOC11;
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC11 = 0;
		LOC11 = ropef_177107(((NimStringDesc*) &TMP3571), LOC10, 0);
		app_177052(&pl, LOC11);
	}
	LA2: ;
	app_177052(&pl, op.R);
	params = 0;
	{
		NI i_563885;
		NI HEX3Atmp_564264;
		NI res_564267;
		i_563885 = 0;
		HEX3Atmp_564264 = 0;
		HEX3Atmp_564264 = (NI64)(length - 1);
		res_564267 = 2;
		{
			while (1) {
				if (!(res_564267 <= HEX3Atmp_564264)) goto LA14;
				i_563885 = res_564267;
				{
					TY553703 LOC19;
					trope177009* LOC20;
					if (!!((params == NIM_NIL))) goto LA17;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC20 = 0;
					LOC20 = ropef_177107(((NimStringDesc*) &TMP3402), LOC19, 0);
					app_177052(&params, LOC20);
				}
				LA17: ;
				{
					NI LOC23;
					trope177009* LOC26;
					LOC23 = 0;
					LOC23 = sonslen_226255(typ);
					if (!(i_563885 < LOC23)) goto LA24;
					LOC26 = 0;
					LOC26 = genarg_562069(p, (*ri).kindU.S6.Sons->data[i_563885], (*(*(*typ).N).kindU.S6.Sons->data[i_563885]).kindU.S4.Sym);
					app_177052(&params, LOC26);
				}
				goto LA21;
				LA24: ;
				{
					trope177009* LOC28;
					LOC28 = 0;
					LOC28 = genargnoparam_562129(p, (*ri).kindU.S6.Sons->data[i_563885]);
					app_177052(&params, LOC28);
				}
				LA21: ;
				res_564267 += 1;
			} LA14: ;
		}
	}
	fixupcall_561539(p, le, ri, d, pl, params);
}

N_NIMCALL(void, gennamedparamcall_564281)(tcproc549031* p, tnode225816* ri, tloc225830* d) {
	tloc225830 op;
	tloc225830 a;
	trope177009* pl;
	TY553703 LOC1;
	ttype225852* typ;
	NI length;
	memset((void*)(&op), 0, sizeof(op));
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*ri).kindU.S6.Sons->data[0], (&op));
	memset((void*)LOC1, 0, sizeof(LOC1));
	pl = ropef_177107(((NimStringDesc*) &TMP3819), LOC1, 0);
	typ = skiptypes_230245((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_226249(ri);
	{
		trope177009* LOC6;
		TY553703 LOC7;
		trope177009* LOC8;
		if (!(1 < length)) goto LA4;
		LOC6 = 0;
		LOC6 = genarg_562069(p, (*ri).kindU.S6.Sons->data[1], (*(*(*typ).N).kindU.S6.Sons->data[1]).kindU.S4.Sym);
		app_177052(&pl, LOC6);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC8 = 0;
		LOC8 = ropef_177107(((NimStringDesc*) &TMP3403), LOC7, 0);
		app_177052(&pl, LOC8);
	}
	LA4: ;
	app_177052(&pl, op.R);
	{
		TY553703 LOC13;
		trope177009* LOC14;
		trope177009* LOC15;
		if (!(2 < length)) goto LA11;
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC14 = 0;
		LOC14 = ropef_177107(((NimStringDesc*) &TMP3820), LOC13, 0);
		app_177052(&pl, LOC14);
		LOC15 = 0;
		LOC15 = genarg_562069(p, (*ri).kindU.S6.Sons->data[2], (*(*(*typ).N).kindU.S6.Sons->data[2]).kindU.S4.Sym);
		app_177052(&pl, LOC15);
	}
	LA11: ;
	{
		NI i_564718;
		NI HEX3Atmp_565216;
		NI res_565219;
		i_564718 = 0;
		HEX3Atmp_565216 = 0;
		HEX3Atmp_565216 = (NI64)(length - 1);
		res_565219 = 3;
		{
			while (1) {
				tsym225846* param;
				TY553703 LOC24;
				trope177009* LOC25;
				TY553703 LOC26;
				trope177009* LOC27;
				trope177009* LOC28;
				if (!(res_565219 <= HEX3Atmp_565216)) goto LA18;
				i_564718 = res_565219;
				{
					NI LOC21;
					LOC21 = 0;
					LOC21 = sonslen_226255(typ);
					if (!(LOC21 <= i_564718)) goto LA22;
					internalerror_197987((*ri).Info, ((NimStringDesc*) &TMP3821));
				}
				LA22: ;
				param = (*(*(*typ).N).kindU.S6.Sons->data[i_564718]).kindU.S4.Sym;
				memset((void*)LOC24, 0, sizeof(LOC24));
				LOC25 = 0;
				LOC25 = ropef_177107(((NimStringDesc*) &TMP3403), LOC24, 0);
				app_177052(&pl, LOC25);
				app_177060(&pl, (*(*param).Name).S);
				memset((void*)LOC26, 0, sizeof(LOC26));
				LOC27 = 0;
				LOC27 = ropef_177107(((NimStringDesc*) &TMP3820), LOC26, 0);
				app_177052(&pl, LOC27);
				LOC28 = 0;
				LOC28 = genarg_562069(p, (*ri).kindU.S6.Sons->data[i_564718], param);
				app_177052(&pl, LOC28);
				res_565219 += 1;
			} LA18: ;
		}
	}
	{
		if (!!(((*typ).Sons->data[0] == NIM_NIL))) goto LA31;
		{
			NIM_BOOL LOC35;
			LOC35 = 0;
			LOC35 = isinvalidreturntype_554176((*typ).Sons->data[0]);
			if (!LOC35) goto LA36;
			{
				NI LOC40;
				TY553703 LOC43;
				trope177009* LOC44;
				LOC40 = 0;
				LOC40 = sonslen_226249(ri);
				if (!(1 < LOC40)) goto LA41;
				memset((void*)LOC43, 0, sizeof(LOC43));
				LOC44 = 0;
				LOC44 = ropef_177107(((NimStringDesc*) &TMP3403), LOC43, 0);
				app_177052(&pl, LOC44);
			}
			LA41: ;
			{
				TY553703 LOC53;
				trope177009* LOC54;
				trope177009* LOC55;
				TY553703 LOC56;
				trope177009* LOC57;
				if (!((3 &(1<<(((*d).K)&15)))!=0)) goto LA47;
				{
					if (!((*d).K == ((NU8) 0))) goto LA51;
					gettemp_558246(p, (*typ).Sons->data[0], d, NIM_TRUE);
				}
				LA51: ;
				memset((void*)LOC53, 0, sizeof(LOC53));
				LOC54 = 0;
				LOC54 = ropef_177107(((NimStringDesc*) &TMP3822), LOC53, 0);
				app_177052(&pl, LOC54);
				LOC55 = 0;
				LOC55 = addrloc_559664((&(*d)));
				app_177052(&pl, LOC55);
				memset((void*)LOC56, 0, sizeof(LOC56));
				LOC57 = 0;
				LOC57 = ropef_177107(((NimStringDesc*) &TMP3823), LOC56, 0);
				app_177052(&pl, LOC57);
				line_553100(p, ((NU8) 2), pl);
			}
			goto LA45;
			LA47: ;
			{
				tloc225830 tmp;
				trope177009* LOC59;
				TY553703 LOC60;
				trope177009* LOC61;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_558246(p, (*typ).Sons->data[0], (&tmp), NIM_TRUE);
				LOC59 = 0;
				LOC59 = addrloc_559664((&tmp));
				app_177052(&pl, LOC59);
				memset((void*)LOC60, 0, sizeof(LOC60));
				LOC61 = 0;
				LOC61 = ropef_177107(((NimStringDesc*) &TMP3823), LOC60, 0);
				app_177052(&pl, LOC61);
				line_553100(p, ((NU8) 2), pl);
				genassignment_561330(p, (&(*d)), (&tmp), 0);
			}
			LA45: ;
		}
		goto LA33;
		LA36: ;
		{
			TY553703 LOC63;
			trope177009* LOC64;
			tloc225830 list;
			memset((void*)LOC63, 0, sizeof(LOC63));
			LOC64 = 0;
			LOC64 = ropef_177107(((NimStringDesc*) &TMP3824), LOC63, 0);
			app_177052(&pl, LOC64);
			{
				if (!((*d).K == ((NU8) 0))) goto LA67;
				gettemp_558246(p, (*typ).Sons->data[0], d, NIM_FALSE);
			}
			LA67: ;
			memset((void*)(&list), 0, sizeof(list));
			initloc_552361((&list), ((NU8) 10), NIM_NIL, ((NU8) 0));
			list.R = pl;
			genassignment_561330(p, (&(*d)), (&list), 0);
		}
		LA33: ;
	}
	goto LA29;
	LA31: ;
	{
		TY553703 LOC70;
		trope177009* LOC71;
		memset((void*)LOC70, 0, sizeof(LOC70));
		LOC71 = 0;
		LOC71 = ropef_177107(((NimStringDesc*) &TMP3823), LOC70, 0);
		app_177052(&pl, LOC71);
		line_553100(p, ((NU8) 2), pl);
	}
	LA29: ;
}

N_NIMCALL(void, genprefixcall_562149)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* d) {
	tloc225830 op;
	trope177009* params;
	ttype225852* typ;
	NI length;
	memset((void*)(&op), 0, sizeof(op));
	initlocexpr_561352(p, (*ri).kindU.S6.Sons->data[0], (&op));
	params = 0;
	typ = skiptypes_230245((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_226249(ri);
	{
		NI i_562414;
		NI HEX3Atmp_562663;
		NI res_562666;
		i_562414 = 0;
		HEX3Atmp_562663 = 0;
		HEX3Atmp_562663 = (NI64)(length - 1);
		res_562666 = 1;
		{
			while (1) {
				if (!(res_562666 <= HEX3Atmp_562663)) goto LA3;
				i_562414 = res_562666;
				{
					{
						NIM_BOOL LOC7;
						LOC7 = 0;
						LOC7 = iscompiletimeonly_273466((*(*ri).kindU.S6.Sons->data[i_562414]).Typ);
						if (!LOC7) goto LA8;
						goto LA4;
					}
					LA8: ;
					{
						TY553703 LOC14;
						trope177009* LOC15;
						if (!!((params == NIM_NIL))) goto LA12;
						memset((void*)LOC14, 0, sizeof(LOC14));
						LOC15 = 0;
						LOC15 = ropef_177107(((NimStringDesc*) &TMP3402), LOC14, 0);
						app_177052(&params, LOC15);
					}
					LA12: ;
					{
						NI LOC18;
						trope177009* LOC21;
						LOC18 = 0;
						LOC18 = sonslen_226255(typ);
						if (!(i_562414 < LOC18)) goto LA19;
						LOC21 = 0;
						LOC21 = genarg_562069(p, (*ri).kindU.S6.Sons->data[i_562414], (*(*(*typ).N).kindU.S6.Sons->data[i_562414]).kindU.S4.Sym);
						app_177052(&params, LOC21);
					}
					goto LA16;
					LA19: ;
					{
						trope177009* LOC23;
						LOC23 = 0;
						LOC23 = genargnoparam_562129(p, (*ri).kindU.S6.Sons->data[i_562414]);
						app_177052(&params, LOC23);
					}
					LA16: ;
				} LA4: ;
				res_562666 += 1;
			} LA3: ;
		}
	}
	fixupcall_561539(p, le, ri, d, op.R, params);
}

static N_INLINE(void, poststmtactions_553608)(tcproc549031* p) {
	trope177009** LOC1;
	LOC1 = 0;
	LOC1 = s_549183(p, ((NU8) 2));
	app_177052(LOC1, (*(*p).Module).Injectstmt);
}

N_NIMCALL(void, gencall_565235)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	{
		if (!((*(*(*e).kindU.S6.Sons->data[0]).Typ).Callconv == ((NU8) 8))) goto LA3;
		genclosurecall_562683(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_226364(e);
		LOC6 = (2 <= LOC10);
		LA9: ;
		if (!LOC6) goto LA11;
		geninfixcall_563441(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_564281(p, e, d);
	}
	goto LA1;
	LA16: ;
	{
		genprefixcall_562149(p, NIM_NIL, e, d);
	}
	LA1: ;
	poststmtactions_553608(p);
}

N_NIMCALL(void, genreset_580695)(tcproc549031* p, tnode225816* n) {
	tloc225830 a;
	TY588896 LOC1;
	ttype225852* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*n).kindU.S6.Sons->data[1], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = addrloc_559664((&a));
	LOC2 = 0;
	LOC2 = skiptypes_230245(a.T, IL64(211106242013440));
	LOC1[1] = gentypeinfo_556602((*p).Module, LOC2);
	linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3816), LOC1, 2);
}

N_NIMCALL(void, genecho_580011)(tcproc549031* p, tnode225816* n) {
	NIM_BOOL LOC6;
	trope177009* args;
	tloc225830 a;
	TY588896 LOC12;
	NimStringDesc* LOC13;
	NI LOC14;
	NimStringDesc* LOC15;
	{
		NimStringDesc* LOC5;
		if (!!(((*n).Kind == ((NU8) 41)))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_198126(TMP3825);
		internalerror_198006(LOC5);
	}
	LA3: ;
	LOC6 = 0;
	LOC6 = includestr_127297((&(*(*p).Module).Headerfiles), ((NimStringDesc*) &TMP3826));
	args = NIM_NIL;
	memset((void*)(&a), 0, sizeof(a));
	{
		NI i_580055;
		NI HEX3Atmp_580083;
		NI LOC8;
		NI res_580086;
		i_580055 = 0;
		HEX3Atmp_580083 = 0;
		LOC8 = 0;
		LOC8 = len_226364(n);
		HEX3Atmp_580083 = (NI64)(LOC8 - 1);
		res_580086 = 0;
		{
			while (1) {
				TY177515 LOC11;
				if (!(res_580086 <= HEX3Atmp_580083)) goto LA10;
				i_580055 = res_580086;
				initlocexpr_561352(p, (*n).kindU.S6.Sons->data[i_580055], (&a));
				memset((void*)LOC11, 0, sizeof(LOC11));
				LOC11[0] = rdloc_559637((&a));
				appf_177115(&args, ((NimStringDesc*) &TMP3827), LOC11, 1);
				res_580086 += 1;
			} LA10: ;
		}
	}
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC13 = 0;
	LOC14 = 0;
	LOC14 = len_226364(n);
	LOC15 = 0;
	LOC15 = nsuRepeatStr(LOC14, ((NimStringDesc*) &TMP3829));
	LOC13 = rawNewString(LOC15->Sup.len + tnl_174613->Sup.len + 0);
appendString(LOC13, LOC15);
appendString(LOC13, tnl_174613);
	LOC12[0] = makecstring_195659(LOC13);
	LOC12[1] = args;
	linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3828), LOC12, 2);
}

N_NIMCALL(void, genseqconstr_581162)(tcproc549031* p, tnode225816* t, tloc225830* d) {
	tloc225830 arr;
	NI LOC5;
	trope177009* LOC6;
	memset((void*)(&arr), 0, sizeof(arr));
	{
		if (!((*d).K == ((NU8) 0))) goto LA3;
		gettemp_558246(p, (*t).Typ, d, NIM_FALSE);
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = sonslen_226249(t);
	LOC6 = 0;
	LOC6 = intliteral_561339(((NI64) (LOC5)));
	gennewseqaux_580818(p, (&(*d)), LOC6);
	{
		NI i_581190;
		NI HEX3Atmp_581213;
		NI LOC8;
		NI res_581216;
		i_581190 = 0;
		HEX3Atmp_581213 = 0;
		LOC8 = 0;
		LOC8 = sonslen_226249(t);
		HEX3Atmp_581213 = (NI64)(LOC8 - 1);
		res_581216 = 0;
		{
			while (1) {
				ttype225852* LOC11;
				ttype225852* LOC12;
				TY588896 LOC13;
				if (!(res_581216 <= HEX3Atmp_581213)) goto LA10;
				i_581190 = res_581216;
				LOC11 = 0;
				LOC11 = skiptypes_230245((*t).Typ, IL64(211106232576256));
				LOC12 = 0;
				LOC12 = elemtype_263656(LOC11);
				initloc_552361((&arr), ((NU8) 7), LOC12, ((NU8) 2));
				memset((void*)LOC13, 0, sizeof(LOC13));
				LOC13[0] = rdloc_559637((&(*d)));
				LOC13[1] = intliteral_561339(((NI64) (i_581190)));
				arr.R = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3535), LOC13, 2);
				arr.S = ((NU8) 2);
				expr_561305(p, (*t).kindU.S6.Sons->data[i_581190], (&arr));
				res_581216 += 1;
			} LA10: ;
		}
	}
	gcusage_580100(t);
}

N_NIMCALL(void, genarrtoseq_581230)(tcproc549031* p, tnode225816* t, tloc225830* d) {
	tloc225830 elem;
	tloc225830 a;
	tloc225830 arr;
	NI l;
	NI64 LOC9;
	trope177009* LOC10;
	memset((void*)(&elem), 0, sizeof(elem));
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&arr), 0, sizeof(arr));
	{
		if (!((*t).Kind == ((NU8) 41))) goto LA3;
		asgnRefNoCycle((void**) (&(*(*t).kindU.S6.Sons->data[1]).Typ), (*t).Typ);
		genseqconstr_581162(p, (*t).kindU.S6.Sons->data[1], d);
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA7;
		gettemp_558246(p, (*t).Typ, d, NIM_FALSE);
	}
	LA7: ;
	LOC9 = 0;
	LOC9 = lengthord_263016((*(*t).kindU.S6.Sons->data[1]).Typ);
	l = ((NI) (LOC9));
	LOC10 = 0;
	LOC10 = intliteral_561339(((NI64) (l)));
	gennewseqaux_580818(p, (&(*d)), LOC10);
	initlocexpr_561352(p, (*t).kindU.S6.Sons->data[1], (&a));
	{
		NI i_581327;
		NI HEX3Atmp_581358;
		NI res_581361;
		i_581327 = 0;
		HEX3Atmp_581358 = 0;
		HEX3Atmp_581358 = (NI64)(l - 1);
		res_581361 = 0;
		{
			while (1) {
				ttype225852* LOC14;
				ttype225852* LOC15;
				TY588896 LOC16;
				ttype225852* LOC17;
				ttype225852* LOC18;
				TY588896 LOC19;
				if (!(res_581361 <= HEX3Atmp_581358)) goto LA13;
				i_581327 = res_581361;
				LOC14 = 0;
				LOC14 = skiptypes_230245((*t).Typ, IL64(211106232576256));
				LOC15 = 0;
				LOC15 = elemtype_263656(LOC14);
				initloc_552361((&elem), ((NU8) 7), LOC15, ((NU8) 2));
				memset((void*)LOC16, 0, sizeof(LOC16));
				LOC16[0] = rdloc_559637((&(*d)));
				LOC16[1] = intliteral_561339(((NI64) (i_581327)));
				elem.R = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3535), LOC16, 2);
				elem.S = ((NU8) 2);
				LOC17 = 0;
				LOC17 = skiptypes_230245((*(*t).kindU.S6.Sons->data[1]).Typ, IL64(211106232576256));
				LOC18 = 0;
				LOC18 = elemtype_263656(LOC17);
				initloc_552361((&arr), ((NU8) 7), LOC18, a.S);
				memset((void*)LOC19, 0, sizeof(LOC19));
				LOC19[0] = rdloc_559637((&a));
				LOC19[1] = intliteral_561339(((NI64) (i_581327)));
				arr.R = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3479), LOC19, 2);
				genassignment_561330(p, (&elem), (&arr), 5);
				res_581361 += 1;
			} LA13: ;
		}
	}
	BeforeRet: ;
}

N_NIMCALL(void, gendeepcopy_575338)(tcproc549031* p, tloc225830* dest, tloc225830* src) {
	ttype225852* ty;
	ty = skiptypes_230245((*dest).T, IL64(211106242013440));
	switch ((*ty).Kind) {
	case ((NU8) 21):
	case ((NU8) 22):
	case ((NU8) 25):
	case ((NU8) 18):
	case ((NU8) 17):
	case ((NU8) 16):
	case ((NU8) 4):
	{
		TY554018 LOC2;
		memset((void*)LOC2, 0, sizeof(LOC2));
		LOC2[0] = addrloc_559664(dest);
		LOC2[1] = addrloc_559664(src);
		LOC2[2] = gentypeinfo_556602((*p).Module, (*dest).T);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3891), LOC2, 3);
	}
	break;
	case ((NU8) 24):
	case ((NU8) 28):
	{
		TY554018 LOC4;
		memset((void*)LOC4, 0, sizeof(LOC4));
		LOC4[0] = addrloc_559664(dest);
		LOC4[1] = rdloc_559637(src);
		LOC4[2] = gentypeinfo_556602((*p).Module, (*dest).T);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3892), LOC4, 3);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		TY554018 LOC6;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = addrloc_559664(dest);
		LOC6[1] = addrloc_559664(src);
		LOC6[2] = gentypeinfo_556602((*p).Module, (*dest).T);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3893), LOC6, 3);
	}
	break;
	case ((NU8) 19):
	{
		{
			NU8 LOC10;
			TY554018 LOC13;
			NI64 LOC14;
			LOC10 = 0;
			LOC10 = maptype_554055(ty);
			if (!(LOC10 == ((NU8) 17))) goto LA11;
			usestringh_552459((*p).Module);
			memset((void*)LOC13, 0, sizeof(LOC13));
			LOC13[0] = rdloc_559637(dest);
			LOC13[1] = rdloc_559637(src);
			LOC14 = 0;
			LOC14 = getsize_263199((*dest).T);
			LOC13[2] = torope_177082(LOC14);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3583), LOC13, 3);
		}
		goto LA8;
		LA11: ;
		{
			TY588896 LOC16;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_559637(dest);
			LOC16[1] = rdloc_559637(src);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC16, 2);
		}
		LA8: ;
	}
	break;
	case ((NU8) 26):
	case ((NU8) 2):
	case ((NU8) 1):
	case ((NU8) 14):
	case ((NU8) 29):
	case ((NU8) 31) ... ((NU8) 44):
	case ((NU8) 20):
	case ((NU8) 23):
	{
		TY588896 LOC18;
		memset((void*)LOC18, 0, sizeof(LOC18));
		LOC18[0] = rdloc_559637(dest);
		LOC18[1] = rdloc_559637(src);
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC18, 2);
	}
	break;
	default:
	{
		NimStringDesc* LOC20;
		LOC20 = 0;
		LOC20 = rawNewString(reprEnum((*ty).Kind, (&NTI225258))->Sup.len + 13);
appendString(LOC20, ((NimStringDesc*) &TMP3894));
appendString(LOC20, reprEnum((*ty).Kind, (&NTI225258)));
		internalerror_198006(LOC20);
	}
	break;
	}
}

N_NIMCALL(void, genmagicexpr_584474)(tcproc549031* p, tnode225816* e, tloc225830* d, NU16 op) {
	trope177009* line;
	trope177009* filen;
	line = 0;
	filen = 0;
	switch (op) {
	case ((NU16) 135):
	case ((NU16) 134):
	{
		genandor_579938(p, e, d, op);
	}
	break;
	case ((NU16) 105) ... ((NU16) 125):
	{
		unaryarith_577895(p, e, d, op);
	}
	break;
	case ((NU16) 101) ... ((NU16) 104):
	{
		unaryarithoverflow_576890(p, e, d, op);
	}
	break;
	case ((NU16) 47) ... ((NU16) 50):
	{
		binaryfloatarith_583958(p, e, d, op);
	}
	break;
	case ((NU16) 51) ... ((NU16) 99):
	{
		binaryarith_577042(p, e, d, op);
	}
	break;
	case ((NU16) 100):
	{
		geneqproc_577444(p, e, d);
	}
	break;
	case ((NU16) 37) ... ((NU16) 46):
	{
		binaryarithoverflow_576502(p, e, d, op);
	}
	break;
	case ((NU16) 160):
	{
		genrepr_581781(p, e, d);
	}
	break;
	case ((NU16) 262):
	{
		gengettypeinfo_581893(p, e, d);
	}
	break;
	case ((NU16) 167):
	{
		genswap_582287(p, e, d);
	}
	break;
	case ((NU16) 18):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA14;
			unaryexpr_576440(p, e, d, ((NimStringDesc*) &TMP3701));
		}
		goto LA12;
		LA14: ;
		{
			unaryexpr_576440(p, e, d, ((NimStringDesc*) &TMP3702));
		}
		LA12: ;
	}
	break;
	case ((NU16) 20):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA20;
			binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3703));
		}
		goto LA18;
		LA20: ;
		{
			binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3704));
		}
		LA18: ;
	}
	break;
	case ((NU16) 19):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA26;
			binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3705));
		}
		goto LA24;
		LA26: ;
		{
			binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3706));
		}
		LA24: ;
	}
	break;
	case ((NU16) 21):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA32;
			binarystmt_575515(p, e, d, ((NimStringDesc*) &TMP3708));
		}
		goto LA30;
		LA32: ;
		{
			ttype225852* LOC35;
			LOC35 = 0;
			LOC35 = skiptypes_230245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
			if (!((*LOC35).Kind == ((NU8) 35))) goto LA36;
			binarystmt_575515(p, e, d, ((NimStringDesc*) &TMP3709));
		}
		goto LA30;
		LA36: ;
		{
			binarystmt_575515(p, e, d, ((NimStringDesc*) &TMP3710));
		}
		LA30: ;
	}
	break;
	case ((NU16) 22):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA42;
			binarystmt_575515(p, e, d, ((NimStringDesc*) &TMP3711));
		}
		goto LA40;
		LA42: ;
		{
			ttype225852* LOC45;
			LOC45 = 0;
			LOC45 = skiptypes_230245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
			if (!((*LOC45).Kind == ((NU8) 35))) goto LA46;
			binarystmt_575515(p, e, d, ((NimStringDesc*) &TMP3712));
		}
		goto LA40;
		LA46: ;
		{
			binarystmt_575515(p, e, d, ((NimStringDesc*) &TMP3713));
		}
		LA40: ;
	}
	break;
	case ((NU16) 146):
	{
		genstrconcat_580115(p, e, d);
	}
	break;
	case ((NU16) 155):
	{
		binarystmt_575515(p, e, d, ((NimStringDesc*) &TMP3718));
	}
	break;
	case ((NU16) 156):
	{
		genstrappend_580309(p, e, d);
	}
	break;
	case ((NU16) 157):
	{
		genseqelemappend_580589(p, e, d);
	}
	break;
	case ((NU16) 136):
	{
		genstrequals_583805(p, e, d);
	}
	break;
	case ((NU16) 137):
	{
		binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3725));
	}
	break;
	case ((NU16) 138):
	{
		binaryexpr_575669(p, e, d, ((NimStringDesc*) &TMP3726));
	}
	break;
	case ((NU16) 168):
	{
		genisnil_577853(p, e, d);
	}
	break;
	case ((NU16) 128):
	{
		gendollar_581917(p, e, d, ((NimStringDesc*) &TMP3729));
	}
	break;
	case ((NU16) 129):
	{
		gendollar_581917(p, e, d, ((NimStringDesc*) &TMP3730));
	}
	break;
	case ((NU16) 127):
	{
		gendollar_581917(p, e, d, ((NimStringDesc*) &TMP3731));
	}
	break;
	case ((NU16) 126):
	{
		gendollar_581917(p, e, d, ((NimStringDesc*) &TMP3732));
	}
	break;
	case ((NU16) 130):
	{
		gendollar_581917(p, e, d, ((NimStringDesc*) &TMP3733));
	}
	break;
	case ((NU16) 131):
	{
		gendollar_581917(p, e, d, ((NimStringDesc*) &TMP3734));
	}
	break;
	case ((NU16) 132):
	{
		expr_561305(p, (*e).kindU.S6.Sons->data[1], d);
	}
	break;
	case ((NU16) 133):
	{
		genrepr_581781(p, e, d);
	}
	break;
	case ((NU16) 9):
	{
		genof_581744(p, e, d);
	}
	break;
	case ((NU16) 24):
	{
		gennew_580777(p, e);
	}
	break;
	case ((NU16) 25):
	{
		gennewfinalize_581375(p, e);
	}
	break;
	case ((NU16) 26):
	{
		gennewseq_580855(p, e);
	}
	break;
	case ((NU16) 6):
	{
		ttype225852* t;
		TY177515 LOC70;
		trope177009* LOC71;
		t = skiptypes_230245((*(*e).kindU.S6.Sons->data[1]).Typ, 256);
		memset((void*)LOC70, 0, sizeof(LOC70));
		LOC70[0] = gettypedesc_556307((*p).Module, t);
		LOC71 = 0;
		LOC71 = ropef_177107(((NimStringDesc*) &TMP3750), LOC70, 1);
		putintodest_575477(p, d, (*e).Typ, LOC71);
	}
	break;
	case ((NU16) 34):
	{
		gensomecast_583392(p, e, d);
	}
	break;
	case ((NU16) 23):
	{
		genord_583383(p, e, d);
	}
	break;
	case ((NU16) 29):
	case ((NU16) 5):
	case ((NU16) 28):
	case ((NU16) 30):
	case ((NU16) 27):
	{
		genarraylen_581958(p, e, d, op);
	}
	break;
	case ((NU16) 35):
	{
		unarystmt_575572(p, e, d, ((NimStringDesc*) &TMP3764));
	}
	break;
	case ((NU16) 36):
	{
		unarystmt_575572(p, e, d, ((NimStringDesc*) &TMP3765));
	}
	break;
	case ((NU16) 162):
	{
		gensetlengthstr_582278(p, e, d);
	}
	break;
	case ((NU16) 163):
	{
		gensetlengthseq_582074(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_583255(p, e, d, op);
	}
	break;
	case ((NU16) 172):
	case ((NU16) 173):
	case ((NU16) 170):
	case ((NU16) 171):
	case ((NU16) 161):
	case ((NU16) 174):
	{
		tsym225846* opr;
		opr = (*(*e).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		{
			NimStringDesc* LOC85;
			trope177009* LOC86;
			if (!!((((*opr).Loc.Flags &(1<<((((NU8) 3))&7)))!=0))) goto LA83;
			LOC85 = 0;
			LOC85 = ropetostr_177101((*opr).Loc.R);
			LOC86 = 0;
			LOC86 = cgsym_552608((*p).Module, LOC85);
		}
		LA83: ;
		gencall_565235(p, e, d);
	}
	break;
	case ((NU16) 175):
	{
		genreset_580695(p, e);
	}
	break;
	case ((NU16) 10):
	{
		tnode225816* LOC89;
		tnode225816* LOC90;
		LOC89 = 0;
		LOC89 = HEX5BHEX5D_226698(e, 1);
		LOC90 = 0;
		LOC90 = skipconv_273732(LOC89);
		genecho_580011(p, LOC90);
	}
	break;
	case ((NU16) 169):
	{
		genarrtoseq_581230(p, e, d);
	}
	break;
	case ((NU16) 228) ... ((NU16) 260):
	{
		localerror_197955((*e).Info, ((NU16) 212), (*(*(*(*e).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
	}
	break;
	case ((NU16) 12) ... ((NU16) 17):
	{
		localerror_197955((*e).Info, ((NU16) 224), (*(*(*(*e).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
	}
	break;
	case ((NU16) 213):
	{
		tnode225816* n;
		n = wrapprocforspawn_426897((*(*p).Module).Module, e, (*e).Typ, NIM_NIL, NIM_NIL);
		expr_561305(p, n, d);
	}
	break;
	case ((NU16) 166):
	{
		tnode225816* n;
		n = liftparallel_485972((*(*p).Module).Module, e);
		expr_561305(p, n, d);
	}
	break;
	case ((NU16) 214):
	{
		tloc225830 a;
		tloc225830 b;
		tnode225816* x;
		memset((void*)(&a), 0, sizeof(a));
		memset((void*)(&b), 0, sizeof(b));
		{
			tnode225816* LOC99;
			tnode225816* LOC102;
			LOC99 = 0;
			LOC99 = HEX5BHEX5D_226698(e, 1);
			if (!((*LOC99).Kind == ((NU8) 63) || (*LOC99).Kind == ((NU8) 64))) goto LA100;
			LOC102 = 0;
			LOC102 = HEX5BHEX5D_226698(e, 1);
			x = HEX5BHEX5D_226698(LOC102, 0);
		}
		goto LA97;
		LA100: ;
		{
			x = HEX5BHEX5D_226698(e, 1);
		}
		LA97: ;
		initlocexpr_561352(p, x, (&a));
		initlocexpr_561352(p, (*e).kindU.S6.Sons->data[2], (&b));
		gendeepcopy_575338(p, (&a), (&b));
	}
	break;
	default:
	{
		NimStringDesc* LOC105;
		LOC105 = 0;
		LOC105 = rawNewString(reprEnum(op, (&NTI225532))->Sup.len + 14);
appendString(LOC105, ((NimStringDesc*) &TMP3895));
appendString(LOC105, reprEnum(op, (&NTI225532)));
		internalerror_197987((*e).Info, LOC105);
	}
	break;
	}
}

N_NIMCALL(trope177009*, gensetnode_574497)(tcproc549031* p, tnode225816* n) {
	trope177009* result;
	tbitset283012* cs;
	NI size;
	NI64 LOC1;
	result = 0;
	cs = 0;
	LOC1 = 0;
	LOC1 = getsize_263199((*n).Typ);
	size = ((NI) (LOC1));
	tobitset_284004(n, (&cs));
	{
		NI id;
		trope177009* LOC6;
		if (!(8 < size)) goto LA4;
		id = nodetabletestorset_288121((&(*(*p).Module).Datacache), n, gbackendid_224013);
		LOC6 = 0;
		LOC6 = torope_177082(((NI64) (id)));
		result = con_177038(((NimStringDesc*) &TMP3517), LOC6);
		{
			TY554018 LOC11;
			if (!(id == gbackendid_224013)) goto LA9;
			gbackendid_224013 += 1;
			memset((void*)LOC11, 0, sizeof(LOC11));
			LOC11[0] = gettypedesc_556307((*p).Module, (*n).Typ);
			LOC11[1] = result;
			LOC11[2] = genrawsetdata_574444(cs, size);
			appf_177115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3896), LOC11, 3);
		}
		LA9: ;
	}
	goto LA2;
	LA4: ;
	{
		result = genrawsetdata_574444(cs, size);
	}
	LA2: ;
	return result;
}

N_NIMCALL(void, gensetconstr_584832)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 a;
	tloc225830 b;
	tloc225830 idx;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&idx), 0, sizeof(idx));
	{
		trope177009* LOC5;
		if (!(((*e).Flags &(1<<((((NU8) 4))&15)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = gensetnode_574497(p, e);
		putintodest_575477(p, d, (*e).Typ, LOC5);
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!((*d).K == ((NU8) 0))) goto LA9;
			gettemp_558246(p, (*e).Typ, d, NIM_FALSE);
		}
		LA9: ;
		{
			NI64 LOC13;
			TY177515 LOC16;
			LOC13 = 0;
			LOC13 = getsize_263199((*e).Typ);
			if (!(IL64(8) < LOC13)) goto LA14;
			usestringh_552459((*p).Module);
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_559637((&(*d)));
			linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3897), LOC16, 1);
			{
				NI i_584880;
				NI HEX3Atmp_585113;
				NI LOC18;
				NI res_585116;
				i_584880 = 0;
				HEX3Atmp_585113 = 0;
				LOC18 = 0;
				LOC18 = sonslen_226249(e);
				HEX3Atmp_585113 = (NI64)(LOC18 - 1);
				res_585116 = 0;
				{
					while (1) {
						if (!(res_585116 <= HEX3Atmp_585113)) goto LA20;
						i_584880 = res_585116;
						{
							ttype225852* LOC25;
							TY556046 LOC26;
							if (!((*(*e).kindU.S6.Sons->data[i_584880]).Kind == ((NU8) 44))) goto LA23;
							LOC25 = 0;
							LOC25 = getsystype_282030(((NU8) 31));
							gettemp_558246(p, LOC25, (&idx), NIM_FALSE);
							initlocexpr_561352(p, (*(*e).kindU.S6.Sons->data[i_584880]).kindU.S6.Sons->data[0], (&a));
							initlocexpr_561352(p, (*(*e).kindU.S6.Sons->data[i_584880]).kindU.S6.Sons->data[1], (&b));
							memset((void*)LOC26, 0, sizeof(LOC26));
							LOC26[0] = rdloc_559637((&idx));
							LOC26[1] = rdloc_559637((&(*d)));
							LOC26[2] = rdsetelemloc_582353((&a), (*e).Typ);
							LOC26[3] = rdsetelemloc_582353((&b), (*e).Typ);
							linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3898), LOC26, 4);
						}
						goto LA21;
						LA23: ;
						{
							TY588896 LOC28;
							initlocexpr_561352(p, (*e).kindU.S6.Sons->data[i_584880], (&a));
							memset((void*)LOC28, 0, sizeof(LOC28));
							LOC28[0] = rdloc_559637((&(*d)));
							LOC28[1] = rdsetelemloc_582353((&a), (*e).Typ);
							linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3794), LOC28, 2);
						}
						LA21: ;
						res_585116 += 1;
					} LA20: ;
				}
			}
		}
		goto LA11;
		LA14: ;
		{
			NimStringDesc* ts;
			NimStringDesc* LOC30;
			NI64 LOC31;
			NimStringDesc* LOC32;
			TY177515 LOC33;
			LOC30 = 0;
			LOC31 = 0;
			LOC31 = getsize_263199((*e).Typ);
			LOC32 = 0;
			LOC32 = nimInt64ToStr((NI64)(LOC31 * IL64(8)));
			LOC30 = rawNewString(LOC32->Sup.len + 2);
appendString(LOC30, ((NimStringDesc*) &TMP3382));
appendString(LOC30, LOC32);
			ts = LOC30;
			memset((void*)LOC33, 0, sizeof(LOC33));
			LOC33[0] = rdloc_559637((&(*d)));
			linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3493), LOC33, 1);
			{
				NI i_585003;
				NI HEX3Atmp_585119;
				NI LOC35;
				NI res_585122;
				i_585003 = 0;
				HEX3Atmp_585119 = 0;
				LOC35 = 0;
				LOC35 = sonslen_226249(e);
				HEX3Atmp_585119 = (NI64)(LOC35 - 1);
				res_585122 = 0;
				{
					while (1) {
						if (!(res_585122 <= HEX3Atmp_585119)) goto LA37;
						i_585003 = res_585122;
						{
							ttype225852* LOC42;
							NimStringDesc* LOC43;
							TY556046 LOC44;
							if (!((*(*e).kindU.S6.Sons->data[i_585003]).Kind == ((NU8) 44))) goto LA40;
							LOC42 = 0;
							LOC42 = getsystype_282030(((NU8) 31));
							gettemp_558246(p, LOC42, (&idx), NIM_FALSE);
							initlocexpr_561352(p, (*(*e).kindU.S6.Sons->data[i_585003]).kindU.S6.Sons->data[0], (&a));
							initlocexpr_561352(p, (*(*e).kindU.S6.Sons->data[i_585003]).kindU.S6.Sons->data[1], (&b));
							LOC43 = 0;
							LOC43 = rawNewString(ts->Sup.len + ts->Sup.len + 66);
appendString(LOC43, ((NimStringDesc*) &TMP3899));
appendString(LOC43, ts);
appendString(LOC43, ((NimStringDesc*) &TMP3900));
appendString(LOC43, ts);
appendString(LOC43, ((NimStringDesc*) &TMP3775));
							memset((void*)LOC44, 0, sizeof(LOC44));
							LOC44[0] = rdloc_559637((&idx));
							LOC44[1] = rdloc_559637((&(*d)));
							LOC44[2] = rdsetelemloc_582353((&a), (*e).Typ);
							LOC44[3] = rdsetelemloc_582353((&b), (*e).Typ);
							linef_553122(p, ((NU8) 2), LOC43, LOC44, 4);
						}
						goto LA38;
						LA40: ;
						{
							NimStringDesc* LOC46;
							TY588896 LOC47;
							initlocexpr_561352(p, (*e).kindU.S6.Sons->data[i_585003], (&a));
							LOC46 = 0;
							LOC46 = rawNewString(ts->Sup.len + ts->Sup.len + 34);
appendString(LOC46, ((NimStringDesc*) &TMP3901));
appendString(LOC46, ts);
appendString(LOC46, ((NimStringDesc*) &TMP3902));
appendString(LOC46, ts);
appendString(LOC46, ((NimStringDesc*) &TMP3775));
							memset((void*)LOC47, 0, sizeof(LOC47));
							LOC47[0] = rdloc_559637((&(*d)));
							LOC47[1] = rdsetelemloc_582353((&a), (*e).Typ);
							linef_553122(p, ((NU8) 2), LOC46, LOC47, 2);
						}
						LA38: ;
						res_585122 += 1;
					} LA37: ;
				}
			}
		}
		LA11: ;
	}
	LA1: ;
}

N_NIMCALL(void, exprcomplexconst_586230)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	ttype225852* t;
	trope177009* LOC1;
	NI id;
	trope177009* tmp;
	trope177009* LOC2;
	t = getuniquetype_548401((*n).Typ);
	LOC1 = 0;
	LOC1 = gettypedesc_556307((*p).Module, t);
	id = nodetabletestorset_288121((&(*(*p).Module).Datacache), n, gbackendid_224013);
	LOC2 = 0;
	LOC2 = torope_177082(((NI64) (id)));
	tmp = con_177038(((NimStringDesc*) &TMP3517), LOC2);
	{
		TY554018 LOC7;
		if (!(id == gbackendid_224013)) goto LA5;
		gbackendid_224013 += 1;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_556307((*p).Module, t);
		LOC7[1] = tmp;
		LOC7[2] = genconstexpr_584775(p, n);
		appf_177115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3588), LOC7, 3);
	}
	LA5: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA10;
		fillloc_552376(d, ((NU8) 9), t, tmp, ((NU8) 2));
	}
	goto LA8;
	LA10: ;
	{
		putdataintodest_575439(p, d, t, tmp);
	}
	LA8: ;
}

N_NIMCALL(NIM_BOOL, handleconstexpr_584779)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	NIM_BOOL result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NI LOC8;
		ttype225852* t;
		trope177009* LOC12;
		NI id;
		trope177009* LOC13;
		trope177009* LOC14;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC5 = (((*n).Flags &(1<<((((NU8) 4))&15)))!=0);
		if (!(LOC5)) goto LA6;
		LOC5 = ((*d).K == ((NU8) 0));
		LA6: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA7;
		LOC8 = 0;
		LOC8 = len_226364(n);
		LOC4 = (0 < LOC8);
		LA7: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA9;
		LOC3 = isdeepconstexpr_261958(n);
		LA9: ;
		if (!LOC3) goto LA10;
		t = getuniquetype_548401((*n).Typ);
		LOC12 = 0;
		LOC12 = gettypedesc_556307((*p).Module, t);
		id = nodetabletestorset_288121((&(*(*p).Module).Datacache), n, gbackendid_224013);
		LOC13 = 0;
		LOC13 = torope_177082(((NI64) (id)));
		LOC14 = 0;
		LOC14 = con_177038(((NimStringDesc*) &TMP3517), LOC13);
		fillloc_552376(d, ((NU8) 9), t, LOC14, ((NU8) 2));
		{
			TY554018 LOC19;
			if (!(id == gbackendid_224013)) goto LA17;
			gbackendid_224013 += 1;
			memset((void*)LOC19, 0, sizeof(LOC19));
			LOC19[0] = gettypedesc_556307((*p).Module, t);
			LOC19[1] = (*d).R;
			LOC19[2] = genconstexpr_584775(p, n);
			appf_177115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3588), LOC19, 3);
		}
		LA17: ;
		result = NIM_TRUE;
	}
	goto LA1;
	LA10: ;
	{
		result = NIM_FALSE;
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genarrayconstr_585663)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	tloc225830 arr;
	memset((void*)(&arr), 0, sizeof(arr));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = handleconstexpr_584779(p, n, d);
		if (!!(LOC3)) goto LA4;
		{
			if (!((*d).K == ((NU8) 0))) goto LA8;
			gettemp_558246(p, (*n).Typ, d, NIM_FALSE);
		}
		LA8: ;
		{
			NI i_585691;
			NI HEX3Atmp_585714;
			NI LOC11;
			NI res_585717;
			i_585691 = 0;
			HEX3Atmp_585714 = 0;
			LOC11 = 0;
			LOC11 = sonslen_226249(n);
			HEX3Atmp_585714 = (NI64)(LOC11 - 1);
			res_585717 = 0;
			{
				while (1) {
					ttype225852* LOC14;
					ttype225852* LOC15;
					TY588896 LOC16;
					if (!(res_585717 <= HEX3Atmp_585714)) goto LA13;
					i_585691 = res_585717;
					LOC14 = 0;
					LOC14 = skiptypes_230245((*n).Typ, IL64(211106232576256));
					LOC15 = 0;
					LOC15 = elemtype_263656(LOC14);
					initloc_552361((&arr), ((NU8) 7), LOC15, (*d).S);
					memset((void*)LOC16, 0, sizeof(LOC16));
					LOC16[0] = rdloc_559637((&(*d)));
					LOC16[1] = intliteral_561339(((NI64) (i_585691)));
					arr.R = ropef_177107(((NimStringDesc*) &TMP3479), LOC16, 2);
					expr_561305(p, (*n).kindU.S6.Sons->data[i_585691], (&arr));
					res_585717 += 1;
				} LA13: ;
			}
		}
	}
	LA4: ;
}

N_NIMCALL(void, gentupleconstr_585145)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	tloc225830 rec;
	memset((void*)(&rec), 0, sizeof(rec));
	{
		NIM_BOOL LOC3;
		ttype225852* t;
		trope177009* LOC6;
		LOC3 = 0;
		LOC3 = handleconstexpr_584779(p, n, d);
		if (!!(LOC3)) goto LA4;
		t = getuniquetype_548401((*n).Typ);
		LOC6 = 0;
		LOC6 = gettypedesc_556307((*p).Module, t);
		{
			if (!((*d).K == ((NU8) 0))) goto LA9;
			gettemp_558246(p, t, d, NIM_FALSE);
		}
		LA9: ;
		{
			NI i_585174;
			NI HEX3Atmp_585403;
			NI LOC12;
			NI res_585406;
			i_585174 = 0;
			HEX3Atmp_585403 = 0;
			LOC12 = 0;
			LOC12 = sonslen_226249(n);
			HEX3Atmp_585403 = (NI64)(LOC12 - 1);
			res_585406 = 0;
			{
				while (1) {
					tnode225816* it;
					TY588896 LOC19;
					if (!(res_585406 <= HEX3Atmp_585403)) goto LA14;
					i_585174 = res_585406;
					it = (*n).kindU.S6.Sons->data[i_585174];
					{
						if (!((*it).Kind == ((NU8) 34))) goto LA17;
						it = (*it).kindU.S6.Sons->data[1];
					}
					LA17: ;
					initloc_552361((&rec), ((NU8) 7), (*it).Typ, (*d).S);
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = rdloc_559637((&(*d)));
					LOC19[1] = torope_177082(((NI64) (i_585174)));
					rec.R = ropef_177107(((NimStringDesc*) &TMP3533), LOC19, 2);
					expr_561305(p, it, (&rec));
					res_585406 += 1;
				} LA14: ;
			}
		}
	}
	LA4: ;
}

N_NIMCALL(void, genfieldcheck_578627)(tcproc549031* p, tnode225816* e, trope177009* obj, tsym225846* field) {
	tloc225830 test;
	tloc225830 u;
	tloc225830 v;
	memset((void*)(&test), 0, sizeof(test));
	memset((void*)(&u), 0, sizeof(u));
	memset((void*)(&v), 0, sizeof(v));
	{
		NI i_578648;
		NI HEX3Atmp_579263;
		NI LOC2;
		NI res_579266;
		i_578648 = 0;
		HEX3Atmp_579263 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226249(e);
		HEX3Atmp_579263 = (NI64)(LOC2 - 1);
		res_579266 = 1;
		{
			while (1) {
				tnode225816* it;
				tsym225846* op;
				tnode225816* disc;
				TY588896 LOC9;
				NI id;
				tnode225816* LOC10;
				trope177009* strlit;
				if (!(res_579266 <= HEX3Atmp_579263)) goto LA4;
				i_578648 = res_579266;
				it = (*e).kindU.S6.Sons->data[i_578648];
				op = (*(*it).kindU.S6.Sons->data[0]).kindU.S4.Sym;
				{
					if (!((*op).Magic == ((NU16) 105))) goto LA7;
					it = (*it).kindU.S6.Sons->data[1];
				}
				LA7: ;
				disc = skipconv_273732((*it).kindU.S6.Sons->data[2]);
				initloc_552361((&test), ((NU8) 0), (*it).Typ, ((NU8) 1));
				initlocexpr_561352(p, (*it).kindU.S6.Sons->data[1], (&u));
				initloc_552361((&v), ((NU8) 7), (*disc).Typ, ((NU8) 0));
				memset((void*)LOC9, 0, sizeof(LOC9));
				LOC9[0] = obj;
				LOC9[1] = (*(*disc).kindU.S4.Sym).Loc.R;
				v.R = ropef_177107(((NimStringDesc*) &TMP3435), LOC9, 2);
				geninexpraux_578619(p, it, (&u), (&v), (&test));
				LOC10 = 0;
				LOC10 = newstrnode_226118(((NU8) 20), (*(*field).Name).S);
				id = nodetabletestorset_288121((&(*(*p).Module).Datacache), LOC10, gbackendid_224013);
				{
					if (!(id == gbackendid_224013)) goto LA13;
					strlit = getstrlit_573994((*p).Module, (*(*field).Name).S);
				}
				goto LA11;
				LA13: ;
				{
					trope177009* LOC16;
					LOC16 = 0;
					LOC16 = torope_177082(((NI64) (id)));
					strlit = con_177038(((NimStringDesc*) &TMP3517), LOC16);
				}
				LA11: ;
				{
					TY588896 LOC21;
					if (!((*op).Magic == ((NU16) 105))) goto LA19;
					memset((void*)LOC21, 0, sizeof(LOC21));
					LOC21[0] = rdloc_559637((&test));
					LOC21[1] = strlit;
					linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3904), LOC21, 2);
				}
				goto LA17;
				LA19: ;
				{
					TY588896 LOC23;
					memset((void*)LOC23, 0, sizeof(LOC23));
					LOC23[0] = rdloc_559637((&test));
					LOC23[1] = strlit;
					linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3905), LOC23, 2);
				}
				LA17: ;
				res_579266 += 1;
			} LA4: ;
		}
	}
}

N_NIMCALL(void, genobjconstr_580896)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 tmp;
	ttype225852* t;
	NIM_BOOL isref;
	trope177009* r;
	trope177009* LOC7;
	memset((void*)(&tmp), 0, sizeof(tmp));
	t = skiptypes_230245((*e).Typ, IL64(211106232576256));
	gettemp_558246(p, t, (&tmp), NIM_FALSE);
	isref = ((*t).Kind == ((NU8) 22));
	r = rdloc_559637((&tmp));
	{
		TY177515 LOC5;
		if (!isref) goto LA3;
		rawgennew_580723(p, (&tmp), NIM_NIL);
		t = skiptypes_230245((*t).Sons->data[0], IL64(211106232576256));
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = r;
		r = ropef_177107(((NimStringDesc*) &TMP3494), LOC5, 1);
		gcusage_580100(e);
	}
	goto LA1;
	LA3: ;
	{
		constructloc_559924(p, (&tmp), NIM_FALSE);
	}
	LA1: ;
	LOC7 = 0;
	LOC7 = gettypedesc_556307((*p).Module, t);
	{
		NI i_580941;
		NI HEX3Atmp_581139;
		NI LOC9;
		NI res_581142;
		i_580941 = 0;
		HEX3Atmp_581139 = 0;
		LOC9 = 0;
		LOC9 = len_226364(e);
		HEX3Atmp_581139 = (LOC9 - 1);
		res_581142 = 1;
		{
			while (1) {
				tnode225816* it;
				tloc225830 tmp2;
				tsym225846* field;
				ttype225852* ty;
				if (!(res_581142 <= HEX3Atmp_581139)) goto LA11;
				i_580941 = res_581142;
				it = (*e).kindU.S6.Sons->data[i_580941];
				memset((void*)(&tmp2), 0, sizeof(tmp2));
				tmp2.R = r;
				field = NIM_NIL;
				ty = t;
				{
					while (1) {
						if (!!((ty == NIM_NIL))) goto LA13;
						field = lookupinrecord_235236((*ty).N, (*(*(*it).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name);
						{
							if (!!((field == NIM_NIL))) goto LA16;
							goto LA12;
						}
						LA16: ;
						{
							NIM_BOOL LOC20;
							LOC20 = 0;
							LOC20 = (gcmd_169120 == ((NU8) 2));
							if (LOC20) goto LA21;
							LOC20 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
							LA21: ;
							if (!!(LOC20)) goto LA22;
							app_177060(&tmp2.R, ((NimStringDesc*) &TMP3497));
						}
						LA22: ;
						ty = getuniquetype_548401((*ty).Sons->data[0]);
					} LA13: ;
				} LA12: ;
				{
					NIM_BOOL LOC26;
					LOC26 = 0;
					LOC26 = (field == NIM_NIL);
					if (LOC26) goto LA27;
					LOC26 = ((*field).Loc.R == NIM_NIL);
					LA27: ;
					if (!LOC26) goto LA28;
					internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3903));
				}
				LA28: ;
				{
					NIM_BOOL LOC32;
					NI LOC33;
					LOC32 = 0;
					LOC33 = 0;
					LOC33 = len_226364(it);
					LOC32 = (LOC33 == 3);
					if (!(LOC32)) goto LA34;
					LOC32 = (((*p).Options &(1<<((((NU8) 2))&31)))!=0);
					LA34: ;
					if (!LOC32) goto LA35;
					genfieldcheck_578627(p, (*it).kindU.S6.Sons->data[2], tmp2.R, field);
				}
				LA35: ;
				app_177060(&tmp2.R, ((NimStringDesc*) &TMP3571));
				app_177052(&tmp2.R, (*field).Loc.R);
				tmp2.K = ((NU8) 1);
				tmp2.T = (*field).Loc.T;
				{
					if (!isref) goto LA39;
					tmp2.S = ((NU8) 2);
				}
				goto LA37;
				LA39: ;
				{
					tmp2.S = ((NU8) 1);
				}
				LA37: ;
				tmp2.Heaproot = tmp.R;
				expr_561305(p, (*it).kindU.S6.Sons->data[1], (&tmp2));
				res_581142 += 1;
			} LA11: ;
		}
	}
	{
		if (!((*d).K == ((NU8) 0))) goto LA44;
		genericAssign((void*)(&(*d)), (void*)(&tmp), (&NTI225830));
	}
	goto LA42;
	LA44: ;
	{
		genassignment_561330(p, (&(*d)), (&tmp), 0);
	}
	LA42: ;
}

N_NIMCALL(void, gencast_583477)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	ttype225852* destt;
	ttype225852* srct;
	destt = skiptypes_230245((*e).Typ, IL64(211106233624832));
	srct = skiptypes_230245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106233624832));
	{
		NIM_BOOL LOC3;
		trope177009* lbl;
		tloc225830 tmp;
		TY177515 LOC7;
		TY554018 LOC8;
		TY177515 LOC9;
		trope177009* LOC10;
		LOC3 = 0;
		LOC3 = ((IL64(1030792151040) &(IL64(1)<<(((*destt).Kind)&IL64(63))))!=0);
		if (LOC3) goto LA4;
		LOC3 = ((IL64(1030792151040) &(IL64(1)<<(((*srct).Kind)&IL64(63))))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		(*p).Labels += 1;
		lbl = torope_177082(((NI64) ((*p).Labels)));
		memset((void*)(&tmp), 0, sizeof(tmp));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = lbl;
		tmp.R = ropef_177107(((NimStringDesc*) &TMP3906), LOC7, 1);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = gettypedesc_556307((*p).Module, srct);
		LOC8[1] = gettypedesc_556307((*p).Module, destt);
		LOC8[2] = lbl;
		linefmt_553148(p, ((NU8) 0), ((NimStringDesc*) &TMP3907), LOC8, 3);
		tmp.K = ((NU8) 7);
		tmp.T = srct;
		tmp.S = ((NU8) 1);
		tmp.Flags = 0;
		expr_561305(p, (*e).kindU.S6.Sons->data[1], (&tmp));
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = lbl;
		LOC10 = 0;
		LOC10 = ropef_177107(((NimStringDesc*) &TMP3908), LOC9, 1);
		putintodest_575477(p, d, (*e).Typ, LOC10);
	}
	goto LA1;
	LA5: ;
	{
		gensomecast_583392(p, e, d);
	}
	LA1: ;
}

N_NIMCALL(void, genconv_583708)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = comparetypes_270571((*e).Typ, (*(*e).kindU.S6.Sons->data[1]).Typ, ((NU8) 1), 0);
		if (!LOC3) goto LA4;
		expr_561305(p, (*e).kindU.S6.Sons->data[1], d);
	}
	goto LA1;
	LA4: ;
	{
		gensomecast_583392(p, e, d);
	}
	LA1: ;
}

N_NIMCALL(void, genaddr_578115)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	{
		ttype225852* LOC3;
		tloc225830 a;
		trope177009* LOC6;
		LOC3 = 0;
		LOC3 = skiptypes_230245((*(*e).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
		if (!((6291456 &(IL64(1)<<(((*LOC3).Kind)&IL64(63))))!=0)) goto LA4;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_561352(p, (*e).kindU.S6.Sons->data[0], (&a));
		LOC6 = 0;
		LOC6 = con_177038(((NimStringDesc*) &TMP3467), a.R);
		putintodest_575477(p, d, (*e).Typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		NU8 LOC8;
		LOC8 = 0;
		LOC8 = maptype_554055((*(*e).kindU.S6.Sons->data[0]).Typ);
		if (!(LOC8 == ((NU8) 17))) goto LA9;
		expr_561305(p, (*e).kindU.S6.Sons->data[0], d);
	}
	goto LA1;
	LA9: ;
	{
		tloc225830 a;
		trope177009* LOC12;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_561352(p, (*e).kindU.S6.Sons->data[0], (&a));
		LOC12 = 0;
		LOC12 = addrloc_559664((&a));
		putintodest_575477(p, d, (*e).Typ, LOC12);
	}
	LA1: ;
}

N_NIMCALL(void, genarrayelem_579509)(tcproc549031* p, tnode225816* x, tnode225816* y, tloc225830* d) {
	tloc225830 a;
	tloc225830 b;
	ttype225852* ty;
	ttype225852* LOC1;
	trope177009* first;
	NI64 LOC2;
	ttype225852* LOC56;
	ttype225852* LOC57;
	TY554018 LOC58;
	trope177009* LOC59;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_561352(p, x, (&a));
	initlocexpr_561352(p, y, (&b));
	LOC1 = 0;
	LOC1 = skiptypes_230245(a.T, IL64(211106242013440));
	ty = skiptypes_230245(LOC1, IL64(211106247256320));
	LOC2 = 0;
	LOC2 = firstord_263004(ty);
	first = intliteral_561339(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_261921(y);
			if (!!(LOC11)) goto LA12;
			{
				NI64 LOC16;
				LOC16 = 0;
				LOC16 = firstord_263004(ty);
				if (!(LOC16 == IL64(0))) goto LA17;
				{
					NIM_BOOL LOC21;
					NI64 LOC22;
					NI64 LOC23;
					NI64 LOC25;
					NI64 LOC26;
					TY588896 LOC29;
					NI64 LOC30;
					LOC21 = 0;
					LOC22 = 0;
					LOC22 = firstord_263004(b.T);
					LOC23 = 0;
					LOC23 = firstord_263004(ty);
					LOC21 = (LOC22 < LOC23);
					if (LOC21) goto LA24;
					LOC25 = 0;
					LOC25 = lastord_263010(ty);
					LOC26 = 0;
					LOC26 = lastord_263010(b.T);
					LOC21 = (LOC25 < LOC26);
					LA24: ;
					if (!LOC21) goto LA27;
					memset((void*)LOC29, 0, sizeof(LOC29));
					LOC29[0] = rdcharloc_559698((&b));
					LOC30 = 0;
					LOC30 = lastord_263010(ty);
					LOC29[1] = intliteral_561339(LOC30);
					linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3909), LOC29, 2);
				}
				LA27: ;
			}
			goto LA14;
			LA17: ;
			{
				TY554018 LOC32;
				NI64 LOC33;
				memset((void*)LOC32, 0, sizeof(LOC32));
				LOC32[0] = rdcharloc_559698((&b));
				LOC32[1] = first;
				LOC33 = 0;
				LOC33 = lastord_263010(ty);
				LOC32[2] = intliteral_561339(LOC33);
				linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3910), LOC32, 3);
			}
			LA14: ;
		}
		goto LA9;
		LA12: ;
		{
			NI64 idx;
			idx = getordvalue_263187(y);
			{
				NIM_BOOL LOC37;
				NI64 LOC38;
				NI64 LOC40;
				LOC37 = 0;
				LOC38 = 0;
				LOC38 = firstord_263004(ty);
				LOC37 = (idx < LOC38);
				if (LOC37) goto LA39;
				LOC40 = 0;
				LOC40 = lastord_263010(ty);
				LOC37 = (LOC40 < idx);
				LA39: ;
				if (!LOC37) goto LA41;
				localerror_197955((*x).Info, ((NU16) 82), ((NimStringDesc*) &TMP3811));
			}
			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_230245(ty, IL64(211106240964864));
	LOC57 = 0;
	LOC57 = elemtype_263656(LOC56);
	memset((void*)LOC58, 0, sizeof(LOC58));
	LOC58[0] = rdloc_559637((&a));
	LOC58[1] = rdcharloc_559698((&b));
	LOC58[2] = first;
	LOC59 = 0;
	LOC59 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3911), LOC58, 3);
	putintodest_575477(p, d, LOC57, LOC59);
}

N_NIMCALL(void, genopenarrayelem_579643)(tcproc549031* p, tnode225816* x, tnode225816* y, tloc225830* d) {
	tloc225830 a;
	tloc225830 b;
	ttype225852* LOC10;
	ttype225852* LOC11;
	TY588896 LOC12;
	trope177009* LOC13;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_561352(p, x, (&a));
	initlocexpr_561352(p, y, (&b));
	{
		TY588896 LOC5;
		if (!(((*p).Options &(1<<((((NU8) 4))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_559637((&b));
		LOC5[1] = rdloc_559637((&a));
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3912), LOC5, 2);
	}
	LA3: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA8;
		(*d).S = a.S;
	}
	LA8: ;
	LOC10 = 0;
	LOC10 = skiptypes_230245(a.T, IL64(211106240964864));
	LOC11 = 0;
	LOC11 = elemtype_263656(LOC10);
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = rdloc_559637((&a));
	LOC12[1] = rdcharloc_559698((&b));
	LOC13 = 0;
	LOC13 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3479), LOC12, 2);
	putintodest_575477(p, d, LOC11, LOC13);
}

N_NIMCALL(void, genseqelem_579689)(tcproc549031* p, tnode225816* x, tnode225816* y, tloc225830* d) {
	tloc225830 a;
	tloc225830 b;
	ttype225852* ty;
	ttype225852* LOC27;
	ttype225852* LOC28;
	TY588896 LOC29;
	trope177009* LOC30;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_561352(p, x, (&a));
	initlocexpr_561352(p, y, (&b));
	ty = skiptypes_230245(a.T, IL64(211106242013440));
	{
		ttype225852* LOC5;
		if (!((6291456 &(IL64(1)<<(((*ty).Kind)&IL64(63))))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = lastson_226267(ty);
		ty = skiptypes_230245(LOC5, IL64(211106242013440));
	}
	LA3: ;
	{
		if (!(((*p).Options &(1<<((((NU8) 4))&31)))!=0)) goto LA8;
		{
			TY554018 LOC14;
			if (!((*ty).Kind == ((NU8) 28))) goto LA12;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = rdloc_559637((&b));
			LOC14[1] = rdloc_559637((&a));
			LOC14[2] = lenfield_561364(p);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3913), LOC14, 3);
		}
		goto LA10;
		LA12: ;
		{
			TY554018 LOC16;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_559637((&b));
			LOC16[1] = rdloc_559637((&a));
			LOC16[2] = lenfield_561364(p);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3914), LOC16, 3);
		}
		LA10: ;
	}
	LA8: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA19;
		(*d).S = ((NU8) 2);
	}
	LA19: ;
	unsureAsgnRef((void**) (&(*d).Heaproot), a.R);
	{
		ttype225852* LOC23;
		TY177515 LOC26;
		LOC23 = 0;
		LOC23 = skiptypes_230245(a.T, IL64(211106240964864));
		if (!((6291456 &(IL64(1)<<(((*LOC23).Kind)&IL64(63))))!=0)) goto LA24;
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = a.R;
		a.R = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3494), LOC26, 1);
	}
	LA24: ;
	LOC27 = 0;
	LOC27 = skiptypes_230245(a.T, IL64(211106240964864));
	LOC28 = 0;
	LOC28 = elemtype_263656(LOC27);
	memset((void*)LOC29, 0, sizeof(LOC29));
	LOC29[0] = rdloc_559637((&a));
	LOC29[1] = rdcharloc_559698((&b));
	LOC30 = 0;
	LOC30 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3535), LOC29, 2);
	putintodest_575477(p, d, LOC28, LOC30);
}

N_NIMCALL(void, gencstringelem_579613)(tcproc549031* p, tnode225816* x, tnode225816* y, tloc225830* d) {
	tloc225830 a;
	tloc225830 b;
	ttype225852* ty;
	ttype225852* LOC5;
	ttype225852* LOC6;
	TY588896 LOC7;
	trope177009* LOC8;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_561352(p, x, (&a));
	initlocexpr_561352(p, y, (&b));
	ty = skiptypes_230245(a.T, IL64(211106242013440));
	{
		if (!((*d).K == ((NU8) 0))) goto LA3;
		(*d).S = a.S;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = skiptypes_230245(ty, IL64(211106240964864));
	LOC6 = 0;
	LOC6 = elemtype_263656(LOC5);
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = rdloc_559637((&a));
	LOC7[1] = rdcharloc_559698((&b));
	LOC8 = 0;
	LOC8 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3479), LOC7, 2);
	putintodest_575477(p, d, LOC6, LOC8);
}

N_NIMCALL(void, gentupleelem_578322)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 a;
	NI i;
	trope177009* LOC14;
	ttype225852* ty;
	trope177009* r;
	TY177515 LOC17;
	memset((void*)(&a), 0, sizeof(a));
	i = 0;
	initlocexpr_561352(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_556307((*p).Module, a.T);
	ty = a.T;
	r = rdloc_559637((&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_197987((*e).Info, ((NimStringDesc*) &TMP3915));
	}
	break;
	}
	memset((void*)LOC17, 0, sizeof(LOC17));
	LOC17[0] = torope_177082(((NI64) (i)));
	appf_177115(&r, ((NimStringDesc*) &TMP3916), LOC17, 1);
	putintodest_575477(p, d, (*ty).Sons->data[i], r);
}

N_NIMCALL(void, genbracketexpr_579781)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	ttype225852* ty;
	ty = skiptypes_230245((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106242013440));
	{
		ttype225852* LOC5;
		if (!((6291456 &(IL64(1)<<(((*ty).Kind)&IL64(63))))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = lastson_226267(ty);
		ty = skiptypes_230245(LOC5, IL64(211106242013440));
	}
	LA3: ;
	switch ((*ty).Kind) {
	case ((NU8) 16):
	case ((NU8) 4):
	{
		genarrayelem_579509(p, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1], d);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		genopenarrayelem_579643(p, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1], d);
	}
	break;
	case ((NU8) 24):
	case ((NU8) 28):
	{
		genseqelem_579689(p, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1], d);
	}
	break;
	case ((NU8) 29):
	{
		gencstringelem_579613(p, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1], d);
	}
	break;
	case ((NU8) 18):
	{
		gentupleelem_578322(p, n, d);
	}
	break;
	default:
	{
		NimStringDesc* LOC12;
		LOC12 = 0;
		LOC12 = rawNewString(reprEnum((*ty).Kind, (&NTI225258))->Sup.len + 21);
appendString(LOC12, ((NimStringDesc*) &TMP3917));
appendString(LOC12, reprEnum((*ty).Kind, (&NTI225258)));
appendChar(LOC12, 41);
		internalerror_197987((*n).Info, LOC12);
	}
	break;
	}
}

N_NIMCALL(void, genderef_565881)(tcproc549031* p, tnode225816* e, tloc225830* d, NIM_BOOL enforcederef) {
	NU8 mt;
	mt = maptype_554055((*(*e).kindU.S6.Sons->data[0]).Typ);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((393216 &(1<<((mt)&31)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = !(enforcederef);
		LA4: ;
		if (!LOC3) goto LA5;
		expr_561305(p, (*e).kindU.S6.Sons->data[0], d);
	}
	goto LA1;
	LA5: ;
	{
		tloc225830 a;
		ttype225852* LOC8;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_561352(p, (*e).kindU.S6.Sons->data[0], (&a));
		LOC8 = 0;
		LOC8 = skiptypes_230245(a.T, IL64(211106232576256));
		switch ((*LOC8).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* LOC13;
			LOC13 = 0;
			LOC13 = rawNewString(reprEnum((*a.T).Kind, (&NTI225258))->Sup.len + 9);
appendString(LOC13, ((NimStringDesc*) &TMP3918));
appendString(LOC13, reprEnum((*a.T).Kind, (&NTI225258)));
			internalerror_197987((*e).Info, LOC13);
		}
		break;
		}
		{
			NIM_BOOL LOC16;
			trope177009* LOC20;
			LOC16 = 0;
			LOC16 = enforcederef;
			if (!(LOC16)) goto LA17;
			LOC16 = (mt == ((NU8) 18));
			LA17: ;
			if (!LOC16) goto LA18;
			LOC20 = 0;
			LOC20 = rdloc_559637((&a));
			putintodest_575477(p, d, (*a.T).Sons->data[0], LOC20);
		}
		goto LA14;
		LA18: ;
		{
			TY177515 LOC22;
			trope177009* LOC23;
			memset((void*)LOC22, 0, sizeof(LOC22));
			LOC22[0] = rdloc_559637((&a));
			LOC23 = 0;
			LOC23 = ropef_177107(((NimStringDesc*) &TMP3494), LOC22, 1);
			putintodest_575477(p, d, (*a.T).Sons->data[0], LOC23);
		}
		LA14: ;
	}
	LA1: ;
}

N_NIMCALL(ttype225852*, genrecordfieldaux_578231)(tcproc549031* p, tnode225816* e, tloc225830* d, tloc225830* a) {
	ttype225852* result;
	trope177009* LOC18;
	result = 0;
	initlocexpr_561352(p, (*e).kindU.S6.Sons->data[0], a);
	{
		if (!!(((*(*e).kindU.S6.Sons->data[1]).Kind == ((NU8) 3)))) goto LA3;
		internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3919));
	}
	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_556307((*p).Module, (*a).T);
	result = (*a).T;
	return result;
}

N_NIMCALL(void, genrecordfield_578443)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	tloc225830 a;
	ttype225852* ty;
	trope177009* r;
	tsym225846* f;
	memset((void*)(&a), 0, sizeof(a));
	ty = genrecordfieldaux_578231(p, e, d, (&a));
	r = rdloc_559637((&a));
	f = (*(*e).kindU.S6.Sons->data[1]).kindU.S4.Sym;
	{
		TY177515 LOC5;
		if (!((*ty).Kind == ((NU8) 18))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_177082(((NI64) ((*f).Position)));
		appf_177115(&r, ((NimStringDesc*) &TMP3916), LOC5, 1);
		putintodest_575477(p, d, (*f).Typ, r);
	}
	goto LA1;
	LA3: ;
	{
		tsym225846* field;
		TY177515 LOC31;
		field = NIM_NIL;
		{
			while (1) {
				if (!!((ty == NIM_NIL))) goto LA8;
				{
					if (!!(((393216 &(IL64(1)<<(((*ty).Kind)&IL64(63))))!=0))) goto LA11;
					internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3920));
				}
				LA11: ;
				field = lookupinrecord_235236((*ty).N, (*f).Name);
				{
					if (!!((field == NIM_NIL))) goto LA15;
					goto LA7;
				}
				LA15: ;
				{
					NIM_BOOL LOC19;
					LOC19 = 0;
					LOC19 = (gcmd_169120 == ((NU8) 2));
					if (LOC19) goto LA20;
					LOC19 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
					LA20: ;
					if (!!(LOC19)) goto LA21;
					app_177060(&r, ((NimStringDesc*) &TMP3497));
				}
				LA21: ;
				ty = getuniquetype_548401((*ty).Sons->data[0]);
			} LA8: ;
		} LA7: ;
		{
			if (!(field == NIM_NIL)) goto LA25;
			internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3921));
		}
		LA25: ;
		{
			if (!((*field).Loc.R == NIM_NIL)) goto LA29;
			internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3922));
		}
		LA29: ;
		memset((void*)LOC31, 0, sizeof(LOC31));
		LOC31[0] = (*field).Loc.R;
		appf_177115(&r, ((NimStringDesc*) &TMP3923), LOC31, 1);
		putintodest_575477(p, d, (*field).Typ, r);
	}
	LA1: ;
}

N_NIMCALL(void, gencheckedrecordfield_579280)(tcproc549031* p, tnode225816* e, tloc225830* d) {
	{
		tloc225830 a;
		tsym225846* f;
		tsym225846* field;
		ttype225852* ty;
		trope177009* r;
		TY177515 LOC25;
		trope177009* LOC26;
		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_578231(p, (*e).kindU.S6.Sons->data[0], d, (&a));
		r = rdloc_559637((&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 LA6;
				field = lookupinrecord_235236((*ty).N, (*f).Name);
				{
					if (!!((field == NIM_NIL))) goto LA9;
					goto LA5;
				}
				LA9: ;
				{
					NIM_BOOL LOC13;
					LOC13 = 0;
					LOC13 = (gcmd_169120 == ((NU8) 2));
					if (LOC13) goto LA14;
					LOC13 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
					LA14: ;
					if (!!(LOC13)) goto LA15;
					app_177060(&r, ((NimStringDesc*) &TMP3497));
				}
				LA15: ;
				ty = getuniquetype_548401((*ty).Sons->data[0]);
			} LA6: ;
		} LA5: ;
		{
			if (!(field == NIM_NIL)) goto LA19;
			internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3924));
		}
		LA19: ;
		{
			if (!((*field).Loc.R == NIM_NIL)) goto LA23;
			internalerror_197987((*e).Info, ((NimStringDesc*) &TMP3924));
		}
		LA23: ;
		genfieldcheck_578627(p, e, r, field);
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = (*field).Loc.R;
		LOC26 = 0;
		LOC26 = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3923), LOC25, 1);
		app_177052(&r, LOC26);
		putintodest_575477(p, d, (*field).Typ, r);
	}
	goto LA1;
	LA3: ;
	{
		genrecordfield_578443(p, (*e).kindU.S6.Sons->data[0], d);
	}
	LA1: ;
}

N_NIMCALL(NI, startblock_565985)(tcproc549031* p, NimStringDesc* start, trope177009** args, NI argsLen0) {
	NI result;
	result = 0;
	linecg_553135(p, ((NU8) 2), start, args, argsLen0);
	(*p).Labels += 1;
	result = (*p).Blocks->Sup.len;
	(*p).Blocks = (TY549102*) setLengthSeq(&((*p).Blocks)->Sup, sizeof(tblock549029), (NI64)(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(trope177009*, blockbody_566053)(tblock549029* b) {
	trope177009* result;
	result = 0;
	result = (*b).Sections[(((NU8) 0))- 0];
	{
		TY177515 LOC5;
		if (!(((NI16) 0) < (*b).Framelen)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_177082(((NI64) ((*b).Framelen)));
		appf_177115(&result, ((NimStringDesc*) &TMP3927), LOC5, 1);
	}
	LA3: ;
	app_177052(&result, (*b).Sections[(((NU8) 1))- 0]);
	app_177052(&result, (*b).Sections[(((NU8) 2))- 0]);
	return result;
}

N_NIMCALL(void, endblock_566069)(tcproc549031* p, trope177009* blockend) {
	NI topblock;
	trope177009* LOC1;
	topblock = (NI64)((*p).Blocks->Sup.len - 1);
	LOC1 = 0;
	LOC1 = blockbody_566053((&(*p).Blocks->data[topblock]));
	app_177052(&(*p).Blocks->data[(NI64)(topblock - 1)].Sections[(((NU8) 2))- 0], LOC1);
	(*p).Blocks = (TY549102*) setLengthSeq(&((*p).Blocks)->Sup, sizeof(tblock549029), topblock);
	line_553100(p, ((NU8) 2), blockend);
}

N_NIMCALL(void, endblock_566106)(tcproc549031* p) {
	NI topblock;
	trope177009* blockend;
	NI16 framelen;
	topblock = (NI64)((*p).Blocks->Sup.len - 1);
	{
		TY177515 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_552615(NIM_NIL, ((NimStringDesc*) &TMP3925), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY553703 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		blockend = ropef_177107(((NimStringDesc*) &TMP3504), LOC7, 0);
	}
	LA1: ;
	framelen = (*p).Blocks->data[topblock].Framelen;
	{
		TY177515 LOC12;
		if (!(((NI16) 0) < framelen)) goto LA10;
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = torope_177082(((NI64) (framelen)));
		appf_177115(&blockend, ((NimStringDesc*) &TMP3926), LOC12, 1);
	}
	LA10: ;
	endblock_566069(p, blockend);
}

N_NIMCALL(void, genblock_568796)(tcproc549031* p, tnode225816* t, tloc225830* d) {
	NI oldbreakidx_568803;
	TY553703 LOC1;
	oldbreakidx_568803 = (*p).Breakidx;
	memset((void*)LOC1, 0, sizeof(LOC1));
	(*p).Breakidx = startblock_565985(p, ((NimStringDesc*) &TMP3589), LOC1, 0);
	{
		tsym225846* 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).Position = (NI64)((*p).Breakidx + 1);
	}
	LA4: ;
	expr_561305(p, (*t).kindU.S6.Sons->data[1], d);
	endblock_566106(p);
	(*p).Breakidx = oldbreakidx_568803;
}

N_NIMCALL(void, genstmtlistexpr_585804)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	NI length;
	length = sonslen_226249(n);
	{
		NI i_585823;
		NI HEX3Atmp_585854;
		NI res_585857;
		i_585823 = 0;
		HEX3Atmp_585854 = 0;
		HEX3Atmp_585854 = (NI64)(length - 2);
		res_585857 = 0;
		{
			while (1) {
				if (!(res_585857 <= HEX3Atmp_585854)) goto LA3;
				i_585823 = res_585857;
				genstmts_561298(p, (*n).kindU.S6.Sons->data[i_585823]);
				res_585857 += 1;
			} LA3: ;
		}
	}
	{
		if (!(0 < length)) goto LA6;
		expr_561305(p, (*n).kindU.S6.Sons->data[(NI64)(length - 1)], d);
	}
	LA6: ;
}

N_NIMCALL(void, lineff_553218)(tcproc549031* p, NU8 s, NimStringDesc* cformat, NimStringDesc* llvmformat, trope177009** args, NI argsLen0) {
	{
		if (!(gcmd_169120 == ((NU8) 5))) goto LA3;
		linef_553122(p, s, llvmformat, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		linef_553122(p, s, cformat, args, argsLen0);
	}
	LA1: ;
}

N_NIMCALL(void, genif_567223)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	tloc225830 a;
	trope177009* lelse;
	trope177009* lend;
	memset((void*)(&a), 0, sizeof(a));
	lelse = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_232991((*n).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_558246(p, (*n).Typ, d, NIM_FALSE);
	}
	LA6: ;
	genlinedir_553435(p, n);
	lend = getlabel_561248(p);
	{
		NI i_567253;
		NI HEX3Atmp_567645;
		NI LOC9;
		NI res_567648;
		i_567253 = 0;
		HEX3Atmp_567645 = 0;
		LOC9 = 0;
		LOC9 = sonslen_226249(n);
		HEX3Atmp_567645 = (NI64)(LOC9 - 1);
		res_567648 = 0;
		{
			while (1) {
				tnode225816* it;
				if (!(res_567648 <= HEX3Atmp_567645)) goto LA11;
				i_567253 = res_567648;
				it = (*n).kindU.S6.Sons->data[i_567253];
				{
					NI LOC14;
					TY553703 LOC17;
					NI LOC18;
					TY554018 LOC19;
					LOC14 = 0;
					LOC14 = len_226364(it);
					if (!(LOC14 == 2)) goto LA15;
					memset((void*)LOC17, 0, sizeof(LOC17));
					LOC18 = 0;
					LOC18 = startblock_565985(p, ((NimStringDesc*) &TMP3589), LOC17, 0);
					initlocexpr_561352(p, (*it).kindU.S6.Sons->data[0], (&a));
					lelse = getlabel_561248(p);
					(*p).Labels += 1;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = rdloc_559637((&a));
					LOC19[1] = lelse;
					LOC19[2] = torope_177082(((NI64) ((*p).Labels)));
					lineff_553218(p, ((NU8) 2), ((NimStringDesc*) &TMP3928), ((NimStringDesc*) &TMP3929), LOC19, 3);
					expr_561305(p, (*it).kindU.S6.Sons->data[1], d);
					endblock_566106(p);
					{
						NI LOC22;
						TY177515 LOC25;
						LOC22 = 0;
						LOC22 = sonslen_226249(n);
						if (!(1 < LOC22)) goto LA23;
						memset((void*)LOC25, 0, sizeof(LOC25));
						LOC25[0] = lend;
						lineff_553218(p, ((NU8) 2), ((NimStringDesc*) &TMP3930), ((NimStringDesc*) &TMP3931), LOC25, 1);
					}
					LA23: ;
					fixlabel_561270(p, lelse);
				}
				goto LA12;
				LA15: ;
				{
					NI LOC27;
					TY553703 LOC30;
					NI LOC31;
					LOC27 = 0;
					LOC27 = len_226364(it);
					if (!(LOC27 == 1)) goto LA28;
					memset((void*)LOC30, 0, sizeof(LOC30));
					LOC31 = 0;
					LOC31 = startblock_565985(p, ((NimStringDesc*) &TMP3589), LOC30, 0);
					expr_561305(p, (*it).kindU.S6.Sons->data[0], d);
					endblock_566106(p);
				}
				goto LA12;
				LA28: ;
				{
					internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3932));
				}
				LA12: ;
				res_567648 += 1;
			} LA11: ;
		}
	}
	{
		NI LOC35;
		LOC35 = 0;
		LOC35 = sonslen_226249(n);
		if (!(1 < LOC35)) goto LA36;
		fixlabel_561270(p, lend);
	}
	LA36: ;
}

N_NIMCALL(void, downconv_586061)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_169120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		expr_561305(p, (*n).kindU.S6.Sons->data[0], d);
	}
	goto LA1;
	LA5: ;
	{
		ttype225852* dest;
		tnode225816* arg;
		ttype225852* src;
		tloc225830 a;
		trope177009* r;
		NIM_BOOL isref;
		ttype225852* LOC10;
		dest = skiptypes_230245((*n).Typ, IL64(211106247256320));
		arg = (*n).kindU.S6.Sons->data[0];
		{
			while (1) {
				if (!((*arg).Kind == ((NU8) 66))) goto LA9;
				arg = (*arg).kindU.S6.Sons->data[0];
			} LA9: ;
		}
		src = skiptypes_230245((*arg).Typ, IL64(211106247256320));
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_561352(p, arg, (&a));
		r = rdloc_559637((&a));
		LOC10 = 0;
		LOC10 = skiptypes_230245((*arg).Typ, IL64(211106232576256));
		isref = ((14680064 &(IL64(1)<<(((*LOC10).Kind)&IL64(63))))!=0);
		{
			if (!isref) goto LA13;
			app_177060(&r, ((NimStringDesc*) &TMP3933));
		}
		goto LA11;
		LA13: ;
		{
			app_177060(&r, ((NimStringDesc*) &TMP3497));
		}
		LA11: ;
		{
			NI i_586175;
			NI HEX3Atmp_586207;
			NI LOC17;
			NI res_586210;
			i_586175 = 0;
			HEX3Atmp_586207 = 0;
			LOC17 = 0;
			LOC17 = inheritancediff_270588(dest, src);
			HEX3Atmp_586207 = (LOC17 > 0? (LOC17) : -(LOC17));
			res_586210 = 2;
			{
				while (1) {
					if (!(res_586210 <= HEX3Atmp_586207)) goto LA19;
					i_586175 = res_586210;
					app_177060(&r, ((NimStringDesc*) &TMP3497));
					res_586210 += 1;
				} LA19: ;
			}
		}
		{
			if (!isref) goto LA22;
			{
				NIM_BOOL LOC26;
				ttype225852* LOC28;
				TY588896 LOC31;
				LOC26 = 0;
				LOC26 = ((*d).K == ((NU8) 0));
				if (!(LOC26)) goto LA27;
				LOC28 = 0;
				LOC28 = skiptypes_230245((*n).Typ, IL64(211106232576256));
				LOC26 = ((14680064 &(IL64(1)<<(((*LOC28).Kind)&IL64(63))))!=0);
				LA27: ;
				if (!LOC26) goto LA29;
				gettemp_558246(p, (*n).Typ, d, NIM_FALSE);
				memset((void*)LOC31, 0, sizeof(LOC31));
				LOC31[0] = rdloc_559637((&(*d)));
				LOC31[1] = r;
				linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3934), LOC31, 2);
			}
			goto LA24;
			LA29: ;
			{
				r = con_177038(((NimStringDesc*) &TMP3467), r);
				putintodest_575477(p, d, (*n).Typ, r);
			}
			LA24: ;
		}
		goto LA20;
		LA22: ;
		{
			putintodest_575477(p, d, (*n).Typ, r);
		}
		LA20: ;
	}
	LA1: ;
}

N_NIMCALL(void, upconv_585871)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	tloc225830 a;
	ttype225852* dest;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*n).kindU.S6.Sons->data[0], (&a));
	dest = skiptypes_230245((*n).Typ, IL64(211106247256320));
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		trope177009* r;
		trope177009* nilcheck;
		ttype225852* t;
		LOC3 = 0;
		LOC3 = (((*p).Options &(1<<((((NU8) 1))&31)))!=0);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = isobjlackingtypefield_554130(dest);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		r = rdloc_559637((&a));
		nilcheck = NIM_NIL;
		t = skiptypes_230245(a.T, IL64(211106232576256));
		{
			while (1) {
				TY177515 LOC14;
				ttype225852* LOC15;
				if (!((14680064 &(IL64(1)<<(((*t).Kind)&IL64(63))))!=0)) goto LA9;
				{
					if (!!(((*t).Kind == ((NU8) 23)))) goto LA12;
					nilcheck = r;
				}
				LA12: ;
				memset((void*)LOC14, 0, sizeof(LOC14));
				LOC14[0] = r;
				r = ropef_177107(((NimStringDesc*) &TMP3494), LOC14, 1);
				LOC15 = 0;
				LOC15 = lastson_226267(t);
				t = skiptypes_230245(LOC15, IL64(211106232576256));
			} LA9: ;
		}
		{
			NIM_BOOL LOC18;
			LOC18 = 0;
			LOC18 = (gcmd_169120 == ((NU8) 2));
			if (LOC18) goto LA19;
			LOC18 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
			LA19: ;
			if (!!(LOC18)) goto LA20;
			{
				while (1) {
					NIM_BOOL LOC24;
					LOC24 = 0;
					LOC24 = ((*t).Kind == ((NU8) 17));
					if (!(LOC24)) goto LA25;
					LOC24 = !(((*t).Sons->data[0] == NIM_NIL));
					LA25: ;
					if (!LOC24) goto LA23;
					app_177060(&r, ((NimStringDesc*) &TMP3497));
					t = skiptypes_230245((*t).Sons->data[0], IL64(211106232576256));
				} LA23: ;
			}
		}
		LA20: ;
		{
			TY554018 LOC30;
			if (!!((nilcheck == NIM_NIL))) goto LA28;
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = nilcheck;
			LOC30[1] = r;
			LOC30[2] = gentypeinfo_556602((*p).Module, dest);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3935), LOC30, 3);
		}
		goto LA26;
		LA28: ;
		{
			TY588896 LOC32;
			memset((void*)LOC32, 0, sizeof(LOC32));
			LOC32[0] = r;
			LOC32[1] = gentypeinfo_556602((*p).Module, dest);
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3936), LOC32, 2);
		}
		LA26: ;
	}
	LA6: ;
	{
		TY588896 LOC37;
		trope177009* LOC38;
		if (!!(((*(*(*n).kindU.S6.Sons->data[0]).Typ).Kind == ((NU8) 17)))) goto LA35;
		memset((void*)LOC37, 0, sizeof(LOC37));
		LOC37[0] = gettypedesc_556307((*p).Module, (*n).Typ);
		LOC37[1] = rdloc_559637((&a));
		LOC38 = 0;
		LOC38 = ropef_177107(((NimStringDesc*) &TMP3752), LOC37, 2);
		putintodest_575477(p, d, (*n).Typ, LOC38);
	}
	goto LA33;
	LA35: ;
	{
		TY588896 LOC40;
		trope177009* LOC41;
		memset((void*)LOC40, 0, sizeof(LOC40));
		LOC40[0] = gettypedesc_556307((*p).Module, dest);
		LOC40[1] = addrloc_559664((&a));
		LOC41 = 0;
		LOC41 = ropef_177107(((NimStringDesc*) &TMP3751), LOC40, 2);
		putintodest_575477(p, d, (*n).Typ, LOC41);
	}
	LA33: ;
}

N_NIMCALL(void, genrangechck_583574)(tcproc549031* p, tnode225816* n, tloc225830* d, NimStringDesc* magic) {
	tloc225830 a;
	ttype225852* dest;
	memset((void*)(&a), 0, sizeof(a));
	dest = skiptypes_230245((*n).Typ, IL64(211106240964864));
	{
		NIM_BOOL LOC3;
		TY588896 LOC7;
		trope177009* LOC8;
		LOC3 = 0;
		LOC3 = !((((*p).Options &(1<<((((NU8) 3))&31)))!=0));
		if (LOC3) goto LA4;
		LOC3 = ((IL64(34084860461056) &(IL64(1)<<(((*dest).Kind)&IL64(63))))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		initlocexpr_561352(p, (*n).kindU.S6.Sons->data[0], (&a));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_556307((*p).Module, dest);
		LOC7[1] = rdcharloc_559698((&a));
		LOC8 = 0;
		LOC8 = ropef_177107(((NimStringDesc*) &TMP3752), LOC7, 2);
		putintodest_575477(p, d, (*n).Typ, LOC8);
	}
	goto LA1;
	LA5: ;
	{
		TY557593 LOC15;
		trope177009* LOC16;
		initlocexpr_561352(p, (*n).kindU.S6.Sons->data[0], (&a));
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = levalue_235487((*n).kindU.S6.Sons->data[2], (*n).kindU.S6.Sons->data[1]);
			if (!LOC12) goto LA13;
			internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3937));
		}
		LA13: ;
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = gettypedesc_556307((*p).Module, dest);
		LOC15[1] = rdcharloc_559698((&a));
		LOC15[2] = genliteral_574007(p, (*n).kindU.S6.Sons->data[1], dest);
		LOC15[3] = genliteral_574007(p, (*n).kindU.S6.Sons->data[2], dest);
		LOC15[4] = torope_177076(magic);
		LOC16 = 0;
		LOC16 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3938), LOC15, 5);
		putintodest_575477(p, d, dest, LOC16);
	}
	LA1: ;
}

N_NIMCALL(void, convstrtocstr_583745)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	tloc225830 a;
	ttype225852* LOC1;
	TY177515 LOC2;
	trope177009* LOC3;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*n).kindU.S6.Sons->data[0], (&a));
	LOC1 = 0;
	LOC1 = skiptypes_230245((*n).Typ, IL64(211106240964864));
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = rdloc_559637((&a));
	LOC3 = 0;
	LOC3 = ropef_177107(((NimStringDesc*) &TMP3806), LOC2, 1);
	putintodest_575477(p, d, LOC1, LOC3);
}

N_NIMCALL(void, convcstrtostr_583775)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	tloc225830 a;
	ttype225852* LOC1;
	TY177515 LOC2;
	trope177009* LOC3;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*n).kindU.S6.Sons->data[0], (&a));
	LOC1 = 0;
	LOC1 = skiptypes_230245((*n).Typ, IL64(211106240964864));
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = rdloc_559637((&a));
	LOC3 = 0;
	LOC3 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP3734), LOC2, 1);
	putintodest_575477(p, d, LOC1, LOC3);
	gcusage_580100(n);
}

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

static N_INLINE(NIM_BOOL, isconstclosure_585420)(tnode225816* 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_232781((*(*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_585501)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	{
		NIM_BOOL LOC3;
		trope177009* tmp;
		trope177009* LOC6;
		TY554018 LOC7;
		LOC3 = 0;
		LOC3 = isconstclosure_585420(n);
		if (!LOC3) goto LA4;
		(*p).Labels += 1;
		LOC6 = 0;
		LOC6 = torope_177082(((NI64) ((*p).Labels)));
		tmp = con_177038(((NimStringDesc*) &TMP3492), LOC6);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_556307((*p).Module, (*n).Typ);
		LOC7[1] = tmp;
		LOC7[2] = genconstexpr_584775(p, n);
		appf_177115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3588), LOC7, 3);
		putintodest_575477(p, d, (*n).Typ, tmp);
	}
	goto LA1;
	LA4: ;
	{
		tloc225830 tmp;
		tloc225830 a;
		tloc225830 b;
		TY554018 LOC9;
		memset((void*)(&tmp), 0, sizeof(tmp));
		memset((void*)(&a), 0, sizeof(a));
		memset((void*)(&b), 0, sizeof(b));
		initlocexpr_561352(p, (*n).kindU.S6.Sons->data[0], (&a));
		initlocexpr_561352(p, (*n).kindU.S6.Sons->data[1], (&b));
		gettemp_558246(p, (*n).Typ, (&tmp), NIM_FALSE);
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = rdloc_559637((&tmp));
		LOC9[1] = rdloc_559637((&a));
		LOC9[2] = rdloc_559637((&b));
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3942), LOC9, 3);
		putlocintodest_561321(p, d, (&tmp));
	}
	LA1: ;
}

static N_INLINE(trope177009*, assignlabel_566045)(tblock549029* b) {
	trope177009* result;
	trope177009* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = torope_177082(((NI64) ((*b).Id)));
	unsureAsgnRef((void**) (&(*b).Label), con_177038(((NimStringDesc*) &TMP3615), LOC1));
	result = (*b).Label;
	return result;
}

N_NIMCALL(void, gencomputedgoto_568038)(tcproc549031* p, tnode225816* n) {
	NI casepos;
	NI arraysize;
	NI id;
	trope177009* tmp;
	TY177515 LOC27;
	trope177009* gotoarray;
	TY588896 LOC28;
	TY177515 LOC33;
	NI topblock;
	trope177009* oldbody;
	trope177009* tailb;
	trope177009* taila;
	tnode225816* casestmt;
	tloc225830 a_568269;
	TY588896 LOC41;
	casepos = -1;
	arraysize = 0;
	{
		NI i_568065;
		NI HEX3Atmp_568409;
		NI LOC2;
		NI res_568412;
		i_568065 = 0;
		HEX3Atmp_568409 = 0;
		LOC2 = 0;
		LOC2 = len_226364(n);
		HEX3Atmp_568409 = (LOC2 - 1);
		res_568412 = 0;
		{
			while (1) {
				tnode225816* it;
				if (!(res_568412 <= HEX3Atmp_568409)) goto LA4;
				i_568065 = res_568412;
				it = (*n).kindU.S6.Sons->data[i_568065];
				{
					NI64 asize;
					if (!((*it).Kind == ((NU8) 97))) goto LA7;
					{
						tnode225816* LOC11;
						LOC11 = 0;
						LOC11 = lastson_226261(it);
						if (!!(((*LOC11).Kind == ((NU8) 85)))) goto LA12;
						localerror_197966((*it).Info, ((NimStringDesc*) &TMP3944));
						goto BeforeRet;
					}
					LA12: ;
					casepos = i_568065;
					asize = lengthord_263016((*(*it).kindU.S6.Sons->data[0]).Typ);
					{
						if (!(IL64(10000) < asize)) goto LA16;
						localerror_197966((*it).Info, ((NimStringDesc*) &TMP3945));
						goto BeforeRet;
					}
					LA16: ;
					arraysize = ((NI) (asize));
					{
						NI64 LOC20;
						LOC20 = 0;
						LOC20 = firstord_263004((*(*it).kindU.S6.Sons->data[0]).Typ);
						if (!!((LOC20 == IL64(0)))) goto LA21;
						localerror_197966((*it).Info, ((NimStringDesc*) &TMP3946));
						goto BeforeRet;
					}
					LA21: ;
				}
				LA7: ;
				res_568412 += 1;
			} LA4: ;
		}
	}
	{
		if (!(casepos < 0)) goto LA25;
		localerror_197966((*n).Info, ((NimStringDesc*) &TMP3947));
		goto BeforeRet;
	}
	LA25: ;
	id = (NI64)(((NI) ((*p).Labels)) + 1);
	(*p).Labels += (NI64)(arraysize + 1);
	memset((void*)LOC27, 0, sizeof(LOC27));
	LOC27[0] = torope_177082(((NI64) (id)));
	tmp = ropef_177107(((NimStringDesc*) &TMP3486), LOC27, 1);
	memset((void*)LOC28, 0, sizeof(LOC28));
	LOC28[0] = tmp;
	LOC28[1] = torope_177082(((NI64) (arraysize)));
	gotoarray = ropef_177107(((NimStringDesc*) &TMP3948), LOC28, 2);
	{
		NI i_568165;
		NI HEX3Atmp_568415;
		NI res_568418;
		i_568165 = 0;
		HEX3Atmp_568415 = 0;
		HEX3Atmp_568415 = (NI64)(arraysize - 1);
		res_568418 = 1;
		{
			while (1) {
				TY177515 LOC32;
				if (!(res_568418 <= HEX3Atmp_568415)) goto LA31;
				i_568165 = res_568418;
				memset((void*)LOC32, 0, sizeof(LOC32));
				LOC32[0] = torope_177082(((NI64) ((NI64)(((NI) (id)) + i_568165))));
				appf_177115(&gotoarray, ((NimStringDesc*) &TMP3949), LOC32, 1);
				res_568418 += 1;
			} LA31: ;
		}
	}
	memset((void*)LOC33, 0, sizeof(LOC33));
	LOC33[0] = torope_177082(((NI64) ((NI64)(((NI) (id)) + arraysize))));
	appf_177115(&gotoarray, ((NimStringDesc*) &TMP3950), LOC33, 1);
	line_553100(p, ((NU8) 0), gotoarray);
	topblock = (NI64)((*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);
	{
		NI j_568210;
		NI HEX3Atmp_568421;
		NI HEX3Atmp_568422;
		NI LOC35;
		NI res_568425;
		j_568210 = 0;
		HEX3Atmp_568421 = 0;
		HEX3Atmp_568422 = 0;
		HEX3Atmp_568421 = (NI64)(casepos + 1);
		LOC35 = 0;
		LOC35 = len_226364(n);
		HEX3Atmp_568422 = (LOC35 - 1);
		res_568425 = HEX3Atmp_568421;
		{
			while (1) {
				if (!(res_568425 <= HEX3Atmp_568422)) goto LA37;
				j_568210 = res_568425;
				genstmts_561298(p, (*n).kindU.S6.Sons->data[j_568210]);
				res_568425 += 1;
			} LA37: ;
		}
	}
	tailb = (*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0];
	asgnRefNoCycle((void**) (&(*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0]), NIM_NIL);
	{
		NI j_568236;
		NI HEX3Atmp_568428;
		NI res_568431;
		j_568236 = 0;
		HEX3Atmp_568428 = 0;
		HEX3Atmp_568428 = (NI64)(casepos - 1);
		res_568431 = 0;
		{
			while (1) {
				if (!(res_568431 <= HEX3Atmp_568428)) goto LA40;
				j_568236 = res_568431;
				genstmts_561298(p, (*n).kindU.S6.Sons->data[j_568236]);
				res_568431 += 1;
			} LA40: ;
		}
	}
	taila = (*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0];
	asgnRefNoCycle((void**) (&(*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0]), con_177024(oldbody, taila));
	casestmt = (*n).kindU.S6.Sons->data[casepos];
	memset((void*)(&a_568269), 0, sizeof(a_568269));
	initlocexpr_561352(p, (*casestmt).kindU.S6.Sons->data[0], (&a_568269));
	memset((void*)LOC41, 0, sizeof(LOC41));
	LOC41[0] = tmp;
	LOC41[1] = rdloc_559637((&a_568269));
	linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3951), LOC41, 2);
	{
		NI i_568310;
		NI HEX3Atmp_568442;
		NI LOC43;
		NI res_568445;
		i_568310 = 0;
		HEX3Atmp_568442 = 0;
		LOC43 = 0;
		LOC43 = len_226364(casestmt);
		HEX3Atmp_568442 = (LOC43 - 1);
		res_568445 = 1;
		{
			while (1) {
				TY553703 LOC46;
				NI LOC47;
				tnode225816* it;
				tnode225816* LOC57;
				trope177009** LOC58;
				trope177009** LOC59;
				tloc225830 a;
				TY588896 LOC60;
				if (!(res_568445 <= HEX3Atmp_568442)) goto LA45;
				i_568310 = res_568445;
				memset((void*)LOC46, 0, sizeof(LOC46));
				LOC47 = 0;
				LOC47 = startblock_565985(p, ((NimStringDesc*) &TMP3589), LOC46, 0);
				it = (*casestmt).kindU.S6.Sons->data[i_568310];
				{
					NI j_568343;
					NI HEX3Atmp_568436;
					NI LOC49;
					NI res_568439;
					j_568343 = 0;
					HEX3Atmp_568436 = 0;
					LOC49 = 0;
					LOC49 = len_226364(it);
					HEX3Atmp_568436 = (NI64)(LOC49 - 2);
					res_568439 = 0;
					{
						while (1) {
							NI64 val;
							TY177515 LOC56;
							if (!(res_568439 <= HEX3Atmp_568436)) goto LA51;
							j_568343 = res_568439;
							{
								if (!((*(*it).kindU.S6.Sons->data[j_568343]).Kind == ((NU8) 44))) goto LA54;
								localerror_197966((*it).Info, ((NimStringDesc*) &TMP3952));
								goto BeforeRet;
							}
							LA54: ;
							val = getordvalue_263187((*it).kindU.S6.Sons->data[j_568343]);
							memset((void*)LOC56, 0, sizeof(LOC56));
							LOC56[0] = intliteral_561339((NI64)((NI64)(val + ((NI64) (id))) + IL64(1)));
							linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3953), LOC56, 1);
							res_568439 += 1;
						} LA51: ;
					}
				}
				LOC57 = 0;
				LOC57 = lastson_226261(it);
				genstmts_561298(p, LOC57);
				LOC58 = 0;
				LOC58 = s_549183(p, ((NU8) 2));
				app_177052(LOC58, tailb);
				LOC59 = 0;
				LOC59 = s_549183(p, ((NU8) 2));
				app_177052(LOC59, taila);
				memset((void*)(&a), 0, sizeof(a));
				initlocexpr_561352(p, (*casestmt).kindU.S6.Sons->data[0], (&a));
				memset((void*)LOC60, 0, sizeof(LOC60));
				LOC60[0] = tmp;
				LOC60[1] = rdloc_559637((&a));
				linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3951), LOC60, 2);
				endblock_566106(p);
				res_568445 += 1;
			} LA45: ;
		}
	}
	BeforeRet: ;
}

N_NIMCALL(void, genwhilestmt_568504)(tcproc549031* p, tnode225816* t) {
	tloc225830 a;
	trope177009* labl;
	NI oldbreakidx_568614;
	TY553703 LOC1;
	tnode225816* loopbody;
	memset((void*)(&a), 0, sizeof(a));
	labl = 0;
	(*p).Withinloop += 1;
	genlinedir_553435(p, t);
	oldbreakidx_568614 = (*p).Breakidx;
	memset((void*)LOC1, 0, sizeof(LOC1));
	(*p).Breakidx = startblock_565985(p, ((NimStringDesc*) &TMP3943), LOC1, 0);
	(*p).Blocks->data[(*p).Breakidx].Isloop = NIM_TRUE;
	initlocexpr_561352(p, (*t).kindU.S6.Sons->data[0], (&a));
	{
		NIM_BOOL LOC4;
		trope177009* label;
		TY588896 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 == IL64(0));
		LA5: ;
		if (!LOC4) goto LA6;
		label = assignlabel_566045((&(*p).Blocks->data[(*p).Breakidx]));
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_559637((&a));
		LOC8[1] = label;
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3928), LOC8, 2);
	}
	LA6: ;
	loopbody = (*t).kindU.S6.Sons->data[1];
	{
		NIM_BOOL LOC11;
		LOC11 = 0;
		LOC11 = stmtscontainpragma_548128(loopbody, ((NU8) 175));
		if (!(LOC11)) goto LA12;
		LOC11 = ((cc_202434[(ccompiler_202461)- 1].Field20 &(1<<((((NU8) 1))&7)))!=0);
		LA12: ;
		if (!LOC11) goto LA13;
		{
			NIM_BOOL LOC17;
			NI LOC18;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = len_226364(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_568038(p, loopbody);
	}
	goto LA9;
	LA13: ;
	{
		genstmts_561298(p, loopbody);
	}
	LA9: ;
	{
		TY553703 LOC27;
		if (!(((*p).Options &(1<<((((NU8) 19))&31)))!=0)) goto LA25;
		memset((void*)LOC27, 0, sizeof(LOC27));
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3954), LOC27, 0);
	}
	LA25: ;
	endblock_566106(p);
	(*p).Breakidx = oldbreakidx_568614;
	(*p).Withinloop -= 1;
}

N_NIMCALL(void, loaddynamiclib_587311)(tcgen549035* m, tlib225834* lib) {
	{
		trope177009* tmp;
		TY177515 LOC5;
		if (!!((*lib).Generated)) goto LA3;
		(*lib).Generated = NIM_TRUE;
		tmp = getglobaltempname_554254();
		asgnRefNoCycle((void**) (&(*lib).Name), tmp);
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = tmp;
		appf_177115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3955), LOC5, 1);
		{
			TY119808* s;
			trope177009* loadlib;
			TY588896 LOC23;
			if (!((*(*lib).Path).Kind >= ((NU8) 20) && (*(*lib).Path).Kind <= ((NU8) 22))) goto LA8;
			s = (TY119808*) newSeq((&NTI119808), 0);
			libcandidates_170409((*(*lib).Path).kindU.S3.Strval, (&s));
			{
				NimStringDesc* LOC14;
				if (!(2 <= gverbosity_169127)) goto LA12;
				LOC14 = 0;
				LOC14 = rawNewString((*(*lib).Path).kindU.S3.Strval->Sup.len + 12);
appendString(LOC14, ((NimStringDesc*) &TMP3956));
appendString(LOC14, (*(*lib).Path).kindU.S3.Strval);
				msgwriteln_197236(LOC14);
			}
			LA12: ;
			loadlib = NIM_NIL;
			{
				NI i_587683;
				NI HEX3Atmp_587771;
				NI res_587774;
				i_587683 = 0;
				HEX3Atmp_587771 = 0;
				HEX3Atmp_587771 = (s->Sup.len-1);
				res_587774 = 0;
				{
					while (1) {
						TY588896 LOC22;
						if (!(res_587774 <= HEX3Atmp_587771)) goto LA17;
						i_587683 = res_587774;
						(*m).Labels += 1;
						{
							if (!(0 < i_587683)) goto LA20;
							app_177060(&loadlib, ((NimStringDesc*) &TMP3957));
						}
						LA20: ;
						memset((void*)LOC22, 0, sizeof(LOC22));
						LOC22[0] = tmp;
						LOC22[1] = getstrlit_573994(m, s->data[i_587683]);
						appcg_553004(m, &loadlib, ((NimStringDesc*) &TMP3958), LOC22, 2);
						res_587774 += 1;
					} LA17: ;
				}
			}
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = loadlib;
			LOC23[1] = getstrlit_573994(m, (*(*lib).Path).kindU.S3.Strval);
			appcg_553004(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP3959), LOC23, 2);
		}
		goto LA6;
		LA8: ;
		{
			tcproc549031* p;
			tloc225830 dest;
			trope177009** LOC25;
			trope177009** LOC26;
			trope177009** LOC27;
			TY588896 LOC28;
			p = newproc_549230(NIM_NIL, m);
			(*p).Options = ((*p).Options & ~ 163840);
			memset((void*)(&dest), 0, sizeof(dest));
			initlocexpr_561352(p, (*lib).Path, (&dest));
			LOC25 = 0;
			LOC25 = s_549183(p, ((NU8) 0));
			app_177052(&(*m).S[(((NU8) 9))- 0], (*LOC25));
			LOC26 = 0;
			LOC26 = s_549183(p, ((NU8) 1));
			app_177052(&(*m).S[(((NU8) 16))- 0], (*LOC26));
			LOC27 = 0;
			LOC27 = s_549183(p, ((NU8) 2));
			app_177052(&(*m).S[(((NU8) 16))- 0], (*LOC27));
			memset((void*)LOC28, 0, sizeof(LOC28));
			LOC28[0] = tmp;
			LOC28[1] = rdloc_559637((&dest));
			appcg_553004(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP3960), LOC28, 2);
		}
		LA6: ;
	}
	LA3: ;
	{
		if (!((*lib).Name == NIM_NIL)) goto LA31;
		internalerror_198006(((NimStringDesc*) &TMP3961));
	}
	LA31: ;
}

N_NIMCALL(trope177009*, cstringlit_560296)(tcgen549035* m, trope177009** r, NimStringDesc* s) {
	trope177009* result;
	result = 0;
	{
		TY177515 LOC5;
		TY554018 LOC6;
		TY554018 LOC7;
		if (!(gcmd_169120 == ((NU8) 5))) goto LA3;
		(*m).Labels += 2;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_177082(((NI64) ((NI64)(((NI) ((*m).Labels)) - 1))));
		result = ropef_177107(((NimStringDesc*) &TMP3963), LOC5, 1);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = torope_177082(((NI64) ((*m).Labels)));
		LOC6[1] = torope_177082(((NI64) (s->Sup.len)));
		LOC6[2] = makellvmstring_548816(s);
		appf_177115(&(*m).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3964), LOC6, 3);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = result;
		LOC7[1] = torope_177082(((NI64) (s->Sup.len)));
		LOC7[2] = torope_177082(((NI64) ((*m).Labels)));
		appf_177115(r, ((NimStringDesc*) &TMP3967), LOC7, 3);
	}
	goto LA1;
	LA3: ;
	{
		result = makecstring_195659(s);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, varindynamiclib_560931)(tcgen549035* m, tsym225846* sym) {
	tlib225834* lib;
	trope177009* extname;
	trope177009* tmp;
	TY556046 LOC1;
	NimStringDesc* LOC2;
	TY588896 LOC3;
	lib = (*sym).Annex;
	extname = (*sym).Loc.R;
	loaddynamiclib_587311(m, lib);
	(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 0))%(sizeof(NI8)*8));
	tmp = mangledynlibproc_560938(sym);
	asgnRefNoCycle((void**) (&(*sym).Loc.R), tmp);
	(*m).Labels += 2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = tmp;
	LOC1[1] = gettypedesc_556307(m, (*sym).Typ);
	LOC1[2] = (*lib).Name;
	LOC2 = 0;
	LOC2 = ropetostr_177101(extname);
	LOC1[3] = cstringlit_560296(m, &(*m).S[(((NU8) 16))- 0], LOC2);
	appcg_553004(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP3962), LOC1, 4);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = (*sym).Loc.R;
	LOC3[1] = gettypedesc_556307(m, (*sym).Loc.T);
	appf_177115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3968), LOC3, 2);
}

N_NIMCALL(trope177009*, cstringlit_560237)(tcproc549031* p, trope177009** r, NimStringDesc* s) {
	trope177009* result;
	result = 0;
	{
		TY177515 LOC5;
		TY554018 LOC6;
		TY554018 LOC7;
		if (!(gcmd_169120 == ((NU8) 5))) goto LA3;
		(*(*p).Module).Labels += 1;
		(*p).Labels += 1;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_177082(((NI64) ((*p).Labels)));
		result = ropef_177107(((NimStringDesc*) &TMP3970), LOC5, 1);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = torope_177082(((NI64) ((*(*p).Module).Labels)));
		LOC6[1] = torope_177082(((NI64) (s->Sup.len)));
		LOC6[2] = makellvmstring_548816(s);
		appf_177115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3971), LOC6, 3);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = result;
		LOC7[1] = torope_177082(((NI64) (s->Sup.len)));
		LOC7[2] = torope_177082(((NI64) ((*(*p).Module).Labels)));
		appf_177115(r, ((NimStringDesc*) &TMP3972), LOC7, 3);
	}
	goto LA1;
	LA3: ;
	{
		result = makecstring_195659(s);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, assignglobalvar_560944)(tcproc549031* p, tsym225846* s) {
	{
		trope177009* LOC5;
		if (!((*s).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_553667(s);
		fillloc_552376((&(*s).Loc), ((NU8) 3), (*s).Typ, LOC5, ((NU8) 2));
	}
	LA3: ;
	{
		tcgen549035* q;
		if (!(((*s).Loc.Flags &(1<<((((NU8) 4))&7)))!=0)) goto LA8;
		q = findpendingmodule_552313((*p).Module, s);
		{
			NIM_BOOL LOC12;
			NIM_BOOL LOC14;
			LOC12 = 0;
			LOC12 = !((q == NIM_NIL));
			if (!(LOC12)) goto LA13;
			LOC14 = 0;
			LOC14 = containsorincl_222916((&(*q).Declaredthings), (*s).Sup.Id);
			LOC12 = !(LOC14);
			LA13: ;
			if (!LOC12) goto LA15;
			varindynamiclib_560931(q, s);
		}
		goto LA10;
		LA15: ;
		{
			asgnRefNoCycle((void**) (&(*s).Loc.R), mangledynlibproc_560938(s));
		}
		LA10: ;
		goto BeforeRet;
	}
	LA8: ;
	useheader_552469((*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_560753((*p).Module, s, (((*s).Flags &(1<<((((NU8) 5))&31)))!=0));
	}
	goto LA22;
	LA24: ;
	{
		trope177009* decl;
		trope177009* td;
		decl = NIM_NIL;
		td = gettypedesc_556307((*p).Module, (*s).Loc.T);
		{
			TY177515 LOC43;
			if (!(*s).Constraint == 0) goto LA29;
			{
				if (!(((*s).Flags &(1<<((((NU8) 5))&31)))!=0)) goto LA33;
				app_177060(&decl, ((NimStringDesc*) &TMP3586));
			}
			LA33: ;
			app_177052(&decl, td);
			{
				if (!(((*s).Flags &(1<<((((NU8) 8))&31)))!=0)) goto LA37;
				app_177060(&decl, ((NimStringDesc*) &TMP3463));
			}
			LA37: ;
			{
				if (!(((*s).Flags &(1<<((((NU8) 7))&31)))!=0)) goto LA41;
				app_177060(&decl, ((NimStringDesc*) &TMP3464));
			}
			LA41: ;
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC43[0] = (*s).Loc.R;
			appf_177115(&decl, ((NimStringDesc*) &TMP3465), LOC43, 1);
		}
		goto LA27;
		LA29: ;
		{
			NimStringDesc* LOC45;
			TY588896 LOC46;
			LOC45 = 0;
			LOC45 = rawNewString((*(*s).Constraint).kindU.S3.Strval->Sup.len + 3);
appendString(LOC45, (*(*s).Constraint).kindU.S3.Strval);
appendString(LOC45, ((NimStringDesc*) &TMP3466));
			memset((void*)LOC46, 0, sizeof(LOC46));
			LOC46[0] = td;
			LOC46[1] = (*s).Loc.R;
			decl = ropef_177107(LOC45, LOC46, 2);
		}
		LA27: ;
		app_177052(&(*(*p).Module).S[(((NU8) 9))- 0], decl);
	}
	LA22: ;
	{
		if (!(0 < (*p).Withinloop)) goto LA49;
		resetloc_559870(p, (&(*s).Loc));
	}
	LA49: ;
	{
		TY554018 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_560237(p, &(*(*p).Module).S[(((NU8) 15))- 0], LOC57);
		LOC55[1] = (*s).Loc.R;
		LOC55[2] = gentypeinfo_556602((*p).Module, (*s).Typ);
		appcg_553004((*p).Module, &(*(*p).Module).S[(((NU8) 15))- 0], ((NimStringDesc*) &TMP3969), LOC55, 3);
	}
	LA53: ;
	BeforeRet: ;
}

N_NIMCALL(trope177009*, gentraverseprocforglobal_559442)(tcgen549035* m, tsym225846* s) {
	trope177009* result;
	trope177009* LOC1;
	ttraversalclosure558233 c;
	tcproc549031* p;
	trope177009* sloc;
	trope177009* header;
	TY177515 LOC8;
	trope177009* generatedproc;
	TY556046 LOC9;
	trope177009** LOC10;
	trope177009** LOC11;
	trope177009** LOC12;
	TY177515 LOC13;
	result = 0;
	LOC1 = 0;
	LOC1 = gentypeinfo_556602(m, (*s).Loc.T);
	memset((void*)(&c), 0, sizeof(c));
	p = newproc_549230(NIM_NIL, m);
	sloc = (*s).Loc.R;
	result = getglobaltempname_554254();
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = (((*s).Flags &(1<<((((NU8) 22))&31)))!=0);
		if (!(LOC4)) goto LA5;
		LOC4 = emulatedthreadvars_553624();
		LA5: ;
		if (!LOC4) goto LA6;
		accessthreadlocalvar_553617(p, s);
		sloc = con_177038(((NimStringDesc*) &TMP3606), sloc);
	}
	LA6: ;
	c.Visitorfrmt = copyString(((NimStringDesc*) &TMP3973));
	c.P = p;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = result;
	header = ropef_177107(((NimStringDesc*) &TMP3974), LOC8, 1);
	gentraverseproc_558236((&c), sloc, (*s).Loc.T);
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC9[0] = header;
	LOC10 = 0;
	LOC10 = s_549183(p, ((NU8) 0));
	unsureAsgnRef((void**) (&LOC9[1]), (*LOC10));
	LOC11 = 0;
	LOC11 = s_549183(p, ((NU8) 1));
	unsureAsgnRef((void**) (&LOC9[2]), (*LOC11));
	LOC12 = 0;
	LOC12 = s_549183(p, ((NU8) 2));
	unsureAsgnRef((void**) (&LOC9[3]), (*LOC12));
	generatedproc = ropef_177107(((NimStringDesc*) &TMP3538), LOC9, 4);
	memset((void*)LOC13, 0, sizeof(LOC13));
	LOC13[0] = header;
	appf_177115(&(*m).S[(((NU8) 7))- 0], ((NimStringDesc*) &TMP3461), LOC13, 1);
	app_177052(&(*m).S[(((NU8) 10))- 0], generatedproc);
	return result;
}

N_NIMCALL(void, registergcroot_565607)(tcproc549031* p, tsym225846* v) {
	{
		NIM_BOOL LOC3;
		trope177009* prc;
		TY177515 LOC7;
		LOC3 = 0;
		LOC3 = ((36 &(1<<((gselectedgc_169121)&7)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = containsgarbagecollectedref_263163((*v).Loc.T);
		LA4: ;
		if (!LOC3) goto LA5;
		prc = gentraverseprocforglobal_559442((*p).Module, v);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = prc;
		linefmt_553148((*(*p).Module).Initproc, ((NU8) 2), ((NimStringDesc*) &TMP3975), LOC7, 1);
	}
	LA5: ;
}

static N_INLINE(NIM_BOOL, isassignedimmediately_565633)(tnode225816* n) {
	NIM_BOOL result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 1))) goto LA3;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = isinvalidreturntype_554176((*n).Typ);
		if (!LOC7) goto LA8;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA8: ;
	result = NIM_TRUE;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, genasgncall_565404)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* d) {
	{
		if (!((*(*(*ri).kindU.S6.Sons->data[0]).Typ).Callconv == ((NU8) 8))) goto LA3;
		genclosurecall_562683(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_226364(ri);
		LOC6 = (2 <= LOC10);
		LA9: ;
		if (!LOC6) goto LA11;
		geninfixcall_563441(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_564281(p, ri, d);
	}
	goto LA1;
	LA16: ;
	{
		genprefixcall_562149(p, le, ri, d);
	}
	LA1: ;
	poststmtactions_553608(p);
}

static N_INLINE(void, loadinto_565888)(tcproc549031* p, tnode225816* le, tnode225816* ri, tloc225830* 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_565404(p, le, ri, a);
	}
	goto LA1;
	LA7: ;
	{
		if (!((*ri).Kind == ((NU8) 47) || (*ri).Kind == ((NU8) 65))) goto LA10;
		genderef_565881(p, ri, a, NIM_TRUE);
	}
	goto LA1;
	LA10: ;
	{
		expr_561305(p, ri, a);
	}
	LA1: ;
}

N_NIMCALL(void, gensinglevar_566486)(tcproc549031* p, tnode225816* a) {
	tsym225846* v;
	tcproc549031* targetproc;
	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;
	{
		if (!(((*v).Flags &(1<<((((NU8) 3))&31)))!=0)) goto LA7;
		{
			NIM_BOOL LOC11;
			NIM_BOOL LOC12;
			LOC11 = 0;
			LOC12 = 0;
			LOC12 = (((*v).Flags & 96) == 32);
			if (!(LOC12)) goto LA13;
			LOC12 = ((*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 1));
			LA13: ;
			LOC11 = LOC12;
			if (!(LOC11)) goto LA14;
			LOC11 = !((((*v).Loc.Flags & 72) == 0));
			LA14: ;
			if (!LOC11) goto LA15;
			goto BeforeRet;
		}
		LA15: ;
		{
			if (!(((*v).Flags &(1<<((((NU8) 9))&31)))!=0)) goto LA19;
			targetproc = (*(*p).Module).Preinitproc;
		}
		LA19: ;
		assignglobalvar_560944(targetproc, v);
		genobjectinit_559721((*(*p).Module).Preinitproc, ((NU8) 1), (*v).Typ, (&(*v).Loc), NIM_TRUE);
		{
			NIM_BOOL LOC23;
			LOC23 = 0;
			LOC23 = (((*v).Flags &(1<<((((NU8) 6))&31)))!=0);
			if (!(LOC23)) goto LA24;
			LOC23 = !((generatedheader_552201 == NIM_NIL));
			LA24: ;
			if (!LOC23) goto LA25;
			genvarprototypeaux_566482(generatedheader_552201, v);
		}
		LA25: ;
		registergcroot_565607(p, v);
	}
	goto LA5;
	LA7: ;
	{
		NIM_BOOL LOC28;
		assignlocalvar_560577(p, v);
		LOC28 = 0;
		LOC28 = isassignedimmediately_565633((*a).kindU.S6.Sons->data[2]);
		initlocalvar_559943(p, v, LOC28);
	}
	LA5: ;
	{
		if (!!(((*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)))) goto LA31;
		genlinedir_553435(targetproc, a);
		loadinto_565888(targetproc, (*a).kindU.S6.Sons->data[0], (*a).kindU.S6.Sons->data[2], (&(*v).Loc));
	}
	LA31: ;
	BeforeRet: ;
}

N_NIMCALL(void, genclosurevar_566753)(tcproc549031* p, tnode225816* a) {
	NIM_BOOL immediateasgn;
	immediateasgn = !(((*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)));
	{
		tloc225830 v;
		if (!immediateasgn) goto LA3;
		memset((void*)(&v), 0, sizeof(v));
		initlocexpr_561352(p, (*a).kindU.S6.Sons->data[0], (&v));
		genlinedir_553435(p, a);
		loadinto_565888(p, (*a).kindU.S6.Sons->data[0], (*a).kindU.S6.Sons->data[2], (&v));
	}
	LA3: ;
}

N_NIMCALL(void, genvartuple_565649)(tcproc549031* p, tnode225816* n) {
	tloc225830 tup;
	tloc225830 field;
	NI l;
	NIM_BOOL uselowering;
	ttype225852* t;
	memset((void*)(&tup), 0, sizeof(tup));
	memset((void*)(&field), 0, sizeof(field));
	{
		if (!!(((*n).Kind == ((NU8) 36)))) goto LA3;
		internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3976));
	}
	LA3: ;
	l = sonslen_226249(n);
	uselowering = NIM_FALSE;
	{
		NI i_565678;
		NI HEX3Atmp_565845;
		NI res_565848;
		i_565678 = 0;
		HEX3Atmp_565845 = 0;
		HEX3Atmp_565845 = (NI64)(l - 3);
		res_565848 = 0;
		{
			while (1) {
				if (!(res_565848 <= HEX3Atmp_565845)) goto LA7;
				i_565678 = res_565848;
				{
					tnode225816* LOC10;
					LOC10 = 0;
					LOC10 = HEX5BHEX5D_226698(n, i_565678);
					if (!!(((*LOC10).Kind == ((NU8) 3)))) goto LA11;
					uselowering = NIM_TRUE;
					goto LA5;
				}
				LA11: ;
				res_565848 += 1;
			} LA7: ;
		}
	} LA5: ;
	{
		tnode225816* LOC17;
		if (!uselowering) goto LA15;
		LOC17 = 0;
		LOC17 = lowertupleunpacking_424184(n, (*p).Prc);
		genstmts_561298(p, LOC17);
		goto BeforeRet;
	}
	LA15: ;
	genlinedir_553435(p, n);
	initlocexpr_561352(p, (*n).kindU.S6.Sons->data[(NI64)(l - 1)], (&tup));
	t = tup.T;
	{
		NI i_565716;
		NI HEX3Atmp_565852;
		NI res_565855;
		i_565716 = 0;
		HEX3Atmp_565852 = 0;
		HEX3Atmp_565852 = (NI64)(l - 3);
		res_565855 = 0;
		{
			while (1) {
				if (!(res_565855 <= HEX3Atmp_565852)) goto LA20;
				i_565716 = res_565855;
				{
					tsym225846* v;
					v = (*(*n).kindU.S6.Sons->data[i_565716]).kindU.S4.Sym;
					{
						if (!(((*v).Flags &(1<<((((NU8) 23))&31)))!=0)) goto LA24;
						goto LA21;
					}
					LA24: ;
					{
						if (!(((*v).Flags &(1<<((((NU8) 3))&31)))!=0)) goto LA28;
						assignglobalvar_560944(p, v);
						genobjectinit_559721(p, ((NU8) 1), (*v).Typ, (&(*v).Loc), NIM_TRUE);
						registergcroot_565607(p, v);
					}
					goto LA26;
					LA28: ;
					{
						tnode225816* LOC31;
						NIM_BOOL LOC32;
						assignlocalvar_560577(p, v);
						LOC31 = 0;
						LOC31 = HEX5BHEX5D_226698(n, (NI64)(l - 1));
						LOC32 = 0;
						LOC32 = isassignedimmediately_565633(LOC31);
						initlocalvar_559943(p, v, LOC32);
					}
					LA26: ;
					initloc_552361((&field), ((NU8) 7), (*t).Sons->data[i_565716], tup.S);
					{
						TY588896 LOC37;
						if (!((*t).Kind == ((NU8) 18))) goto LA35;
						memset((void*)LOC37, 0, sizeof(LOC37));
						LOC37[0] = rdloc_559637((&tup));
						LOC37[1] = torope_177082(((NI64) (i_565716)));
						field.R = ropef_177107(((NimStringDesc*) &TMP3533), LOC37, 2);
					}
					goto LA33;
					LA35: ;
					{
						TY588896 LOC43;
						{
							if (!!(((*(*(*t).N).kindU.S6.Sons->data[i_565716]).Kind == ((NU8) 3)))) goto LA41;
							internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3976));
						}
						LA41: ;
						memset((void*)LOC43, 0, sizeof(LOC43));
						LOC43[0] = rdloc_559637((&tup));
						LOC43[1] = manglerecfieldname_555247((*(*(*t).N).kindU.S6.Sons->data[i_565716]).kindU.S4.Sym, t);
						field.R = ropef_177107(((NimStringDesc*) &TMP3435), LOC43, 2);
					}
					LA33: ;
					putlocintodest_561321(p, (&(*v).Loc), (&field));
				} LA21: ;
				res_565855 += 1;
			} LA20: ;
		}
	}
	BeforeRet: ;
}

N_NIMCALL(void, genvarstmt_566830)(tcproc549031* p, tnode225816* n) {
	{
		NI i_566846;
		NI HEX3Atmp_566905;
		NI LOC2;
		NI res_566908;
		i_566846 = 0;
		HEX3Atmp_566905 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226249(n);
		HEX3Atmp_566905 = (NI64)(LOC2 - 1);
		res_566908 = 0;
		{
			while (1) {
				if (!(res_566908 <= HEX3Atmp_566905)) goto LA4;
				i_566846 = res_566908;
				{
					tnode225816* a;
					a = (*n).kindU.S6.Sons->data[i_566846];
					{
						if (!((*a).Kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!((*a).Kind == ((NU8) 35))) goto LA12;
						{
							if (!((*(*a).kindU.S6.Sons->data[0]).Kind == ((NU8) 3))) goto LA16;
							gensinglevar_566486(p, a);
						}
						goto LA14;
						LA16: ;
						{
							genclosurevar_566753(p, a);
						}
						LA14: ;
					}
					goto LA10;
					LA12: ;
					{
						genvartuple_565649(p, a);
					}
					LA10: ;
				} LA5: ;
				res_566908 += 1;
			} LA4: ;
		}
	}
}

static N_INLINE(NIM_BOOL, emitlazily_552325)(tsym225846* s) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	tsym225846* LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((gglobaloptions_169118 &(1<<((((NU8) 2))&31)))!=0);
	if (LOC1) goto LA2;
	LOC3 = 0;
	LOC3 = getmodule_235243(s);
	LOC1 = (((*LOC3).Flags &(1<<((((NU8) 25))&31)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genconststmt_566925)(tcproc549031* p, tnode225816* t) {
	{
		NI i_566941;
		NI HEX3Atmp_567203;
		NI LOC2;
		NI res_567206;
		i_566941 = 0;
		HEX3Atmp_567203 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226249(t);
		HEX3Atmp_567203 = (NI64)(LOC2 - 1);
		res_567206 = 0;
		{
			while (1) {
				if (!(res_567206 <= HEX3Atmp_567203)) goto LA4;
				i_566941 = res_567206;
				{
					tnode225816* it;
					tsym225846* c;
					it = (*t).kindU.S6.Sons->data[i_566941];
					{
						if (!((*it).Kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!!(((*it).Kind == ((NU8) 102)))) goto LA12;
						internalerror_197987((*t).Info, ((NimStringDesc*) &TMP3977));
					}
					LA12: ;
					c = (*(*it).kindU.S6.Sons->data[0]).kindU.S4.Sym;
					{
						NIM_BOOL LOC16;
						LOC16 = 0;
						LOC16 = containscompiletimeonly_273490((*c).Typ);
						if (!LOC16) goto LA17;
						goto LA5;
					}
					LA17: ;
					{
						if (!(((*c).Flags &(1<<((((NU8) 25))&31)))!=0)) goto LA21;
						gensinglevar_566486(p, it);
					}
					goto LA19;
					LA21: ;
					{
						NIM_BOOL LOC24;
						NIM_BOOL LOC25;
						NI LOC28;
						LOC24 = 0;
						LOC25 = 0;
						LOC25 = ((17629200 &(IL64(1)<<(((*(*c).Typ).Kind)&IL64(63))))!=0);
						if (!(LOC25)) goto LA26;
						LOC25 = !((((*c).Loc.Flags &(1<<((((NU8) 3))&7)))!=0));
						LA26: ;
						LOC24 = LOC25;
						if (!(LOC24)) goto LA27;
						LOC28 = 0;
						LOC28 = len_226364((*c).Ast);
						LOC24 = !((LOC28 == 0));
						LA27: ;
						if (!LOC24) goto LA29;
						{
							NIM_BOOL LOC33;
							LOC33 = 0;
							LOC33 = emitlazily_552325(c);
							if (!!(LOC33)) goto LA34;
							requestconstimpl_561291(p, c);
						}
						LA34: ;
					}
					goto LA19;
					LA29: ;
					LA19: ;
				} LA5: ;
				res_567206 += 1;
			} LA4: ;
		}
	}
}

N_NIMCALL(void, gencasestringbranch_570258)(tcproc549031* p, tnode225816* b, tloc225830* e, trope177009* labl, trope177009** branches, NI branchesLen0) {
	tloc225830 x;
	NI length;
	memset((void*)(&x), 0, sizeof(x));
	length = sonslen_226249(b);
	{
		NI i_570281;
		NI HEX3Atmp_570638;
		NI res_570641;
		i_570281 = 0;
		HEX3Atmp_570638 = 0;
		HEX3Atmp_570638 = (NI64)(length - 2);
		res_570641 = 0;
		{
			while (1) {
				NI j;
				NI64 LOC4;
				TY554018 LOC5;
				if (!(res_570641 <= HEX3Atmp_570638)) goto LA3;
				i_570281 = res_570641;
				initlocexpr_561352(p, (*b).kindU.S6.Sons->data[i_570281], (&x));
				LOC4 = 0;
				LOC4 = hashstring_548156((*(*b).kindU.S6.Sons->data[i_570281]).kindU.S3.Strval);
				j = ((NI) ((NI64)(LOC4 & ((NI64) ((branchesLen0-1))))));
				memset((void*)LOC5, 0, sizeof(LOC5));
				LOC5[0] = rdloc_559637(e);
				LOC5[1] = rdloc_559637((&x));
				LOC5[2] = labl;
				appcg_553004((*p).Module, &branches[j], ((NimStringDesc*) &TMP3979), LOC5, 3);
				res_570641 += 1;
			} LA3: ;
		}
	}
}

N_NIMCALL(void, exprblock_566174)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	TY553703 LOC1;
	NI LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = startblock_565985(p, ((NimStringDesc*) &TMP3589), LOC1, 0);
	expr_561305(p, n, d);
	endblock_566106(p);
}

N_NIMCALL(trope177009*, gencasesecondpass_569974)(tcproc549031* p, tnode225816* t, tloc225830* d, NI labid, NI until) {
	trope177009* result;
	trope177009* lend;
	result = 0;
	lend = getlabel_561248(p);
	{
		NI i_569994;
		NI res_570100;
		i_569994 = 0;
		res_570100 = 1;
		{
			while (1) {
				TY177515 LOC4;
				if (!(res_570100 <= until)) goto LA3;
				i_569994 = res_570100;
				memset((void*)LOC4, 0, sizeof(LOC4));
				LOC4[0] = torope_177082(((NI64) ((NI64)(labid + i_569994))));
				linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3983), LOC4, 1);
				{
					NI length;
					TY177515 LOC9;
					if (!((*(*t).kindU.S6.Sons->data[i_569994]).Kind == ((NU8) 85))) goto LA7;
					length = sonslen_226249((*t).kindU.S6.Sons->data[i_569994]);
					exprblock_566174(p, (*(*t).kindU.S6.Sons->data[i_569994]).kindU.S6.Sons->data[(NI64)(length - 1)], d);
					memset((void*)LOC9, 0, sizeof(LOC9));
					LOC9[0] = lend;
					linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3930), LOC9, 1);
				}
				goto LA5;
				LA7: ;
				{
					exprblock_566174(p, (*(*t).kindU.S6.Sons->data[i_569994]).kindU.S6.Sons->data[0], d);
				}
				LA5: ;
				res_570100 += 1;
			} LA3: ;
		}
	}
	result = lend;
	return result;
}

N_NIMCALL(void, gencasegenericbranch_569826)(tcproc549031* p, tnode225816* b, tloc225830* e, NimStringDesc* rangeformat, NimStringDesc* eqformat, trope177009* labl) {
	tloc225830 x;
	tloc225830 y;
	NI length;
	memset((void*)(&x), 0, sizeof(x));
	memset((void*)(&y), 0, sizeof(y));
	length = sonslen_226249(b);
	{
		NI i_569849;
		NI HEX3Atmp_569957;
		NI res_569960;
		i_569849 = 0;
		HEX3Atmp_569957 = 0;
		HEX3Atmp_569957 = (NI64)(length - 2);
		res_569960 = 0;
		{
			while (1) {
				if (!(res_569960 <= HEX3Atmp_569957)) goto LA3;
				i_569849 = res_569960;
				{
					TY556046 LOC8;
					if (!((*(*b).kindU.S6.Sons->data[i_569849]).Kind == ((NU8) 44))) goto LA6;
					initlocexpr_561352(p, (*(*b).kindU.S6.Sons->data[i_569849]).kindU.S6.Sons->data[0], (&x));
					initlocexpr_561352(p, (*(*b).kindU.S6.Sons->data[i_569849]).kindU.S6.Sons->data[1], (&y));
					memset((void*)LOC8, 0, sizeof(LOC8));
					LOC8[0] = rdcharloc_559698(e);
					LOC8[1] = rdcharloc_559698((&x));
					LOC8[2] = rdcharloc_559698((&y));
					LOC8[3] = labl;
					linecg_553135(p, ((NU8) 2), rangeformat, LOC8, 4);
				}
				goto LA4;
				LA6: ;
				{
					TY554018 LOC10;
					initlocexpr_561352(p, (*b).kindU.S6.Sons->data[i_569849], (&x));
					memset((void*)LOC10, 0, sizeof(LOC10));
					LOC10[0] = rdcharloc_559698(e);
					LOC10[1] = rdcharloc_559698((&x));
					LOC10[2] = labl;
					linecg_553135(p, ((NU8) 2), eqformat, LOC10, 3);
				}
				LA4: ;
				res_569960 += 1;
			} LA3: ;
		}
	}
}

N_NIMCALL(trope177009*, genifforcaseuntil_570114)(tcproc549031* p, tnode225816* t, tloc225830* d, NimStringDesc* rangeformat, NimStringDesc* eqformat, NI until, tloc225830* a) {
	trope177009* result;
	NI labid;
	result = 0;
	labid = (*p).Labels;
	{
		NI i_570136;
		NI res_570215;
		i_570136 = 0;
		res_570215 = 1;
		{
			while (1) {
				if (!(res_570215 <= until)) goto LA3;
				i_570136 = res_570215;
				(*p).Labels += 1;
				{
					trope177009* LOC8;
					trope177009* LOC9;
					if (!((*(*t).kindU.S6.Sons->data[i_570136]).Kind == ((NU8) 85))) goto LA6;
					LOC8 = 0;
					LOC8 = torope_177082(((NI64) ((*p).Labels)));
					LOC9 = 0;
					LOC9 = con_177038(((NimStringDesc*) &TMP3615), LOC8);
					gencasegenericbranch_569826(p, (*t).kindU.S6.Sons->data[i_570136], a, rangeformat, eqformat, LOC9);
				}
				goto LA4;
				LA6: ;
				{
					TY177515 LOC11;
					memset((void*)LOC11, 0, sizeof(LOC11));
					LOC11[0] = torope_177082(((NI64) ((*p).Labels)));
					linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3982), LOC11, 1);
				}
				LA4: ;
				res_570215 += 1;
			} LA3: ;
		}
	}
	{
		NI LOC14;
		NI gototarget;
		TY177515 LOC17;
		TY177515 LOC18;
		LOC14 = 0;
		LOC14 = len_226364(t);
		if (!(until < (NI64)(LOC14 - 1))) goto LA15;
		(*p).Labels += 1;
		gototarget = (*p).Labels;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = torope_177082(((NI64) (gototarget)));
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3982), LOC17, 1);
		result = gencasesecondpass_569974(p, t, d, ((NI) (labid)), until);
		memset((void*)LOC18, 0, sizeof(LOC18));
		LOC18[0] = torope_177082(((NI64) (gototarget)));
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3983), LOC18, 1);
	}
	goto LA12;
	LA15: ;
	{
		result = gencasesecondpass_569974(p, t, d, ((NI) (labid)), until);
	}
	LA12: ;
	return result;
}

N_NIMCALL(void, gencasegeneric_570229)(tcproc549031* p, tnode225816* t, tloc225830* d, NimStringDesc* rangeformat, NimStringDesc* eqformat) {
	tloc225830 a;
	trope177009* lend;
	NI LOC1;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*t).kindU.S6.Sons->data[0], (&a));
	LOC1 = 0;
	LOC1 = sonslen_226249(t);
	lend = genifforcaseuntil_570114(p, t, d, rangeformat, eqformat, (NI64)(LOC1 - 1), (&a));
	fixlabel_561270(p, lend);
}

N_NIMCALL(void, genstringcase_570655)(tcproc549031* p, tnode225816* t, tloc225830* d) {
	NI strings;
	strings = 0;
	{
		NI i_570674;
		NI HEX3Atmp_570898;
		NI LOC2;
		NI res_570901;
		i_570674 = 0;
		HEX3Atmp_570898 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226249(t);
		HEX3Atmp_570898 = (NI64)(LOC2 - 1);
		res_570901 = 1;
		{
			while (1) {
				if (!(res_570901 <= HEX3Atmp_570898)) goto LA4;
				i_570674 = res_570901;
				{
					NI LOC9;
					if (!((*(*t).kindU.S6.Sons->data[i_570674]).Kind == ((NU8) 85))) goto LA7;
					LOC9 = 0;
					LOC9 = sonslen_226249((*t).kindU.S6.Sons->data[i_570674]);
					strings += (NI64)(LOC9 - 1);
				}
				LA7: ;
				res_570901 += 1;
			} LA4: ;
		}
	}
	{
		NI bitmask;
		NI LOC14;
		TY195552* branches;
		tloc225830 a;
		NI labid;
		TY588896 LOC26;
		TY553703 LOC35;
		trope177009* lend;
		NI LOC42;
		if (!(8 < strings)) goto LA12;
		LOC14 = 0;
		LOC14 = nextpoweroftwo_146528(strings);
		bitmask = (NI64)(LOC14 - 1);
		branches = 0;
		branches = (TY195552*) newSeq((&NTI195552), (NI64)(bitmask + 1));
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_561352(p, (*t).kindU.S6.Sons->data[0], (&a));
		labid = (*p).Labels;
		{
			NI i_570773;
			NI HEX3Atmp_570906;
			NI LOC16;
			NI res_570909;
			i_570773 = 0;
			HEX3Atmp_570906 = 0;
			LOC16 = 0;
			LOC16 = sonslen_226249(t);
			HEX3Atmp_570906 = (NI64)(LOC16 - 1);
			res_570909 = 1;
			{
				while (1) {
					if (!(res_570909 <= HEX3Atmp_570906)) goto LA18;
					i_570773 = res_570909;
					(*p).Labels += 1;
					{
						trope177009* LOC23;
						trope177009* LOC24;
						if (!((*(*t).kindU.S6.Sons->data[i_570773]).Kind == ((NU8) 85))) goto LA21;
						LOC23 = 0;
						LOC23 = torope_177082(((NI64) ((*p).Labels)));
						LOC24 = 0;
						LOC24 = con_177038(((NimStringDesc*) &TMP3615), LOC23);
						gencasestringbranch_570258(p, (*t).kindU.S6.Sons->data[i_570773], (&a), LOC24, branches->data, branches->Sup.len);
					}
					goto LA19;
					LA21: ;
					{
					}
					LA19: ;
					res_570909 += 1;
				} LA18: ;
			}
		}
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = rdloc_559637((&a));
		LOC26[1] = torope_177082(((NI64) (bitmask)));
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3980), LOC26, 2);
		{
			NI j_570840;
			NI HEX3Atmp_570912;
			NI res_570915;
			j_570840 = 0;
			HEX3Atmp_570912 = 0;
			HEX3Atmp_570912 = (branches->Sup.len-1);
			res_570915 = 0;
			{
				while (1) {
					if (!(res_570915 <= HEX3Atmp_570912)) goto LA29;
					j_570840 = res_570915;
					{
						TY588896 LOC34;
						if (!!((branches->data[j_570840] == NIM_NIL))) goto LA32;
						memset((void*)LOC34, 0, sizeof(LOC34));
						LOC34[0] = intliteral_561339(((NI64) (j_570840)));
						LOC34[1] = branches->data[j_570840];
						linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3981), LOC34, 2);
					}
					LA32: ;
					res_570915 += 1;
				} LA29: ;
			}
		}
		memset((void*)LOC35, 0, sizeof(LOC35));
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3504), LOC35, 0);
		{
			NI LOC38;
			TY177515 LOC41;
			LOC38 = 0;
			LOC38 = sonslen_226249(t);
			if (!!(((*(*t).kindU.S6.Sons->data[(NI64)(LOC38 - 1)]).Kind == ((NU8) 85)))) goto LA39;
			memset((void*)LOC41, 0, sizeof(LOC41));
			LOC41[0] = torope_177082(((NI64) ((*p).Labels)));
			linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3982), LOC41, 1);
		}
		LA39: ;
		LOC42 = 0;
		LOC42 = sonslen_226249(t);
		lend = gencasesecondpass_569974(p, t, d, ((NI) (labid)), (NI64)(LOC42 - 1));
		fixlabel_561270(p, lend);
	}
	goto LA10;
	LA12: ;
	{
		gencasegeneric_570229(p, t, d, ((NimStringDesc*) &TMP3811), ((NimStringDesc*) &TMP3979));
	}
	LA10: ;
}

N_NIMCALL(NIM_BOOL, branchhastoobigrange_570947)(tnode225816* b) {
	NIM_BOOL result;
	result = 0;
	{
		NI i_570963;
		NI HEX3Atmp_571073;
		NI LOC2;
		NI res_571076;
		i_570963 = 0;
		HEX3Atmp_571073 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226249(b);
		HEX3Atmp_571073 = (NI64)(LOC2 - 2);
		res_571076 = 0;
		{
			while (1) {
				if (!(res_571076 <= HEX3Atmp_571073)) goto LA4;
				i_570963 = res_571076;
				{
					NIM_BOOL LOC7;
					LOC7 = 0;
					LOC7 = ((*(*b).kindU.S6.Sons->data[i_570963]).Kind == ((NU8) 44));
					if (!(LOC7)) goto LA8;
					LOC7 = (IL64(256) < (NI64)((*(*(*b).kindU.S6.Sons->data[i_570963]).kindU.S6.Sons->data[1]).kindU.S1.Intval - (*(*(*b).kindU.S6.Sons->data[i_570963]).kindU.S6.Sons->data[0]).kindU.S1.Intval));
					LA8: ;
					if (!LOC7) goto LA9;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA9: ;
				res_571076 += 1;
			} LA4: ;
		}
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, ifswitchsplitpoint_571090)(tcproc549031* p, tnode225816* n) {
	NI result;
	result = 0;
	{
		NI i_571105;
		NI HEX3Atmp_571131;
		NI LOC2;
		NI res_571134;
		i_571105 = 0;
		HEX3Atmp_571131 = 0;
		LOC2 = 0;
		LOC2 = len_226364(n);
		HEX3Atmp_571131 = (NI64)(LOC2 - 1);
		res_571134 = 1;
		{
			while (1) {
				tnode225816* branch;
				tnode225816* stmtblock;
				if (!(res_571134 <= HEX3Atmp_571131)) goto LA4;
				i_571105 = res_571134;
				branch = HEX5BHEX5D_226698(n, i_571105);
				stmtblock = lastson_226261(branch);
				{
					NIM_BOOL LOC7;
					LOC7 = 0;
					LOC7 = stmtscontainpragma_548128(stmtblock, ((NU8) 174));
					if (!LOC7) goto LA8;
					result = i_571105;
				}
				goto LA5;
				LA8: ;
				{
					if (!!(((cc_202434[(ccompiler_202461)- 1].Field20 &(1<<((((NU8) 0))&7)))!=0))) goto LA11;
					{
						NIM_BOOL LOC15;
						LOC15 = 0;
						LOC15 = ((*branch).Kind == ((NU8) 85));
						if (!(LOC15)) goto LA16;
						LOC15 = branchhastoobigrange_570947(branch);
						LA16: ;
						if (!LOC15) goto LA17;
						result = i_571105;
					}
					LA17: ;
				}
				goto LA5;
				LA11: ;
				LA5: ;
				res_571134 += 1;
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(void, genordinalcase_571278)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	NI splitpoint;
	tloc225830 a;
	trope177009* lend;
	splitpoint = ifswitchsplitpoint_571090(p, n);
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*n).kindU.S6.Sons->data[0], (&a));
	{
		if (!(0 < splitpoint)) goto LA3;
		lend = genifforcaseuntil_570114(p, n, d, ((NimStringDesc*) &TMP3984), ((NimStringDesc*) &TMP3985), splitpoint, (&a));
	}
	goto LA1;
	LA3: ;
	{
		lend = NIM_NIL;
	}
	LA1: ;
	{
		NI LOC8;
		TY177515 LOC11;
		NIM_BOOL hasdefault;
		TY553703 LOC31;
		LOC8 = 0;
		LOC8 = len_226364(n);
		if (!((NI64)(splitpoint + 1) < LOC8)) goto LA9;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = rdcharloc_559698((&a));
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3986), LOC11, 1);
		hasdefault = NIM_FALSE;
		{
			NI i_571330;
			NI HEX3Atmp_571401;
			NI HEX3Atmp_571402;
			NI LOC13;
			NI res_571405;
			i_571330 = 0;
			HEX3Atmp_571401 = 0;
			HEX3Atmp_571402 = 0;
			HEX3Atmp_571401 = (NI64)(splitpoint + 1);
			LOC13 = 0;
			LOC13 = len_226364(n);
			HEX3Atmp_571402 = (LOC13 - 1);
			res_571405 = HEX3Atmp_571401;
			{
				while (1) {
					tnode225816* branch;
					tnode225816* LOC22;
					TY553703 LOC23;
					if (!(res_571405 <= HEX3Atmp_571402)) goto LA15;
					i_571330 = res_571405;
					branch = HEX5BHEX5D_226698(n, i_571330);
					{
						if (!((*branch).Kind == ((NU8) 85))) goto LA18;
						gencaserange_558242(p, branch);
					}
					goto LA16;
					LA18: ;
					{
						TY553703 LOC21;
						memset((void*)LOC21, 0, sizeof(LOC21));
						linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3529), LOC21, 0);
						hasdefault = NIM_TRUE;
					}
					LA16: ;
					LOC22 = 0;
					LOC22 = lastson_226261(branch);
					exprblock_566174(p, LOC22, d);
					memset((void*)LOC23, 0, sizeof(LOC23));
					linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3530), LOC23, 0);
					res_571405 += 1;
				} LA15: ;
			}
		}
		{
			NIM_BOOL LOC26;
			TY553703 LOC30;
			LOC26 = 0;
			LOC26 = ((cc_202434[(ccompiler_202461)- 1].Field20 &(1<<((((NU8) 3))&7)))!=0);
			if (!(LOC26)) goto LA27;
			LOC26 = !(hasdefault);
			LA27: ;
			if (!LOC26) goto LA28;
			memset((void*)LOC30, 0, sizeof(LOC30));
			linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3987), LOC30, 0);
		}
		LA28: ;
		memset((void*)LOC31, 0, sizeof(LOC31));
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3504), LOC31, 0);
	}
	LA9: ;
	{
		if (!!((lend == NIM_NIL))) goto LA34;
		fixlabel_561270(p, lend);
	}
	LA34: ;
}

N_NIMCALL(void, gencase_571419)(tcproc549031* p, tnode225816* t, tloc225830* d) {
	ttype225852* LOC8;
	genlinedir_553435(p, t);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_232991((*t).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_558246(p, (*t).Typ, d, NIM_FALSE);
	}
	LA6: ;
	LOC8 = 0;
	LOC8 = skiptypes_230245((*(*t).kindU.S6.Sons->data[0]).Typ, IL64(211106242013440));
	switch ((*LOC8).Kind) {
	case ((NU8) 28):
	{
		genstringcase_570655(p, t, d);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		gencasegeneric_570229(p, t, d, ((NimStringDesc*) &TMP3984), ((NimStringDesc*) &TMP3985));
	}
	break;
	default:
	{
		genordinalcase_571278(p, t, d);
	}
	break;
	}
}

static N_INLINE(tnode225816*, pop_567744)(tnodeseq225810** s_567752) {
	tnode225816* result;
	NI l;
	result = 0;
	l = (NI64)((*s_567752)->Sup.len - 1);
	result = (*s_567752)->data[l];
	(*s_567752) = (tnodeseq225810*) setLengthSeq(&((*s_567752))->Sup, sizeof(tnode225816*), l);
	return result;
}

N_NIMCALL(void, blockleaveactions_567662)(tcproc549031* p, NI howmanytrys, NI howmanyexcepts) {
	tnodeseq225810* stack;
	NI alreadypoppedcnt;
	stack = 0;
	stack = (tnodeseq225810*) newSeq((&NTI225810), 0);
	alreadypoppedcnt = (*p).Inexceptblock;
	{
		NI i_567698;
		NI res_567906;
		i_567698 = 0;
		res_567906 = 1;
		{
			while (1) {
				tnode225816* trystmt;
				tnode225816* finallystmt;
				if (!(res_567906 <= howmanytrys)) goto LA3;
				i_567698 = res_567906;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = (gcmd_169120 == ((NU8) 2));
					if (LOC6) goto LA7;
					LOC6 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
					LA7: ;
					if (!!(LOC6)) goto LA8;
					{
						if (!(0 < alreadypoppedcnt)) goto LA12;
						alreadypoppedcnt -= 1;
					}
					goto LA10;
					LA12: ;
					{
						TY553703 LOC15;
						memset((void*)LOC15, 0, sizeof(LOC15));
						linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3988), LOC15, 0);
					}
					LA10: ;
				}
				LA8: ;
				trystmt = pop_567744((&(*p).Nestedtrystmts));
				stack = (tnodeseq225810*) incrSeq(&(stack)->Sup, sizeof(tnode225816*));
				asgnRefNoCycle((void**) (&stack->data[stack->Sup.len-1]), trystmt);
				finallystmt = lastson_226261(trystmt);
				{
					if (!((*finallystmt).Kind == ((NU8) 107))) goto LA18;
					genstmts_561298(p, (*finallystmt).kindU.S6.Sons->data[0]);
				}
				LA18: ;
				res_567906 += 1;
			} LA3: ;
		}
	}
	{
		NI i_567842;
		NI HEX3Atmp_567909;
		NI res_567912;
		i_567842 = 0;
		HEX3Atmp_567909 = 0;
		HEX3Atmp_567909 = (NI64)(howmanytrys - 1);
		res_567912 = HEX3Atmp_567909;
		{
			while (1) {
				if (!(0 <= res_567912)) goto LA22;
				i_567842 = res_567912;
				(*p).Nestedtrystmts = (tnodeseq225810*) incrSeq(&((*p).Nestedtrystmts)->Sup, sizeof(tnode225816*));
				asgnRefNoCycle((void**) (&(*p).Nestedtrystmts->data[(*p).Nestedtrystmts->Sup.len-1]), stack->data[i_567842]);
				res_567912 -= 1;
			} LA22: ;
		}
	}
	{
		NIM_BOOL LOC25;
		LOC25 = 0;
		LOC25 = (gcmd_169120 == ((NU8) 2));
		if (LOC25) goto LA26;
		LOC25 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA26: ;
		if (!!(LOC25)) goto LA27;
		{
			NI i_567894;
			NI HEX3Atmp_567914;
			NI res_567917;
			i_567894 = 0;
			HEX3Atmp_567914 = 0;
			HEX3Atmp_567914 = (NI64)(howmanyexcepts - 1);
			res_567917 = HEX3Atmp_567914;
			{
				while (1) {
					TY553703 LOC32;
					if (!(0 <= res_567917)) goto LA31;
					i_567894 = res_567917;
					memset((void*)LOC32, 0, sizeof(LOC32));
					linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3989), LOC32, 0);
					res_567917 -= 1;
				} LA31: ;
			}
		}
	}
	LA27: ;
}

N_NIMCALL(void, genreturnstmt_567948)(tcproc549031* p, tnode225816* t) {
	TY553703 LOC10;
	(*p).Beforeretneeded = NIM_TRUE;
	genlinedir_553435(p, t);
	{
		if (!!(((*(*t).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		genstmts_561298(p, (*t).kindU.S6.Sons->data[0]);
	}
	LA3: ;
	blockleaveactions_567662(p, (*p).Nestedtrystmts->Sup.len, (*p).Inexceptblock);
	{
		trope177009* safepoint;
		TY177515 LOC9;
		if (!(0 < (*p).Finallysafepoints->Sup.len)) goto LA7;
		safepoint = (*p).Finallysafepoints->data[(NI64)((*p).Finallysafepoints->Sup.len - 1)];
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = safepoint;
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3990), LOC9, 1);
	}
	LA7: ;
	memset((void*)LOC10, 0, sizeof(LOC10));
	lineff_553218(p, ((NU8) 2), ((NimStringDesc*) &TMP3991), ((NimStringDesc*) &TMP3992), LOC10, 0);
}

N_NIMCALL(void, genbreakstmt_569347)(tcproc549031* p, tnode225816* t) {
	NI idx;
	trope177009* label;
	TY177515 LOC16;
	idx = (*p).Breakidx;
	{
		tsym225846* sym;
		if (!!(((*(*t).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		sym = (*(*t).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		idx = (NI64)((*sym).Position - 1);
	}
	goto LA1;
	LA3: ;
	{
		{
			while (1) {
				NIM_BOOL LOC8;
				LOC8 = 0;
				LOC8 = (0 <= idx);
				if (!(LOC8)) goto LA9;
				LOC8 = !((*p).Blocks->data[idx].Isloop);
				LA9: ;
				if (!LOC8) goto LA7;
				idx -= 1;
			} LA7: ;
		}
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = (idx < 0);
			if (LOC12) goto LA13;
			LOC12 = !((*p).Blocks->data[idx].Isloop);
			LA13: ;
			if (!LOC12) goto LA14;
			internalerror_197987((*t).Info, ((NimStringDesc*) &TMP3993));
		}
		LA14: ;
	}
	LA1: ;
	label = assignlabel_566045((&(*p).Blocks->data[idx]));
	blockleaveactions_567662(p, (NI64)((*p).Nestedtrystmts->Sup.len - ((NI) ((*p).Blocks->data[idx].Nestedtrystmts))), (NI64)((*p).Inexceptblock - ((NI) ((*p).Blocks->data[idx].Nestedexceptstmts))));
	genlinedir_553435(p, t);
	memset((void*)LOC16, 0, sizeof(LOC16));
	LOC16[0] = label;
	linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3930), LOC16, 1);
}

N_NIMCALL(NIM_BOOL, fielddiscriminantcheckneeded_573403)(tcproc549031* p, tnode225816* asgn) {
	NIM_BOOL result;
	result = 0;
	{
		tnode225816* le;
		if (!(((*p).Options &(1<<((((NU8) 2))&31)))!=0)) goto LA3;
		le = (*asgn).kindU.S6.Sons->data[0];
		{
			tsym225846* 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: ;
		{
			tsym225846* 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(trope177009*, discriminatortabledecl_556942)(tcgen549035* m, ttype225852* objtype, tsym225846* d) {
	trope177009* result;
	trope177009* LOC1;
	trope177009* tmp;
	TY588896 LOC2;
	NI64 LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_552608(m, ((NimStringDesc*) &TMP3472));
	tmp = discriminatortablename_556887(m, objtype, d);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = tmp;
	LOC3 = 0;
	LOC3 = lengthord_263016((*d).Typ);
	LOC2[1] = torope_177082((NI64)(LOC3 + IL64(1)));
	result = ropef_177107(((NimStringDesc*) &TMP3550), LOC2, 2);
	return result;
}

N_NIMCALL(void, gendiscriminantcheck_573555)(tcproc549031* p, tloc225830* a, tloc225830* tmp, ttype225852* objtype, tsym225846* field) {
	ttype225852* t;
	trope177009* LOC1;
	NI64 l;
	TY556046 LOC8;
	t = skiptypes_230245(objtype, IL64(211106240964864));
	LOC1 = 0;
	LOC1 = gentypeinfo_556602((*p).Module, t);
	l = lengthord_263016((*field).Typ);
	{
		NIM_BOOL LOC4;
		TY177515 LOC7;
		LOC4 = 0;
		LOC4 = containsorincl_222916((&(*(*p).Module).Declaredthings), (*field).Sup.Id);
		if (!!(LOC4)) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = discriminatortabledecl_556942((*p).Module, t, field);
		appcg_553018((*p).Module, ((NU8) 9), ((NimStringDesc*) &TMP3994), LOC7, 1);
	}
	LA5: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rdloc_559637(a);
	LOC8[1] = rdloc_559637(tmp);
	LOC8[2] = discriminatortablename_556887((*p).Module, t, field);
	LOC8[3] = intliteral_561339((NI64)(l + IL64(1)));
	linecg_553135(p, ((NU8) 2), ((NimStringDesc*) &TMP3995), LOC8, 4);
}

N_NIMCALL(void, asgnfielddiscriminant_573614)(tcproc549031* p, tnode225816* e) {
	tloc225830 a;
	tloc225830 tmp;
	tnode225816* dotexpr;
	tsym225846* 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_561352(p, (*e).kindU.S6.Sons->data[0], (&a));
	gettemp_558246(p, a.T, (&tmp), NIM_FALSE);
	expr_561305(p, (*e).kindU.S6.Sons->data[1], (&tmp));
	gendiscriminantcheck_573555(p, (&a), (&tmp), (*(*dotexpr).kindU.S6.Sons->data[0]).Typ, (*(*dotexpr).kindU.S6.Sons->data[1]).kindU.S4.Sym);
	genassignment_561330(p, (&a), (&tmp), 0);
}

N_NIMCALL(void, genasgn_573740)(tcproc549031* p, tnode225816* e, NIM_BOOL fastasgn) {
	genlinedir_553435(p, e);
	{
		NIM_BOOL LOC3;
		tloc225830 a;
		LOC3 = 0;
		LOC3 = fielddiscriminantcheckneeded_573403(p, e);
		if (!!(LOC3)) goto LA4;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_561352(p, (*e).kindU.S6.Sons->data[0], (&a));
		{
			if (!fastasgn) goto LA8;
			a.Flags |= ((NI8)1)<<((((NU8) 2))%(sizeof(NI8)*8));
		}
		LA8: ;
		loadinto_565888(p, (*e).kindU.S6.Sons->data[0], (*e).kindU.S6.Sons->data[1], (&a));
	}
	goto LA1;
	LA4: ;
	{
		asgnfielddiscriminant_573614(p, e);
	}
	LA1: ;
}

N_NIMCALL(trope177009*, genasmoremitstmt_572652)(tcproc549031* p, tnode225816* t, NIM_BOOL isasmstmt) {
	trope177009* result;
	NimStringDesc* res;
	result = 0;
	res = copyString(((NimStringDesc*) &TMP3811));
	{
		NI i_572671;
		NI HEX3Atmp_572853;
		NI LOC2;
		NI res_572856;
		i_572671 = 0;
		HEX3Atmp_572853 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226249(t);
		HEX3Atmp_572853 = (NI64)(LOC2 - 1);
		res_572856 = 0;
		{
			while (1) {
				if (!(res_572856 <= HEX3Atmp_572853)) goto LA4;
				i_572671 = res_572856;
				switch ((*(*t).kindU.S6.Sons->data[i_572671]).Kind) {
				case ((NU8) 20) ... ((NU8) 22):
				{
					res = resizeString(res, (*(*t).kindU.S6.Sons->data[i_572671]).kindU.S3.Strval->Sup.len + 0);
appendString(res, (*(*t).kindU.S6.Sons->data[i_572671]).kindU.S3.Strval);
				}
				break;
				case ((NU8) 3):
				{
					tsym225846* sym;
					sym = (*(*t).kindU.S6.Sons->data[i_572671]).kindU.S4.Sym;
					{
						tloc225830 a;
						trope177009* LOC11;
						NimStringDesc* LOC12;
						if (!((61440 &(1<<(((*sym).Kind)&31)))!=0)) goto LA9;
						memset((void*)(&a), 0, sizeof(a));
						initlocexpr_561352(p, (*t).kindU.S6.Sons->data[i_572671], (&a));
						LOC11 = 0;
						LOC11 = rdloc_559637((&a));
						LOC12 = 0;
						LOC12 = ropetostr_177101(LOC11);
						res = resizeString(res, LOC12->Sup.len + 0);
appendString(res, LOC12);
					}
					goto LA7;
					LA9: ;
					{
						trope177009* r;
						NimStringDesc* LOC18;
						r = (*sym).Loc.R;
						{
							if (!(r == NIM_NIL)) goto LA16;
							r = manglename_553667(sym);
							asgnRefNoCycle((void**) (&(*sym).Loc.R), r);
						}
						LA16: ;
						LOC18 = 0;
						LOC18 = ropetostr_177101(r);
						res = resizeString(res, LOC18->Sup.len + 0);
appendString(res, LOC18);
					}
					LA7: ;
				}
				break;
				default:
				{
					internalerror_197987((*(*t).kindU.S6.Sons->data[i_572671]).Info, ((NimStringDesc*) &TMP3996));
				}
				break;
				}
				res_572856 += 1;
			} LA4: ;
		}
	}
	{
		NIM_BOOL LOC22;
		LOC22 = 0;
		LOC22 = isasmstmt;
		if (!(LOC22)) goto LA23;
		LOC22 = ((cc_202434[(ccompiler_202461)- 1].Field20 &(1<<((((NU8) 5))&7)))!=0);
		LA23: ;
		if (!LOC22) goto LA24;
		{
			NimStringDesc* x_572818;
			NI first_572863;
			NI last_572865;
			x_572818 = 0;
			first_572863 = 0;
			last_572865 = 0;
			{
				while (1) {
					NI j;
					{
						while (1) {
							if (!!((((NU8)(res->data[last_572865])) == ((NU8)(0)) || ((NU8)(res->data[last_572865])) == ((NU8)(13)) || ((NU8)(res->data[last_572865])) == ((NU8)(10))))) goto LA30;
							last_572865 += 1;
						} LA30: ;
					}
					x_572818 = copyStrLast(res, first_572863, (NI64)(last_572865 - 1));
					j = 0;
					{
						while (1) {
							if (!(((NU8)(x_572818->data[j])) == ((NU8)(32)) || ((NU8)(x_572818->data[j])) == ((NU8)(9)))) goto LA32;
							j += 1;
						} LA32: ;
					}
					{
						NIM_BOOL LOC35;
						NIM_BOOL LOC36;
						LOC35 = 0;
						LOC36 = 0;
						LOC36 = ((NU8)(x_572818->data[j]) == (NU8)(58));
						if (!(LOC36)) goto LA37;
						LOC36 = ((NU8)(x_572818->data[(NI64)(j + 1)]) == (NU8)(34));
						LA37: ;
						LOC35 = LOC36;
						if (LOC35) goto LA38;
						LOC35 = ((NU8)(x_572818->data[j]) == (NU8)(34));
						LA38: ;
						if (!LOC35) goto LA39;
						app_177060(&result, x_572818);
						app_177060(&result, tnl_174613);
					}
					goto LA33;
					LA39: ;
					{
						if (!!(((NU8)(x_572818->data[j]) == (NU8)(0)))) goto LA42;
						app_177060(&result, ((NimStringDesc*) &TMP3997));
						app_177060(&result, x_572818);
						app_177060(&result, ((NimStringDesc*) &TMP3998));
					}
					goto LA33;
					LA42: ;
					LA33: ;
					{
						if (!((NU8)(res->data[last_572865]) == (NU8)(10))) goto LA46;
						last_572865 += 1;
					}
					goto LA44;
					LA46: ;
					{
						if (!((NU8)(res->data[last_572865]) == (NU8)(13))) goto LA49;
						last_572865 += 1;
						{
							if (!((NU8)(res->data[last_572865]) == (NU8)(10))) goto LA53;
							last_572865 += 1;
						}
						LA53: ;
					}
					goto LA44;
					LA49: ;
					{
						goto LA27;
					}
					LA44: ;
					first_572863 = last_572865;
				}
			} LA27: ;
		}
	}
	goto LA20;
	LA24: ;
	{
		res = resizeString(res, tnl_174613->Sup.len + 0);
appendString(res, tnl_174613);
		result = torope_177076(res);
	}
	LA20: ;
	return result;
}

N_NIMCALL(void, genasmstmt_572899)(tcproc549031* p, tnode225816* t) {
	trope177009* s;
	genlinedir_553435(p, t);
	s = genasmoremitstmt_572652(p, t, NIM_TRUE);
	{
		TY177515 LOC5;
		if (!((*p).Prc == NIM_NIL)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = s;
		appf_177115(&(*(*p).Module).S[(((NU8) 7))- 0], cc_202434[(ccompiler_202461)- 1].Field17, LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY177515 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = s;
		linef_553122(p, ((NU8) 2), cc_202434[(ccompiler_202461)- 1].Field17, LOC7, 1);
	}
	LA1: ;
}

static N_INLINE(void, gensimpleblock_566160)(tcproc549031* p, tnode225816* stmts) {
	TY553703 LOC1;
	NI LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = startblock_565985(p, ((NimStringDesc*) &TMP3589), LOC1, 0);
	genstmts_561298(p, stmts);
	endblock_566106(p);
}

N_NIMCALL(void, gentrycpp_571518)(tcproc549031* p, tnode225816* t, tloc225830* d) {
	trope177009* exc;
	NI i;
	NI length;
	NI blen;
	TY553703 LOC16;
	NI LOC17;
	TY177515 LOC18;
	trope177009* LOC19;
	NIM_BOOL catchallpresent;
	TY553703 LOC66;
	tnode225816* LOC67;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_232991((*t).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_558246(p, (*t).Typ, d, NIM_FALSE);
	}
	LA6: ;
	exc = 0;
	i = 0;
	length = 0;
	blen = 0;
	genlinedir_553435(p, t);
	exc = gettempname_554244();
	{
		tsym225846* LOC10;
		trope177009* LOC13;
		LOC10 = 0;
		LOC10 = getcompilerproc_282036(((NimStringDesc*) &TMP3999));
		if (!!((LOC10 == NIM_NIL))) goto LA11;
		LOC13 = 0;
		LOC13 = cgsym_552608((*p).Module, ((NimStringDesc*) &TMP3999));
	}
	goto LA8;
	LA11: ;
	{
		trope177009* LOC15;
		LOC15 = 0;
		LOC15 = cgsym_552608((*p).Module, ((NimStringDesc*) &TMP4000));
	}
	LA8: ;
	(*p).Nestedtrystmts = (tnodeseq225810*) incrSeq(&((*p).Nestedtrystmts)->Sup, sizeof(tnode225816*));
	asgnRefNoCycle((void**) (&(*p).Nestedtrystmts->data[(*p).Nestedtrystmts->Sup.len-1]), t);
	memset((void*)LOC16, 0, sizeof(LOC16));
	LOC17 = 0;
	LOC17 = startblock_565985(p, ((NimStringDesc*) &TMP4001), LOC16, 0);
	expr_561305(p, (*t).kindU.S6.Sons->data[0], d);
	length = sonslen_226249(t);
	memset((void*)LOC18, 0, sizeof(LOC18));
	LOC18[0] = exc;
	LOC19 = 0;
	LOC19 = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP4002), LOC18, 1);
	endblock_566069(p, LOC19);
	{
		TY553703 LOC24;
		if (!(((*p).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA22;
		memset((void*)LOC24, 0, sizeof(LOC24));
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4003), LOC24, 0);
	}
	LA22: ;
	(*p).Inexceptblock += 1;
	i = 1;
	catchallpresent = NIM_FALSE;
	{
		while (1) {
			NIM_BOOL LOC27;
			LOC27 = 0;
			LOC27 = (i < length);
			if (!(LOC27)) goto LA28;
			LOC27 = ((*(*t).kindU.S6.Sons->data[i]).Kind == ((NU8) 87));
			LA28: ;
			if (!LOC27) goto LA26;
			blen = sonslen_226249((*t).kindU.S6.Sons->data[i]);
			{
				trope177009** LOC33;
				TY553703 LOC34;
				if (!(1 < i)) goto LA31;
				LOC33 = 0;
				LOC33 = s_549183(p, ((NU8) 2));
				memset((void*)LOC34, 0, sizeof(LOC34));
				appf_177115(LOC33, ((NimStringDesc*) &TMP4004), LOC34, 0);
			}
			LA31: ;
			{
				if (!(blen == 1)) goto LA37;
				catchallpresent = NIM_TRUE;
				exprblock_566174(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0], d);
			}
			goto LA35;
			LA37: ;
			{
				trope177009* orexpr;
				TY177515 LOC48;
				orexpr = NIM_NIL;
				{
					NI j_571717;
					NI HEX3Atmp_572036;
					NI res_572039;
					j_571717 = 0;
					HEX3Atmp_572036 = 0;
					HEX3Atmp_572036 = (NI64)(blen - 2);
					res_572039 = 0;
					{
						while (1) {
							TY588896 LOC47;
							if (!(res_572039 <= HEX3Atmp_572036)) goto LA42;
							j_571717 = res_572039;
							{
								if (!!((orexpr == NIM_NIL))) goto LA45;
								app_177060(&orexpr, ((NimStringDesc*) &TMP3957));
							}
							LA45: ;
							memset((void*)LOC47, 0, sizeof(LOC47));
							LOC47[0] = exc;
							LOC47[1] = gentypeinfo_556602((*p).Module, (*(*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[j_571717]).Typ);
							appcg_553004((*p).Module, &orexpr, ((NimStringDesc*) &TMP4005), LOC47, 2);
							res_572039 += 1;
						} LA42: ;
					}
				}
				memset((void*)LOC48, 0, sizeof(LOC48));
				LOC48[0] = orexpr;
				linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP4006), LOC48, 1);
				exprblock_566174(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[(NI64)(blen - 1)], d);
			}
			LA35: ;
			i += 1;
		} LA26: ;
	}
	{
		TY553703 LOC58;
		NI LOC59;
		tnode225816* finallyblock;
		TY553703 LOC64;
		trope177009* LOC65;
		if (!!(catchallpresent)) goto LA51;
		{
			TY553703 LOC57;
			if (!(1 < i)) goto LA55;
			memset((void*)LOC57, 0, sizeof(LOC57));
			linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP4004), LOC57, 0);
		}
		LA55: ;
		memset((void*)LOC58, 0, sizeof(LOC58));
		LOC59 = 0;
		LOC59 = startblock_565985(p, ((NimStringDesc*) &TMP3589), LOC58, 0);
		finallyblock = lastson_226261(t);
		{
			if (!((*finallyblock).Kind == ((NU8) 107))) goto LA62;
			genstmts_561298(p, (*finallyblock).kindU.S6.Sons->data[0]);
		}
		LA62: ;
		memset((void*)LOC64, 0, sizeof(LOC64));
		LOC65 = 0;
		LOC65 = ropef_177107(((NimStringDesc*) &TMP4007), LOC64, 0);
		line_553100(p, ((NU8) 2), LOC65);
		endblock_566106(p);
	}
	LA51: ;
	memset((void*)LOC66, 0, sizeof(LOC66));
	linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3504), LOC66, 0);
	(*p).Inexceptblock -= 1;
	LOC67 = 0;
	LOC67 = pop_567744((&(*p).Nestedtrystmts));
	{
		NIM_BOOL LOC70;
		LOC70 = 0;
		LOC70 = (i < length);
		if (!(LOC70)) goto LA71;
		LOC70 = ((*(*t).kindU.S6.Sons->data[i]).Kind == ((NU8) 107));
		LA71: ;
		if (!LOC70) goto LA72;
		gensimpleblock_566160(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0]);
	}
	LA72: ;
}

N_NIMCALL(void, line_553111)(tcproc549031* p, NU8 s, NimStringDesc* r) {
	trope177009** LOC1;
	trope177009* LOC2;
	trope177009* LOC3;
	LOC1 = 0;
	LOC1 = s_549183(p, s);
	LOC2 = 0;
	LOC2 = torope_177076(r);
	LOC3 = 0;
	LOC3 = indentline_553049(p, LOC2);
	app_177052(LOC1, LOC3);
}

static N_INLINE(trope177009*, pop_177533)(TY195552** s_177541) {
	trope177009* result;
	NI l;
	result = 0;
	l = (NI64)((*s_177541)->Sup.len - 1);
	result = (*s_177541)->data[l];
	(*s_177541) = (TY195552*) setLengthSeq(&((*s_177541))->Sup, sizeof(trope177009*), l);
	return result;
}

N_NIMCALL(void, gentry_572059)(tcproc549031* p, tnode225816* t, tloc225830* d) {
	NIM_BOOL LOC8;
	trope177009* safepoint;
	TY177515 LOC17;
	TY177515 LOC18;
	TY177515 LOC37;
	NI LOC38;
	NI length;
	TY553703 LOC39;
	TY553703 LOC40;
	NI LOC41;
	TY553703 LOC42;
	NI i;
	tnode225816* LOC82;
	TY177515 LOC90;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_232991((*t).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_558246(p, (*t).Typ, d, NIM_FALSE);
	}
	LA6: ;
	LOC8 = 0;
	LOC8 = includestr_127297((&(*(*p).Module).Headerfiles), ((NimStringDesc*) &TMP4008));
	genlinedir_553435(p, t);
	safepoint = gettempname_554244();
	{
		tsym225846* LOC11;
		trope177009* LOC14;
		LOC11 = 0;
		LOC11 = getcompilerproc_282036(((NimStringDesc*) &TMP3999));
		if (!!((LOC11 == NIM_NIL))) goto LA12;
		LOC14 = 0;
		LOC14 = cgsym_552608((*p).Module, ((NimStringDesc*) &TMP3999));
	}
	goto LA9;
	LA12: ;
	{
		trope177009* LOC16;
		LOC16 = 0;
		LOC16 = cgsym_552608((*p).Module, ((NimStringDesc*) &TMP4000));
	}
	LA9: ;
	memset((void*)LOC17, 0, sizeof(LOC17));
	LOC17[0] = safepoint;
	linefmt_553148(p, ((NU8) 0), ((NimStringDesc*) &TMP4009), LOC17, 1);
	memset((void*)LOC18, 0, sizeof(LOC18));
	LOC18[0] = safepoint;
	linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4010), LOC18, 1);
	{
		NIM_BOOL LOC21;
		TY177515 LOC24;
		LOC21 = 0;
		LOC21 = isdefined_201036(((NimStringDesc*) &TMP4011));
		if (!LOC21) goto LA22;
		memset((void*)LOC24, 0, sizeof(LOC24));
		LOC24[0] = safepoint;
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4012), LOC24, 1);
	}
	goto LA19;
	LA22: ;
	{
		NIM_BOOL LOC26;
		TY177515 LOC29;
		LOC26 = 0;
		LOC26 = isdefined_201036(((NimStringDesc*) &TMP4013));
		if (!LOC26) goto LA27;
		memset((void*)LOC29, 0, sizeof(LOC29));
		LOC29[0] = safepoint;
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4014), LOC29, 1);
	}
	goto LA19;
	LA27: ;
	{
		NIM_BOOL LOC31;
		TY177515 LOC34;
		LOC31 = 0;
		LOC31 = isdefined_201036(((NimStringDesc*) &TMP4015));
		if (!LOC31) goto LA32;
		memset((void*)LOC34, 0, sizeof(LOC34));
		LOC34[0] = safepoint;
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4016), LOC34, 1);
	}
	goto LA19;
	LA32: ;
	{
		TY177515 LOC36;
		memset((void*)LOC36, 0, sizeof(LOC36));
		LOC36[0] = safepoint;
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4012), LOC36, 1);
	}
	LA19: ;
	memset((void*)LOC37, 0, sizeof(LOC37));
	LOC37[0] = safepoint;
	LOC38 = 0;
	LOC38 = startblock_565985(p, ((NimStringDesc*) &TMP4017), LOC37, 1);
	length = sonslen_226249(t);
	(*p).Nestedtrystmts = (tnodeseq225810*) incrSeq(&((*p).Nestedtrystmts)->Sup, sizeof(tnode225816*));
	asgnRefNoCycle((void**) (&(*p).Nestedtrystmts->data[(*p).Nestedtrystmts->Sup.len-1]), t);
	expr_561305(p, (*t).kindU.S6.Sons->data[0], d);
	memset((void*)LOC39, 0, sizeof(LOC39));
	linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3988), LOC39, 0);
	endblock_566106(p);
	memset((void*)LOC40, 0, sizeof(LOC40));
	LOC41 = 0;
	LOC41 = startblock_565985(p, ((NimStringDesc*) &TMP4018), LOC40, 0);
	memset((void*)LOC42, 0, sizeof(LOC42));
	linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3988), LOC42, 0);
	{
		TY553703 LOC47;
		if (!(((*p).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA45;
		memset((void*)LOC47, 0, sizeof(LOC47));
		linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4003), LOC47, 0);
	}
	LA45: ;
	(*p).Inexceptblock += 1;
	i = 1;
	{
		while (1) {
			NIM_BOOL LOC50;
			NI blen;
			LOC50 = 0;
			LOC50 = (i < length);
			if (!(LOC50)) goto LA51;
			LOC50 = ((*(*t).kindU.S6.Sons->data[i]).Kind == ((NU8) 87));
			LA51: ;
			if (!LOC50) goto LA49;
			blen = sonslen_226249((*t).kindU.S6.Sons->data[i]);
			{
				TY553703 LOC61;
				NI LOC62;
				TY177515 LOC63;
				TY553703 LOC64;
				if (!(blen == 1)) goto LA54;
				{
					TY553703 LOC60;
					if (!(1 < i)) goto LA58;
					memset((void*)LOC60, 0, sizeof(LOC60));
					linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP4019), LOC60, 0);
				}
				LA58: ;
				memset((void*)LOC61, 0, sizeof(LOC61));
				LOC62 = 0;
				LOC62 = startblock_565985(p, ((NimStringDesc*) &TMP3589), LOC61, 0);
				memset((void*)LOC63, 0, sizeof(LOC63));
				LOC63[0] = safepoint;
				linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4020), LOC63, 1);
				expr_561305(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0], d);
				memset((void*)LOC64, 0, sizeof(LOC64));
				linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3989), LOC64, 0);
				endblock_566106(p);
			}
			goto LA52;
			LA54: ;
			{
				trope177009* orexpr;
				TY177515 LOC78;
				NI LOC79;
				TY177515 LOC80;
				TY553703 LOC81;
				orexpr = NIM_NIL;
				{
					NI j_572314;
					NI HEX3Atmp_572629;
					NI res_572632;
					j_572314 = 0;
					HEX3Atmp_572629 = 0;
					HEX3Atmp_572629 = (NI64)(blen - 2);
					res_572632 = 0;
					{
						while (1) {
							TY177515 LOC73;
							if (!(res_572632 <= HEX3Atmp_572629)) goto LA68;
							j_572314 = res_572632;
							{
								if (!!((orexpr == NIM_NIL))) goto LA71;
								app_177060(&orexpr, ((NimStringDesc*) &TMP3957));
							}
							LA71: ;
							memset((void*)LOC73, 0, sizeof(LOC73));
							LOC73[0] = gentypeinfo_556602((*p).Module, (*(*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[j_572314]).Typ);
							appcg_553004((*p).Module, &orexpr, ((NimStringDesc*) &TMP4021), LOC73, 1);
							res_572632 += 1;
						} LA68: ;
					}
				}
				{
					if (!(1 < i)) goto LA76;
					line_553111(p, ((NU8) 2), ((NimStringDesc*) &TMP4004));
				}
				LA76: ;
				memset((void*)LOC78, 0, sizeof(LOC78));
				LOC78[0] = orexpr;
				LOC79 = 0;
				LOC79 = startblock_565985(p, ((NimStringDesc*) &TMP4022), LOC78, 1);
				memset((void*)LOC80, 0, sizeof(LOC80));
				LOC80[0] = safepoint;
				linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4020), LOC80, 1);
				expr_561305(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[(NI64)(blen - 1)], d);
				memset((void*)LOC81, 0, sizeof(LOC81));
				linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP3989), LOC81, 0);
				endblock_566106(p);
			}
			LA52: ;
			i += 1;
		} LA49: ;
	}
	(*p).Inexceptblock -= 1;
	LOC82 = 0;
	LOC82 = pop_567744((&(*p).Nestedtrystmts));
	endblock_566106(p);
	{
		NIM_BOOL LOC85;
		trope177009* LOC89;
		LOC85 = 0;
		LOC85 = (i < length);
		if (!(LOC85)) goto LA86;
		LOC85 = ((*(*t).kindU.S6.Sons->data[i]).Kind == ((NU8) 107));
		LA86: ;
		if (!LOC85) goto LA87;
		(*p).Finallysafepoints = (TY195552*) incrSeq(&((*p).Finallysafepoints)->Sup, sizeof(trope177009*));
		asgnRefNoCycle((void**) (&(*p).Finallysafepoints->data[(*p).Finallysafepoints->Sup.len-1]), safepoint);
		gensimpleblock_566160(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0]);
		LOC89 = 0;
		LOC89 = pop_177533((&(*p).Finallysafepoints));
	}
	LA87: ;
	memset((void*)LOC90, 0, sizeof(LOC90));
	LOC90[0] = safepoint;
	linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4023), LOC90, 1);
}

N_NIMCALL(NimStringDesc*, getraisefrmt_569641)(tcproc549031* p) {
	NimStringDesc* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_169120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		result = copyString(((NimStringDesc*) &TMP4024));
	}
	goto LA1;
	LA5: ;
	{
		tsym225846* LOC8;
		LOC8 = 0;
		LOC8 = getcompilerproc_282036(((NimStringDesc*) &TMP3999));
		if (!!((LOC8 == NIM_NIL))) goto LA9;
		result = copyString(((NimStringDesc*) &TMP4025));
	}
	goto LA1;
	LA9: ;
	{
		result = copyString(((NimStringDesc*) &TMP4026));
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genraisestmt_569687)(tcproc549031* p, tnode225816* t) {
	{
		tnode225816* finallyblock;
		if (!(0 < (*p).Inexceptblock)) goto LA3;
		finallyblock = lastson_226261((*p).Nestedtrystmts->data[(NI64)((*p).Nestedtrystmts->Sup.len - 1)]);
		{
			if (!((*finallyblock).Kind == ((NU8) 107))) goto LA7;
			gensimpleblock_566160(p, (*finallyblock).kindU.S6.Sons->data[0]);
		}
		LA7: ;
	}
	LA3: ;
	{
		tloc225830 a;
		trope177009* e;
		ttype225852* typ;
		NimStringDesc* LOC13;
		TY588896 LOC14;
		if (!!(((*(*t).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA11;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_561352(p, (*t).kindU.S6.Sons->data[0], (&a));
		e = rdloc_559637((&a));
		typ = skiptypes_230245((*(*t).kindU.S6.Sons->data[0]).Typ, IL64(211106247256320));
		genlinedir_553435(p, t);
		LOC13 = 0;
		LOC13 = getraisefrmt_569641(p);
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = e;
		LOC14[1] = makecstring_195659((*(*(*typ).Sym).Name).S);
		linecg_553135(p, ((NU8) 2), LOC13, LOC14, 2);
	}
	goto LA9;
	LA11: ;
	{
		genlinedir_553435(p, t);
		{
			NIM_BOOL LOC18;
			TY553703 LOC22;
			trope177009* LOC23;
			LOC18 = 0;
			LOC18 = (gcmd_169120 == ((NU8) 2));
			if (LOC18) goto LA19;
			LOC18 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
			LA19: ;
			if (!LOC18) goto LA20;
			memset((void*)LOC22, 0, sizeof(LOC22));
			LOC23 = 0;
			LOC23 = ropef_177107(((NimStringDesc*) &TMP4007), LOC22, 0);
			line_553100(p, ((NU8) 2), LOC23);
		}
		goto LA16;
		LA20: ;
		{
			TY553703 LOC25;
			memset((void*)LOC25, 0, sizeof(LOC25));
			linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4027), LOC25, 0);
		}
		LA16: ;
	}
	LA9: ;
}

N_NIMCALL(void, gentypesection_559627)(tcgen549035* m, tnode225816* n) {
}

N_NIMCALL(void, genemit_573031)(tcproc549031* p, tnode225816* t) {
	trope177009* s;
	genlinedir_553435(p, t);
	s = genasmoremitstmt_572652(p, (*t).kindU.S6.Sons->data[1], NIM_FALSE);
	{
		if (!((*p).Prc == NIM_NIL)) goto LA3;
		app_177052(&(*(*p).Module).S[(((NU8) 7))- 0], s);
	}
	goto LA1;
	LA3: ;
	{
		line_553100(p, ((NU8) 2), s);
	}
	LA1: ;
}

N_NIMCALL(void, genbreakpoint_573073)(tcproc549031* p, tnode225816* t) {
	NimStringDesc* name;
	name = 0;
	{
		TY554018 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_573071 += 1;
			LOC10 = 0;
			LOC11 = 0;
			LOC11 = nimIntToStr(breakpointid_573071);
			LOC10 = rawNewString(LOC11->Sup.len + 2);
appendString(LOC10, ((NimStringDesc*) &TMP4028));
appendString(LOC10, LOC11);
			name = LOC10;
		}
		LA5: ;
		genlinedir_553435(p, t);
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC13 = 0;
		LOC13 = tolinenumber_197073((*t).Info);
		LOC12[0] = torope_177082(((NI64) (LOC13)));
		LOC14 = 0;
		LOC14 = tofilename_197025((*t).Info.Fileindex);
		LOC12[1] = makecstring_195659(LOC14);
		LOC12[2] = makecstring_195659(name);
		appcg_553004((*p).Module, &gbreakpoints_573072, ((NimStringDesc*) &TMP4029), LOC12, 3);
	}
	LA3: ;
}

N_NIMCALL(void, genwatchpoint_573250)(tcproc549031* p, tnode225816* n) {
	tloc225830 a;
	ttype225852* typ;
	TY554018 LOC5;
	NimStringDesc* LOC6;
	{
		if (!!((((*p).Options &(1<<((((NU8) 17))&31)))!=0))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*n).kindU.S6.Sons->data[1], (&a));
	typ = skiptypes_230245((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = addrloc_559664((&a));
	LOC6 = 0;
	LOC6 = rendertree_250058((*n).kindU.S6.Sons->data[1], 0);
	LOC5[1] = makecstring_195659(LOC6);
	LOC5[2] = gentypeinfo_556602((*p).Module, typ);
	linecg_553135(p, ((NU8) 2), ((NimStringDesc*) &TMP4030), LOC5, 3);
	BeforeRet: ;
}

N_NIMCALL(void, genpragma_573320)(tcproc549031* p_573322, tnode225816* n) {
	{
		NI i_573336;
		NI HEX3Atmp_573386;
		NI LOC2;
		NI res_573389;
		i_573336 = 0;
		HEX3Atmp_573386 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226249(n);
		HEX3Atmp_573386 = (NI64)(LOC2 - 1);
		res_573389 = 0;
		{
			while (1) {
				tnode225816* it;
				NU8 LOC5;
				if (!(res_573389 <= HEX3Atmp_573386)) goto LA4;
				i_573336 = res_573389;
				it = (*n).kindU.S6.Sons->data[i_573336];
				LOC5 = 0;
				LOC5 = whichpragma_262304(it);
				switch (LOC5) {
				case ((NU8) 184):
				{
					genemit_573031(p_573322, it);
				}
				break;
				case ((NU8) 125):
				{
					genbreakpoint_573073(p_573322, it);
				}
				break;
				case ((NU8) 169):
				{
					genwatchpoint_573250(p_573322, it);
				}
				break;
				case ((NU8) 176):
				{
					tcproc549031* p;
					trope177009** LOC10;
					p = newproc_549230(NIM_NIL, (*p_573322).Module);
					(*p).Options = ((*p).Options & ~ 98304);
					genstmts_561298(p, (*it).kindU.S6.Sons->data[1]);
					LOC10 = 0;
					LOC10 = s_549183(p, ((NU8) 2));
					unsureAsgnRef((void**) (&(*(*p).Module).Injectstmt), (*LOC10));
				}
				break;
				default:
				{
				}
				break;
				}
				res_573389 += 1;
			} LA4: ;
		}
	}
}

N_NIMCALL(void, genparforstmt_569047)(tcproc549031* p, tnode225816* t) {
	NI oldbreakidx_569214;
	tsym225846* forloopvar;
	tloc225830 rangea;
	tloc225830 rangeb;
	tnode225816* call;
	TY556046 LOC1;
	NimStringDesc* LOC2;
	TY553703 LOC3;
	(*p).Withinloop += 1;
	genlinedir_553435(p, t);
	oldbreakidx_569214 = (*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_560577(p, forloopvar);
	call = (*t).kindU.S6.Sons->data[1];
	initlocexpr_561352(p, (*call).kindU.S6.Sons->data[1], (&rangea));
	initlocexpr_561352(p, (*call).kindU.S6.Sons->data[2], (&rangeb));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_559637((&(*forloopvar).Loc));
	LOC1[1] = rdloc_559637((&rangea));
	LOC1[2] = rdloc_559637((&rangeb));
	LOC2 = 0;
	LOC2 = getstr_232587((*call).kindU.S6.Sons->data[3]);
	LOC1[3] = torope_177076(LOC2);
	linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP4031), LOC1, 4);
	memset((void*)LOC3, 0, sizeof(LOC3));
	(*p).Breakidx = startblock_565985(p, ((NimStringDesc*) &TMP3589), LOC3, 0);
	(*p).Blocks->data[(*p).Breakidx].Isloop = NIM_TRUE;
	genstmts_561298(p, (*t).kindU.S6.Sons->data[2]);
	endblock_566106(p);
	(*p).Breakidx = oldbreakidx_569214;
	(*p).Withinloop -= 1;
}

N_NIMCALL(void, genstate_566194)(tcproc549031* p, tnode225816* n) {
	NI64 idx;
	TY177515 LOC9;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NimStringDesc* LOC8;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = len_226364(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_198126(TMP4032);
		internalerror_198006(LOC8);
	}
	LA6: ;
	idx = (*(*n).kindU.S6.Sons->data[0]).kindU.S1.Intval;
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC9[0] = torope_177082(idx);
	linefmt_553148(p, ((NU8) 2), ((NimStringDesc*) &TMP4034), LOC9, 1);
}

N_NIMCALL(void, gengotostate_566287)(tcproc549031* p, tnode225816* n) {
	tloc225830 a;
	TY177515 LOC1;
	TY553703 LOC2;
	TY553703 LOC7;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_561352(p, (*n).kindU.S6.Sons->data[0], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_559637((&a));
	linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3986), LOC1, 1);
	(*p).Beforeretneeded = NIM_TRUE;
	memset((void*)LOC2, 0, sizeof(LOC2));
	linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP4035), LOC2, 0);
	{
		NI64 i_566367;
		NI64 HEX3Atmp_566381;
		NI64 res_566384;
		i_566367 = 0;
		HEX3Atmp_566381 = 0;
		HEX3Atmp_566381 = lastord_263010((*(*n).kindU.S6.Sons->data[0]).Typ);
		res_566384 = IL64(0);
		{
			while (1) {
				TY177515 LOC6;
				if (!(res_566384 <= HEX3Atmp_566381)) goto LA5;
				i_566367 = res_566384;
				memset((void*)LOC6, 0, sizeof(LOC6));
				LOC6[0] = torope_177082(i_566367);
				linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP4036), LOC6, 1);
				res_566384 += 1;
			} LA5: ;
		}
	}
	memset((void*)LOC7, 0, sizeof(LOC7));
	linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP3504), LOC7, 0);
}

N_NIMCALL(void, genbreakstate_566398)(tcproc549031* p, tnode225816* n) {
	tloc225830 a;
	memset((void*)(&a), 0, sizeof(a));
	{
		TY177515 LOC5;
		if (!((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 154))) goto LA3;
		initlocexpr_561352(p, (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1], (&a));
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_559637((&a));
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP4037), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY177515 LOC7;
		initlocexpr_561352(p, (*n).kindU.S6.Sons->data[0], (&a));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_559637((&a));
		linef_553122(p, ((NU8) 2), ((NimStringDesc*) &TMP4038), LOC7, 1);
	}
	LA1: ;
}

N_NIMCALL(void, expr_561305)(tcproc549031* p, tnode225816* n, tloc225830* d) {
	switch ((*n).Kind) {
	case ((NU8) 3):
	{
		tsym225846* sym;
		sym = (*n).kindU.S4.Sym;
		switch ((*sym).Kind) {
		case ((NU8) 13):
		{
			{
				NIM_BOOL LOC5;
				tnode225816* LOC6;
				LOC5 = 0;
				LOC6 = 0;
				LOC6 = getbody_279269(sym);
				LOC5 = ((*LOC6).Kind == ((NU8) 1));
				if (LOC5) goto LA7;
				LOC5 = (((*sym).Flags &(1<<((((NU8) 25))&31)))!=0);
				LA7: ;
				if (!LOC5) goto LA8;
				fillprocloc_561229(sym);
				genprocprototype_561314((*p).Module, sym);
			}
			goto LA3;
			LA8: ;
			{
				genproc_553629((*p).Module, sym);
			}
			LA3: ;
			putlocintodest_561321(p, d, (&(*sym).Loc));
		}
		break;
		case ((NU8) 12):
		case ((NU8) 16):
		case ((NU8) 14):
		case ((NU8) 15):
		{
			genproc_553629((*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*) &TMP3585));
appendString(LOC18, (*(*sym).Name).S);
				internalerror_197987((*n).Info, LOC18);
			}
			LA16: ;
			putlocintodest_561321(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_561284((*p).Module, sym);
				}
				LA26: ;
				putlocintodest_561321(p, d, (&(*sym).Loc));
			}
			goto LA20;
			LA22: ;
			{
				NIM_BOOL LOC29;
				trope177009* LOC32;
				LOC29 = 0;
				LOC29 = issimpleconst_552416((*sym).Typ);
				if (!LOC29) goto LA30;
				LOC32 = 0;
				LOC32 = genliteral_574007(p, (*sym).Ast, (*sym).Typ);
				putintodest_575477(p, d, (*n).Typ, LOC32);
			}
			goto LA20;
			LA30: ;
			{
				gencomplexconst_585731(p, sym, d);
			}
			LA20: ;
		}
		break;
		case ((NU8) 20):
		{
			trope177009* LOC35;
			LOC35 = 0;
			LOC35 = torope_177082(((NI64) ((*sym).Position)));
			putintodest_575477(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_561284((*p).Module, sym);
			}
			LA39: ;
			{
				NIM_BOOL LOC43;
				NimStringDesc* LOC47;
				NimStringDesc* LOC48;
				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;
				LOC48 = 0;
				LOC48 = nimIntToStr((*sym).Sup.Id);
				LOC47 = rawNewString((*(*sym).Name).S->Sup.len + LOC48->Sup.len + 20);
appendString(LOC47, ((NimStringDesc*) &TMP3603));
appendString(LOC47, (*(*sym).Name).S);
appendString(LOC47, ((NimStringDesc*) &TMP3364));
appendString(LOC47, LOC48);
				internalerror_197987((*n).Info, LOC47);
			}
			LA45: ;
			{
				if (!(((*sym).Flags &(1<<((((NU8) 22))&31)))!=0)) goto LA51;
				accessthreadlocalvar_553617(p, sym);
				{
					NIM_BOOL LOC55;
					trope177009* LOC58;
					LOC55 = 0;
					LOC55 = emulatedthreadvars_553624();
					if (!LOC55) goto LA56;
					LOC58 = 0;
					LOC58 = con_177038(((NimStringDesc*) &TMP3606), (*sym).Loc.R);
					putintodest_575477(p, d, (*sym).Loc.T, LOC58);
				}
				goto LA53;
				LA56: ;
				{
					putlocintodest_561321(p, d, (&(*sym).Loc));
				}
				LA53: ;
			}
			goto LA49;
			LA51: ;
			{
				putlocintodest_561321(p, d, (&(*sym).Loc));
			}
			LA49: ;
		}
		break;
		case ((NU8) 5):
		{
			{
				NIM_BOOL LOC64;
				NimStringDesc* LOC68;
				NimStringDesc* LOC69;
				LOC64 = 0;
				LOC64 = ((*sym).Loc.R == NIM_NIL);
				if (LOC64) goto LA65;
				LOC64 = ((*sym).Loc.T == NIM_NIL);
				LA65: ;
				if (!LOC64) goto LA66;
				LOC68 = 0;
				LOC69 = 0;
				LOC69 = nimIntToStr((*sym).Sup.Id);
				LOC68 = rawNewString((*(*sym).Name).S->Sup.len + LOC69->Sup.len + 21);
appendString(LOC68, ((NimStringDesc*) &TMP3607));
appendString(LOC68, (*(*sym).Name).S);
appendString(LOC68, ((NimStringDesc*) &TMP3364));
appendString(LOC68, LOC69);
				internalerror_197987((*n).Info, LOC68);
			}
			LA66: ;
			putlocintodest_561321(p, d, (&(*sym).Loc));
		}
		break;
		case ((NU8) 3):
		{
			{
				NIM_BOOL LOC73;
				NimStringDesc* LOC77;
				NimStringDesc* LOC78;
				LOC73 = 0;
				LOC73 = ((*sym).Loc.R == NIM_NIL);
				if (LOC73) goto LA74;
				LOC73 = ((*sym).Loc.T == NIM_NIL);
				LA74: ;
				if (!LOC73) goto LA75;
				LOC77 = 0;
				LOC78 = 0;
				LOC78 = nimIntToStr((*sym).Sup.Id);
				LOC77 = rawNewString((*(*sym).Name).S->Sup.len + LOC78->Sup.len + 22);
appendString(LOC77, ((NimStringDesc*) &TMP3608));
appendString(LOC77, (*(*sym).Name).S);
appendString(LOC77, ((NimStringDesc*) &TMP3364));
appendString(LOC77, LOC78);
				internalerror_197987((*n).Info, LOC77);
			}
			LA75: ;
			putlocintodest_561321(p, d, (&(*sym).Loc));
		}
		break;
		default:
		{
			NimStringDesc* LOC80;
			LOC80 = 0;
			LOC80 = rawNewString(reprEnum((*sym).Kind, (&NTI225445))->Sup.len + 22);
appendString(LOC80, ((NimStringDesc*) &TMP3609));
appendString(LOC80, reprEnum((*sym).Kind, (&NTI225445)));
appendString(LOC80, ((NimStringDesc*) &TMP3610));
			internalerror_197987((*n).Info, LOC80);
		}
		break;
		}
	}
	break;
	case ((NU8) 23):
	{
		{
			NIM_BOOL LOC84;
			trope177009* LOC87;
			LOC84 = 0;
			LOC84 = isemptytype_232991((*n).Typ);
			if (!!(LOC84)) goto LA85;
			LOC87 = 0;
			LOC87 = genliteral_561345(p, n);
			putintodest_575477(p, d, (*n).Typ, LOC87);
		}
		LA85: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		trope177009* LOC89;
		LOC89 = 0;
		LOC89 = genliteral_561345(p, n);
		putdataintodest_575439(p, d, (*n).Typ, LOC89);
	}
	break;
	case ((NU8) 6) ... ((NU8) 15):
	case ((NU8) 16) ... ((NU8) 19):
	case ((NU8) 5):
	{
		trope177009* LOC91;
		LOC91 = 0;
		LOC91 = genliteral_561345(p, n);
		putintodest_575477(p, d, (*n).Typ, LOC91);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 32):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		tnode225816* op;
		genlinedir_553435(p, n);
		op = (*n).kindU.S6.Sons->data[0];
		{
			tloc225830 a;
			if (!(*n).Typ == 0) goto LA95;
			memset((void*)(&a), 0, sizeof(a));
			{
				NIM_BOOL LOC99;
				LOC99 = 0;
				LOC99 = ((*op).Kind == ((NU8) 3));
				if (!(LOC99)) goto LA100;
				LOC99 = !(((*(*op).kindU.S4.Sym).Magic == ((NU16) 0)));
				LA100: ;
				if (!LOC99) goto LA101;
				genmagicexpr_584474(p, n, (&a), (*(*op).kindU.S4.Sym).Magic);
			}
			goto LA97;
			LA101: ;
			{
				gencall_565235(p, n, (&a));
			}
			LA97: ;
		}
		goto LA93;
		LA95: ;
		{
			{
				NIM_BOOL LOC107;
				LOC107 = 0;
				LOC107 = ((*op).Kind == ((NU8) 3));
				if (!(LOC107)) goto LA108;
				LOC107 = !(((*(*op).kindU.S4.Sym).Magic == ((NU16) 0)));
				LA108: ;
				if (!LOC107) goto LA109;
				genmagicexpr_584474(p, n, d, (*(*op).kindU.S4.Sym).Magic);
			}
			goto LA105;
			LA109: ;
			{
				gencall_565235(p, n, d);
			}
			LA105: ;
		}
		LA93: ;
	}
	break;
	case ((NU8) 39):
	{
		{
			NIM_BOOL LOC115;
			NI LOC117;
			trope177009* LOC120;
			LOC115 = 0;
			LOC115 = isdeepconstexpr_261958(n);
			if (!(LOC115)) goto LA116;
			LOC117 = 0;
			LOC117 = len_226364(n);
			LOC115 = !((LOC117 == 0));
			LA116: ;
			if (!LOC115) goto LA118;
			LOC120 = 0;
			LOC120 = gensetnode_574497(p, n);
			putintodest_575477(p, d, (*n).Typ, LOC120);
		}
		goto LA113;
		LA118: ;
		{
			gensetconstr_584832(p, n, d);
		}
		LA113: ;
	}
	break;
	case ((NU8) 41):
	{
		{
			NIM_BOOL LOC125;
			NI LOC127;
			LOC125 = 0;
			LOC125 = isdeepconstexpr_261958(n);
			if (!(LOC125)) goto LA126;
			LOC127 = 0;
			LOC127 = len_226364(n);
			LOC125 = !((LOC127 == 0));
			LA126: ;
			if (!LOC125) goto LA128;
			exprcomplexconst_586230(p, n, d);
		}
		goto LA123;
		LA128: ;
		{
			ttype225852* LOC131;
			LOC131 = 0;
			LOC131 = skiptypes_230245((*n).Typ, IL64(211106242013440));
			if (!((*LOC131).Kind == ((NU8) 24))) goto LA132;
			genseqconstr_581162(p, n, d);
		}
		goto LA123;
		LA132: ;
		{
			genarrayconstr_585663(p, n, d);
		}
		LA123: ;
	}
	break;
	case ((NU8) 37):
	{
		{
			NIM_BOOL LOC138;
			NI LOC140;
			LOC138 = 0;
			LOC138 = isdeepconstexpr_261958(n);
			if (!(LOC138)) goto LA139;
			LOC140 = 0;
			LOC140 = len_226364(n);
			LOC138 = !((LOC140 == 0));
			LA139: ;
			if (!LOC138) goto LA141;
			exprcomplexconst_586230(p, n, d);
		}
		goto LA136;
		LA141: ;
		{
			gentupleconstr_585145(p, n, d);
		}
		LA136: ;
	}
	break;
	case ((NU8) 38):
	{
		genobjconstr_580896(p, n, d);
	}
	break;
	case ((NU8) 61):
	{
		gencast_583477(p, n, d);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	{
		genconv_583708(p, n, d);
	}
	break;
	case ((NU8) 64):
	case ((NU8) 63):
	{
		genaddr_578115(p, n, d);
	}
	break;
	case ((NU8) 42):
	{
		genbracketexpr_579781(p, n, d);
	}
	break;
	case ((NU8) 47):
	case ((NU8) 65):
	{
		genderef_565881(p, n, d, NIM_FALSE);
	}
	break;
	case ((NU8) 45):
	{
		genrecordfield_578443(p, n, d);
	}
	break;
	case ((NU8) 46):
	{
		gencheckedrecordfield_579280(p, n, d);
	}
	break;
	case ((NU8) 127):
	case ((NU8) 112):
	{
		genblock_568796(p, n, d);
	}
	break;
	case ((NU8) 126):
	{
		genstmtlistexpr_585804(p, n, d);
	}
	break;
	case ((NU8) 115):
	{
		{
			NI i_586649;
			NI HEX3Atmp_586993;
			NI LOC156;
			NI res_586996;
			i_586649 = 0;
			HEX3Atmp_586993 = 0;
			LOC156 = 0;
			LOC156 = sonslen_226249(n);
			HEX3Atmp_586993 = (NI64)(LOC156 - 1);
			res_586996 = 0;
			{
				while (1) {
					if (!(res_586996 <= HEX3Atmp_586993)) goto LA158;
					i_586649 = res_586996;
					genstmts_561298(p, (*n).kindU.S6.Sons->data[i_586649]);
					res_586996 += 1;
				} LA158: ;
			}
		}
	}
	break;
	case ((NU8) 48):
	case ((NU8) 92):
	{
		genif_567223(p, n, d);
	}
	break;
	case ((NU8) 66):
	{
		downconv_586061(p, n, d);
	}
	break;
	case ((NU8) 67):
	{
		upconv_585871(p, n, d);
	}
	break;
	case ((NU8) 68):
	{
		genrangechck_583574(p, n, d, ((NimStringDesc*) &TMP3939));
	}
	break;
	case ((NU8) 69):
	{
		genrangechck_583574(p, n, d, ((NimStringDesc*) &TMP3940));
	}
	break;
	case ((NU8) 70):
	{
		genrangechck_583574(p, n, d, ((NimStringDesc*) &TMP3941));
	}
	break;
	case ((NU8) 71):
	{
		convstrtocstr_583745(p, n, d);
	}
	break;
	case ((NU8) 72):
	{
		convcstrtostr_583775(p, n, d);
	}
	break;
	case ((NU8) 51):
	case ((NU8) 52):
	{
		tsym225846* sym;
		sym = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		genproc_553629((*p).Module, sym);
		{
			NIM_BOOL LOC170;
			NimStringDesc* LOC174;
			LOC170 = 0;
			LOC170 = ((*sym).Loc.R == NIM_NIL);
			if (LOC170) goto LA171;
			LOC170 = ((*sym).Loc.T == NIM_NIL);
			LA171: ;
			if (!LOC170) goto LA172;
			LOC174 = 0;
			LOC174 = rawNewString((*(*sym).Name).S->Sup.len + 20);
appendString(LOC174, ((NimStringDesc*) &TMP3585));
appendString(LOC174, (*(*sym).Name).S);
			internalerror_197987((*n).Info, LOC174);
		}
		LA172: ;
		putlocintodest_561321(p, d, (&(*sym).Loc));
	}
	break;
	case ((NU8) 154):
	{
		genclosure_585501(p, n, d);
	}
	break;
	case ((NU8) 1):
	{
	}
	break;
	case ((NU8) 96):
	{
		genwhilestmt_568504(p, n);
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		genvarstmt_566830(p, n);
	}
	break;
	case ((NU8) 101):
	{
		genconststmt_566925(p, n);
	}
	break;
	case ((NU8) 94):
	{
		internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3978));
	}
	break;
	case ((NU8) 97):
	{
		gencase_571419(p, n, d);
	}
	break;
	case ((NU8) 109):
	{
		genreturnstmt_567948(p, n);
	}
	break;
	case ((NU8) 110):
	{
		genbreakstmt_569347(p, n);
	}
	break;
	case ((NU8) 73):
	{
		genasgn_573740(p, n, NIM_FALSE);
	}
	break;
	case ((NU8) 74):
	{
		genasgn_573740(p, n, !(((*p).Prc == NIM_NIL)));
	}
	break;
	case ((NU8) 114):
	{
		{
			tloc225830 a;
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA189;
			memset((void*)(&a), 0, sizeof(a));
			genlinedir_553435(p, n);
			initlocexpr_561352(p, (*n).kindU.S6.Sons->data[0], (&a));
		}
		LA189: ;
	}
	break;
	case ((NU8) 89):
	{
		genasmstmt_572899(p, n);
	}
	break;
	case ((NU8) 106):
	{
		{
			NIM_BOOL LOC195;
			LOC195 = 0;
			LOC195 = (gcmd_169120 == ((NU8) 2));
			if (LOC195) goto LA196;
			LOC195 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
			LA196: ;
			if (!LOC195) goto LA197;
			gentrycpp_571518(p, n, d);
		}
		goto LA193;
		LA197: ;
		{
			gentry_572059(p, n, d);
		}
		LA193: ;
	}
	break;
	case ((NU8) 108):
	{
		genraisestmt_569687(p, n);
	}
	break;
	case ((NU8) 98):
	{
		gentypesection_559627((*p).Module, n);
	}
	break;
	case ((NU8) 125):
	case ((NU8) 84):
	case ((NU8) 121):
	case ((NU8) 116):
	case ((NU8) 117):
	case ((NU8) 118):
	case ((NU8) 119):
	case ((NU8) 120):
	case ((NU8) 83):
	case ((NU8) 82):
	{
	}
	break;
	case ((NU8) 90):
	{
		genpragma_573320(p, n);
	}
	break;
	case ((NU8) 91):
	{
		tnode225816* LOC205;
		LOC205 = 0;
		LOC205 = lastson_226261(n);
		expr_561305(p, LOC205, d);
	}
	break;
	case ((NU8) 79):
	case ((NU8) 80):
	case ((NU8) 81):
	{
		{
			tsym225846* prc;
			if (!((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 1))) goto LA209;
			prc = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
			{
				tsym225846* LOC213;
				LOC213 = 0;
				LOC213 = skipgenericowner_232699(prc);
				if (!((*LOC213).Kind == ((NU8) 6))) goto LA214;
				{
					NIM_BOOL LOC218;
					NIM_BOOL LOC219;
					NIM_BOOL LOC220;
					NIM_BOOL LOC221;
					tsym225846* LOC223;
					NIM_BOOL LOC226;
					LOC218 = 0;
					LOC219 = 0;
					LOC220 = 0;
					LOC221 = 0;
					LOC221 = !(((gglobaloptions_169118 &(1<<((((NU8) 2))&31)))!=0));
					if (!(LOC221)) goto LA222;
					LOC223 = 0;
					LOC223 = getmodule_235243(prc);
					LOC221 = !((((*LOC223).Flags &(1<<((((NU8) 25))&31)))!=0));
					LA222: ;
					LOC220 = LOC221;
					if (LOC220) goto LA224;
					LOC220 = ((65600 & (*prc).Flags) == 64);
					LA224: ;
					LOC219 = LOC220;
					if (LOC219) goto LA225;
					LOC226 = 0;
					LOC226 = (((*prc).Flags &(1<<((((NU8) 6))&31)))!=0);
					if (!(LOC226)) goto LA227;
					LOC226 = (((*prc).Loc.Flags &(1<<((((NU8) 5))&7)))!=0);
					LA227: ;
					LOC219 = LOC226;
					LA225: ;
					LOC218 = LOC219;
					if (LOC218) goto LA228;
					LOC218 = ((*prc).Kind == ((NU8) 13));
					LA228: ;
					if (!LOC218) goto LA229;
					{
						NIM_BOOL LOC233;
						tnode225816* LOC234;
						LOC233 = 0;
						LOC234 = 0;
						LOC234 = getbody_279269(prc);
						LOC233 = !(((*LOC234).Kind == ((NU8) 1)));
						if (LOC233) goto LA235;
						LOC233 = (((*prc).Loc.Flags &(1<<((((NU8) 4))&7)))!=0);
						LA235: ;
						if (!LOC233) goto LA236;
						genproc_553629((*p).Module, prc);
					}
					LA236: ;
				}
				LA229: ;
			}
			LA214: ;
		}
		LA209: ;
	}
	break;
	case ((NU8) 95):
	{
		genparforstmt_569047(p, n);
	}
	break;
	case ((NU8) 156):
	{
		genstate_566194(p, n);
	}
	break;
	case ((NU8) 155):
	{
		gengotostate_566287(p, n);
	}
	break;
	case ((NU8) 157):
	{
		genbreakstate_566398(p, n);
	}
	break;
	default:
	{
		NimStringDesc* LOC243;
		LOC243 = 0;
		LOC243 = rawNewString(reprEnum((*n).Kind, (&NTI225029))->Sup.len + 25);
appendString(LOC243, ((NimStringDesc*) &TMP3609));
appendString(LOC243, reprEnum((*n).Kind, (&NTI225029)));
appendString(LOC243, ((NimStringDesc*) &TMP4039));
		internalerror_197987((*n).Info, LOC243);
	}
	break;
	}
}

N_NIMCALL(void, genstmts_561298)(tcproc549031* p, tnode225816* t) {
	tloc225830 a;
	memset((void*)(&a), 0, sizeof(a));
	expr_561305(p, t, (&a));
	{
		NimStringDesc* LOC5;
		if (!!(((7 &(1<<((a.K)&15)))!=0))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_198126(TMP4040);
		internalerror_198006(LOC5);
	}
	LA3: ;
}

N_NIMCALL(trope177009*, initgcframe_560204)(tcproc549031* p) {
	trope177009* result;
	result = 0;
	{
		TY177515 LOC5;
		if (!(0 < ((NI) ((*p).Gcframeid)))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = (*p).Gcframetype;
		result = ropef_177107(((NimStringDesc*) &TMP4044), LOC5, 1);
	}
	LA3: ;
	return result;
}

N_NIMCALL(trope177009*, initframe_588179)(tcproc549031* p, trope177009* procname, trope177009* filename) {
	trope177009* result;
	trope177009* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_552608((*p).Module, ((NimStringDesc*) &TMP4045));
	{
		trope177009* LOC6;
		TY556046 LOC7;
		if (!(0 < (*p).Maxframelen)) goto LA4;
		LOC6 = 0;
		LOC6 = cgsym_552608((*p).Module, ((NimStringDesc*) &TMP4046));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = procname;
		LOC7[1] = filename;
		LOC7[2] = torope_177082(((NI64) ((*p).Maxframelen)));
		LOC7[3] = torope_177082(((NI64) ((*p).Blocks->data[0].Framelen)));
		result = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP4047), LOC7, 4);
	}
	goto LA2;
	LA4: ;
	{
		TY588896 LOC9;
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = procname;
		LOC9[1] = filename;
		result = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP4048), LOC9, 2);
	}
	LA2: ;
	return result;
}

N_NIMCALL(void, appcg_553032)(tcproc549031* p, NU8 s, NimStringDesc* frmt, trope177009** args, NI argsLen0) {
	trope177009** LOC1;
	trope177009* LOC2;
	LOC1 = 0;
	LOC1 = s_549183(p, s);
	LOC2 = 0;
	LOC2 = ropecg_552615((*p).Module, frmt, args, argsLen0);
	app_177052(LOC1, LOC2);
}

N_NIMCALL(trope177009*, deinitgcframe_560219)(tcproc549031* p) {
	trope177009* result;
	result = 0;
	{
		TY553703 LOC5;
		if (!(0 < ((NI) ((*p).Gcframeid)))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		result = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP4051), LOC5, 0);
	}
	LA3: ;
	return result;
}

N_NIMCALL(trope177009*, deinitframe_588200)(tcproc549031* p) {
	trope177009* result;
	TY553703 LOC1;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	result = ropecg_552615((*p).Module, ((NimStringDesc*) &TMP4052), LOC1, 0);
	return result;
}

N_NIMCALL(void, genprocaux_588269)(tcgen549035* m, tsym225846* prc) {
	tcproc549031* p;
	trope177009* header;
	trope177009* returnstmt;
	tnode225816* LOC38;
	trope177009* generatedproc;
	p = newproc_549230(prc, m);
	header = genprocheader_556516(m, prc);
	returnstmt = NIM_NIL;
	{
		NIM_BOOL LOC3;
		tsym225846* 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_226364((*prc).Ast);
			if (!(LOC9 <= 7)) goto LA10;
			internalerror_197987((*prc).Info, ((NimStringDesc*) &TMP3462));
		}
		LA10: ;
		res = (*(*(*prc).Ast).kindU.S6.Sons->data[7]).kindU.S4.Sym;
		{
			NIM_BOOL LOC14;
			TY177515 LOC21;
			LOC14 = 0;
			LOC14 = isinvalidreturntype_554176((*(*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_560577(p, res);
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = rdloc_559637((&(*res).Loc));
			returnstmt = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3557), LOC21, 1);
			initlocalvar_559943(p, res, NIM_FALSE);
		}
		goto LA12;
		LA15: ;
		{
			fillresult_554488(res);
			assignparam_561159(p, res);
			{
				ttype225852* LOC25;
				LOC25 = 0;
				LOC25 = skiptypes_230245((*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: ;
	{
		NI i_588642;
		NI HEX3Atmp_588793;
		NI LOC29;
		NI res_588796;
		i_588642 = 0;
		HEX3Atmp_588793 = 0;
		LOC29 = 0;
		LOC29 = sonslen_226249((*(*prc).Typ).N);
		HEX3Atmp_588793 = (NI64)(LOC29 - 1);
		res_588796 = 1;
		{
			while (1) {
				if (!(res_588796 <= HEX3Atmp_588793)) goto LA31;
				i_588642 = res_588796;
				{
					tsym225846* param;
					param = (*(*(*(*prc).Typ).N).kindU.S6.Sons->data[i_588642]).kindU.S4.Sym;
					{
						NIM_BOOL LOC35;
						LOC35 = 0;
						LOC35 = iscompiletimeonly_273466((*param).Typ);
						if (!LOC35) goto LA36;
						goto LA32;
					}
					LA36: ;
					assignparam_561159(p, param);
				} LA32: ;
				res_588796 += 1;
			} LA31: ;
		}
	}
	closuresetup_588217(p, prc);
	LOC38 = 0;
	LOC38 = getbody_279269(prc);
	genstmts_561298(p, LOC38);
	generatedproc = 0;
	{
		TY556046 LOC47;
		trope177009** LOC48;
		trope177009** LOC49;
		trope177009** LOC50;
		if (!(((*prc).Flags &(1<<((((NU8) 9))&31)))!=0)) goto LA41;
		{
			if (!((cc_202434[(ccompiler_202461)- 1].Field20 &(1<<((((NU8) 6))&7)))!=0)) goto LA45;
			header = con_177038(((NimStringDesc*) &TMP4041), header);
		}
		LA45: ;
		memset((void*)LOC47, 0, sizeof(LOC47));
		LOC47[0] = header;
		LOC48 = 0;
		LOC48 = s_549183(p, ((NU8) 0));
		unsureAsgnRef((void**) (&LOC47[1]), (*LOC48));
		LOC49 = 0;
		LOC49 = s_549183(p, ((NU8) 1));
		unsureAsgnRef((void**) (&LOC47[2]), (*LOC49));
		LOC50 = 0;
		LOC50 = s_549183(p, ((NU8) 2));
		unsureAsgnRef((void**) (&LOC47[3]), (*LOC50));
		generatedproc = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP4042), LOC47, 4);
	}
	goto LA39;
	LA41: ;
	{
		TY177515 LOC52;
		trope177009* LOC53;
		trope177009** LOC70;
		trope177009** LOC71;
		trope177009* LOC78;
		TY553703 LOC84;
		trope177009* LOC85;
		memset((void*)LOC52, 0, sizeof(LOC52));
		LOC52[0] = header;
		generatedproc = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP4043), LOC52, 1);
		LOC53 = 0;
		LOC53 = initgcframe_560204(p);
		app_177052(&generatedproc, LOC53);
		{
			trope177009** LOC58;
			trope177009* procname;
			trope177009* LOC59;
			trope177009* LOC60;
			if (!(((*prc).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA56;
			LOC58 = 0;
			LOC58 = s_549183(p, ((NU8) 0));
			app_177052(&generatedproc, (*LOC58));
			procname = cstringlit_560237(p, &generatedproc, (*(*prc).Name).S);
			LOC59 = 0;
			LOC59 = quotedfilename_198178((*prc).Info);
			LOC60 = 0;
			LOC60 = initframe_588179(p, procname, LOC59);
			app_177052(&generatedproc, LOC60);
		}
		goto LA54;
		LA56: ;
		{
			trope177009** LOC62;
			LOC62 = 0;
			LOC62 = s_549183(p, ((NU8) 0));
			app_177052(&generatedproc, (*LOC62));
		}
		LA54: ;
		{
			NIM_BOOL LOC65;
			TY553703 LOC69;
			LOC65 = 0;
			LOC65 = (((*prc).Options &(1<<((((NU8) 19))&31)))!=0);
			if (!(LOC65)) goto LA66;
			LOC65 = !((gcmd_169120 == ((NU8) 5)));
			LA66: ;
			if (!LOC65) goto LA67;
			memset((void*)LOC69, 0, sizeof(LOC69));
			appcg_553032(p, ((NU8) 1), ((NimStringDesc*) &TMP4049), LOC69, 0);
		}
		LA67: ;
		LOC70 = 0;
		LOC70 = s_549183(p, ((NU8) 1));
		app_177052(&generatedproc, (*LOC70));
		LOC71 = 0;
		LOC71 = s_549183(p, ((NU8) 2));
		app_177052(&generatedproc, (*LOC71));
		{
			TY553703 LOC76;
			trope177009* LOC77;
			if (!(*p).Beforeretneeded) goto LA74;
			memset((void*)LOC76, 0, sizeof(LOC76));
			LOC77 = 0;
			LOC77 = ropef_177107(((NimStringDesc*) &TMP4050), LOC76, 0);
			app_177052(&generatedproc, LOC77);
		}
		LA74: ;
		LOC78 = 0;
		LOC78 = deinitgcframe_560219(p);
		app_177052(&generatedproc, LOC78);
		{
			trope177009* LOC83;
			if (!(((*prc).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA81;
			LOC83 = 0;
			LOC83 = deinitframe_588200(p);
			app_177052(&generatedproc, LOC83);
		}
		LA81: ;
		app_177052(&generatedproc, returnstmt);
		memset((void*)LOC84, 0, sizeof(LOC84));
		LOC85 = 0;
		LOC85 = ropef_177107(((NimStringDesc*) &TMP4053), LOC84, 0);
		app_177052(&generatedproc, LOC85);
	}
	LA39: ;
	app_177052(&(*m).S[(((NU8) 10))- 0], generatedproc);
}

N_NIMCALL(NIM_BOOL, isgetprocaddr_587256)(tlib225834* lib) {
	NIM_BOOL result;
	tnode225816* 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 = ((100663296 &(IL64(1)<<(((*(*n).Typ).Kind)&IL64(63))))!=0);
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, symindynamiclib_587819)(tcgen549035* m, tsym225846* sym) {
	tlib225834* lib;
	NIM_BOOL iscall;
	trope177009* extname;
	trope177009* tmp;
	TY588896 LOC47;
	lib = (*sym).Annex;
	iscall = isgetprocaddr_587256(lib);
	extname = (*sym).Loc.R;
	{
		if (!!(iscall)) goto LA3;
		loaddynamiclib_587311(m, lib);
	}
	LA3: ;
	{
		if (!(gcmd_169120 == ((NU8) 5))) goto LA7;
		(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 0))%(sizeof(NI8)*8));
	}
	LA7: ;
	tmp = mangledynlibproc_560938(sym);
	asgnRefNoCycle((void**) (&(*sym).Loc.R), tmp);
	asgnRefNoCycle((void**) (&(*(*sym).Typ).Sym), NIM_NIL);
	(*m).Labels += 2;
	{
		tnode225816* n;
		tloc225830 a;
		tnode225816* LOC13;
		trope177009* params;
		trope177009* LOC14;
		trope177009* load;
		TY556046 LOC21;
		NimStringDesc* LOC22;
		tnode225816* last;
		NimStringDesc* idx;
		if (!iscall) goto LA11;
		n = (*lib).Path;
		memset((void*)(&a), 0, sizeof(a));
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_226698(n, 0);
		initlocexpr_561352((*m).Initproc, LOC13, (&a));
		LOC14 = 0;
		LOC14 = rdloc_559637((&a));
		params = con_177031(LOC14, ((NimStringDesc*) &TMP3412));
		{
			NI i_587880;
			NI HEX3Atmp_587982;
			NI LOC16;
			NI res_587985;
			i_587880 = 0;
			HEX3Atmp_587982 = 0;
			LOC16 = 0;
			LOC16 = len_226364(n);
			HEX3Atmp_587982 = (NI64)(LOC16 - 2);
			res_587985 = 1;
			{
				while (1) {
					tnode225816* LOC19;
					trope177009* LOC20;
					if (!(res_587985 <= HEX3Atmp_587982)) goto LA18;
					i_587880 = res_587985;
					LOC19 = 0;
					LOC19 = HEX5BHEX5D_226698(n, i_587880);
					initlocexpr_561352((*m).Initproc, LOC19, (&a));
					LOC20 = 0;
					LOC20 = rdloc_559637((&a));
					app_177052(&params, LOC20);
					app_177060(&params, ((NimStringDesc*) &TMP3402));
					res_587985 += 1;
				} LA18: ;
			}
		}
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = tmp;
		LOC21[1] = gettypedesc_556307(m, (*sym).Typ);
		LOC21[2] = params;
		LOC22 = 0;
		LOC22 = ropetostr_177101(extname);
		LOC21[3] = cstringlit_560296(m, &(*m).S[(((NU8) 16))- 0], LOC22);
		load = ropef_177107(((NimStringDesc*) &TMP4054), LOC21, 4);
		last = lastson_226261(n);
		{
			if (!((*last).Kind == ((NU8) 58))) goto LA25;
			last = (*last).kindU.S6.Sons->data[1];
		}
		LA25: ;
		{
			NimStringDesc* LOC31;
			if (!!(((*last).Kind == ((NU8) 20)))) goto LA29;
			LOC31 = 0;
			LOC31 = HEX24_198126(TMP4055);
			internalerror_198006(LOC31);
		}
		LA29: ;
		idx = (*last).kindU.S3.Strval;
		{
			trope177009** LOC36;
			if (!(idx->Sup.len == 0)) goto LA34;
			LOC36 = 0;
			LOC36 = s_549183((*m).Initproc, ((NU8) 2));
			app_177052(LOC36, load);
		}
		goto LA32;
		LA34: ;
		{
			NIM_BOOL LOC38;
			LOC38 = 0;
			LOC38 = (idx->Sup.len == 1);
			if (!(LOC38)) goto LA39;
			LOC38 = (((NU8)(idx->data[0])) >= ((NU8)(48)) && ((NU8)(idx->data[0])) <= ((NU8)(57)));
			LA39: ;
			if (!LOC38) goto LA40;
			app_177052(&(*m).Extensionloaders[(((NU8)(idx->data[0])))- 48], load);
		}
		goto LA32;
		LA40: ;
		{
			NimStringDesc* LOC43;
			LOC43 = 0;
			LOC43 = rawNewString(idx->Sup.len + 13);
appendString(LOC43, ((NimStringDesc*) &TMP4056));
appendString(LOC43, idx);
			internalerror_197987((*sym).Info, LOC43);
		}
		LA32: ;
	}
	goto LA9;
	LA11: ;
	{
		TY556046 LOC45;
		NimStringDesc* LOC46;
		memset((void*)LOC45, 0, sizeof(LOC45));
		LOC45[0] = tmp;
		LOC45[1] = gettypedesc_556307(m, (*sym).Typ);
		LOC45[2] = (*lib).Name;
		LOC46 = 0;
		LOC46 = ropetostr_177101(extname);
		LOC45[3] = cstringlit_560296(m, &(*m).S[(((NU8) 16))- 0], LOC46);
		appcg_553004(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP4057), LOC45, 4);
	}
	LA9: ;
	memset((void*)LOC47, 0, sizeof(LOC47));
	LOC47[0] = (*sym).Loc.R;
	LOC47[1] = gettypedesc_556307(m, (*sym).Loc.T);
	appff_552228(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP4058), ((NimStringDesc*) &TMP4059), LOC47, 2);
}

N_NIMCALL(void, symindynamiclibpartial_588054)(tcgen549035* m, tsym225846* sym) {
	asgnRefNoCycle((void**) (&(*sym).Loc.R), mangledynlibproc_560938(sym));
	asgnRefNoCycle((void**) (&(*(*sym).Typ).Sym), NIM_NIL);
}

N_NIMCALL(void, genprocnoforward_588973)(tcgen549035* m, tsym225846* prc) {
	fillprocloc_561229(prc);
	useheader_552469(m, prc);
	{
		trope177009* LOC5;
		if (!(((*prc).Loc.Flags &(1<<((((NU8) 7))&7)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = cgsym_552608(m, (*(*prc).Name).S);
		goto BeforeRet;
	}
	LA3: ;
	genprocprototype_561314(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_222916((&(*m).Declaredthings), (*prc).Sup.Id);
			if (!!(LOC15)) goto LA16;
			genprocaux_588269(m, prc);
		}
		LA16: ;
	}
	goto LA6;
	LA11: ;
	{
		tcgen549035* q;
		if (!(((*prc).Loc.Flags &(1<<((((NU8) 4))&7)))!=0)) goto LA19;
		q = findpendingmodule_552313(m, prc);
		{
			NIM_BOOL LOC23;
			NIM_BOOL LOC25;
			LOC23 = 0;
			LOC23 = !((q == NIM_NIL));
			if (!(LOC23)) goto LA24;
			LOC25 = 0;
			LOC25 = containsorincl_222916((&(*q).Declaredthings), (*prc).Sup.Id);
			LOC23 = !(LOC25);
			LA24: ;
			if (!LOC23) goto LA26;
			symindynamiclib_587819(q, prc);
		}
		goto LA21;
		LA26: ;
		{
			symindynamiclibpartial_588054(m, prc);
		}
		LA21: ;
	}
	goto LA6;
	LA19: ;
	{
		tcgen549035* q;
		if (!!((((*prc).Flags &(1<<((((NU8) 5))&31)))!=0))) goto LA30;
		q = findpendingmodule_552313(m, prc);
		{
			NIM_BOOL LOC34;
			NIM_BOOL LOC36;
			LOC34 = 0;
			LOC34 = !((q == NIM_NIL));
			if (!(LOC34)) goto LA35;
			LOC36 = 0;
			LOC36 = containsorincl_222916((&(*q).Declaredthings), (*prc).Sup.Id);
			LOC34 = !(LOC36);
			LA35: ;
			if (!LOC34) goto LA37;
			genprocaux_588269(q, prc);
		}
		LA37: ;
	}
	goto LA6;
	LA30: ;
	LA6: ;
	BeforeRet: ;
}

N_NIMCALL(void, genproc_553629)(tcgen549035* m, tsym225846* 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_589444(prc);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		goto BeforeRet;
	}
	LA6: ;
	fillprocloc_561229(prc);
	{
		if (!(((*prc).Flags &(1<<((((NU8) 4))&31)))!=0)) goto LA10;
		addforwardedproc_552251(m, prc);
	}
	goto LA8;
	LA10: ;
	{
		genprocnoforward_588973(m, prc);
		{
			NIM_BOOL LOC15;
			NIM_BOOL LOC16;
			LOC15 = 0;
			LOC16 = 0;
			LOC16 = ((65600 & (*prc).Flags) == 64);
			if (!(LOC16)) goto LA17;
			LOC16 = !((generatedheader_552201 == NIM_NIL));
			LA17: ;
			LOC15 = LOC16;
			if (!(LOC15)) goto LA18;
			LOC15 = !((((*prc).Loc.Flags &(1<<((((NU8) 3))&7)))!=0));
			LA18: ;
			if (!LOC15) goto LA19;
			genprocprototype_561314(generatedheader_552201, prc);
			{
				if (!((*(*prc).Typ).Callconv == ((NU8) 5))) goto LA23;
				{
					NIM_BOOL LOC27;
					LOC27 = 0;
					LOC27 = containsorincl_222916((&(*generatedheader_552201).Declaredthings), (*prc).Sup.Id);
					if (!!(LOC27)) goto LA28;
					genprocaux_588269(generatedheader_552201, prc);
				}
				LA28: ;
			}
			LA23: ;
		}
		LA19: ;
	}
	LA8: ;
	BeforeRet: ;
}

N_NIMCALL(trope177009*, cgsym_552608)(tcgen549035* m, NimStringDesc* name) {
	trope177009* result;
	tsym225846* sym;
	result = 0;
	sym = getcompilerproc_282036(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_553629(m, sym);
		}
		break;
		case ((NU8) 8):
		case ((NU8) 11):
		case ((NU8) 9):
		{
			genvarprototype_561284(m, sym);
		}
		break;
		case ((NU8) 7):
		{
			trope177009* LOC8;
			LOC8 = 0;
			LOC8 = gettypedesc_556307(m, (*sym).Typ);
		}
		break;
		default:
		{
			NimStringDesc* LOC10;
			LOC10 = 0;
			LOC10 = rawNewString(name->Sup.len + 7);
appendString(LOC10, ((NimStringDesc*) &TMP4060));
appendString(LOC10, name);
			internalerror_198006(LOC10);
		}
		break;
		}
	}
	goto LA1;
	LA3: ;
	{
		rawmessage_197733(((NU16) 64), name);
	}
	LA1: ;
	result = (*sym).Loc.R;
	return result;
}

N_NIMCALL(trope177009*, ropecg_552615)(tcgen549035* m, NimStringDesc* frmt, trope177009** args, NI argsLen0) {
	trope177009* 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 LA2;
			{
				if (!((NU8)(frmt->data[i]) == (NU8)(36))) goto LA5;
				i += 1;
				switch (((NU8)(frmt->data[i]))) {
				case 36:
				{
					app_177060(&result, ((NimStringDesc*) &TMP3353));
					i += 1;
				}
				break;
				case 35:
				{
					i += 1;
					app_177052(&result, args[num]);
					num += 1;
				}
				break;
				case 48 ... 57:
				{
					NI j;
					j = 0;
					{
						while (1) {
							j = (NI64)((NI64)((NI64)(j * 10) + ((NI) (((NU8)(frmt->data[i]))))) - 48);
							i += 1;
							{
								NIM_BOOL LOC14;
								LOC14 = 0;
								LOC14 = (length <= i);
								if (LOC14) goto LA15;
								LOC14 = !((((NU8)(frmt->data[i])) >= ((NU8)(48)) && ((NU8)(frmt->data[i])) <= ((NU8)(57))));
								LA15: ;
								if (!LOC14) goto LA16;
								goto LA10;
							}
							LA16: ;
						}
					} LA10: ;
					num = j;
					{
						NimStringDesc* LOC22;
						NimStringDesc* LOC23;
						if (!((NI64)((argsLen0-1) + 1) < j)) goto LA20;
						LOC22 = 0;
						LOC23 = 0;
						LOC23 = nimIntToStr(j);
						LOC22 = rawNewString(LOC23->Sup.len + 30);
appendString(LOC22, ((NimStringDesc*) &TMP3354));
appendString(LOC22, LOC23);
						internalerror_198006(LOC22);
					}
					LA20: ;
					app_177052(&result, args[(NI64)(j - 1)]);
				}
				break;
				case 110:
				{
					{
						if (!!(((goptions_169116 &(1<<((((NU8) 10))&31)))!=0))) goto LA27;
						app_177052(&result, rnl_178454);
					}
					LA27: ;
					i += 1;
				}
				break;
				case 78:
				{
					app_177052(&result, rnl_178454);
					i += 1;
				}
				break;
				default:
				{
					NimStringDesc* LOC31;
					LOC31 = 0;
					LOC31 = rawNewString(31);
appendString(LOC31, ((NimStringDesc*) &TMP3354));
appendChar(LOC31, frmt->data[i]);
					internalerror_198006(LOC31);
				}
				break;
				}
			}
			goto LA3;
			LA5: ;
			{
				NIM_BOOL LOC33;
				NI j;
				NimStringDesc* ident;
				trope177009* LOC39;
				LOC33 = 0;
				LOC33 = ((NU8)(frmt->data[i]) == (NU8)(35));
				if (!(LOC33)) goto LA34;
				LOC33 = (((NU8)(frmt->data[(NI64)(i + 1)])) >= ((NU8)(97)) && ((NU8)(frmt->data[(NI64)(i + 1)])) <= ((NU8)(122)) || ((NU8)(frmt->data[(NI64)(i + 1)])) >= ((NU8)(65)) && ((NU8)(frmt->data[(NI64)(i + 1)])) <= ((NU8)(90)) || ((NU8)(frmt->data[(NI64)(i + 1)])) == ((NU8)(95)));
				LA34: ;
				if (!LOC33) goto LA35;
				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 LA38;
						j += 1;
					} LA38: ;
				}
				ident = copyStrLast(frmt, i, (NI64)(j - 1));
				i = j;
				LOC39 = 0;
				LOC39 = cgsym_552608(m, ident);
				app_177052(&result, LOC39);
			}
			goto LA3;
			LA35: ;
			{
				NIM_BOOL LOC41;
				NI j;
				NimStringDesc* LOC47;
				trope177009* LOC48;
				LOC41 = 0;
				LOC41 = ((NU8)(frmt->data[i]) == (NU8)(35));
				if (!(LOC41)) goto LA42;
				LOC41 = ((NU8)(frmt->data[(NI64)(i + 1)]) == (NU8)(36));
				LA42: ;
				if (!LOC41) goto LA43;
				i += 2;
				j = 0;
				{
					while (1) {
						if (!(((NU8)(frmt->data[i])) >= ((NU8)(48)) && ((NU8)(frmt->data[i])) <= ((NU8)(57)))) goto LA46;
						j = (NI64)((NI64)((NI64)(j * 10) + ((NI) (((NU8)(frmt->data[i]))))) - 48);
						i += 1;
					} LA46: ;
				}
				LOC47 = 0;
				LOC47 = ropetostr_177101(args[(NI64)(j - 1)]);
				LOC48 = 0;
				LOC48 = cgsym_552608(m, LOC47);
				app_177052(&result, LOC48);
			}
			goto LA3;
			LA43: ;
			LA3: ;
			start = i;
			{
				while (1) {
					if (!(i < length)) goto LA50;
					{
						NIM_BOOL LOC53;
						LOC53 = 0;
						LOC53 = !(((NU8)(frmt->data[i]) == (NU8)(36)));
						if (!(LOC53)) goto LA54;
						LOC53 = !(((NU8)(frmt->data[i]) == (NU8)(35)));
						LA54: ;
						if (!LOC53) goto LA55;
						i += 1;
					}
					goto LA51;
					LA55: ;
					{
						goto LA49;
					}
					LA51: ;
				} LA50: ;
			} LA49: ;
			{
				NimStringDesc* LOC62;
				if (!(start <= (NI64)(i - 1))) goto LA60;
				LOC62 = 0;
				LOC62 = copyStrLast(frmt, start, (NI64)(i - 1));
				app_177060(&result, LOC62);
			}
			LA60: ;
		} LA2: ;
	}
	return result;
}

N_NIMCALL(trope177009*, gettempname_554244)(void) {
	trope177009* result;
	TY177515 LOC1;
	NI LOC2;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = backendid_224425();
	LOC1[0] = torope_177082(((NI64) (LOC2)));
	result = ropecg_552615(NIM_NIL, ((NimStringDesc*) &TMP3486), LOC1, 1);
	return result;
}

N_NIMCALL(tcgen549035*, rawnewmodule_591102)(tsym225846* module, NimStringDesc* filename) {
	tcgen549035* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	result = (tcgen549035*) newObj((&NTI549025), sizeof(tcgen549035));
	(*result).Sup.Sup.m_type = (&NTI549035);
	initlinkedlist_127043((&(*result).Headerfiles));
	initintset_222950((&(*result).Declaredthings));
	initintset_222950((&(*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_226167((&(*result).Typecache));
	initidtable_226167((&(*result).Forwtypecache));
	asgnRefNoCycle((void**) (&(*result).Module), module);
	initintset_222950((&(*result).Typeinfomarker));
	asgnRef((void**) (&(*result).Initproc), newproc_549230(NIM_NIL, result));
	(*(*result).Initproc).Options = initprocoptions_591061(result);
	asgnRef((void**) (&(*result).Preinitproc), newpreinitproc_591039(result));
	asgnRef((void**) (&(*result).Postinitproc), newpostinitproc_591050(result));
	initnodetable_226188((&(*result).Datacache));
	if ((*result).Typestack) nimGCunrefNoCycle((*result).Typestack);
	(*result).Typestack = (ttypeseq225848*) newSeqRC1((&NTI225848), 0);
	if ((*result).Forwardedprocs) nimGCunrefNoCycle((*result).Forwardedprocs);
	(*result).Forwardedprocs = (tsymseq225818*) newSeqRC1((&NTI225818), 0);
	asgnRefNoCycle((void**) (&(*result).Typenodesname), gettempname_554244());
	asgnRefNoCycle((void**) (&(*result).Nimtypesname), gettempname_554244());
	{
		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(tcgen549035*, rawnewmodule_591427)(tsym225846* module) {
	tcgen549035* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = tofullpath_197037(((NI32) ((*module).Position)));
	result = rawnewmodule_591102(module, LOC1);
	return result;
}

N_NIMCALL(tcgen549035*, newmodule_591437)(tsym225846* module) {
	tcgen549035* result;
	result = 0;
	{
		tcgen549035* LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = getcgenmodule_552291(module);
		if (!!((LOC3 == NIM_NIL))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX24_198126(TMP3351);
		internalerror_198006(LOC6);
	}
	LA4: ;
	result = rawnewmodule_591427(module);
	{
		if (!(gmodules_549171->Sup.len <= (*module).Position)) goto LA9;
		gmodules_549171 = (TY549150*) setLengthSeq(&(gmodules_549171)->Sup, sizeof(tcgen549035*), (NI64)((*module).Position + 1));
	}
	LA9: ;
	asgnRef((void**) (&gmodules_549171->data[(*module).Position]), result);
	{
		if (!((gglobaloptions_169118 &(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_197025(((NI32) ((*module).Position)));
			LOC19 = rawNewString(LOC20->Sup.len + 28);
appendString(LOC19, ((NimStringDesc*) &TMP4061));
appendString(LOC19, LOC20);
			internalerror_198006(LOC19);
		}
		LA17: ;
	}
	LA13: ;
	return result;
}

N_NIMCALL(tpasscontext286005*, myopen_591541)(tsym225846* module) {
	tpasscontext286005* result;
	tcgen549035* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = newmodule_591437(module);
	result = &LOC1->Sup;
	{
		NIM_BOOL LOC4;
		NimStringDesc* f;
		NimStringDesc* LOC13;
		NimStringDesc* LOC14;
		LOC4 = 0;
		LOC4 = ((gglobaloptions_169118 &(1<<((((NU8) 30))&31)))!=0);
		if (!(LOC4)) goto LA5;
		LOC4 = (generatedheader_552201 == NIM_NIL);
		LA5: ;
		if (!LOC4) goto LA6;
		{
			if (!(0 < headerfile_169126->Sup.len)) goto LA10;
			f = headerfile_169126;
		}
		goto LA8;
		LA10: ;
		{
			f = gprojectfull_169236;
		}
		LA8: ;
		LOC13 = 0;
		LOC13 = completecfilepath_202855(f, NIM_TRUE);
		LOC14 = 0;
		LOC14 = noschangeFileExt(LOC13, ((NimStringDesc*) &TMP4062));
		asgnRef((void**) (&generatedheader_552201), rawnewmodule_591102(module, LOC14));
		(*generatedheader_552201).Isheaderfile = NIM_TRUE;
	}
	LA6: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getcfile_591662)(tcgen549035* m) {
	NimStringDesc* result;
	NimStringDesc* ext;
	NimStringDesc* LOC13;
	NimStringDesc* LOC14;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_169120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		ext = copyString(((NimStringDesc*) &TMP4072));
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = (gcmd_169120 == ((NU8) 3));
		if (LOC8) goto LA9;
		LOC8 = (((*(*m).Module).Flags &(1<<((((NU8) 28))&31)))!=0);
		LA9: ;
		if (!LOC8) goto LA10;
		ext = copyString(((NimStringDesc*) &TMP4073));
	}
	goto LA1;
	LA10: ;
	{
		ext = copyString(((NimStringDesc*) &TMP4074));
	}
	LA1: ;
	LOC13 = 0;
	LOC13 = withpackagename_169946((*m).Cfilename);
	LOC14 = 0;
	LOC14 = completecfilepath_202855(LOC13, NIM_TRUE);
	result = noschangeFileExt(LOC14, ext);
	return result;
}

N_NIMCALL(tpasscontext286005*, myopencached_591717)(tsym225846* module, trodreader276030* rd) {
	tpasscontext286005* result;
	tcgen549035* m;
	NimStringDesc* LOC1;
	result = 0;
	m = newmodule_591437(module);
	LOC1 = 0;
	LOC1 = getcfile_591662(m);
	readmergeinfo_550815(LOC1, m);
	result = &m->Sup;
	return result;
}

static N_INLINE(NIM_BOOL, skipcodegen_286083)(tnode225816* n) {
	NIM_BOOL result;
	result = 0;
	result = (0 < gerrorcounter_196303);
	return result;
}

N_NIMCALL(tnode225816*, myprocess_591808)(tpasscontext286005* b, tnode225816* n) {
	tnode225816* result;
	tcgen549035* m;
	result = 0;
	result = n;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (b == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = skipcodegen_286083(n);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	m = ((tcgen549035*) (b));
	(*(*m).Initproc).Options = initprocoptions_591061(m);
	genstmts_561298((*m).Initproc, n);
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope177009*, getsomeinitname_590213)(tsym225846* m, NimStringDesc* suffix) {
	trope177009* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!((12288 & (*m).Flags) == 0)) goto LA3;
		LOC5 = 0;
		LOC5 = mangle_548763((*(*(*m).Owner).Name).S);
		result = torope_177076(LOC5);
		app_177060(&result, ((NimStringDesc*) &TMP3364));
	}
	LA3: ;
	app_177060(&result, (*(*m).Name).S);
	app_177060(&result, suffix);
	return result;
}

N_NIMCALL(trope177009*, getinitname_590647)(tsym225846* m) {
	trope177009* result;
	result = 0;
	result = getsomeinitname_590213(m, ((NimStringDesc*) &TMP4075));
	return result;
}

N_NIMCALL(trope177009*, getdatinitname_590657)(tsym225846* m) {
	trope177009* result;
	result = 0;
	result = getsomeinitname_590213(m, ((NimStringDesc*) &TMP4076));
	return result;
}

N_NIMCALL(trope177009*, ropeff_552206)(NimStringDesc* cformat, NimStringDesc* llvmformat, trope177009** args, NI argsLen0) {
	trope177009* result;
	result = 0;
	{
		if (!(gcmd_169120 == ((NU8) 5))) goto LA3;
		result = ropef_177107(llvmformat, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		result = ropef_177107(cformat, args, argsLen0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, registermoduletomain_590667)(tsym225846* m) {
	trope177009* init;
	trope177009* datinit;
	TY177515 LOC1;
	TY177515 LOC2;
	init = getinitname_590647(m);
	datinit = getdatinitname_590657(m);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = init;
	appff_552228(&mainmodprocs_549145, ((NimStringDesc*) &TMP4077), ((NimStringDesc*) &TMP4078), LOC1, 1);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = datinit;
	appff_552228(&mainmodprocs_549145, ((NimStringDesc*) &TMP4077), ((NimStringDesc*) &TMP4078), LOC2, 1);
	{
		TY177515 LOC7;
		trope177009* initcall;
		TY177515 LOC8;
		if (!!((((*m).Flags &(1<<((((NU8) 13))&31)))!=0))) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = datinit;
		appff_552228(&maindatinit_549148, ((NimStringDesc*) &TMP4079), ((NimStringDesc*) &TMP4080), LOC7, 1);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = init;
		initcall = ropeff_552206(((NimStringDesc*) &TMP4079), ((NimStringDesc*) &TMP4080), LOC8, 1);
		{
			if (!(((*m).Flags &(1<<((((NU8) 12))&31)))!=0)) goto LA11;
			app_177052(&mainmodinit_549146, initcall);
		}
		goto LA9;
		LA11: ;
		{
			app_177052(&othermodsinit_549147, initcall);
		}
		LA9: ;
	}
	LA5: ;
}

N_NIMCALL(trope177009*, genfilenames_589935)(tcgen549035* m) {
	trope177009* result;
	trope177009* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_552608(m, ((NimStringDesc*) &TMP4093));
	result = NIM_NIL;
	{
		NI i_589971;
		NI HEX3Atmp_589978;
		NI res_589981;
		i_589971 = 0;
		HEX3Atmp_589978 = 0;
		HEX3Atmp_589978 = (fileinfos_195642->Sup.len - 1);
		res_589981 = 0;
		{
			while (1) {
				TY177515 LOC5;
				if (!(res_589981 <= HEX3Atmp_589978)) goto LA4;
				i_589971 = res_589981;
				memset((void*)LOC5, 0, sizeof(LOC5));
				LOC5[0] = makecstring_195659(fileinfos_195642->data[i_589971].Projpath);
				appf_177115(&result, ((NimStringDesc*) &TMP4094), LOC5, 1);
				res_589981 += 1;
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(void, genmainproc_589998)(tcgen549035* m) {
	NimStringDesc* nimmain;
	NimStringDesc* othermain;
	trope177009* initstackbottomcall;
	TY557593 LOC36;
	TY554018 LOC45;
	nimmain = 0;
	othermain = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC12;
		LOC3 = 0;
		LOC3 = (targetos_174589 == ((NU8) 2));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((gglobaloptions_169118 & 1280) == 0));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!((gglobaloptions_169118 &(1<<((((NU8) 10))&31)))!=0)) goto LA9;
			nimmain = copyString(((NimStringDesc*) &TMP4083));
			othermain = copyString(((NimStringDesc*) &TMP4084));
		}
		goto LA7;
		LA9: ;
		{
			nimmain = copyString(((NimStringDesc*) &TMP4085));
			othermain = copyString(((NimStringDesc*) &TMP4086));
		}
		LA7: ;
		LOC12 = 0;
		LOC12 = includestr_127297((&(*m).Headerfiles), ((NimStringDesc*) &TMP4087));
	}
	goto LA1;
	LA5: ;
	{
		if (!((gglobaloptions_169118 &(1<<((((NU8) 8))&31)))!=0)) goto LA14;
		nimmain = copyString(((NimStringDesc*) &TMP4085));
		othermain = copyString(((NimStringDesc*) &TMP4088));
	}
	goto LA1;
	LA14: ;
	{
		if (!(targetos_174589 == ((NU8) 23))) goto LA17;
		nimmain = copyString(((NimStringDesc*) &TMP4089));
		othermain = copyString(((NimStringDesc*) &TMP4090));
	}
	goto LA1;
	LA17: ;
	{
		nimmain = copyString(((NimStringDesc*) &TMP4089));
		othermain = copyString(((NimStringDesc*) &TMP4091));
	}
	LA1: ;
	{
		trope177009* LOC24;
		if (!!((gbreakpoints_573072 == NIM_NIL))) goto LA22;
		LOC24 = 0;
		LOC24 = cgsym_552608(m, ((NimStringDesc*) &TMP4092));
	}
	LA22: ;
	{
		trope177009* LOC29;
		if (!((goptions_169116 &(1<<((((NU8) 17))&31)))!=0)) goto LA27;
		LOC29 = 0;
		LOC29 = genfilenames_589935(m);
		app_177052(&gbreakpoints_573072, LOC29);
	}
	LA27: ;
	{
		if (!(targetos_174589 == ((NU8) 23))) goto LA32;
		initstackbottomcall = torope_177076(((NimStringDesc*) &TMP3811));
	}
	goto LA30;
	LA32: ;
	{
		TY553703 LOC35;
		memset((void*)LOC35, 0, sizeof(LOC35));
		initstackbottomcall = ropecg_552615(m, ((NimStringDesc*) &TMP4095), LOC35, 0);
	}
	LA30: ;
	(*m).Labels += 1;
	memset((void*)LOC36, 0, sizeof(LOC36));
	LOC36[0] = maindatinit_549148;
	LOC36[1] = gbreakpoints_573072;
	LOC36[2] = othermodsinit_549147;
	{
		NIM_BOOL LOC39;
		TY553703 LOC43;
		LOC39 = 0;
		LOC39 = emulatedthreadvars_553624();
		if (!(LOC39)) goto LA40;
		LOC39 = !((targetos_174589 == ((NU8) 23)));
		LA40: ;
		if (!LOC39) goto LA41;
		memset((void*)LOC43, 0, sizeof(LOC43));
		LOC36[3] = ropecg_552615(m, ((NimStringDesc*) &TMP4097), LOC43, 0);
	}
	goto LA37;
	LA41: ;
	{
		LOC36[3] = torope_177076(((NimStringDesc*) &TMP3811));
	}
	LA37: ;
	LOC36[4] = initstackbottomcall;
	appcg_553004(m, &(*m).S[(((NU8) 10))- 0], ((NimStringDesc*) &TMP4096), LOC36, 5);
	memset((void*)LOC45, 0, sizeof(LOC45));
	LOC45[0] = mainmodinit_549146;
	LOC45[1] = initstackbottomcall;
	LOC45[2] = torope_177082(((NI64) ((*m).Labels)));
	appcg_553004(m, &(*m).S[(((NU8) 10))- 0], nimmain, LOC45, 3);
	{
		TY553703 LOC50;
		if (!!(((gglobaloptions_169118 &(1<<((((NU8) 20))&31)))!=0))) goto LA48;
		memset((void*)LOC50, 0, sizeof(LOC50));
		appcg_553004(m, &(*m).S[(((NU8) 10))- 0], othermain, LOC50, 0);
	}
	LA48: ;
}

N_NIMCALL(tnode225816*, myclose_592246)(tpasscontext286005* b, tnode225816* n) {
	tnode225816* result;
	tcgen549035* m;
	result = 0;
	result = n;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (b == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = skipcodegen_286083(n);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	m = ((tcgen549035*) (b));
	{
		if (!!((n == NIM_NIL))) goto LA9;
		(*(*m).Initproc).Options = initprocoptions_591061(m);
		genstmts_561298((*m).Initproc, n);
	}
	LA9: ;
	registermoduletomain_590667((*m).Module);
	{
		tnode225816* disp;
		if (!(((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0)) goto LA13;
		(*m).Objhaskidsvalid = NIM_TRUE;
		disp = generatemethoddispatchers_423508();
		{
			NI i_592310;
			NI HEX3Atmp_592340;
			NI LOC16;
			NI res_592343;
			i_592310 = 0;
			HEX3Atmp_592340 = 0;
			LOC16 = 0;
			LOC16 = sonslen_226249(disp);
			HEX3Atmp_592340 = (NI64)(LOC16 - 1);
			res_592343 = 0;
			{
				while (1) {
					if (!(res_592343 <= HEX3Atmp_592340)) goto LA18;
					i_592310 = res_592343;
					genprocaux_588269(m, (*(*disp).kindU.S6.Sons->data[i_592310]).kindU.S4.Sym);
					res_592343 += 1;
				} LA18: ;
			}
		}
		genmainproc_589998(m);
	}
	LA13: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, finishmodule_591837)(tcgen549035* m) {
	NI i;
	i = 0;
	{
		while (1) {
			tsym225846* prc;
			if (!(i <= ((*m).Forwardedprocs->Sup.len-1))) goto LA2;
			prc = (*m).Forwardedprocs->data[i];
			{
				NimStringDesc* LOC7;
				if (!(((*prc).Flags &(1<<((((NU8) 4))&31)))!=0)) goto LA5;
				LOC7 = 0;
				LOC7 = rawNewString((*(*prc).Name).S->Sup.len + 17);
appendString(LOC7, ((NimStringDesc*) &TMP4141));
appendString(LOC7, (*(*prc).Name).S);
				internalerror_197987((*prc).Info, LOC7);
			}
			LA5: ;
			genprocnoforward_588973(m, prc);
			i += 1;
		} LA2: ;
	}
	gforwardedprocscounter_549172 -= i;
	(*m).Forwardedprocs = (tsymseq225818*) setLengthSeq(&((*m).Forwardedprocs)->Sup, sizeof(tsym225846*), 0);
}

N_NIMCALL(void, geninitcode_590726)(tcgen549035* m) {
	trope177009* initname;
	trope177009* prc;
	TY177515 LOC1;
	trope177009* LOC12;
	trope177009* LOC13;
	trope177009** LOC14;
	trope177009** LOC15;
	trope177009** LOC16;
	trope177009* LOC17;
	trope177009* LOC33;
	trope177009** LOC34;
	trope177009** LOC35;
	trope177009** LOC36;
	trope177009* LOC37;
	trope177009* LOC38;
	trope177009** LOC39;
	trope177009** LOC40;
	trope177009** LOC41;
	trope177009* LOC42;
	trope177009* LOC50;
	TY553703 LOC51;
	TY177515 LOC52;
	TY553703 LOC58;
	initname = getinitname_590647((*m).Module);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = initname;
	prc = ropeff_552206(((NimStringDesc*) &TMP4167), ((NimStringDesc*) &TMP4168), LOC1, 1);
	{
		TY588896 LOC6;
		if (!(0 < (*m).Typenodes)) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = (*m).Typenodesname;
		LOC6[1] = torope_177082(((NI64) ((*m).Typenodes)));
		appcg_553004(m, &(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP4169), LOC6, 2);
	}
	LA4: ;
	{
		TY588896 LOC11;
		if (!(0 < (*m).Nimtypes)) goto LA9;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = (*m).Nimtypesname;
		LOC11[1] = torope_177082(((NI64) ((*m).Nimtypes)));
		appcg_553004(m, &(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP4170), LOC11, 2);
	}
	LA9: ;
	LOC12 = 0;
	LOC12 = initgcframe_560204((*m).Initproc);
	app_177052(&prc, LOC12);
	LOC13 = 0;
	LOC13 = gensectionstart_550126(((NU8) 0));
	app_177052(&prc, LOC13);
	LOC14 = 0;
	LOC14 = s_549183((*m).Preinitproc, ((NU8) 0));
	app_177052(&prc, (*LOC14));
	LOC15 = 0;
	LOC15 = s_549183((*m).Initproc, ((NU8) 0));
	app_177052(&prc, (*LOC15));
	LOC16 = 0;
	LOC16 = s_549183((*m).Postinitproc, ((NU8) 0));
	app_177052(&prc, (*LOC16));
	LOC17 = 0;
	LOC17 = gensectionend_550177(((NU8) 0));
	app_177052(&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;
		{
			trope177009* procname;
			trope177009* LOC28;
			trope177009* LOC29;
			if (!!((*m).Preventstacktrace)) goto LA26;
			procname = cstringlit_560237((*m).Initproc, &prc, (*(*(*m).Module).Name).S);
			LOC28 = 0;
			LOC28 = quotedfilename_198178((*(*m).Module).Info);
			LOC29 = 0;
			LOC29 = initframe_588179((*m).Initproc, procname, LOC28);
			app_177052(&prc, LOC29);
		}
		goto LA24;
		LA26: ;
		{
			TY553703 LOC31;
			trope177009* LOC32;
			memset((void*)LOC31, 0, sizeof(LOC31));
			LOC32 = 0;
			LOC32 = ropef_177107(((NimStringDesc*) &TMP4173), LOC31, 0);
			app_177052(&prc, LOC32);
		}
		LA24: ;
	}
	LA22: ;
	LOC33 = 0;
	LOC33 = gensectionstart_550126(((NU8) 1));
	app_177052(&prc, LOC33);
	LOC34 = 0;
	LOC34 = s_549183((*m).Preinitproc, ((NU8) 1));
	app_177052(&prc, (*LOC34));
	LOC35 = 0;
	LOC35 = s_549183((*m).Initproc, ((NU8) 1));
	app_177052(&prc, (*LOC35));
	LOC36 = 0;
	LOC36 = s_549183((*m).Postinitproc, ((NU8) 1));
	app_177052(&prc, (*LOC36));
	LOC37 = 0;
	LOC37 = gensectionend_550177(((NU8) 1));
	app_177052(&prc, LOC37);
	LOC38 = 0;
	LOC38 = gensectionstart_550126(((NU8) 2));
	app_177052(&prc, LOC38);
	LOC39 = 0;
	LOC39 = s_549183((*m).Preinitproc, ((NU8) 2));
	app_177052(&prc, (*LOC39));
	LOC40 = 0;
	LOC40 = s_549183((*m).Initproc, ((NU8) 2));
	app_177052(&prc, (*LOC40));
	LOC41 = 0;
	LOC41 = s_549183((*m).Postinitproc, ((NU8) 2));
	app_177052(&prc, (*LOC41));
	LOC42 = 0;
	LOC42 = gensectionend_550177(((NU8) 2));
	app_177052(&prc, LOC42);
	{
		NIM_BOOL LOC45;
		trope177009* 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_588200((*m).Initproc);
		app_177052(&prc, LOC49);
	}
	LA47: ;
	LOC50 = 0;
	LOC50 = deinitgcframe_560219((*m).Initproc);
	app_177052(&prc, LOC50);
	memset((void*)LOC51, 0, sizeof(LOC51));
	appf_177115(&prc, ((NimStringDesc*) &TMP4174), LOC51, 0);
	memset((void*)LOC52, 0, sizeof(LOC52));
	LOC52[0] = getdatinitname_590657((*m).Module);
	appff_552228(&prc, ((NimStringDesc*) &TMP4167), ((NimStringDesc*) &TMP4168), LOC52, 1);
	{
		NU8 i_590825;
		NU8 res_590931;
		i_590825 = 0;
		res_590931 = ((NU8) 12);
		{
			while (1) {
				trope177009* LOC56;
				trope177009* LOC57;
				if (!(res_590931 <= ((NU8) 16))) goto LA55;
				i_590825 = res_590931;
				LOC56 = 0;
				LOC56 = gensectionstart_550028(i_590825);
				app_177052(&prc, LOC56);
				app_177052(&prc, (*m).S[(i_590825)- 0]);
				LOC57 = 0;
				LOC57 = gensectionend_550079(i_590825);
				app_177052(&prc, LOC57);
				res_590931 += 1;
			} LA55: ;
		}
	}
	memset((void*)LOC58, 0, sizeof(LOC58));
	appf_177115(&prc, ((NimStringDesc*) &TMP4174), LOC58, 0);
	app_177052(&(*m).S[(((NU8) 11))- 0], prc);
	{
		NIM_CHAR i_590886;
		trope177009* el_590887;
		TY549138 HEX3Atmp_590934;
		NIM_CHAR i_590937;
		i_590886 = 0;
		el_590887 = 0;
		memset((void*)HEX3Atmp_590934, 0, sizeof(HEX3Atmp_590934));
		memcpy((void*)HEX3Atmp_590934, (NIM_CONST void*)(*m).Extensionloaders, sizeof(HEX3Atmp_590934));
		i_590937 = 48;
		{
			if (!((NU8)(((NIM_CHAR) (((NU8)(i_590937))))) <= (NU8)(57))) goto LA62;
			{
				while (1) {
					i_590886 = i_590937;
					el_590887 = HEX3Atmp_590934[(((NU8)(i_590937)))- 48];
					{
						trope177009* ex;
						TY588896 LOC70;
						if (!!((el_590887 == NIM_NIL))) goto LA68;
						memset((void*)LOC70, 0, sizeof(LOC70));
						LOC70[0] = torope_177082(((NI64) ((NI64)(((NI) (((NU8)(i_590886)))) - 48))));
						LOC70[1] = el_590887;
						ex = ropef_177107(((NimStringDesc*) &TMP4175), LOC70, 2);
						app_177052(&(*m).S[(((NU8) 11))- 0], ex);
					}
					LA68: ;
					{
						if (!((NU8)(57) <= (NU8)(((NIM_CHAR) (((NU8)(i_590937))))))) goto LA73;
						goto LA64;
					}
					LA73: ;
					i_590937 += 1;
				}
			} LA64: ;
		}
		LA62: ;
	}
}

N_NIMCALL(void, finishtypedescriptions_556475)(tcgen549035* m) {
	NI i;
	i = 0;
	{
		while (1) {
			trope177009* LOC3;
			if (!(i < (*m).Typestack->Sup.len)) goto LA2;
			LOC3 = 0;
			LOC3 = gettypedesc_556307(m, (*m).Typestack->data[i]);
			i += 1;
		} LA2: ;
	}
}

N_NIMCALL(trope177009*, getcopyright_589893)(NimStringDesc* cfile) {
	trope177009* result;
	result = 0;
	{
		TY177515 LOC5;
		if (!((gglobaloptions_169118 &(1<<((((NU8) 4))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_177076(((NimStringDesc*) &TMP4178));
		result = ropeff_552206(((NimStringDesc*) &TMP4176), ((NimStringDesc*) &TMP4177), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY557593 LOC7;
		NimStringDesc* LOC8;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = torope_177076(((NimStringDesc*) &TMP4178));
		LOC7[1] = torope_177076(os_174069[(targetos_174589)- 1].Field0);
		LOC7[2] = torope_177076(cpu_174480[(targetcpu_174587)- 1].Field0);
		LOC7[3] = torope_177076(cc_202434[(ccompiler_202461)- 1].Field0);
		LOC8 = 0;
		LOC8 = getcompilecfilecmd_203262(cfile, NIM_FALSE);
		LOC7[4] = torope_177076(LOC8);
		result = ropeff_552206(((NimStringDesc*) &TMP4179), ((NimStringDesc*) &TMP4180), LOC7, 5);
	}
	LA1: ;
	return result;
}

static N_INLINE(void, addinttypes_589879)(trope177009** result) {
	TY177515 LOC1;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = torope_177082(((NI64) (cpu_174480[(targetcpu_174587)- 1].Field1)));
	appf_177115(result, ((NimStringDesc*) &TMP4181), LOC1, 1);
}

N_NIMCALL(trope177009*, getfileheader_589924)(NimStringDesc* cfile) {
	trope177009* result;
	result = 0;
	result = getcopyright_589893(cfile);
	addinttypes_589879(&result);
	return result;
}

N_NIMCALL(void, generateheaders_588093)(tcgen549035* m) {
	NimStringDesc* LOC1;
	tstrentry127024* it;
	LOC1 = 0;
	LOC1 = rawNewString(tnl_174613->Sup.len + tnl_174613->Sup.len + 20);
appendString(LOC1, tnl_174613);
appendString(LOC1, ((NimStringDesc*) &TMP4189));
appendString(LOC1, tnl_174613);
	app_177060(&(*m).S[(((NU8) 1))- 0], LOC1);
	it = ((tstrentry127024*) ((*m).Headerfiles.Head));
	{
		while (1) {
			if (!!((it == NIM_NIL))) goto LA3;
			{
				TY177515 LOC8;
				if (!!((((NU8)((*it).Data->data[0])) == ((NU8)(34)) || ((NU8)((*it).Data->data[0])) == ((NU8)(60))))) goto LA6;
				memset((void*)LOC8, 0, sizeof(LOC8));
				LOC8[0] = torope_177076((*it).Data);
				appf_177115(&(*m).S[(((NU8) 1))- 0], ((NimStringDesc*) &TMP4190), LOC8, 1);
			}
			goto LA4;
			LA6: ;
			{
				TY177515 LOC10;
				memset((void*)LOC10, 0, sizeof(LOC10));
				LOC10[0] = torope_177076((*it).Data);
				appf_177115(&(*m).S[(((NU8) 1))- 0], ((NimStringDesc*) &TMP4191), LOC10, 1);
			}
			LA4: ;
			it = ((tstrentry127024*) ((*it).Sup.Next));
		} LA3: ;
	}
}

N_NIMCALL(void, generatethreadlocalstorage_560806)(tcgen549035* m) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		TY177515 LOC13;
		LOC3 = 0;
		LOC3 = !((nimtv_560729 == 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;
		{
			ttype225852* t_560851;
			NI i_560860;
			NI l_560862;
			t_560851 = 0;
			i_560860 = 0;
			l_560862 = nimtvdeps_560751->Sup.len;
			{
				while (1) {
					trope177009* LOC12;
					if (!(i_560860 < l_560862)) goto LA11;
					t_560851 = nimtvdeps_560751->data[i_560860];
					LOC12 = 0;
					LOC12 = gettypedesc_556307(m, t_560851);
					i_560860 += 1;
				} LA11: ;
			}
		}
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = nimtv_560729;
		appf_177115(&(*m).S[(((NU8) 4))- 0], ((NimStringDesc*) &TMP4192), LOC13, 1);
	}
	LA7: ;
}

N_NIMCALL(trope177009*, genmodule_590962)(tcgen549035* m, NimStringDesc* cfile) {
	trope177009* result;
	trope177009* LOC1;
	result = 0;
	result = getfileheader_589924(cfile);
	LOC1 = 0;
	LOC1 = genmergeinfo_550329(m);
	app_177052(&result, LOC1);
	generateheaders_588093(m);
	generatethreadlocalstorage_560806(m);
	{
		NU8 i_591014;
		NU8 res_591022;
		i_591014 = 0;
		res_591022 = ((NU8) 1);
		{
			while (1) {
				trope177009* LOC5;
				trope177009* LOC6;
				if (!(res_591022 <= ((NU8) 10))) goto LA4;
				i_591014 = res_591022;
				LOC5 = 0;
				LOC5 = gensectionstart_550028(i_591014);
				app_177052(&result, LOC5);
				app_177052(&result, (*m).S[(i_591014)- 0]);
				LOC6 = 0;
				LOC6 = gensectionend_550079(i_591014);
				app_177052(&result, LOC6);
				res_591022 += 1;
			} LA4: ;
		}
	}
	app_177052(&result, (*m).S[(((NU8) 11))- 0]);
	return result;
}

N_NIMCALL(void, updatecachedmodule_592221)(tcgen549035* m) {
	NimStringDesc* cfile;
	NimStringDesc* cfilenoext;
	cfile = getcfile_591662(m);
	cfilenoext = noschangeFileExt(cfile, ((NimStringDesc*) &TMP3811));
	{
		NIM_BOOL LOC3;
		trope177009* code;
		LOC3 = 0;
		LOC3 = mergerequired_551137(m);
		if (!(LOC3)) goto LA4;
		LOC3 = !((((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		mergefiles_551303(cfile, m);
		geninitcode_590726(m);
		finishtypedescriptions_556475(m);
		code = genmodule_590962(m, cfile);
		writerope_178423(code, cfile, NIM_FALSE);
		addfiletocompile_202876(cfile);
	}
	LA5: ;
	addfiletolink_202897(cfilenoext);
}

N_NIMCALL(void, generatethreadvarssize_560875)(tcgen549035* m) {
	{
		NimStringDesc* externc;
		TY177515 LOC12;
		if (!!((nimtv_560729 == NIM_NIL))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = !((gcmd_169120 == ((NU8) 2)));
			if (!(LOC7)) goto LA8;
			LOC7 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
			LA8: ;
			if (!LOC7) goto LA9;
			externc = copyString(((NimStringDesc*) &TMP4194));
		}
		goto LA5;
		LA9: ;
		{
			externc = copyString(((NimStringDesc*) &TMP3811));
		}
		LA5: ;
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = torope_177076(externc);
		appf_177115(&(*m).S[(((NU8) 10))- 0], ((NimStringDesc*) &TMP4195), LOC12, 1);
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, shouldrecompile_592042)(trope177009* code, NimStringDesc* cfile) {
	NIM_BOOL result;
	result = 0;
	result = NIM_TRUE;
	{
		NimStringDesc* objfile;
		if (!!(((gglobaloptions_169118 &(1<<((((NU8) 1))&31)))!=0))) goto LA3;
		objfile = toobjfile_202866(cfile);
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = writeropeifnotequal_177094(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_178423(code, cfile, NIM_FALSE);
	}
	LA1: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, writemodule_592067)(tcgen549035* m, NIM_BOOL pending) {
	NimStringDesc* cfile;
	NimStringDesc* cfilenoext;
	cfile = getcfile_591662(m);
	cfilenoext = noschangeFileExt(cfile, ((NimStringDesc*) &TMP3811));
	{
		NIM_BOOL LOC3;
		trope177009* code;
		LOC3 = 0;
		LOC3 = !((*m).Sup.Fromcache);
		if (LOC3) goto LA4;
		LOC3 = ((gglobaloptions_169118 &(1<<((((NU8) 1))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		geninitcode_590726(m);
		finishtypedescriptions_556475(m);
		{
			if (!(((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0)) goto LA9;
			app_177052(&(*m).S[(((NU8) 7))- 0], mainmodprocs_549145);
			generatethreadvarssize_560875(m);
		}
		LA9: ;
		code = genmodule_590962(m, cfile);
		{
			NIM_BOOL LOC13;
			LOC13 = 0;
			LOC13 = shouldrecompile_592042(code, cfile);
			if (!LOC13) goto LA14;
			addfiletocompile_202876(cfile);
		}
		LA14: ;
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC17;
		NIM_BOOL LOC18;
		trope177009* code;
		LOC17 = 0;
		LOC18 = 0;
		LOC18 = pending;
		if (!(LOC18)) goto LA19;
		LOC18 = mergerequired_551137(m);
		LA19: ;
		LOC17 = LOC18;
		if (!(LOC17)) goto LA20;
		LOC17 = !((((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0));
		LA20: ;
		if (!LOC17) goto LA21;
		mergefiles_551303(cfile, m);
		geninitcode_590726(m);
		finishtypedescriptions_556475(m);
		code = genmodule_590962(m, cfile);
		writerope_178423(code, cfile, NIM_FALSE);
		addfiletocompile_202876(cfile);
	}
	goto LA1;
	LA21: ;
	{
		NimStringDesc* LOC24;
		NIM_BOOL LOC25;
		LOC24 = 0;
		LOC24 = toobjfile_202866(cfilenoext);
		LOC25 = 0;
		LOC25 = nosexistsFile(LOC24);
		if (!!(LOC25)) goto LA26;
		addfiletocompile_202876(cfile);
	}
	goto LA1;
	LA26: ;
	LA1: ;
	addfiletolink_202897(cfilenoext);
}

N_NIMCALL(void, writeheader_591583)(tcgen549035* m) {
	trope177009* result;
	trope177009* guard;
	TY177515 LOC1;
	TY117604 LOC2;
	TY177515 LOC3;
	TY553703 LOC13;
	TY177515 LOC14;
	result = getcopyright_589893((*m).Filename);
	memset((void*)LOC1, 0, sizeof(LOC1));
	memset((void*)(&LOC2), 0, sizeof(LOC2));
	nossplitFile((*m).Filename, (&LOC2));
	LOC1[0] = torope_177076(LOC2.Field1);
	guard = ropef_177107(((NimStringDesc*) &TMP4205), LOC1, 1);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = guard;
	appf_177115(&result, ((NimStringDesc*) &TMP4206), LOC3, 1);
	addinttypes_589879(&result);
	generateheaders_588093(m);
	generatethreadlocalstorage_560806(m);
	{
		NU8 i_591610;
		NU8 res_591645;
		i_591610 = 0;
		res_591645 = ((NU8) 1);
		{
			while (1) {
				trope177009* LOC7;
				trope177009* LOC8;
				if (!(res_591645 <= ((NU8) 10))) goto LA6;
				i_591610 = res_591645;
				LOC7 = 0;
				LOC7 = gensectionstart_550028(i_591610);
				app_177052(&result, LOC7);
				app_177052(&result, (*m).S[(i_591610)- 0]);
				LOC8 = 0;
				LOC8 = gensectionend_550079(i_591610);
				app_177052(&result, LOC8);
				res_591645 += 1;
			} LA6: ;
		}
	}
	app_177052(&result, (*m).S[(((NU8) 11))- 0]);
	{
		if (!((gglobaloptions_169118 &(1<<((((NU8) 8))&31)))!=0)) goto LA11;
		app_177060(&result, ((NimStringDesc*) &TMP3455));
	}
	LA11: ;
	memset((void*)LOC13, 0, sizeof(LOC13));
	appf_177115(&result, ((NimStringDesc*) &TMP4207), LOC13, 0);
	memset((void*)LOC14, 0, sizeof(LOC14));
	LOC14[0] = guard;
	appf_177115(&result, ((NimStringDesc*) &TMP4208), LOC14, 1);
	writerope_178423(result, (*m).Filename, NIM_FALSE);
}

N_NIMCALL(void, cgenwritemodules_592360)(void) {
	{
		if (!!((generatedheader_552201 == NIM_NIL))) goto LA3;
		finishmodule_591837(generatedheader_552201);
	}
	LA3: ;
	{
		while (1) {
			if (!(0 < gforwardedprocscounter_549172)) goto LA6;
			{
				tcgen549035* m_592380;
				m_592380 = 0;
				{
					NI i_592404;
					NI HEX3Atmp_592406;
					NI res_592408;
					i_592404 = 0;
					HEX3Atmp_592406 = 0;
					HEX3Atmp_592406 = (gmodules_549171->Sup.len-1);
					res_592408 = 0;
					{
						while (1) {
							if (!(res_592408 <= HEX3Atmp_592406)) goto LA10;
							i_592404 = res_592408;
							{
								if (!!((gmodules_549171->data[i_592404] == NIM_NIL))) goto LA13;
								m_592380 = gmodules_549171->data[i_592404];
								{
									if (!!((*m_592380).Sup.Fromcache)) goto LA17;
									finishmodule_591837(m_592380);
								}
								LA17: ;
							}
							LA13: ;
							res_592408 += 1;
						} LA10: ;
					}
				}
			}
		} LA6: ;
	}
	{
		tcgen549035* m_592381;
		m_592381 = 0;
		{
			NI i_592413;
			NI HEX3Atmp_592415;
			NI res_592417;
			i_592413 = 0;
			HEX3Atmp_592415 = 0;
			HEX3Atmp_592415 = (gmodules_549171->Sup.len-1);
			res_592417 = 0;
			{
				while (1) {
					if (!(res_592417 <= HEX3Atmp_592415)) goto LA22;
					i_592413 = res_592417;
					{
						if (!!((gmodules_549171->data[i_592413] == NIM_NIL))) goto LA25;
						m_592381 = gmodules_549171->data[i_592413];
						{
							if (!(*m_592381).Sup.Fromcache) goto LA29;
							updatecachedmodule_592221(m_592381);
						}
						goto LA27;
						LA29: ;
						{
							writemodule_592067(m_592381, NIM_TRUE);
						}
						LA27: ;
					}
					LA25: ;
					res_592417 += 1;
				} LA22: ;
			}
		}
	}
	writemapping_203898(gmapping_549149);
	{
		if (!!((generatedheader_552201 == NIM_NIL))) goto LA34;
		writeheader_591583(generatedheader_552201);
	}
	LA34: ;
}

N_NIMCALL(void, nullify_591290)(trope177009** arr_591296) {
	{
		NU8 i_591308;
		NU8 res_591312;
		i_591308 = 0;
		res_591312 = ((NU8) 0);
		{
			while (1) {
				if (!(res_591312 <= ((NU8) 17))) goto LA3;
				i_591308 = res_591312;
				unsureAsgnRef((void**) (&arr_591296[(i_591308)- 0]), NIM_NIL);
				res_591312 += 1;
			} LA3: ;
		}
	}
}

N_NIMCALL(void, nullify_591329)(trope177009** arr_591335) {
	{
		NIM_CHAR i_591372;
		NIM_CHAR res_591376;
		i_591372 = 0;
		res_591376 = 48;
		{
			while (1) {
				if (!((NU8)(((NIM_CHAR) (((NU8)(res_591376))))) <= (NU8)(57))) goto LA3;
				i_591372 = res_591376;
				unsureAsgnRef((void**) (&arr_591335[(((NU8)(i_591372)))- 48]), NIM_NIL);
				res_591376 += 1;
			} LA3: ;
		}
	}
}

N_NIMCALL(void, resetmodule_591229)(tcgen549035* m) {
	initlinkedlist_127043((&(*m).Headerfiles));
	initintset_222950((&(*m).Declaredprotos));
	initidtable_226167((&(*m).Forwtypecache));
	asgnRef((void**) (&(*m).Initproc), newproc_549230(NIM_NIL, m));
	(*(*m).Initproc).Options = initprocoptions_591061(m);
	asgnRef((void**) (&(*m).Preinitproc), newpreinitproc_591039(m));
	asgnRef((void**) (&(*m).Postinitproc), newpostinitproc_591050(m));
	initnodetable_226188((&(*m).Datacache));
	if ((*m).Typestack) nimGCunrefNoCycle((*m).Typestack);
	(*m).Typestack = (ttypeseq225848*) newSeqRC1((&NTI225848), 0);
	if ((*m).Forwardedprocs) nimGCunrefNoCycle((*m).Forwardedprocs);
	(*m).Forwardedprocs = (tsymseq225818*) newSeqRC1((&NTI225818), 0);
	asgnRefNoCycle((void**) (&(*m).Typenodesname), gettempname_554244());
	asgnRefNoCycle((void**) (&(*m).Nimtypesname), gettempname_554244());
	(*m).Preventstacktrace = (((*(*m).Module).Flags &(1<<((((NU8) 13))&31)))!=0);
	nullify_591290((*m).S);
	(*m).Usesthreadvars = NIM_FALSE;
	(*m).Typenodes = 0;
	(*m).Nimtypes = 0;
	nullify_591329((*m).Extensionloaders);
	(*m).Sup.Fromcache = NIM_TRUE;
}

N_NIMCALL(void, resetcgenmodules_591397)(void) {
	{
		tcgen549035* m_591399;
		m_591399 = 0;
		{
			NI i_591404;
			NI HEX3Atmp_591406;
			NI res_591408;
			i_591404 = 0;
			HEX3Atmp_591406 = 0;
			HEX3Atmp_591406 = (gmodules_549171->Sup.len-1);
			res_591408 = 0;
			{
				while (1) {
					if (!(res_591408 <= HEX3Atmp_591406)) goto LA4;
					i_591404 = res_591408;
					{
						if (!!((gmodules_549171->data[i_591404] == NIM_NIL))) goto LA7;
						m_591399 = gmodules_549171->data[i_591404];
						resetmodule_591229(m_591399);
					}
					LA7: ;
					res_591408 += 1;
				} LA4: ;
			}
		}
	}
}
NIM_EXTERNC N_NOINLINE(void, HEX00_cgenInit)(void) {
	asgnRefNoCycle((void**) (&indent_553045), torope_177076(((NimStringDesc*) &TMP980)));
	if (nimtvdeps_560751) nimGCunrefNoCycle(nimtvdeps_560751);
	nimtvdeps_560751 = (ttypeseq225848*) newSeqRC1((&NTI225848), 0);
	chckNil((void*)(&nimtvdeclared_560752));
	genericReset((void*)(&nimtvdeclared_560752), (&NTI222056));
	initintset_222950((&nimtvdeclared_560752));
	breakpointid_573071 = 0;
}

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

