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

#include <string.h>
typedef struct tcgen550035 tcgen550035;
typedef struct trope178009 trope178009;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tcell44933 tcell44933;
typedef struct TNimType TNimType;
typedef struct tcellseq44949 tcellseq44949;
typedef struct tgcheap47016 tgcheap47016;
typedef struct tcellset44945 tcellset44945;
typedef struct tpagedesc44941 tpagedesc44941;
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 ttypeseq226848 ttypeseq226848;
typedef struct ttype226852 ttype226852;
typedef struct TNimNode TNimNode;
typedef struct intset223056 intset223056;
typedef struct ttrunk223052 ttrunk223052;
typedef struct ttrunkseq223054 ttrunkseq223054;
typedef struct tpasscontext287005 tpasscontext287005;
typedef struct tsym226846 tsym226846;
typedef struct tidobj201015 tidobj201015;
typedef struct TNimObject TNimObject;
typedef struct tscope226840 tscope226840;
typedef struct TY226947 TY226947;
typedef struct tinstantiation226836 tinstantiation226836;
typedef struct tstrtable226820 tstrtable226820;
typedef struct tsymseq226818 tsymseq226818;
typedef struct tident201021 tident201021;
typedef struct tlineinfo196539 tlineinfo196539;
typedef struct tnode226816 tnode226816;
typedef struct tloc226830 tloc226830;
typedef struct tlib226834 tlib226834;
typedef struct TY550150 TY550150;
typedef struct TY84745 TY84745;
typedef struct tidtable226864 tidtable226864;
typedef struct tidpairseq226862 tidpairseq226862;
typedef struct tidpair226860 tidpair226860;
typedef struct tlinkedlist127028 tlinkedlist127028;
typedef struct tlistentry127022 tlistentry127022;
typedef struct tcproc550031 tcproc550031;
typedef struct tnodetable226876 tnodetable226876;
typedef struct tnodepairseq226874 tnodepairseq226874;
typedef struct tnodepair226872 tnodepair226872;
typedef struct tnodeseq226810 tnodeseq226810;
typedef struct TY196552 TY196552;
typedef struct TY550102 TY550102;
typedef struct tblock550029 tblock550029;
typedef struct tinfocc203016 tinfocc203016;
typedef struct ttraversalclosure559233 ttraversalclosure559233;
typedef struct tbitset284012 tbitset284012;
typedef struct TY119808 TY119808;
typedef struct trodreader277030 trodreader277030;
typedef struct TY196621 TY196621;
typedef struct tfileinfo196537 tfileinfo196537;
typedef struct tinfoos175048 tinfoos175048;
typedef struct tinfocpu175463 tinfocpu175463;
typedef struct tstrentry127024 tstrentry127024;
typedef struct TY117604 TY117604;
typedef struct tbasechunk26438 tbasechunk26438;
typedef struct tfreecell26430 tfreecell26430;
typedef struct TY226936 TY226936;
typedef struct tindex277028 tindex277028;
typedef struct tiitable236274 tiitable236274;
typedef struct tiipairseq236272 tiipairseq236272;
typedef struct tiipair236270 tiipair236270;
typedef struct memfile275208 memfile275208;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tcell44933  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq44949  {
NI Len;
NI Cap;
tcell44933** D;
};
struct  tcellset44945  {
NI Counter;
NI Max;
tpagedesc44941* Head;
tpagedesc44941** 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;
tcellseq44949 Zct;
tcellseq44949 Decstack;
tcellset44945 Cycleroots;
tcellseq44949 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  intset223056  {
NI Counter;
NI Max;
ttrunk223052* Head;
ttrunkseq223054* Data;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tidobj201015  {
  TNimObject Sup;
NI Id;
};
struct  tstrtable226820  {
NI Counter;
tsymseq226818* Data;
};
struct  tlineinfo196539  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  tloc226830  {
NU8 K;
NU8 S;
NU8 Flags;
ttype226852* T;
trope178009* R;
trope178009* Heaproot;
};
struct  tsym226846  {
  tidobj201015 Sup;
NU8 Kind;
union {
struct {ttypeseq226848* Typeinstcache;
tscope226840* Typscope;
} S1;
struct {TY226947* Procinstcache;
tscope226840* Scope;
} S2;
struct {TY226947* Usedgenerics;
tstrtable226820 Tab;
} S3;
struct {tsym226846* Guard;
} S4;
} kindU;
NU16 Magic;
ttype226852* Typ;
tident201021* Name;
tlineinfo196539 Info;
tsym226846* Owner;
NU32 Flags;
tnode226816* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc226830 Loc;
tlib226834* Annex;
tnode226816* Constraint;
};
struct TY84745 {
NimStringDesc* Field0;
NI Field1;
};
struct  tpasscontext287005  {
  TNimObject Sup;
NIM_BOOL Fromcache;
};
typedef trope178009* tcfilesections550019[18];
struct  tidpair226860  {
tidobj201015* Key;
TNimObject* Val;
};
struct  tidtable226864  {
NI Counter;
tidpairseq226862* Data;
};
struct  tlinkedlist127028  {
tlistentry127022* Head;
tlistentry127022* Tail;
NI Counter;
};
struct  tnodepair226872  {
NI H;
tnode226816* Key;
NI Val;
};
struct  tnodetable226876  {
NI Counter;
tnodepairseq226874* Data;
};
typedef trope178009* TY550138[10];
struct  tcgen550035  {
  tpasscontext287005 Sup;
tsym226846* Module;
NimStringDesc* Filename;
tcfilesections550019 S;
NIM_BOOL Preventstacktrace;
NIM_BOOL Usesthreadvars;
NIM_BOOL Framedeclared;
NIM_BOOL Isheaderfile;
NIM_BOOL Includesstringh;
NIM_BOOL Objhaskidsvalid;
NimStringDesc* Cfilename;
tidtable226864 Typecache;
tidtable226864 Forwtypecache;
intset223056 Declaredthings;
intset223056 Declaredprotos;
tlinkedlist127028 Headerfiles;
intset223056 Typeinfomarker;
tcproc550031* Initproc;
tcproc550031* Postinitproc;
tcproc550031* Preinitproc;
ttypeseq226848* Typestack;
tnodetable226876 Datacache;
tsymseq226818* Forwardedprocs;
NI Typenodes;
NI Nimtypes;
trope178009* Typenodesname;
trope178009* Nimtypesname;
NI Labels;
TY550138 Extensionloaders;
trope178009* Injectstmt;
};
typedef trope178009* tcprocsections550023[3];
struct  tblock550029  {
NI Id;
trope178009* Label;
tcprocsections550023 Sections;
NIM_BOOL Isloop;
NI16 Nestedtrystmts;
NI16 Nestedexceptstmts;
NI16 Framelen;
};
struct  tcproc550031  {
tsym226846* Prc;
NIM_BOOL Beforeretneeded;
NIM_BOOL Threadvaraccessed;
tnodeseq226810* Nestedtrystmts;
NI Inexceptblock;
TY196552* Finallysafepoints;
NI Labels;
TY550102* Blocks;
NI Breakidx;
NU32 Options;
NI Maxframelen;
tcgen550035* Module;
NI Withinloop;
NI Gcframeid;
trope178009* Gcframetype;
};
typedef trope178009* TY554703[1];
struct  tident201021  {
  tidobj201015 Sup;
NimStringDesc* S;
tident201021* Next;
NI H;
};
struct  tlistentry127022  {
  TNimObject Sup;
tlistentry127022* Prev;
tlistentry127022* Next;
};
struct  tlib226834  {
  tlistentry127022 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope178009* Name;
tnode226816* Path;
};
typedef trope178009* TY589896[2];
struct  ttype226852  {
  tidobj201015 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq226848* Sons;
tnode226816* N;
tsym226846* Owner;
tsym226846* Sym;
tsym226846* Destructor;
tsym226846* Deepcopy;
NI64 Size;
NI16 Align;
NI16 Locklevel;
tloc226830 Loc;
};
typedef trope178009* TY555018[3];
typedef NimStringDesc* TY556091[14];
struct  tnode226816  {
ttype226852* Typ;
tlineinfo196539 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym226846* Sym;
} S4;
struct {tident201021* Ident;
} S5;
struct {tnodeseq226810* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
typedef trope178009* TY557045[4];
typedef NimStringDesc* TY226020[10];
struct tinfocc203016 {
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 tinfocc203016 TY203435[12];
typedef trope178009* TY178515[1];
struct  ttraversalclosure559233  {
tcproc550031* P;
NimStringDesc* Visitorfrmt;
};
typedef trope178009* TY559098[6];
typedef trope178009* TY558403[7];
typedef trope178009* TY558593[5];
typedef NimStringDesc* TY578903[21];
typedef NimStringDesc* TY577898[4];
typedef NimStringDesc* TY585002[4];
typedef NimStringDesc* TY578050[53];
typedef NimStringDesc* TY577515[10];
typedef NimStringDesc* TY584263[6];
struct  tfileinfo196537  {
NimStringDesc* Fullpath;
NimStringDesc* Projpath;
NimStringDesc* Shortname;
trope178009* Quotedname;
TY196552* Lines;
};
struct tinfoos175048 {
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 tinfoos175048 TY175070[23];
struct tinfocpu175463 {
NimStringDesc* Field0;
NI Field1;
NU8 Field2;
NI Field3;
NI Field4;
};
typedef tinfocpu175463 TY175481[14];
struct  tstrentry127024  {
  tlistentry127022 Sup;
NimStringDesc* Data;
};
struct TY117604 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
struct  trope178009  {
  TNimObject Sup;
trope178009* Left;
trope178009* Right;
NI Length;
NimStringDesc* Data;
};
typedef NI TY26420[16];
struct  tpagedesc44941  {
tpagedesc44941* 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  ttrunk223052  {
ttrunk223052* Next;
NI Key;
TY26420 Bits;
};
struct  tscope226840  {
NI Depthlevel;
tstrtable226820 Symbols;
tnodeseq226810* Usingsyms;
tscope226840* Parent;
};
struct  tinstantiation226836  {
tsym226846* Sym;
ttypeseq226848* Concretetypes;
TY226936* Usedby;
};
struct  tiipair236270  {
NI Key;
NI Val;
};
struct  tiitable236274  {
NI Counter;
tiipairseq236272* Data;
};
struct  tindex277028  {
NI Lastidxkey;
NI Lastidxval;
tiitable236274 Tab;
NimStringDesc* R;
NI Offset;
};
struct  memfile275208  {
void* Mem;
NI Size;
int Handle;
};
struct  trodreader277030  {
  TNimObject Sup;
NI Pos;
NCSTRING S;
NU32 Options;
NU8 Reason;
TY226936* Moddeps;
TY226936* Files;
NI Dataidx;
NI Convertersidx;
NI Initidx;
NI Interfidx;
NI Compilerprocsidx;
NI Methodsidx;
NimStringDesc* Filename;
tindex277028 Index;
tindex277028 Imports;
NI Readerindex;
NI Line;
NI Moduleid;
tidtable226864 Syms;
memfile275208 Memfile;
tsymseq226818* Methods;
NimStringDesc* Origfile;
NIM_BOOL Inviewmode;
};
struct  tfreecell26430  {
tfreecell26430* Next;
NI Zerofield;
};
struct ttypeseq226848 {
  TGenericSeq Sup;
  ttype226852* data[SEQ_DECL_SIZE];
};
struct ttrunkseq223054 {
  TGenericSeq Sup;
  ttrunk223052* data[SEQ_DECL_SIZE];
};
struct TY226947 {
  TGenericSeq Sup;
  tinstantiation226836* data[SEQ_DECL_SIZE];
};
struct tsymseq226818 {
  TGenericSeq Sup;
  tsym226846* data[SEQ_DECL_SIZE];
};
struct TY550150 {
  TGenericSeq Sup;
  tcgen550035* data[SEQ_DECL_SIZE];
};
struct tidpairseq226862 {
  TGenericSeq Sup;
  tidpair226860 data[SEQ_DECL_SIZE];
};
struct tnodepairseq226874 {
  TGenericSeq Sup;
  tnodepair226872 data[SEQ_DECL_SIZE];
};
struct tnodeseq226810 {
  TGenericSeq Sup;
  tnode226816* data[SEQ_DECL_SIZE];
};
struct TY196552 {
  TGenericSeq Sup;
  trope178009* data[SEQ_DECL_SIZE];
};
struct TY550102 {
  TGenericSeq Sup;
  tblock550029 data[SEQ_DECL_SIZE];
};
struct tbitset284012 {
  TGenericSeq Sup;
  NI8 data[SEQ_DECL_SIZE];
};
struct TY119808 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct TY196621 {
  TGenericSeq Sup;
  tfileinfo196537 data[SEQ_DECL_SIZE];
};
struct TY226936 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct tiipairseq236272 {
  TGenericSeq Sup;
  tiipair236270 data[SEQ_DECL_SIZE];
};
N_NIMCALL(trope178009*, torope_178076)(NimStringDesc* s);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tcell44933*, usrtocell_48646)(void* usr);
static N_INLINE(void, rtladdzct_50204)(tcell44933* c);
N_NOINLINE(void, addzct_48617)(tcellseq44949* s, tcell44933* c);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(void, initintset_223950)(intset223056* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_NIMCALL(tcgen550035*, newmodule_592438)(tsym226846* module);
N_NIMCALL(tcgen550035*, getcgenmodule_553291)(tsym226846* s);
N_NIMCALL(void, internalerror_199006)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_199126)(TY84745 x_199130);
N_NIMCALL(tcgen550035*, rawnewmodule_592427)(tsym226846* module);
N_NIMCALL(tcgen550035*, rawnewmodule_592102)(tsym226846* 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_227167)(tidtable226864* x);
N_NIMCALL(tcproc550031*, newproc_550230)(tsym226846* prc, tcgen550035* module);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_51025)(tcell44933* c);
static N_INLINE(NIM_BOOL, canbecycleroot_48667)(tcell44933* c);
static N_INLINE(void, rtladdcycleroot_49429)(tcell44933* c);
N_NOINLINE(void, incl_45671)(tcellset44945* s, tcell44933* cell);
static N_INLINE(void, decref_50604)(tcell44933* c);
N_NIMCALL(NU32, initprocoptions_592061)(tcgen550035* m);
N_NIMCALL(tcproc550031*, newpreinitproc_592039)(tcgen550035* m);
N_NIMCALL(tcproc550031*, newpostinitproc_592050)(tcgen550035* m);
N_NIMCALL(void, initnodetable_227188)(tnodetable226876* x);
N_NIMCALL(trope178009*, gettempname_555242)(void);
N_NIMCALL(trope178009*, ropecg_553615)(tcgen550035* m, NimStringDesc* frmt, trope178009** args, NI argsLen0);
N_NIMCALL(void, app_178060)(trope178009** a, NimStringDesc* b);
N_NIMCALL(void, app_178052)(trope178009** a, trope178009* 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(trope178009*, cgsym_553608)(tcgen550035* m, NimStringDesc* name);
N_NIMCALL(tsym226846*, getcompilerproc_283036)(NimStringDesc* name);
N_NIMCALL(void, genproc_554629)(tcgen550035* m, tsym226846* prc);
N_NIMCALL(NIM_BOOL, isactivated_590444)(tsym226846* prc);
N_NIMCALL(void, fillprocloc_562229)(tsym226846* sym);
N_NIMCALL(void, fillloc_553376)(tloc226830* a, NU8 k, ttype226852* typ, trope178009* r, NU8 s);
N_NIMCALL(ttype226852*, getuniquetype_549401)(ttype226852* key);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(trope178009*, manglename_554667)(tsym226846* s);
N_NIMCALL(trope178009*, ropef_178107)(NimStringDesc* frmt, trope178009** args, NI argsLen0);
N_NIMCALL(void, internalerror_198987)(tlineinfo196539 info, NimStringDesc* errmsg);
N_NIMCALL(NIM_BOOL, iskeyword_554651)(tident201021* w);
N_NIMCALL(trope178009*, newrope_178176)(NimStringDesc* data);
N_NIMCALL(NimStringDesc*, mangle_549763)(NimStringDesc* name);
N_NIMCALL(trope178009*, torope_178082)(NI64 i);
N_NIMCALL(void, addforwardedproc_553251)(tcgen550035* m, tsym226846* prc);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(void, genprocnoforward_589973)(tcgen550035* m, tsym226846* prc);
N_NIMCALL(void, useheader_553469)(tcgen550035* m, tsym226846* sym);
N_NIMCALL(NIM_BOOL, includestr_127297)(tlinkedlist127028* list, NimStringDesc* data);
N_NIMCALL(NimStringDesc*, getstr_233587)(tnode226816* a);
N_NIMCALL(void, genprocprototype_562314)(tcgen550035* m, tsym226846* sym);
N_NIMCALL(tsym226846*, getmodule_236243)(tsym226846* s);
N_NIMCALL(NIM_BOOL, containsorincl_223916)(intset223056* s, NI key);
N_NIMCALL(trope178009*, gettypedesc_557306)(tcgen550035* m, ttype226852* typ);
N_NIMCALL(trope178009*, gettypedescaux_555115)(tcgen550035* m, ttype226852* typ, intset223056* check);
N_NIMCALL(trope178009*, gettypepre_556100)(tcgen550035* m, ttype226852* typ);
N_NIMCALL(trope178009*, getsimpletypedesc_556085)(tcgen550035* m, ttype226852* typ);
N_NIMCALL(trope178009*, typenameorliteral_556038)(ttype226852* t, NimStringDesc* literal);
N_NIMCALL(trope178009*, gettypename_554914)(ttype226852* typ);
N_NIMCALL(trope178009*, con_178024)(trope178009* a, trope178009* b);
N_NIMCALL(trope178009*, typename_554883)(ttype226852* typ);
N_NIMCALL(trope178009*, con_178045)(trope178009** a, NI aLen0);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_80907, TNimType* typ);
N_NIMCALL(NI64, firstord_264004)(ttype226852* t);
N_NIMCALL(NI64, getsize_264199)(ttype226852* typ);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(trope178009*, cachegettype_555234)(tidtable226864 tab, ttype226852* key);
N_NIMCALL(TNimObject*, idtableget_236182)(tidtable226864 t, tidobj201015* key);
N_NIMCALL(NimStringDesc*, typetostring_264031)(ttype226852* typ, NU8 prefer);
static N_INLINE(ttype226852*, lastson_227267)(ttype226852* n);
static N_INLINE(NI, sonslen_227255)(ttype226852* n);
N_NIMCALL(ttype226852*, elemtype_264656)(ttype226852* t);
N_NIMCALL(trope178009*, gettypeforward_556191)(tcgen550035* m, ttype226852* typ);
N_NIMCALL(NIM_BOOL, isimportedtype_556001)(ttype226852* t);
N_NIMCALL(void, appf_178115)(trope178009** c, NimStringDesc* frmt, trope178009** args, NI argsLen0);
N_NIMCALL(NimStringDesc*, getforwardstructformat_556162)(tcgen550035* m);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(trope178009*, structorunion_556142)(ttype226852* t);
N_NIMCALL(void, idtableput_236196)(tidtable226864* t, tidobj201015* key, TNimObject* val);
N_NIMCALL(trope178009*, con_178031)(trope178009* a, NimStringDesc* b);
N_NIMCALL(void, pushtype_556915)(tcgen550035* m, ttype226852* typ);
N_NIMCALL(void, genprocparams_555626)(tcgen550035* m, ttype226852* t, trope178009** rettype, trope178009** params, intset223056* check, NIM_BOOL declareenvironment);
N_NIMCALL(NIM_BOOL, isinvalidreturntype_555174)(ttype226852* rettype);
N_NIMCALL(NU8, maptype_555054)(ttype226852* typ);
N_NIMCALL(NU8, mapsettype_555047)(ttype226852* typ);
N_NIMCALL(ttype226852*, skiptypes_231245)(ttype226852* t, NU64 kinds);
N_NIMCALL(NIM_BOOL, needscomplexassignment_555121)(ttype226852* typ);
N_NIMCALL(NIM_BOOL, containsgarbagecollectedref_264163)(ttype226852* typ);
static N_INLINE(NIM_BOOL, isobjlackingtypefield_555128)(ttype226852* typ);
N_NIMCALL(NIM_BOOL, ispureobject_264205)(ttype226852* typ);
static N_INLINE(NI, sonslen_227249)(tnode226816* n);
static N_INLINE(NIM_BOOL, iscompiletimeonly_274466)(ttype226852* t);
N_NIMCALL(NU8, paramstorageloc_555604)(tsym226846* param);
N_NIMCALL(trope178009*, getparamtypedesc_555527)(tcgen550035* m, ttype226852* t, intset223056* check);
N_NIMCALL(NIM_BOOL, ccgintroducedptr_555262)(tsym226846* s);
N_NIMCALL(void, appff_553228)(trope178009** dest, NimStringDesc* cformat, NimStringDesc* llvmformat, trope178009** args, NI argsLen0);
N_NIMCALL(NU8, mapreturntype_555099)(ttype226852* typ);
N_NIMCALL(trope178009*, con_178038)(NimStringDesc* a, trope178009* b);
N_NIMCALL(void, appcg_554004)(tcgen550035* m, trope178009** c, NimStringDesc* frmt, trope178009** args, NI argsLen0);
N_NIMCALL(NI64, lengthord_264016)(ttype226852* t);
N_NIMCALL(trope178009*, getrecorddesc_556667)(tcgen550035* m, ttype226852* typ, trope178009* name, intset223056* check);
N_NIMCALL(trope178009*, getrecordfields_556657)(tcgen550035* m, ttype226852* typ, intset223056* check);
N_NIMCALL(trope178009*, genrecordfieldsaux_556325)(tcgen550035* m, tnode226816* n, trope178009* accessexpr, ttype226852* rectype, intset223056* check);
static N_INLINE(tnode226816*, lastson_227261)(tnode226816* n);
N_NIMCALL(trope178009*, manglerecfieldname_556246)(tsym226846* field, ttype226852* rectype);
N_NIMCALL(NimStringDesc*, manglefield_554644)(NimStringDesc* name);
N_NIMCALL(NIM_CHAR, nsuToUpperChar)(NIM_CHAR c);
N_NIMCALL(trope178009*, gettupledesc_556845)(tcgen550035* m, ttype226852* typ, trope178009* name, intset223056* check);
N_NIMCALL(void, excl_223884)(intset223056* s, NI key);
N_NIMCALL(trope178009*, mangledynlibproc_561938)(tsym226846* sym);
N_NIMCALL(trope178009*, genprocheader_557516)(tcgen550035* m, tsym226846* prc);
N_NIMCALL(void, genclinedir_554424)(trope178009** r, tlineinfo196539 info);
N_NIMCALL(void, genclinedir_554252)(trope178009** r, NimStringDesc* filename, NI line);
N_NIMCALL(NimStringDesc*, makesinglelinecstring_549737)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, tofullpath_198037)(NI32 fileidx);
N_NIMCALL(NI, safelinenm_554241)(tlineinfo196539 info);
static N_INLINE(NI, tolinenumber_198073)(tlineinfo196539 info);
static N_INLINE(NIM_BOOL, crossescppboundary_589817)(tcgen550035* m, tsym226846* sym);
N_NIMCALL(void, genprocaux_589269)(tcgen550035* m, tsym226846* prc);
static N_INLINE(NI, len_227364)(tnode226816* n);
N_NIMCALL(void, assignlocalvar_561577)(tcproc550031* p, tsym226846* s);
N_NIMCALL(void, line_554100)(tcproc550031* p, NU8 s, trope178009* r);
static N_INLINE(trope178009**, s_550183)(tcproc550031* p, NU8 s);
N_NIMCALL(trope178009*, indentline_554049)(tcproc550031* p, trope178009* r);
N_NIMCALL(void, prepend_178068)(trope178009** a, trope178009* b);
N_NIMCALL(void, localdebuginfo_561469)(tcproc550031* p, tsym226846* s);
N_NIMCALL(void, linef_554122)(tcproc550031* p, NU8 s, NimStringDesc* frmt, trope178009** args, NI argsLen0);
N_NIMCALL(trope178009*, makecstring_196659)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(trope178009*, gentypeinfo_557602)(tcgen550035* m, ttype226852* t_557605);
N_NIMCALL(tcgen550035*, bmod_550220)(tsym226846* module);
N_NIMCALL(void, gentypeinfoauxbase_557801)(tcgen550035* m, ttype226852* typ, trope178009* name, trope178009* base);
N_NIMCALL(NIM_BOOL, canformacycle_264175)(ttype226852* typ);
N_NIMCALL(void, gentupleinfo_558715)(tcgen550035* m, ttype226852* typ, trope178009* name);
N_NIMCALL(trope178009*, getnimnode_557606)(tcgen550035* m);
N_NIMCALL(ttype226852*, fakeclosuretype_559218)(tsym226846* owner);
N_NIMCALL(ttype226852*, newtype_227083)(NU8 kind, tsym226846* owner);
N_NIMCALL(void, rawaddson_231562)(ttype226852* father, ttype226852* son);
N_NIMCALL(void, gentypeinfoaux_557859)(tcgen550035* m, ttype226852* typ, trope178009* name);
N_NIMCALL(trope178009*, gentraverseproc_560044)(tcgen550035* m, ttype226852* typ, NU8 reason);
N_NIMCALL(trope178009*, getglobaltempname_555252)(void);
static N_INLINE(NI, backendid_225425)(void);
N_NIMCALL(void, gentraverseprocseq_559879)(ttraversalclosure559233* c, trope178009* accessor, ttype226852* typ);
N_NIMCALL(void, gettemp_559246)(tcproc550031* p, ttype226852* t, tloc226830* result, NIM_BOOL needsinit);
N_NIMCALL(void, linefmt_554148)(tcproc550031* p, NU8 s, NimStringDesc* frmt, trope178009** args, NI argsLen0);
N_NIMCALL(void, constructloc_560924)(tcproc550031* p, tloc226830 loc, NIM_BOOL istemp);
static N_INLINE(NIM_BOOL, iscomplexvaluetype_560828)(ttype226852* t);
N_NIMCALL(trope178009*, rdloc_560637)(tloc226830 a);
N_NIMCALL(void, usestringh_553459)(tcgen550035* m);
N_NIMCALL(trope178009*, addrloc_560664)(tloc226830 a);
N_NIMCALL(void, genobjectinit_560721)(tcproc550031* p, NU8 section, ttype226852* t, tloc226830 a, NIM_BOOL takeaddr);
N_NIMCALL(NU8, analyseobjectwithtypefield_264225)(ttype226852* t);
N_NIMCALL(ttype226852*, getsystype_283030)(NU8 kind);
N_NIMCALL(void, gentraverseproc_559236)(ttraversalclosure559233* c, trope178009* accessor, ttype226852* typ_559241);
static N_INLINE(trope178009*, parentobj_559700)(trope178009* accessor, tcgen550035* m);
N_NIMCALL(void, gentraverseproc_559253)(ttraversalclosure559233* c, trope178009* accessor, tnode226816* n);
N_NIMCALL(void, gencaserange_559242)(tcproc550031* p, tnode226816* branch);
static N_INLINE(tnode226816*, HEX5BHEX5D_227698)(tnode226816* n, NI i);
N_NIMCALL(trope178009*, genliteral_562345)(tcproc550031* p, tnode226816* n);
N_NIMCALL(trope178009*, genliteral_575007)(tcproc550031* p, tnode226816* n, ttype226852* ty);
N_NIMCALL(trope178009*, intliteral_562339)(NI64 i);
N_NIMCALL(trope178009*, int32literal_574942)(NI i);
N_NIMCALL(trope178009*, int64literal_574879)(NI64 i);
N_NIMCALL(trope178009*, uint64literal_574900)(NU64 i);
N_NIMCALL(NimStringDesc*, HEX24_6201)(NU64 x);
N_NIMCALL(NI, nodetabletestorset_289121)(tnodetable226876* t, tnode226816* key, NI val);
N_NIMCALL(trope178009*, getstrlit_574994)(tcgen550035* m, NimStringDesc* s);
N_NIMCALL(NimStringDesc*, tostrmaxprecision_235024)(NF f);
N_NIMCALL(tnode226816*, copynode_227323)(tnode226816* src);
N_NIMCALL(void, linecg_554135)(tcproc550031* p, NU8 s, NimStringDesc* frmt, trope178009** args, NI argsLen0);
N_NIMCALL(void, genarrayinfo_559210)(tcgen550035* m, ttype226852* typ, trope178009* name);
N_NIMCALL(void, gensetinfo_559132)(tcgen550035* m, ttype226852* typ, trope178009* name);
N_NIMCALL(void, genenuminfo_558787)(tcgen550035* m, ttype226852* typ, trope178009* name);
N_NIMCALL(void, genobjectinfo_558651)(tcgen550035* m, ttype226852* typ, trope178009* name);
N_NIMCALL(void, genobjectfields_557956)(tcgen550035* m, ttype226852* typ, tnode226816* n, trope178009* expr);
N_NIMCALL(trope178009*, discriminatortablename_557887)(tcgen550035* m, ttype226852* objtype_557890, tsym226846* d);
N_NIMCALL(tsym226846*, lookupinrecord_236236)(tnode226816* n, tident201021* field);
N_NIMCALL(NI64, getordvalue_264187)(tnode226816* n);
N_NIMCALL(void, gendeepcopyproc_560484)(tcgen550035* m, tsym226846* s, trope178009* result);
N_NIMCALL(void, initlocalvar_560943)(tcproc550031* p, tsym226846* v, NIM_BOOL immediateasgn);
N_NIMCALL(void, fillresult_555488)(tsym226846* param);
N_NIMCALL(void, assignparam_562159)(tcproc550031* p, tsym226846* s);
N_NIMCALL(void, allocparam_561344)(tcproc550031* p, tsym226846* s);
N_NIMCALL(void, closuresetup_589217)(tcproc550031* p, tsym226846* prc);
N_NIMCALL(void, genstmts_562298)(tcproc550031* p, tnode226816* t);
N_NIMCALL(void, expr_562305)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(tnode226816*, getbody_280270)(tsym226846* s);
N_NIMCALL(void, putlocintodest_562321)(tcproc550031* p, tloc226830* d, tloc226830 s);
N_NIMCALL(void, genassignment_562330)(tcproc550031* p, tloc226830 dest, tloc226830 src, NU8 flags);
N_NIMCALL(void, genrefassign_560819)(tcproc550031* p, tloc226830 dest, tloc226830 src, NU8 flags);
static N_INLINE(NIM_BOOL, usesnativegc_170179)(void);
N_NIMCALL(void, keepalive_561007)(tcproc550031* p, tloc226830 tokeepalive);
N_NIMCALL(void, optasgnloc_575760)(tloc226830 a, ttype226852* t, trope178009* field, tloc226830* Result);
N_NIMCALL(NI, len_231005)(ttype226852* n);
N_NIMCALL(void, genoptasgntuple_575773)(tcproc550031* p, tloc226830 dest, tloc226830 src, NU8 flags);
N_NIMCALL(void, gengenericasgn_576007)(tcproc550031* p, tloc226830 dest, tloc226830 src, NU8 flags);
N_NIMCALL(NI, asgncomplexity_575701)(tnode226816* n);
N_NIMCALL(void, genoptasgnobject_575884)(tcproc550031* p, tloc226830 dest, tloc226830 src, NU8 flags, tnode226816* t);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(void, genvarprototype_562284)(tcgen550035* m, tsym226846* sym);
N_NIMCALL(void, genvarprototypeaux_567482)(tcgen550035* m, tsym226846* sym);
N_NIMCALL(void, declarethreadvar_561753)(tcgen550035* m, tsym226846* s, NIM_BOOL isextern);
static N_INLINE(NIM_BOOL, emulatedthreadvars_554624)(void);
N_NIMCALL(NIM_BOOL, issimpleconst_553416)(ttype226852* typ);
N_NIMCALL(void, putintodest_576476)(tcproc550031* p, tloc226830* d, ttype226852* t, trope178009* r);
N_NIMCALL(void, initloc_553361)(tloc226830* result, NU8 k, ttype226852* typ, NU8 s);
N_NIMCALL(void, gencomplexconst_586731)(tcproc550031* p, tsym226846* sym, tloc226830* d);
N_NIMCALL(void, requestconstimpl_562291)(tcproc550031* p, tsym226846* sym);
N_NIMCALL(tcgen550035*, findpendingmodule_553313)(tcgen550035* m, tsym226846* s);
N_NIMCALL(trope178009*, genconstexpr_585775)(tcproc550031* p, tnode226816* n);
N_NIMCALL(void, tobitset_285004)(tnode226816* s, tbitset284012** b);
N_NIMCALL(trope178009*, genrawsetdata_575444)(tbitset284012* cs, NI size);
N_NIMCALL(NimStringDesc*, nsuToHex)(NI64 x, NI len);
N_NIMCALL(NI64, bitsettoword_575296)(tbitset284012* s, NI size);
N_NIMCALL(trope178009*, genconstseq_588122)(tcproc550031* p, tnode226816* n, ttype226852* t);
N_NIMCALL(void, appcg_554018)(tcgen550035* m, NU8 s, NimStringDesc* frmt, trope178009** args, NI argsLen0);
N_NIMCALL(trope178009*, genconstsimplelist_588042)(tcproc550031* p, tnode226816* n);
N_NIMCALL(trope178009*, gennamedconstexpr_588011)(tcproc550031* p, tnode226816* n);
N_NIMCALL(void, initlocexpr_562352)(tcproc550031* p, tnode226816* e, tloc226830* result);
N_NIMCALL(void, accessthreadlocalvar_554617)(tcproc550031* p, tsym226846* s);
static N_INLINE(trope178009**, procsec_550207)(tcproc550031* p, NU8 s);
static N_INLINE(NIM_BOOL, isemptytype_233990)(ttype226852* t);
N_NIMCALL(void, putdataintodest_576438)(tcproc550031* p, tloc226830* d, ttype226852* t, trope178009* r);
N_NIMCALL(void, genlinedir_554435)(tcproc550031* p, tnode226816* t);
N_NIMCALL(trope178009*, sourceline_197277)(tlineinfo196539 i);
N_NIMCALL(NimStringDesc*, tofilename_198025)(NI32 fileidx);
N_NIMCALL(trope178009*, quotedfilename_199178)(tlineinfo196539 i);
N_NIMCALL(void, genmagicexpr_585474)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 op);
N_NIMCALL(void, genandor_580938)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 m);
N_NIMCALL(trope178009*, getlabel_562248)(tcproc550031* p);
N_NIMCALL(void, fixlabel_562270)(tcproc550031* p, trope178009* labl);
N_NIMCALL(void, unaryarith_578895)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 op);
N_NIMCALL(void, unaryarithoverflow_577890)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 m);
N_NIMCALL(void, binaryfloatarith_584957)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 m);
N_NIMCALL(void, binaryarith_578042)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 op);
N_NIMCALL(void, geneqproc_578444)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, binaryarithoverflow_577502)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 m);
N_NIMCALL(NI64, lastord_264010)(ttype226852* t);
N_NIMCALL(void, genrepr_582781)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(trope178009*, lenfield_562364)(tcproc550031* p);
N_NIMCALL(void, gcusage_581100)(tnode226816* n);
N_NIMCALL(void, message_198976)(tlineinfo196539 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, rendertree_251058)(tnode226816* n, NU8 renderflags);
N_NIMCALL(void, gengettypeinfo_582893)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, genswap_583287)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, unaryexpr_577440)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt);
N_NIMCALL(void, binaryexpr_576668)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt);
N_NIMCALL(void, binarystmt_576514)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt);
N_NIMCALL(void, genstrconcat_581115)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, genstrappend_581309)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, genseqelemappend_581589)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, genstrequals_584804)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, genisnil_578853)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, gendollar_582917)(tcproc550031* p, tnode226816* n, tloc226830* d, NimStringDesc* frmt);
N_NIMCALL(void, genof_582744)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(void, genof_582604)(tcproc550031* p, tnode226816* x, ttype226852* typ, tloc226830* d);
N_NIMCALL(void, globalerror_198934)(tlineinfo196539 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(trope178009*, genofhelper_582450)(tcproc550031* p, ttype226852* dest, trope178009* a);
N_NIMCALL(void, gennew_581777)(tcproc550031* p, tnode226816* e);
N_NIMCALL(void, rawgennew_581723)(tcproc550031* p, tloc226830 a, trope178009* sizeexpr_581727);
N_NIMCALL(void, gennewfinalize_582374)(tcproc550031* p, tnode226816* e);
N_NIMCALL(void, gennewseq_581855)(tcproc550031* p, tnode226816* e);
N_NIMCALL(void, gennewseqaux_581818)(tcproc550031* p, tloc226830 dest, trope178009* length);
N_NIMCALL(void, gensomecast_584391)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(trope178009*, getclosuretype_557321)(tcgen550035* m, ttype226852* t, NU8 kind);
N_NIMCALL(trope178009*, rdcharloc_560698)(tloc226830 a);
N_NIMCALL(void, genord_584382)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, unaryexprchar_577471)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt);
N_NIMCALL(void, genarraylen_582958)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 op);
N_NIMCALL(void, unarystmt_576571)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt);
N_NIMCALL(void, gensetlengthstr_583278)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, gensetlengthseq_583074)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, gensetop_584255)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 op);
N_NIMCALL(void, binarystmtinexcl_583492)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt);
N_NIMCALL(trope178009*, rdsetelemloc_583353)(tloc226830 a, ttype226852* settype);
N_NIMCALL(void, binaryexprchar_577040)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt);
N_NIMCALL(void, geninop_583640)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(NIM_BOOL, fewcmps_583408)(tnode226816* s);
N_NIMCALL(void, geninexpraux_579618)(tcproc550031* p, tnode226816* e, tloc226830* a, tloc226830* b, tloc226830* d);
N_NIMCALL(void, binaryexprin_583451)(tcproc550031* p, tnode226816* e, tloc226830* a, tloc226830* b, tloc226830* d, NimStringDesc* frmt);
N_NIMCALL(NimStringDesc*, ropetostr_178101)(trope178009* p);
N_NIMCALL(void, gencall_566235)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, genclosurecall_563683)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* d);
N_NIMCALL(trope178009*, genarg_563069)(tcproc550031* p, tnode226816* n_563072, tsym226846* param);
static N_INLINE(trope178009*, genargstringtocstring_563040)(tcproc550031* p, tnode226816* n);
N_NIMCALL(trope178009*, openarrayloc_562955)(tcproc550031* p, tnode226816* n);
N_NIMCALL(tnode226816*, skipconv_274732)(tnode226816* n);
N_NIMCALL(NU16, getmagic_262845)(tnode226816* op);
N_NIMCALL(trope178009*, genargnoparam_563129)(tcproc550031* p, tnode226816* n);
N_NIMCALL(trope178009*, getrawproctype_563690)(tcproc550031* p, ttype226852* t);
N_NIMCALL(NIM_BOOL, leftappearsonrightside_562396)(tnode226816* le, tnode226816* ri);
N_NIMCALL(NU8, ispartof_479430)(tnode226816* a, tnode226816* b);
static N_INLINE(NIM_BOOL, hasnoinit_562468)(tnode226816* call);
N_NIMCALL(void, resetloc_560870)(tcproc550031* p, tloc226830* loc);
N_NIMCALL(trope178009*, addcomma_563695)(trope178009* r);
N_NIMCALL(void, geninfixcall_564441)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* d);
N_NIMCALL(void, fixupcall_562539)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* d, trope178009* callee, trope178009* params);
N_NIMCALL(void, gennamedparamcall_565281)(tcproc550031* p, tnode226816* ri, tloc226830* d);
N_NIMCALL(void, genprefixcall_563149)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* d);
static N_INLINE(void, poststmtactions_554608)(tcproc550031* p);
N_NIMCALL(void, genreset_581695)(tcproc550031* p, tnode226816* n);
N_NIMCALL(void, genecho_581011)(tcproc550031* p, tnode226816* n);
N_NIMCALL(NimStringDesc*, nsuRepeatStr)(NI count, NimStringDesc* s);
N_NIMCALL(void, genarrtoseq_582230)(tcproc550031* p, tnode226816* t, tloc226830* d);
N_NIMCALL(void, genseqconstr_582162)(tcproc550031* p, tnode226816* t, tloc226830* d);
N_NIMCALL(void, localerror_198955)(tlineinfo196539 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(tnode226816*, wrapprocforspawn_427897)(tsym226846* owner, tnode226816* spawnexpr, ttype226852* rettype, tnode226816* barrier, tnode226816* dest);
N_NIMCALL(tnode226816*, liftparallel_486972)(tsym226846* owner, tnode226816* n);
N_NIMCALL(void, gendeepcopy_576337)(tcproc550031* p, tloc226830 dest, tloc226830 src);
N_NIMCALL(NIM_BOOL, isdeepconstexpr_262958)(tnode226816* n);
N_NIMCALL(trope178009*, gensetnode_575497)(tcproc550031* p, tnode226816* n);
N_NIMCALL(void, gensetconstr_585832)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, exprcomplexconst_587230)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(void, genarrayconstr_586663)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(NIM_BOOL, handleconstexpr_585779)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(void, gentupleconstr_586145)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(void, genobjconstr_581896)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, genfieldcheck_579626)(tcproc550031* p, tnode226816* e, trope178009* obj, tsym226846* field);
N_NIMCALL(tnode226816*, newstrnode_227118)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(void, gencast_584476)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, genconv_584707)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(NIM_BOOL, comparetypes_271571)(ttype226852* x, ttype226852* y, NU8 cmp, NU8 flags);
N_NIMCALL(void, genaddr_579115)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, genbracketexpr_580781)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(void, genarrayelem_580509)(tcproc550031* p, tnode226816* x, tnode226816* y, tloc226830* d);
N_NIMCALL(NIM_BOOL, isconstexpr_262921)(tnode226816* n);
N_NIMCALL(void, genopenarrayelem_580643)(tcproc550031* p, tnode226816* x, tnode226816* y, tloc226830* d);
N_NIMCALL(void, genseqelem_580689)(tcproc550031* p, tnode226816* x, tnode226816* y, tloc226830* d);
N_NIMCALL(void, gencstringelem_580613)(tcproc550031* p, tnode226816* x, tnode226816* y, tloc226830* d);
N_NIMCALL(void, gentupleelem_579322)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, genderef_566881)(tcproc550031* p, tnode226816* e, tloc226830* d, NIM_BOOL enforcederef);
N_NIMCALL(void, genrecordfield_579442)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(ttype226852*, genrecordfieldaux_579231)(tcproc550031* p, tnode226816* e, tloc226830* d, tloc226830* a);
N_NIMCALL(void, gencheckedrecordfield_580280)(tcproc550031* p, tnode226816* e, tloc226830* d);
N_NIMCALL(void, genblock_569796)(tcproc550031* p, tnode226816* t, tloc226830* d);
N_NIMCALL(NI, startblock_566985)(tcproc550031* p, NimStringDesc* start, trope178009** args, NI argsLen0);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, endblock_567106)(tcproc550031* p);
N_NIMCALL(void, endblock_567069)(tcproc550031* p, trope178009* blockend);
N_NIMCALL(trope178009*, blockbody_567053)(tblock550029* b);
N_NIMCALL(void, genstmtlistexpr_586804)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(void, genif_568223)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(void, lineff_554218)(tcproc550031* p, NU8 s, NimStringDesc* cformat, NimStringDesc* llvmformat, trope178009** args, NI argsLen0);
N_NIMCALL(void, downconv_587061)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(NI, inheritancediff_271588)(ttype226852* a, ttype226852* b);
N_NIMCALL(void, upconv_586871)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(void, genrangechck_584573)(tcproc550031* p, tnode226816* n, tloc226830* d, NimStringDesc* magic);
N_NIMCALL(NIM_BOOL, levalue_236487)(tnode226816* a, tnode226816* b);
N_NIMCALL(void, convstrtocstr_584744)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(void, convcstrtostr_584774)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(void, genclosure_586501)(tcproc550031* p, tnode226816* n, tloc226830* d);
static N_INLINE(NIM_BOOL, isconstclosure_586420)(tnode226816* n);
static N_INLINE(NIM_BOOL, isroutine_233780)(tsym226846* s);
N_NIMCALL(void, genwhilestmt_569503)(tcproc550031* p, tnode226816* t);
static N_INLINE(trope178009*, assignlabel_567045)(tblock550029* b);
N_NIMCALL(NIM_BOOL, stmtscontainpragma_549128)(tnode226816* n, NU8 w);
N_NIMCALL(void, gencomputedgoto_569038)(tcproc550031* p, tnode226816* n);
N_NIMCALL(void, localerror_198966)(tlineinfo196539 info, NimStringDesc* arg);
N_NIMCALL(void, genvarstmt_567830)(tcproc550031* p, tnode226816* n);
N_NIMCALL(void, gensinglevar_567486)(tcproc550031* p, tnode226816* a);
N_NIMCALL(void, assignglobalvar_561944)(tcproc550031* p, tsym226846* s);
N_NIMCALL(void, varindynamiclib_561931)(tcgen550035* m, tsym226846* sym);
N_NIMCALL(void, loaddynamiclib_588310)(tcgen550035* m, tlib226834* lib);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, libcandidates_171409)(NimStringDesc* s, TY119808** dest);
N_NIMCALL(void, msgwriteln_198236)(NimStringDesc* s);
N_NIMCALL(trope178009*, cstringlit_561296)(tcgen550035* m, trope178009** r, NimStringDesc* s);
N_NIMCALL(trope178009*, makellvmstring_549816)(NimStringDesc* s);
N_NIMCALL(trope178009*, cstringlit_561237)(tcproc550031* p, trope178009** r, NimStringDesc* s);
N_NIMCALL(void, registergcroot_566607)(tcproc550031* p, tsym226846* v);
N_NIMCALL(trope178009*, gentraverseprocforglobal_560442)(tcgen550035* m, tsym226846* s);
static N_INLINE(NIM_BOOL, isassignedimmediately_566633)(tnode226816* n);
static N_INLINE(void, loadinto_566888)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* a);
N_NIMCALL(void, genasgncall_566404)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* d);
N_NIMCALL(void, genclosurevar_567753)(tcproc550031* p, tnode226816* a);
N_NIMCALL(void, genvartuple_566649)(tcproc550031* p, tnode226816* n);
N_NIMCALL(tnode226816*, lowertupleunpacking_425184)(tnode226816* n, tsym226846* owner);
N_NIMCALL(void, genconststmt_567925)(tcproc550031* p, tnode226816* t);
N_NIMCALL(NIM_BOOL, containscompiletimeonly_274490)(ttype226852* t);
static N_INLINE(NIM_BOOL, emitlazily_553325)(tsym226846* s);
N_NIMCALL(void, gencase_572418)(tcproc550031* p, tnode226816* t, tloc226830* d);
N_NIMCALL(void, genstringcase_571654)(tcproc550031* p, tnode226816* t, tloc226830* d);
N_NIMCALL(NI, nextpoweroftwo_147528)(NI x);
N_NIMCALL(void, gencasestringbranch_571258)(tcproc550031* p, tnode226816* b, tloc226830 e, trope178009* labl, trope178009** branches, NI branchesLen0);
N_NIMCALL(NI64, hashstring_549156)(NimStringDesc* s);
N_NIMCALL(trope178009*, gencasesecondpass_570974)(tcproc550031* p, tnode226816* t, tloc226830* d, NI labid, NI until);
N_NIMCALL(void, exprblock_567174)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(void, gencasegeneric_571229)(tcproc550031* p, tnode226816* t, tloc226830* d, NimStringDesc* rangeformat, NimStringDesc* eqformat);
N_NIMCALL(trope178009*, genifforcaseuntil_571114)(tcproc550031* p, tnode226816* t, tloc226830* d, NimStringDesc* rangeformat, NimStringDesc* eqformat, NI until, tloc226830 a);
N_NIMCALL(void, gencasegenericbranch_570826)(tcproc550031* p, tnode226816* b, tloc226830 e, NimStringDesc* rangeformat, NimStringDesc* eqformat, trope178009* labl);
N_NIMCALL(void, genordinalcase_572277)(tcproc550031* p, tnode226816* n, tloc226830* d);
N_NIMCALL(NI, ifswitchsplitpoint_572089)(tcproc550031* p, tnode226816* n);
N_NIMCALL(NIM_BOOL, branchhastoobigrange_571946)(tnode226816* b);
N_NIMCALL(void, genreturnstmt_568948)(tcproc550031* p, tnode226816* t);
N_NIMCALL(void, blockleaveactions_568662)(tcproc550031* p, NI howmanytrys, NI howmanyexcepts);
static N_INLINE(tnode226816*, pop_568744)(tnodeseq226810** s_568752);
N_NIMCALL(void, genbreakstmt_570347)(tcproc550031* p, tnode226816* t);
N_NIMCALL(void, genasgn_574740)(tcproc550031* p, tnode226816* e, NIM_BOOL fastasgn);
N_NIMCALL(NIM_BOOL, fielddiscriminantcheckneeded_574403)(tcproc550031* p, tnode226816* asgn);
N_NIMCALL(void, asgnfielddiscriminant_574614)(tcproc550031* p, tnode226816* e);
N_NIMCALL(void, gendiscriminantcheck_574555)(tcproc550031* p, tloc226830 a, tloc226830 tmp, ttype226852* objtype, tsym226846* field);
N_NIMCALL(trope178009*, discriminatortabledecl_557942)(tcgen550035* m, ttype226852* objtype, tsym226846* d);
N_NIMCALL(void, genasmstmt_573899)(tcproc550031* p, tnode226816* t);
N_NIMCALL(trope178009*, genasmoremitstmt_573652)(tcproc550031* p, tnode226816* t, NIM_BOOL isasmstmt);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(void, gentrycpp_572517)(tcproc550031* p, tnode226816* t, tloc226830* d);
static N_INLINE(void, gensimpleblock_567160)(tcproc550031* p, tnode226816* stmts);
N_NIMCALL(void, gentry_573059)(tcproc550031* p, tnode226816* t, tloc226830* d);
N_NIMCALL(NIM_BOOL, isdefined_202036)(NimStringDesc* symbol);
N_NIMCALL(void, line_554111)(tcproc550031* p, NU8 s, NimStringDesc* r);
static N_INLINE(trope178009*, pop_178533)(TY196552** s_178541);
N_NIMCALL(void, genraisestmt_570687)(tcproc550031* p, tnode226816* t);
N_NIMCALL(NimStringDesc*, getraisefrmt_570641)(tcproc550031* p);
N_NIMCALL(void, gentypesection_560627)(tcgen550035* m, tnode226816* n);
N_NIMCALL(void, genpragma_574320)(tcproc550031* p_574322, tnode226816* n);
N_NIMCALL(NU8, whichpragma_263304)(tnode226816* n);
N_NIMCALL(void, genemit_574031)(tcproc550031* p, tnode226816* t);
N_NIMCALL(void, genbreakpoint_574073)(tcproc550031* p, tnode226816* t);
N_NIMCALL(void, genwatchpoint_574250)(tcproc550031* p, tnode226816* n);
N_NIMCALL(tsym226846*, skipgenericowner_233698)(tsym226846* s);
N_NIMCALL(void, genparforstmt_570047)(tcproc550031* p, tnode226816* t);
N_NIMCALL(void, genstate_567194)(tcproc550031* p, tnode226816* n);
N_NIMCALL(void, gengotostate_567287)(tcproc550031* p, tnode226816* n);
N_NIMCALL(void, genbreakstate_567398)(tcproc550031* p, tnode226816* n);
N_NIMCALL(trope178009*, initgcframe_561204)(tcproc550031* p);
N_NIMCALL(trope178009*, initframe_589179)(tcproc550031* p, trope178009* procname, trope178009* filename);
N_NIMCALL(void, appcg_554032)(tcproc550031* p, NU8 s, NimStringDesc* frmt, trope178009** args, NI argsLen0);
N_NIMCALL(trope178009*, deinitgcframe_561219)(tcproc550031* p);
N_NIMCALL(trope178009*, deinitframe_589200)(tcproc550031* p);
N_NIMCALL(void, symindynamiclib_588819)(tcgen550035* m, tsym226846* sym);
N_NIMCALL(NIM_BOOL, isgetprocaddr_588255)(tlib226834* lib);
N_NIMCALL(void, symindynamiclibpartial_589054)(tcgen550035* m, tsym226846* sym);
N_NIMCALL(void, rawmessage_198733)(NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, completecfilepath_203855)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(void, readmergeinfo_551815)(NimStringDesc* cfilename, tcgen550035* m);
N_NIMCALL(NimStringDesc*, getcfile_592665)(tcgen550035* m);
N_NIMCALL(NimStringDesc*, withpackagename_170946)(NimStringDesc* path);
static N_INLINE(NIM_BOOL, skipcodegen_287083)(tnode226816* n);
N_NIMCALL(void, registermoduletomain_591667)(tsym226846* m);
N_NIMCALL(trope178009*, getinitname_591647)(tsym226846* m);
N_NIMCALL(trope178009*, getsomeinitname_591213)(tsym226846* m, NimStringDesc* suffix);
N_NIMCALL(trope178009*, getdatinitname_591657)(tsym226846* m);
N_NIMCALL(trope178009*, ropeff_553206)(NimStringDesc* cformat, NimStringDesc* llvmformat, trope178009** args, NI argsLen0);
N_NIMCALL(tnode226816*, generatemethoddispatchers_424508)(void);
N_NIMCALL(void, genmainproc_590998)(tcgen550035* m);
N_NIMCALL(trope178009*, genfilenames_590935)(tcgen550035* m);
N_NIMCALL(void, finishmodule_592837)(tcgen550035* m);
N_NIMCALL(void, updatecachedmodule_593221)(tcgen550035* m);
N_NIMCALL(NIM_BOOL, mergerequired_552137)(tcgen550035* m);
N_NIMCALL(void, mergefiles_552303)(NimStringDesc* cfilename, tcgen550035* m);
N_NIMCALL(void, geninitcode_591726)(tcgen550035* m);
N_NIMCALL(trope178009*, gensectionstart_551126)(NU8 ps);
N_NIMCALL(trope178009*, gensectionend_551177)(NU8 ps);
N_NIMCALL(trope178009*, gensectionstart_551028)(NU8 fs);
N_NIMCALL(trope178009*, gensectionend_551079)(NU8 fs);
N_NIMCALL(void, finishtypedescriptions_557475)(tcgen550035* m);
N_NIMCALL(trope178009*, genmodule_591962)(tcgen550035* m, NimStringDesc* cfile);
N_NIMCALL(trope178009*, getfileheader_590924)(NimStringDesc* cfile);
N_NIMCALL(trope178009*, getcopyright_590893)(NimStringDesc* cfile);
N_NIMCALL(NimStringDesc*, getcompilecfilecmd_204262)(NimStringDesc* cfilename, NIM_BOOL isexternal);
static N_INLINE(void, addinttypes_590879)(trope178009** result);
N_NIMCALL(trope178009*, genmergeinfo_551329)(tcgen550035* m);
N_NIMCALL(void, generateheaders_589093)(tcgen550035* m);
N_NIMCALL(void, generatethreadlocalstorage_561806)(tcgen550035* m);
N_NIMCALL(void, writerope_179423)(trope178009* head, NimStringDesc* filename, NIM_BOOL usewarning);
N_NIMCALL(void, addfiletocompile_203876)(NimStringDesc* filename);
N_NIMCALL(void, addfiletolink_203897)(NimStringDesc* filename);
N_NIMCALL(void, writemodule_593067)(tcgen550035* m, NIM_BOOL pending);
N_NIMCALL(void, generatethreadvarssize_561875)(tcgen550035* m);
N_NIMCALL(NIM_BOOL, shouldrecompile_593042)(trope178009* code, NimStringDesc* cfile);
N_NIMCALL(NimStringDesc*, toobjfile_203866)(NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, writeropeifnotequal_178094)(trope178009* r, NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, nosfileNewer)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, writemapping_204898)(trope178009* gsymbolmapping);
N_NIMCALL(void, writeheader_592586)(tcgen550035* m);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY117604* Result);
N_NIMCALL(void, resetmodule_592229)(tcgen550035* m);
N_NIMCALL(void, nullify_592290)(trope178009** arr_592296);
N_NIMCALL(void, nullify_592329)(trope178009** arr_592335);
STRING_LITERAL(TMP982, "\011", 1);
STRING_LITERAL(TMP3353, "compiler/cgen.nim", 17);
NIM_CONST TY84745 TMP3352 = {((NimStringDesc*) &TMP3353),
1271}
;
STRING_LITERAL(TMP3354, "$", 1);
STRING_LITERAL(TMP3355, "ropes: invalid format string $", 30);
STRING_LITERAL(TMP3360, "@", 1);
STRING_LITERAL(TMP3361, "%", 1);
STRING_LITERAL(TMP3362, "mangleName", 10);
STRING_LITERAL(TMP3365, "_", 1);
STRING_LITERAL(TMP3366, "extern $1 $2;$n", 15);
STRING_LITERAL(TMP3367, "getTypeDescAux: t == nil", 24);
STRING_LITERAL(TMP3368, "void", 4);
STRING_LITERAL(TMP3369, "TY", 2);
STRING_LITERAL(TMP3370, "getTypeName: ", 13);
STRING_LITERAL(TMP3371, "void*", 5);
STRING_LITERAL(TMP3372, "NI32", 4);
STRING_LITERAL(TMP3373, "NU8", 3);
STRING_LITERAL(TMP3374, "NU16", 4);
STRING_LITERAL(TMP3375, "NI64", 4);
STRING_LITERAL(TMP3376, "getSimpleTypeDesc: ", 19);
STRING_LITERAL(TMP3377, "NimStringDesc", 13);
STRING_LITERAL(TMP3378, "NimStringDesc*", 14);
STRING_LITERAL(TMP3379, "NCSTRING", 8);
STRING_LITERAL(TMP3380, "NIM_BOOL", 8);
STRING_LITERAL(TMP3381, "NIM_CHAR", 8);
STRING_LITERAL(TMP3382, "0", 1);
STRING_LITERAL(TMP3383, "NI", 2);
STRING_LITERAL(TMP3384, "NI8", 3);
STRING_LITERAL(TMP3385, "NI16", 4);
STRING_LITERAL(TMP3386, "NF", 2);
STRING_LITERAL(TMP3387, "NF32", 4);
STRING_LITERAL(TMP3388, "NF64", 4);
STRING_LITERAL(TMP3389, "NF128", 5);
STRING_LITERAL(TMP3390, "NU", 2);
STRING_LITERAL(TMP3391, "NU32", 4);
STRING_LITERAL(TMP3392, "NU64", 4);
NIM_CONST TY556091 numericaltypetostr_556090 = {((NimStringDesc*) &TMP3383),
((NimStringDesc*) &TMP3384),
((NimStringDesc*) &TMP3385),
((NimStringDesc*) &TMP3372),
((NimStringDesc*) &TMP3375),
((NimStringDesc*) &TMP3386),
((NimStringDesc*) &TMP3387),
((NimStringDesc*) &TMP3388),
((NimStringDesc*) &TMP3389),
((NimStringDesc*) &TMP3390),
((NimStringDesc*) &TMP3373),
((NimStringDesc*) &TMP3374),
((NimStringDesc*) &TMP3391),
((NimStringDesc*) &TMP3392)}
;
STRING_LITERAL(TMP3393, "cannot generate C type for: ", 28);
STRING_LITERAL(TMP3394, "$1 $2;$n", 8);
STRING_LITERAL(TMP3395, "typedef $1 $2 $2;$n", 19);
STRING_LITERAL(TMP3396, "union", 5);
STRING_LITERAL(TMP3397, "struct", 6);
STRING_LITERAL(TMP3398, "getTypeForward(", 15);
STRING_LITERAL(TMP3399, "*", 1);
STRING_LITERAL(TMP3400, "**", 2);
STRING_LITERAL(TMP3401, "mapType", 7);
STRING_LITERAL(TMP3402, "genProcParams", 13);
STRING_LITERAL(TMP3403, ", ", 2);
STRING_LITERAL(TMP3404, " ", 1);
STRING_LITERAL(TMP3405, ", NI $1Len$2", 12);
STRING_LITERAL(TMP3406, ", @NI $1Len$2", 13);
STRING_LITERAL(TMP3407, " Result", 7);
STRING_LITERAL(TMP3408, " @Result", 8);
STRING_LITERAL(TMP3409, "void* ClEnv", 11);
STRING_LITERAL(TMP3410, "...", 3);
STRING_LITERAL(TMP3411, "void)", 5);
STRING_LITERAL(TMP3412, ")", 1);
STRING_LITERAL(TMP3413, "(", 1);
STRING_LITERAL(TMP3414, "typedef $1_PTR($2, $3) $4;$n", 28);
STRING_LITERAL(TMP3415, "N_NIMCALL", 9);
STRING_LITERAL(TMP3416, "N_STDCALL", 9);
STRING_LITERAL(TMP3417, "N_CDECL", 7);
STRING_LITERAL(TMP3418, "N_SAFECALL", 10);
STRING_LITERAL(TMP3419, "N_SYSCALL", 9);
STRING_LITERAL(TMP3420, "N_INLINE", 8);
STRING_LITERAL(TMP3421, "N_NOINLINE", 10);
STRING_LITERAL(TMP3422, "N_FASTCALL", 10);
STRING_LITERAL(TMP3423, "N_CLOSURE", 9);
STRING_LITERAL(TMP3424, "N_NOCONV", 8);
NIM_CONST TY226020 callingconvtostr_555222 = {((NimStringDesc*) &TMP3415),
((NimStringDesc*) &TMP3416),
((NimStringDesc*) &TMP3417),
((NimStringDesc*) &TMP3418),
((NimStringDesc*) &TMP3419),
((NimStringDesc*) &TMP3420),
((NimStringDesc*) &TMP3421),
((NimStringDesc*) &TMP3422),
((NimStringDesc*) &TMP3423),
((NimStringDesc*) &TMP3424)}
;
STRING_LITERAL(TMP3425, "typedef struct {$nN_NIMCALL_PTR($2, ClPrc) $3;$nvoid* ClEnv;$n}"
" $1;$n", 69);
STRING_LITERAL(TMP3426, "struct $2 : #TGenericSeq {$n", 28);
STRING_LITERAL(TMP3427, "struct $2 {$n  #TGenericSeq Sup;$n", 34);
STRING_LITERAL(TMP3428, "  $1 data[SEQ_DECL_SIZE];$n};$n", 31);
STRING_LITERAL(TMP3429, "TGenericSeq", 11);
STRING_LITERAL(TMP3430, "typedef $1 $2[$3];$n", 20);
extern NIM_CONST TY203435 cc_203434;
STRING_LITERAL(TMP3431, " {$n", 4);
STRING_LITERAL(TMP3432, " {$n#TNimType* m_type;$n", 24);
STRING_LITERAL(TMP3433, " : public $1 {$n", 16);
STRING_LITERAL(TMP3434, " {$n  $1 Sup;$n", 15);
STRING_LITERAL(TMP3435, "genRecordFieldsAux", 18);
STRING_LITERAL(TMP3436, "$1.$2", 5);
STRING_LITERAL(TMP3437, "union {", 7);
STRING_LITERAL(TMP3438, "S", 1);
STRING_LITERAL(TMP3439, "struct {", 8);
STRING_LITERAL(TMP3440, "} $1;$n", 7);
STRING_LITERAL(TMP3441, "genRecordFieldsAux(record case branch)", 38);
STRING_LITERAL(TMP3442, "mangleRecFieldName", 18);
STRING_LITERAL(TMP3443, "$1 $2[SEQ_DECL_SIZE];$n", 23);
STRING_LITERAL(TMP3444, "genRecordFieldsAux()", 20);
STRING_LITERAL(TMP3445, "char dummy;$n", 13);
STRING_LITERAL(TMP3446, "};", 2);
STRING_LITERAL(TMP3447, "$1 $2 {$n", 9);
STRING_LITERAL(TMP3448, "$1 Field$2;$n", 13);
STRING_LITERAL(TMP3449, "char dummy;", 11);
STRING_LITERAL(TMP3450, "typedef NU8 $1[$2];$n", 21);
STRING_LITERAL(TMP3451, "getTypeDescAux(", 15);
STRING_LITERAL(TMP3452, "Dl_$1", 5);
STRING_LITERAL(TMP3453, "$N#line $2 $1$N", 15);
STRING_LITERAL(TMP3454, "; line $2 \"$1\"$n", 16);
STRING_LITERAL(TMP3456, "N_LIB_IMPORT ", 13);
STRING_LITERAL(TMP3457, "N_LIB_EXPORT ", 13);
STRING_LITERAL(TMP3458, "static ", 7);
STRING_LITERAL(TMP3459, "$1($2, $3)$4", 12);
STRING_LITERAL(TMP3460, "extern \"C\" ", 11);
STRING_LITERAL(TMP3461, " __attribute__((naked))", 23);
STRING_LITERAL(TMP3462, "$1;$n", 5);
STRING_LITERAL(TMP3463, "proc has no result symbol", 25);
STRING_LITERAL(TMP3464, " register", 9);
STRING_LITERAL(TMP3465, " volatile", 9);
STRING_LITERAL(TMP3466, " $1;$n", 6);
STRING_LITERAL(TMP3467, ";$n", 3);
STRING_LITERAL(TMP3468, "&", 1);
STRING_LITERAL(TMP3469, "F.s[$1].address = (void*)$3; F.s[$1].typ = $4; F.s[$1].name = $"
"2;$n", 67);
STRING_LITERAL(TMP3470, "NTI$1", 5);
STRING_LITERAL(TMP3471, "(&", 2);
STRING_LITERAL(TMP3472, "TNimType", 8);
STRING_LITERAL(TMP3473, "TNimNode", 8);
STRING_LITERAL(TMP3474, "extern TNimType $1; /* $2 */$n", 30);
STRING_LITERAL(TMP3475, "0", 1);
STRING_LITERAL(TMP3476, "void*", 5);
STRING_LITERAL(TMP3477, "$1.size = sizeof($2);$n$1.kind = $3;$n$1.base = $4;$n", 53);
STRING_LITERAL(TMP3478, "$1.flags = $2;$n", 16);
STRING_LITERAL(TMP3479, "TNimType $1; /* $2 */$n", 23);
STRING_LITERAL(TMP3480, "$1[$2]", 6);
STRING_LITERAL(TMP3481, "static TNimNode* $1[$2];$n", 26);
STRING_LITERAL(TMP3482, "$1[$2] = &$3;$n", 15);
STRING_LITERAL(TMP3483, "$1.kind = 1;$n$1.offset = offsetof($2, Field$3);$n$1.typ = $4;$"
"n$1.name = \"Field$3\";$n", 86);
STRING_LITERAL(TMP3484, "$1.len = $2; $1.kind = 2; $1.sons = &$3[0];$n", 45);
STRING_LITERAL(TMP3485, "$1.len = $2; $1.kind = 2;$n", 27);
STRING_LITERAL(TMP3486, "$1.node = &$2;$n", 16);
STRING_LITERAL(TMP3487, "TMP$1", 5);
STRING_LITERAL(TMP3488, "#nimGCvisit((void*)$1, op);$n", 29);
STRING_LITERAL(TMP3489, "N_NIMCALL(void, $1)(void* p, NI op)", 35);
STRING_LITERAL(TMP3490, "$1 a;$n", 7);
STRING_LITERAL(TMP3491, "a = ($1)p;$n", 12);
STRING_LITERAL(TMP3492, "%LOC", 4);
STRING_LITERAL(TMP3493, "LOC", 3);
STRING_LITERAL(TMP3494, "$1 = 0;$n", 9);
STRING_LITERAL(TMP3495, "(*$1)", 5);
STRING_LITERAL(TMP3496, "<string.h>", 10);
STRING_LITERAL(TMP3497, "memset((void*)$1, 0, sizeof($2));$n", 35);
STRING_LITERAL(TMP3498, ".Sup", 4);
STRING_LITERAL(TMP3499, "$1.m_type = $2;$n", 17);
STRING_LITERAL(TMP3500, "#objectInit($1, $2);$n", 22);
STRING_LITERAL(TMP3501, "for ($1 = 0; $1 < $2->$3; $1++) {$n", 35);
STRING_LITERAL(TMP3502, "len", 3);
STRING_LITERAL(TMP3503, "Sup.len", 7);
STRING_LITERAL(TMP3504, "for ($1 = 0; $1 < $2; $1++) {$n", 31);
STRING_LITERAL(TMP3505, "}$n", 3);
STRING_LITERAL(TMP3506, "$1.Sup", 6);
STRING_LITERAL(TMP3507, "genTraverseProc", 15);
STRING_LITERAL(TMP3508, "switch ($1.$2) {$n", 18);
STRING_LITERAL(TMP3509, "case $1 ... $2:$n", 17);
STRING_LITERAL(TMP3510, "genLiteral: ty is nil", 21);
STRING_LITERAL(TMP3511, "(-2147483647 -1)", 16);
STRING_LITERAL(TMP3512, "IL64($1)", 8);
STRING_LITERAL(TMP3513, "(IL64(-9223372036854775807) - IL64(1))", 38);
STRING_LITERAL(TMP3514, "NIM_TRUE", 8);
STRING_LITERAL(TMP3515, "NIM_FALSE", 9);
STRING_LITERAL(TMP3516, "ULL", 3);
STRING_LITERAL(TMP3517, "(($1) $2)", 9);
STRING_LITERAL(TMP3518, "TMP", 3);
STRING_LITERAL(TMP3519, "static NIM_CONST $1 $2 = {NIM_NIL,NIM_NIL};$n", 45);
STRING_LITERAL(TMP3520, "NIM_NIL", 7);
STRING_LITERAL(TMP3521, "((#NimStringDesc*) &$1)", 23);
STRING_LITERAL(TMP3522, "STRING_LITERAL($1, $2, $3);$n", 29);
STRING_LITERAL(TMP3523, "((#NimStringDesc*) &TMP$1)", 26);
STRING_LITERAL(TMP3528, "genLiteral(", 11);
STRING_LITERAL(TMP3529, "case $1:$n", 10);
STRING_LITERAL(TMP3530, "default:$n", 10);
STRING_LITERAL(TMP3531, "break;$n", 8);
STRING_LITERAL(TMP3532, "} $n", 4);
STRING_LITERAL(TMP3533, "genTraverseProc()", 17);
STRING_LITERAL(TMP3534, "$1.Field$2", 10);
STRING_LITERAL(TMP3535, "$1.ClEnv", 8);
STRING_LITERAL(TMP3536, "$1->data[$2]", 12);
STRING_LITERAL(TMP3537, "a", 1);
STRING_LITERAL(TMP3538, "(*a)", 4);
STRING_LITERAL(TMP3539, "$1 {$n$2$3$4}$n", 15);
STRING_LITERAL(TMP3540, "$1.marker = $2;$n", 17);
STRING_LITERAL(TMP3541, "$1.len = $2; $1.kind = 0;$n$3.node = &$1;$n", 43);
STRING_LITERAL(TMP3542, "$1.offset = $2;$n", 17);
STRING_LITERAL(TMP3543, "NI $1;$n", 8);
STRING_LITERAL(TMP3544, "static char* NIM_CONST $1[$2] = {$n$3};$n", 41);
STRING_LITERAL(TMP3545, "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(TMP3546, "$1.len = $2; $1.kind = 2; $1.sons = &$3[0];$n$4.node = &$1;$n", 61);
STRING_LITERAL(TMP3547, "$1.flags = 1<<2;$n", 18);
STRING_LITERAL(TMP3548, "anonymous obj with discriminator", 32);
STRING_LITERAL(TMP3549, "NimDT_$1_$2", 11);
STRING_LITERAL(TMP3550, "$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(TMP3551, "TNimNode* $1[$2];$n", 19);
STRING_LITERAL(TMP3552, "genObjectFields; nkOfBranch broken", 34);
STRING_LITERAL(TMP3553, "genObjectFields(nkRecCase)", 26);
STRING_LITERAL(TMP3554, "$1.kind = 1;$n$1.offset = offsetof($2, $3);$n$1.typ = $4;$n$1.n"
"ame = $5;$n", 74);
STRING_LITERAL(TMP3555, "genObjectFields", 15);
STRING_LITERAL(TMP3556, "genTypeInfo(", 12);
STRING_LITERAL(TMP3557, "$1.deepcopy =(void* (N_RAW_NIMCALL*)(void*))$2;$n", 49);
STRING_LITERAL(TMP3558, "\011return $1;$n", 13);
STRING_LITERAL(TMP3559, "Result", 6);
STRING_LITERAL(TMP3560, "$1 = alloca $3$nstore $3 $2, $3* $1$n", 37);
STRING_LITERAL(TMP3561, "closure generation failed", 25);
STRING_LITERAL(TMP3562, "$1 = ($2) ClEnv;$n", 18);
STRING_LITERAL(TMP3563, "$1 = $2;$n", 10);
STRING_LITERAL(TMP3564, "#asgnRef((void**) $1, $2);$n", 28);
STRING_LITERAL(TMP3565, "#asgnRefNoCycle((void**) $1, $2);$n", 35);
STRING_LITERAL(TMP3566, "#unsureAsgnRef((void**) $1, $2);$n", 34);
STRING_LITERAL(TMP3567, "#genericSeqAssign($1, $2, $3);$n", 32);
STRING_LITERAL(TMP3568, "$1 = #copyString($2);$n", 23);
STRING_LITERAL(TMP3569, "$3 = $1; $1 = #copyStringRC1($2);$n", 35);
STRING_LITERAL(TMP3570, "if ($1) #nimGCunrefNoCycle($1);$n", 33);
STRING_LITERAL(TMP3571, "#unsureAsgnRef((void**) $1, #copyString($2));$n", 47);
STRING_LITERAL(TMP3572, ".", 1);
STRING_LITERAL(TMP3573, "ClEnv", 5);
STRING_LITERAL(TMP3574, "$1.ClPrc = $2.ClPrc;$n", 22);
STRING_LITERAL(TMP3575, "Field$1", 7);
STRING_LITERAL(TMP3576, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($3));$n", 53);
STRING_LITERAL(TMP3577, "#genericShallowAssign((void*)$1, (void*)$2, $3);$n", 50);
STRING_LITERAL(TMP3578, "#genericAssign((void*)$1, (void*)$2, $3);$n", 43);
STRING_LITERAL(TMP3580, "compiler/ccgexprs.nim", 21);
NIM_CONST TY84745 TMP3579 = {((NimStringDesc*) &TMP3580),
336}
;
STRING_LITERAL(TMP3581, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($1));$n", 53);
STRING_LITERAL(TMP3582, "#genericAssignOpenArray((void*)$1, (void*)$2, $1Len0, $3);$n", 60);
STRING_LITERAL(TMP3583, "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($1[0])*$1Len0);$n", 63);
STRING_LITERAL(TMP3584, "memcpy((void*)$1, (NIM_CONST void*)$2, $3);$n", 45);
STRING_LITERAL(TMP3585, "genAssignment: ", 15);
STRING_LITERAL(TMP3586, "expr: proc not init ", 20);
STRING_LITERAL(TMP3587, "extern ", 7);
STRING_LITERAL(TMP3588, "NIM_THREADVAR ", 14);
STRING_LITERAL(TMP3589, "NIM_CONST $1 $2 = $3;$n", 23);
STRING_LITERAL(TMP3590, "{$n", 3);
STRING_LITERAL(TMP3591, "0x$1,$n", 7);
STRING_LITERAL(TMP3592, "0x$1, ", 6);
STRING_LITERAL(TMP3593, "0x$1}$n", 7);
STRING_LITERAL(TMP3594, "{{$1, $1}", 9);
STRING_LITERAL(TMP3595, ", {", 3);
STRING_LITERAL(TMP3596, ",$n", 3);
STRING_LITERAL(TMP3597, "}", 1);
STRING_LITERAL(TMP3598, "CNSTSEQ", 7);
STRING_LITERAL(TMP3599, "NIM_CONST struct {$n  #TGenericSeq Sup;$n  $1 data[$2];$n} $3 ="
" $4;$n", 69);
STRING_LITERAL(TMP3600, "(($1)&$2)", 9);
STRING_LITERAL(TMP3601, "{", 1);
STRING_LITERAL(TMP3602, "$1,$n", 5);
STRING_LITERAL(TMP3603, "extern NIM_CONST $1 $2;$n", 25);
STRING_LITERAL(TMP3604, "expr: var not init ", 19);
STRING_LITERAL(TMP3605, "\011NimThreadVars* NimTV;$n", 24);
STRING_LITERAL(TMP3606, "\011NimTV = (NimThreadVars*) #GetThreadLocalVars();$n", 50);
STRING_LITERAL(TMP3607, "NimTV->", 7);
STRING_LITERAL(TMP3608, "expr: temp not init ", 20);
STRING_LITERAL(TMP3609, "expr: param not init ", 21);
STRING_LITERAL(TMP3610, "expr(", 5);
STRING_LITERAL(TMP3611, "); unknown symbol", 17);
STRING_LITERAL(TMP3612, "//", 2);
STRING_LITERAL(TMP3613, "#endb($1, $2);$n", 16);
STRING_LITERAL(TMP3614, "nimln($1, $2);$n", 16);
STRING_LITERAL(TMP3616, "LA", 2);
STRING_LITERAL(TMP3617, "if ($1) goto $2;$n", 18);
STRING_LITERAL(TMP3618, "if (!($1)) goto $2;$n", 21);
STRING_LITERAL(TMP3619, "$1: ;$n", 7);
STRING_LITERAL(TMP3620, "!($1)", 5);
STRING_LITERAL(TMP3621, "$1", 2);
STRING_LITERAL(TMP3622, "($3)((NU$2) ~($1))", 18);
STRING_LITERAL(TMP3623, "-($1)", 5);
STRING_LITERAL(TMP3624, "($1 > 0? ($1) : -($1))", 22);
STRING_LITERAL(TMP3625, "(($3)(NU)(NU8)($1))", 19);
STRING_LITERAL(TMP3626, "(($3)(NU64)(NU8)($1))", 21);
STRING_LITERAL(TMP3627, "(($3)(NU)(NU16)($1))", 20);
STRING_LITERAL(TMP3628, "(($3)(NU64)(NU16)($1))", 22);
STRING_LITERAL(TMP3629, "(($3)(NU64)(NU32)($1))", 22);
STRING_LITERAL(TMP3630, "(($3)(NU64)(NU)($1))", 20);
STRING_LITERAL(TMP3631, "(($3)(NU8)(NU)($1))", 19);
STRING_LITERAL(TMP3632, "(($3)(NU16)(NU)($1))", 20);
STRING_LITERAL(TMP3633, "(($3)(NU32)(NU64)($1))", 22);
STRING_LITERAL(TMP3634, "((double) ($1))", 15);
STRING_LITERAL(TMP3635, "float64ToInt32($1)", 18);
STRING_LITERAL(TMP3636, "float64ToInt64($1)", 18);
NIM_CONST TY578903 unarithtab_578902 = {((NimStringDesc*) &TMP3620),
((NimStringDesc*) &TMP3621),
((NimStringDesc*) &TMP3622),
((NimStringDesc*) &TMP3621),
((NimStringDesc*) &TMP3622),
((NimStringDesc*) &TMP3621),
((NimStringDesc*) &TMP3623),
((NimStringDesc*) &TMP3624),
((NimStringDesc*) &TMP3625),
((NimStringDesc*) &TMP3626),
((NimStringDesc*) &TMP3627),
((NimStringDesc*) &TMP3628),
((NimStringDesc*) &TMP3629),
((NimStringDesc*) &TMP3630),
((NimStringDesc*) &TMP3631),
((NimStringDesc*) &TMP3632),
((NimStringDesc*) &TMP3633),
((NimStringDesc*) &TMP3634),
((NimStringDesc*) &TMP3634),
((NimStringDesc*) &TMP3635),
((NimStringDesc*) &TMP3636)}
;
STRING_LITERAL(TMP3637, "if ($1 == $2) #raiseOverflow();$n", 33);
STRING_LITERAL(TMP3638, "((NI$2)-($1))", 13);
NIM_CONST TY577898 opr_577897 = {((NimStringDesc*) &TMP3638),
((NimStringDesc*) &TMP3623),
((NimStringDesc*) &TMP3624),
((NimStringDesc*) &TMP3624)}
;
STRING_LITERAL(TMP3639, "(($4)($2) $1 ($4)($3))", 22);
STRING_LITERAL(TMP3640, "+", 1);
STRING_LITERAL(TMP3641, "-", 1);
STRING_LITERAL(TMP3642, "/", 1);
NIM_CONST TY585002 opr_585001 = {((NimStringDesc*) &TMP3640),
((NimStringDesc*) &TMP3641),
((NimStringDesc*) &TMP3399),
((NimStringDesc*) &TMP3642)}
;
STRING_LITERAL(TMP3643, "#nanCheck($1);$n", 16);
STRING_LITERAL(TMP3644, "#infCheck($1);$n", 16);
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)($1) / ($4)($2))", 21);
STRING_LITERAL(TMP3649, "($4)((NU$3)($1) >> (NU$3)($2))", 30);
STRING_LITERAL(TMP3650, "($4)((NU$3)($1) << (NU$3)($2))", 30);
STRING_LITERAL(TMP3651, "($4)($1 & $2)", 13);
STRING_LITERAL(TMP3652, "($4)($1 | $2)", 13);
STRING_LITERAL(TMP3653, "($4)($1 ^ $2)", 13);
STRING_LITERAL(TMP3654, "(($1 <= $2) ? $1 : $2)", 22);
STRING_LITERAL(TMP3655, "(($1 >= $2) ? $1 : $2)", 22);
STRING_LITERAL(TMP3656, "($4)((NU64)($1) >> (NU64)($2))", 30);
STRING_LITERAL(TMP3657, "($4)((NU64)($1) << (NU64)($2))", 30);
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, "($4)((NU$3)($1) % (NU$3)($2))", 29);
STRING_LITERAL(TMP3663, "($1 == $2)", 10);
STRING_LITERAL(TMP3664, "($1 <= $2)", 10);
STRING_LITERAL(TMP3665, "($1 < $2)", 9);
STRING_LITERAL(TMP3666, "((NU$3)($1) <= (NU$3)($2))", 26);
STRING_LITERAL(TMP3667, "((NU$3)($1) < (NU$3)($2))", 25);
STRING_LITERAL(TMP3668, "((NU64)($1) <= (NU64)($2))", 26);
STRING_LITERAL(TMP3669, "((NU64)($1) < (NU64)($2))", 25);
STRING_LITERAL(TMP3670, "((NU8)($1) == (NU8)($2))", 24);
STRING_LITERAL(TMP3671, "((NU8)($1) <= (NU8)($2))", 24);
STRING_LITERAL(TMP3672, "((NU8)($1) < (NU8)($2))", 23);
STRING_LITERAL(TMP3673, "($1 != $2)", 10);
NIM_CONST TY578050 binarithtab_578049 = {((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*) &TMP3657),
((NimStringDesc*) &TMP3651),
((NimStringDesc*) &TMP3652),
((NimStringDesc*) &TMP3653),
((NimStringDesc*) &TMP3654),
((NimStringDesc*) &TMP3655),
((NimStringDesc*) &TMP3654),
((NimStringDesc*) &TMP3655),
((NimStringDesc*) &TMP3658),
((NimStringDesc*) &TMP3659),
((NimStringDesc*) &TMP3660),
((NimStringDesc*) &TMP3661),
((NimStringDesc*) &TMP3662),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3665),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3665),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3665),
((NimStringDesc*) &TMP3666),
((NimStringDesc*) &TMP3667),
((NimStringDesc*) &TMP3668),
((NimStringDesc*) &TMP3669),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3665),
((NimStringDesc*) &TMP3670),
((NimStringDesc*) &TMP3671),
((NimStringDesc*) &TMP3672),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3665),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3664),
((NimStringDesc*) &TMP3665),
((NimStringDesc*) &TMP3663),
((NimStringDesc*) &TMP3673)}
;
STRING_LITERAL(TMP3674, "($1.ClPrc == $2.ClPrc && $1.ClEnv == $2.ClEnv)", 46);
STRING_LITERAL(TMP3675, "(NI$4)($2 $1 $3)", 16);
NIM_CONST TY577515 opr_577514 = {((NimStringDesc*) &TMP3640),
((NimStringDesc*) &TMP3641),
((NimStringDesc*) &TMP3399),
((NimStringDesc*) &TMP3642),
((NimStringDesc*) &TMP3361),
((NimStringDesc*) &TMP3640),
((NimStringDesc*) &TMP3641),
((NimStringDesc*) &TMP3399),
((NimStringDesc*) &TMP3642),
((NimStringDesc*) &TMP3361)}
;
STRING_LITERAL(TMP3676, "$1 = #$2($3, $4);$n", 19);
STRING_LITERAL(TMP3677, "addInt", 6);
STRING_LITERAL(TMP3678, "subInt", 6);
STRING_LITERAL(TMP3679, "mulInt", 6);
STRING_LITERAL(TMP3680, "divInt", 6);
STRING_LITERAL(TMP3681, "modInt", 6);
STRING_LITERAL(TMP3682, "addInt64", 8);
STRING_LITERAL(TMP3683, "subInt64", 8);
STRING_LITERAL(TMP3684, "mulInt64", 8);
STRING_LITERAL(TMP3685, "divInt64", 8);
STRING_LITERAL(TMP3686, "modInt64", 8);
NIM_CONST TY577515 prc_577509 = {((NimStringDesc*) &TMP3677),
((NimStringDesc*) &TMP3678),
((NimStringDesc*) &TMP3679),
((NimStringDesc*) &TMP3680),
((NimStringDesc*) &TMP3681),
((NimStringDesc*) &TMP3682),
((NimStringDesc*) &TMP3683),
((NimStringDesc*) &TMP3684),
((NimStringDesc*) &TMP3685),
((NimStringDesc*) &TMP3686)}
;
STRING_LITERAL(TMP3687, "if ($1 < $2 || $1 > $3) #raiseOverflow();$n", 43);
STRING_LITERAL(TMP3688, "(NI$1)($2)", 10);
STRING_LITERAL(TMP3689, "#reprInt((NI64)$1)", 18);
STRING_LITERAL(TMP3690, "#reprFloat($1)", 14);
STRING_LITERAL(TMP3691, "#reprBool($1)", 13);
STRING_LITERAL(TMP3692, "#reprChar($1)", 13);
STRING_LITERAL(TMP3693, "#reprEnum($1, $2)", 17);
STRING_LITERAL(TMP3694, "#reprStr($1)", 12);
STRING_LITERAL(TMP3695, "#reprSet($1, $2)", 16);
STRING_LITERAL(TMP3696, "$1, $1Len0", 10);
STRING_LITERAL(TMP3697, "$1->data, $1->$2", 16);
STRING_LITERAL(TMP3698, "$1, $2", 6);
STRING_LITERAL(TMP3699, "genRepr()", 9);
STRING_LITERAL(TMP3700, "#reprOpenArray($1, $2)", 22);
STRING_LITERAL(TMP3701, "#reprAny($1, $2)", 16);
STRING_LITERAL(TMP3702, "($1 - 1)", 8);
STRING_LITERAL(TMP3703, "#subInt($1, 1)", 14);
STRING_LITERAL(TMP3704, "($1 - $2)", 9);
STRING_LITERAL(TMP3705, "#subInt($1, $2)", 15);
STRING_LITERAL(TMP3706, "($1 + $2)", 9);
STRING_LITERAL(TMP3707, "#addInt($1, $2)", 15);
STRING_LITERAL(TMP3708, "binaryStmt", 10);
STRING_LITERAL(TMP3709, "$1 += $2;$n", 11);
STRING_LITERAL(TMP3710, "$1 = #addInt64($1, $2);$n", 25);
STRING_LITERAL(TMP3711, "$1 = #addInt($1, $2);$n", 23);
STRING_LITERAL(TMP3712, "$1 -= $2;$n", 11);
STRING_LITERAL(TMP3713, "$1 = #subInt64($1, $2);$n", 25);
STRING_LITERAL(TMP3714, "$1 = #subInt($1, $2);$n", 23);
STRING_LITERAL(TMP3715, "#appendChar($1, $2);$n", 22);
STRING_LITERAL(TMP3716, "$1->$2 + ", 9);
STRING_LITERAL(TMP3717, "#appendString($1, $2);$n", 24);
STRING_LITERAL(TMP3718, "$1 = #rawNewString($2$3);$n", 27);
STRING_LITERAL(TMP3719, "$1 = #addChar($1, $2);$n", 24);
STRING_LITERAL(TMP3720, "$1 = #resizeString($1, $2$3);$n", 31);
STRING_LITERAL(TMP3721, "$1 = ($2) #incrSeq(&($1)->Sup, sizeof($3));$n", 45);
STRING_LITERAL(TMP3722, "$1 = ($2) #incrSeq($1, sizeof($3));$n", 37);
STRING_LITERAL(TMP3723, "$1->data[$1->$2-1]", 18);
STRING_LITERAL(TMP3724, "(($1) && ($1)->$2 == 0)", 23);
STRING_LITERAL(TMP3725, "#eqStrings($1, $2)", 18);
STRING_LITERAL(TMP3726, "(#cmpStrings($1, $2) <= 0)", 26);
STRING_LITERAL(TMP3727, "(#cmpStrings($1, $2) < 0)", 25);
STRING_LITERAL(TMP3728, "$1.ClPrc == 0", 13);
STRING_LITERAL(TMP3729, "$1 == 0", 7);
STRING_LITERAL(TMP3730, "#nimIntToStr($1)", 16);
STRING_LITERAL(TMP3731, "#nimInt64ToStr($1)", 18);
STRING_LITERAL(TMP3732, "#nimBoolToStr($1)", 17);
STRING_LITERAL(TMP3733, "#nimCharToStr($1)", 17);
STRING_LITERAL(TMP3734, "#nimFloatToStr($1)", 18);
STRING_LITERAL(TMP3735, "#cstrToNimstr($1)", 17);
STRING_LITERAL(TMP3736, "no \'of\' operator available for pure objects", 43);
STRING_LITERAL(TMP3737, "(($1) && ($2))", 14);
STRING_LITERAL(TMP3738, "$1.m_type == $2", 15);
STRING_LITERAL(TMP3739, "Nim_OfCheck_CACHE", 17);
STRING_LITERAL(TMP3740, "static TNimType* $#[2];$n", 25);
STRING_LITERAL(TMP3741, "#isObjWithCache($#.m_type, $#, $#)", 34);
STRING_LITERAL(TMP3742, "($1)", 4);
STRING_LITERAL(TMP3743, "sizeof($1)", 10);
STRING_LITERAL(TMP3744, "if ($1) #nimGCunref($1);$n", 26);
STRING_LITERAL(TMP3745, "($1) #newObjRC1($2, $3)", 23);
STRING_LITERAL(TMP3746, "($1) #newObj($2, $3)", 20);
STRING_LITERAL(TMP3747, "$1->finalizer = (void*)$2;$n", 28);
STRING_LITERAL(TMP3748, "($1) #newObj($2, sizeof($3))", 28);
STRING_LITERAL(TMP3749, "($1) #newSeqRC1($2, $3)", 23);
STRING_LITERAL(TMP3750, "($1) #newSeq($2, $3)", 20);
STRING_LITERAL(TMP3751, "((NI)sizeof($1))", 16);
STRING_LITERAL(TMP3752, "(*($1*) ($2))", 13);
STRING_LITERAL(TMP3753, "(($1) ($2))", 11);
STRING_LITERAL(TMP3754, "((NU8)($1))", 11);
STRING_LITERAL(TMP3755, "($1Len0-1)", 10);
STRING_LITERAL(TMP3756, "$1Len0", 6);
STRING_LITERAL(TMP3757, "(strlen($1)-1)", 14);
STRING_LITERAL(TMP3758, "strlen($1)", 10);
STRING_LITERAL(TMP3759, "($1->Sup.len-1)", 15);
STRING_LITERAL(TMP3760, "$1->Sup.len", 11);
STRING_LITERAL(TMP3761, "($1->len-1)", 11);
STRING_LITERAL(TMP3762, "$1->len", 7);
STRING_LITERAL(TMP3763, "genArrayLen()", 13);
STRING_LITERAL(TMP3764, "unaryStmt", 9);
STRING_LITERAL(TMP3765, "#nimGCref($1);$n", 16);
STRING_LITERAL(TMP3766, "#nimGCunref($1);$n", 18);
STRING_LITERAL(TMP3767, "$1 = #setLengthStr($1, $2);$n", 29);
STRING_LITERAL(TMP3768, "$1 = ($3) #setLengthSeq(&($1)->Sup, sizeof($4), $2);$n", 54);
STRING_LITERAL(TMP3769, "$1 = ($3) #setLengthSeq($1, sizeof($4), $2);$n", 46);
STRING_LITERAL(TMP3770, "($1- $2)", 8);
STRING_LITERAL(TMP3771, "$1 |= ((", 8);
STRING_LITERAL(TMP3772, ")1)<<(($2)%(sizeof(", 19);
STRING_LITERAL(TMP3773, ")*8));$n", 8);
STRING_LITERAL(TMP3774, "$1 &= ~(((", 10);
STRING_LITERAL(TMP3775, ")1) << (($2) % (sizeof(", 23);
STRING_LITERAL(TMP3776, ")*8)));$n", 9);
STRING_LITERAL(TMP3777, "#countBits32($1)", 16);
STRING_LITERAL(TMP3778, "#countBits64($1)", 16);
STRING_LITERAL(TMP3779, "(($1 & ~ $2 ==0)&&($1 != $2))", 29);
STRING_LITERAL(TMP3780, "(($1 & ~ $2)==0)", 16);
STRING_LITERAL(TMP3781, "($1 & $2)", 9);
STRING_LITERAL(TMP3782, "($1 | $2)", 9);
STRING_LITERAL(TMP3783, "($1 & ~ $2)", 11);
STRING_LITERAL(TMP3784, "($1 ^ $2)", 9);
STRING_LITERAL(TMP3785, "fewCmps", 7);
STRING_LITERAL(TMP3786, "$1 >= $2 && $1 <= $3", 20);
STRING_LITERAL(TMP3787, "$1 == $2", 8);
STRING_LITERAL(TMP3788, " || ", 4);
STRING_LITERAL(TMP3789, "(($1 &(1<<(($2)&7)))!=0)", 24);
STRING_LITERAL(TMP3790, "(($1 &(1<<(($2)&15)))!=0)", 25);
STRING_LITERAL(TMP3791, "(($1 &(1<<(($2)&31)))!=0)", 25);
STRING_LITERAL(TMP3792, "(($1 &(IL64(1)<<(($2)&IL64(63))))!=0)", 37);
STRING_LITERAL(TMP3793, "(($1[$2/8] &(1<<($2%8)))!=0)", 28);
STRING_LITERAL(TMP3794, "genSetOp()", 10);
STRING_LITERAL(TMP3795, "$1[$2/8] |=(1<<($2%8));$n", 25);
STRING_LITERAL(TMP3796, "$1[$2/8] &= ~(1<<($2%8));$n", 27);
STRING_LITERAL(TMP3797, "#cardSet($1, ", 13);
STRING_LITERAL(TMP3798, "for ($1 = 0; $1 < $2; $1++) { $n  $3 = (($4[$1] & ~ $5[$1]) == "
"0);$n  if (!$3) break;}$n", 88);
STRING_LITERAL(TMP3799, "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(TMP3800, "|", 1);
STRING_LITERAL(TMP3801, "& ~", 3);
STRING_LITERAL(TMP3802, "^", 1);
NIM_CONST TY584263 lookupopr_584262 = {((NimStringDesc*) &TMP3798),
((NimStringDesc*) &TMP3799),
((NimStringDesc*) &TMP3468),
((NimStringDesc*) &TMP3800),
((NimStringDesc*) &TMP3801),
((NimStringDesc*) &TMP3802)}
;
STRING_LITERAL(TMP3803, "(memcmp($1, $2, ", 16);
STRING_LITERAL(TMP3804, ")==0)", 5);
STRING_LITERAL(TMP3805, "for ($1 = 0; $1 < $2; $1++) $n  $3[$1] = $4[$1] $6 $5[$1];$n", 60);
STRING_LITERAL(TMP3806, "genSetOp", 8);
STRING_LITERAL(TMP3807, "$1->data", 8);
STRING_LITERAL(TMP3808, "($1)+($2), ($3)-($2)+1", 22);
STRING_LITERAL(TMP3809, "(*$1)->data+($2), ($3)-($2)+1", 29);
STRING_LITERAL(TMP3810, "$1->data+($2), ($3)-($2)+1", 26);
STRING_LITERAL(TMP3811, "openArrayLoc: ", 14);
STRING_LITERAL(TMP3812, "", 0);
STRING_LITERAL(TMP3813, "(*$1)->data, (*$1)->$2", 22);
STRING_LITERAL(TMP3814, "$1.ClPrc($3$1.ClEnv)", 20);
STRING_LITERAL(TMP3815, "$1.ClEnv? $1.ClPrc($3$1.ClEnv):(($4)($1.ClPrc))($2)", 51);
STRING_LITERAL(TMP3816, "#chckNil((void*)$1);$n", 22);
STRING_LITERAL(TMP3817, "#genericReset((void*)$1, $2);$n", 31);
STRING_LITERAL(TMP3818, "->", 2);
STRING_LITERAL(TMP3819, ");$n", 4);
STRING_LITERAL(TMP3820, "[", 1);
STRING_LITERAL(TMP3821, ": ", 2);
STRING_LITERAL(TMP3822, "varargs for objective C method?", 31);
STRING_LITERAL(TMP3823, "Result: ", 8);
STRING_LITERAL(TMP3824, "];$n", 4);
STRING_LITERAL(TMP3825, "]", 1);
NIM_CONST TY84745 TMP3826 = {((NimStringDesc*) &TMP3580),
930}
;
STRING_LITERAL(TMP3827, "<stdio.h>", 9);
STRING_LITERAL(TMP3828, ", ($1)->data", 12);
STRING_LITERAL(TMP3829, "printf($1$2);$n", 15);
STRING_LITERAL(TMP3830, "%s", 2);
STRING_LITERAL(TMP3892, "#genericDeepCopy((void*)$1, (void*)$2, $3);$n", 45);
STRING_LITERAL(TMP3893, "#genericSeqDeepCopy($1, $2, $3);$n", 34);
STRING_LITERAL(TMP3894, "#genericDeepCopyOpenArray((void*)$1, (void*)$2, $1Len0, $3);$n", 62);
STRING_LITERAL(TMP3895, "genDeepCopy: ", 13);
STRING_LITERAL(TMP3896, "genMagicExpr: ", 14);
STRING_LITERAL(TMP3897, "static NIM_CONST $1 $2 = $3;$n", 30);
STRING_LITERAL(TMP3898, "memset($1, 0, sizeof($1));$n", 28);
STRING_LITERAL(TMP3899, "for ($1 = $3; $1 <= $4; $1++) $n$2[$1/8] |=(1<<($1%8));$n", 57);
STRING_LITERAL(TMP3900, "for ($1 = $3; $1 <= $4; $1++) $n$2 |=(1<<((", 43);
STRING_LITERAL(TMP3901, ")($1)%(sizeof(", 14);
STRING_LITERAL(TMP3902, "$1 |=(1<<((", 11);
STRING_LITERAL(TMP3903, ")($2)%(sizeof(", 14);
STRING_LITERAL(TMP3904, "genObjConstr", 12);
STRING_LITERAL(TMP3905, "if ($1) #raiseFieldError(((#NimStringDesc*) &$2));$n", 52);
STRING_LITERAL(TMP3906, "if (!($1)) #raiseFieldError(((#NimStringDesc*) &$2));$n", 55);
STRING_LITERAL(TMP3907, "LOC$1.source", 12);
STRING_LITERAL(TMP3908, "union { $1 source; $2 dest; } LOC$3;$n", 38);
STRING_LITERAL(TMP3909, "LOC$#.dest", 10);
STRING_LITERAL(TMP3910, "if ((NU)($1) > (NU)($2)) #raiseIndexError();$n", 46);
STRING_LITERAL(TMP3911, "if ($1 < $2 || $1 > $3) #raiseIndexError();$n", 45);
STRING_LITERAL(TMP3912, "$1[($2)- $3]", 12);
STRING_LITERAL(TMP3913, "if ((NU)($1) >= (NU)($2Len0)) #raiseIndexError();$n", 51);
STRING_LITERAL(TMP3914, "if ((NU)($1) > (NU)($2->$3)) #raiseIndexError();$n", 50);
STRING_LITERAL(TMP3915, "if ((NU)($1) >= (NU)($2->$3)) #raiseIndexError();$n", 51);
STRING_LITERAL(TMP3916, "genTupleElem", 12);
STRING_LITERAL(TMP3917, ".Field$1", 8);
STRING_LITERAL(TMP3918, "expr(nkBracketExpr, ", 20);
STRING_LITERAL(TMP3919, "genDeref ", 9);
STRING_LITERAL(TMP3920, "genRecordFieldAux", 17);
STRING_LITERAL(TMP3921, "genRecordField", 14);
STRING_LITERAL(TMP3922, "genRecordField 2 ", 17);
STRING_LITERAL(TMP3923, "genRecordField 3", 16);
STRING_LITERAL(TMP3924, ".$1", 3);
STRING_LITERAL(TMP3925, "genCheckedRecordField", 21);
STRING_LITERAL(TMP3926, "} $1: ;$n", 9);
STRING_LITERAL(TMP3927, "F.len-=$1;$n", 12);
STRING_LITERAL(TMP3928, "F.len+=$1;$n", 12);
STRING_LITERAL(TMP3929, "if (!$1) goto $2;$n", 19);
STRING_LITERAL(TMP3930, "br i1 $1, label %LOC$3, label %$2$nLOC$3: $n", 44);
STRING_LITERAL(TMP3931, "goto $1;$n", 10);
STRING_LITERAL(TMP3932, "br label %$1$n", 14);
STRING_LITERAL(TMP3933, "genIf()", 7);
STRING_LITERAL(TMP3934, "->Sup", 5);
STRING_LITERAL(TMP3935, "$1 = &$2;$n", 11);
STRING_LITERAL(TMP3936, "if ($1) #chckObj($2.m_type, $3);$n", 34);
STRING_LITERAL(TMP3937, "#chckObj($1.m_type, $2);$n", 26);
STRING_LITERAL(TMP3938, "range check will always fail; empty range", 41);
STRING_LITERAL(TMP3939, "(($1)#$5($2, $3, $4))", 21);
STRING_LITERAL(TMP3940, "chckRangeF", 10);
STRING_LITERAL(TMP3941, "chckRange64", 11);
STRING_LITERAL(TMP3942, "chckRange", 9);
STRING_LITERAL(TMP3943, "$1.ClPrc = $2; $1.ClEnv = $3;$n", 31);
STRING_LITERAL(TMP3944, "while (1) {$n", 13);
STRING_LITERAL(TMP3945, "case statement must be exhaustive for computed goto", 51);
STRING_LITERAL(TMP3946, "case statement has too many cases for computed goto", 51);
STRING_LITERAL(TMP3947, "case statement has to start at 0 for computed goto", 50);
STRING_LITERAL(TMP3948, "no case statement found for computed goto", 41);
STRING_LITERAL(TMP3949, "static void* $#[$#] = {", 23);
STRING_LITERAL(TMP3950, "&&TMP$#, ", 9);
STRING_LITERAL(TMP3951, "&&TMP$#};$n", 11);
STRING_LITERAL(TMP3952, "goto *$#[$#];$n", 15);
STRING_LITERAL(TMP3953, "range notation not available for computed goto", 46);
STRING_LITERAL(TMP3954, "TMP$#:$n", 8);
STRING_LITERAL(TMP3955, "#nimProfile();$n", 16);
STRING_LITERAL(TMP3956, "static void* $1;$n", 18);
STRING_LITERAL(TMP3957, "Dependency: ", 12);
STRING_LITERAL(TMP3958, "||", 2);
STRING_LITERAL(TMP3959, "($1 = #nimLoadLibrary((#NimStringDesc*) &$2))$n", 47);
STRING_LITERAL(TMP3960, "if (!($1)) #nimLoadLibraryError((#NimStringDesc*) &$2);$n", 57);
STRING_LITERAL(TMP3961, "if (!($1 = #nimLoadLibrary($2))) #nimLoadLibraryError($2);$n", 60);
STRING_LITERAL(TMP3962, "loadDynamicLib", 14);
STRING_LITERAL(TMP3963, "$1 = ($2*) #nimGetProcAddr($3, $4);$n", 37);
STRING_LITERAL(TMP3964, "%MOC$1", 6);
STRING_LITERAL(TMP3965, "@MOC$1 = private constant [$2 x i8] $3$n", 40);
STRING_LITERAL(TMP3968, "$1 = getelementptr [$2 x i8]* @MOC$3, %NI 0, %NI 0$n", 52);
STRING_LITERAL(TMP3969, "$2* $1;$n", 9);
STRING_LITERAL(TMP3970, "#dbgRegisterGlobal($1, &$2, $3);$n", 34);
STRING_LITERAL(TMP3971, "%LOC$1", 6);
STRING_LITERAL(TMP3972, "@C$1 = private constant [$2 x i8] $3$n", 38);
STRING_LITERAL(TMP3973, "$1 = getelementptr [$2 x i8]* @C$3, %NI 0, %NI 0$n", 50);
STRING_LITERAL(TMP3974, "#nimGCvisit((void*)$1, 0);$n", 28);
STRING_LITERAL(TMP3975, "N_NIMCALL(void, $1)()", 21);
STRING_LITERAL(TMP3976, "#nimRegisterGlobalMarker($1);$n", 31);
STRING_LITERAL(TMP3977, "genVarTuple", 11);
STRING_LITERAL(TMP3978, "genConstStmt", 12);
STRING_LITERAL(TMP3979, "for statement not eliminated", 28);
STRING_LITERAL(TMP3980, "if (#eqStrings($1, $2)) goto $3;$n", 34);
STRING_LITERAL(TMP3981, "switch (#hashString($1) & $2) {$n", 33);
STRING_LITERAL(TMP3982, "case $1: $n$2break;$n", 21);
STRING_LITERAL(TMP3983, "goto LA$1;$n", 12);
STRING_LITERAL(TMP3984, "LA$1: ;$n", 9);
STRING_LITERAL(TMP3985, "if ($1 >= $2 && $1 <= $3) goto $4;$n", 36);
STRING_LITERAL(TMP3986, "if ($1 == $2) goto $3;$n", 24);
STRING_LITERAL(TMP3987, "switch ($1) {$n", 15);
STRING_LITERAL(TMP3988, "default: __assume(0);$n", 23);
STRING_LITERAL(TMP3989, "#popSafePoint();$n", 18);
STRING_LITERAL(TMP3990, "#popCurrentException();$n", 25);
STRING_LITERAL(TMP3991, "if ($1.status != 0) #popCurrentException();$n", 45);
STRING_LITERAL(TMP3992, "goto BeforeRet;$n", 17);
STRING_LITERAL(TMP3993, "br label %BeforeRet$n", 21);
STRING_LITERAL(TMP3994, "no loop to break", 16);
STRING_LITERAL(TMP3995, "extern $1", 9);
STRING_LITERAL(TMP3996, "#FieldDiscriminantCheck((NI)(NU)($1), (NI)(NU)($2), $3, $4);$n", 62);
STRING_LITERAL(TMP3997, "genAsmOrEmitStmt()", 18);
STRING_LITERAL(TMP3998, "\"", 1);
STRING_LITERAL(TMP3999, "\\n\"\012", 4);
STRING_LITERAL(TMP4000, "Exception", 9);
STRING_LITERAL(TMP4001, "E_Base", 6);
STRING_LITERAL(TMP4002, "try {$n", 7);
STRING_LITERAL(TMP4003, "} catch (NimException& $1) {$n", 30);
STRING_LITERAL(TMP4004, "#setFrame((TFrame*)&F);$n", 25);
STRING_LITERAL(TMP4005, "else ", 5);
STRING_LITERAL(TMP4006, "#isObj($1.exp->m_type, $2)", 26);
STRING_LITERAL(TMP4007, "if ($1) ", 8);
STRING_LITERAL(TMP4008, "throw;$n", 8);
STRING_LITERAL(TMP4009, "<setjmp.h>", 10);
STRING_LITERAL(TMP4010, "#TSafePoint $1;$n", 17);
STRING_LITERAL(TMP4011, "#pushSafePoint(&$1);$n", 22);
STRING_LITERAL(TMP4012, "nimStdSetjmp", 12);
STRING_LITERAL(TMP4013, "$1.status = setjmp($1.context);$n", 33);
STRING_LITERAL(TMP4014, "nimSigSetjmp", 12);
STRING_LITERAL(TMP4015, "$1.status = sigsetjmp($1.context, 0);$n", 39);
STRING_LITERAL(TMP4016, "nimRawSetjmp", 12);
STRING_LITERAL(TMP4017, "$1.status = _setjmp($1.context);$n", 34);
STRING_LITERAL(TMP4018, "if ($1.status == 0) {$n", 23);
STRING_LITERAL(TMP4019, "else {$n", 8);
STRING_LITERAL(TMP4020, "else", 4);
STRING_LITERAL(TMP4021, "$1.status = 0;$n", 16);
STRING_LITERAL(TMP4022, "#isObj(#getCurrentException()->Sup.m_type, $1)", 46);
STRING_LITERAL(TMP4023, "if ($1) {$n", 11);
STRING_LITERAL(TMP4024, "if ($1.status != 0) #reraiseException();$n", 42);
STRING_LITERAL(TMP4025, "throw NimException($1, $2);$n", 29);
STRING_LITERAL(TMP4026, "#raiseException((#Exception*)$1, $2);$n", 39);
STRING_LITERAL(TMP4027, "#raiseException((#E_Base*)$1, $2);$n", 36);
STRING_LITERAL(TMP4028, "#reraiseException();$n", 22);
STRING_LITERAL(TMP4029, "bp", 2);
STRING_LITERAL(TMP4030, "#dbgRegisterBreakpoint($1, (NCSTRING)$2, (NCSTRING)$3);$n", 57);
STRING_LITERAL(TMP4031, "#dbgRegisterWatchpoint($1, (NCSTRING)$2, $3);$n", 47);
STRING_LITERAL(TMP4032, "#pragma omp parallel for $4$nfor ($1 = $2; $1 <= $3; ++$1)", 58);
STRING_LITERAL(TMP4034, "compiler/ccgstmts.nim", 21);
NIM_CONST TY84745 TMP4033 = {((NimStringDesc*) &TMP4034),
146}
;
STRING_LITERAL(TMP4035, "STATE$1: ;$n", 12);
STRING_LITERAL(TMP4036, "case -1: goto BeforeRet;$n", 26);
STRING_LITERAL(TMP4037, "case $1: goto STATE$1;$n", 24);
STRING_LITERAL(TMP4038, "if (((NI*) $1)[0] < 0) break;$n", 31);
STRING_LITERAL(TMP4039, "if ((((NI*) $1.ClEnv)[0]) < 0) break;$n", 39);
STRING_LITERAL(TMP4040, "); unknown node kind", 20);
NIM_CONST TY84745 TMP4041 = {((NimStringDesc*) &TMP4034),
1056}
;
STRING_LITERAL(TMP4042, "__declspec(naked) ", 18);
STRING_LITERAL(TMP4043, "$N$1 {$n$2$3$4}$N$N", 19);
STRING_LITERAL(TMP4044, "$N$1 {$N", 8);
STRING_LITERAL(TMP4045, "struct {$1} GCFRAME;$n", 22);
STRING_LITERAL(TMP4046, "nimFrame", 8);
STRING_LITERAL(TMP4047, "TVarSlot", 8);
STRING_LITERAL(TMP4048, "\011nimfrs($1, $2, $3, $4)$N", 25);
STRING_LITERAL(TMP4049, "\011nimfr($1, $2)$N", 16);
STRING_LITERAL(TMP4050, "\011#nimProfile();$n", 17);
STRING_LITERAL(TMP4051, "\011BeforeRet: ;$n", 15);
STRING_LITERAL(TMP4052, "if (((NU)&GCFRAME) < 4096) #nimGCFrame(&GCFRAME);$n", 51);
STRING_LITERAL(TMP4053, "\011#popFrame();$n", 15);
STRING_LITERAL(TMP4054, "}$N", 3);
STRING_LITERAL(TMP4055, "\011$1 = ($2) ($3$4));$n", 21);
NIM_CONST TY84745 TMP4056 = {((NimStringDesc*) &TMP3353),
669}
;
STRING_LITERAL(TMP4057, "wrong index: ", 13);
STRING_LITERAL(TMP4058, "\011$1 = ($2) #nimGetProcAddr($3, $4);$n", 37);
STRING_LITERAL(TMP4059, "$2 $1;$n", 8);
STRING_LITERAL(TMP4060, "$1 = linkonce global $2 zeroinitializer$n", 41);
STRING_LITERAL(TMP4061, "cgsym: ", 7);
STRING_LITERAL(TMP4062, "added pending module twice: ", 28);
STRING_LITERAL(TMP4063, ".h", 2);
STRING_LITERAL(TMP4073, ".cpp", 4);
STRING_LITERAL(TMP4074, ".m", 2);
STRING_LITERAL(TMP4075, ".c", 2);
STRING_LITERAL(TMP4076, "Init", 4);
STRING_LITERAL(TMP4077, "DatInit", 7);
STRING_LITERAL(TMP4078, "NIM_EXTERNC N_NOINLINE(void, $1)(void);$N", 41);
STRING_LITERAL(TMP4079, "declare void $1() noinline$N", 28);
STRING_LITERAL(TMP4080, "\011$1();$N", 8);
STRING_LITERAL(TMP4081, "call void ()* $1$n", 18);
STRING_LITERAL(TMP4084, "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(TMP4085, "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(TMP4086, "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(TMP4087, "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(TMP4088, "<windows.h>", 11);
STRING_LITERAL(TMP4089, "void NIM_POSIX_INIT NimMainInit(void) {$N\011NimMain();$N}$N$N", 59);
STRING_LITERAL(TMP4090, "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(TMP4091, "int main(void) {$N\011NimMain();$N\011return 0;$N}$N$N", 48);
STRING_LITERAL(TMP4092, "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(TMP4093, "dbgRegisterBreakpoint", 21);
STRING_LITERAL(TMP4094, "dbgRegisterFilename", 19);
STRING_LITERAL(TMP4095, "dbgRegisterFilename($1);$N", 26);
STRING_LITERAL(TMP4096, "\011#initStackBottomWith((void *)&inner);$N", 40);
STRING_LITERAL(TMP4097, "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(TMP4098, "\011#initThreadVarsEmulation();$N", 30);
STRING_LITERAL(TMP4142, "still forwarded: ", 17);
STRING_LITERAL(TMP4168, "NIM_EXTERNC N_NOINLINE(void, $1)(void) {$N", 42);
STRING_LITERAL(TMP4169, "define void $1() noinline {$n", 29);
STRING_LITERAL(TMP4170, "static #TNimNode $1[$2];$n", 26);
STRING_LITERAL(TMP4171, "static #TNimType $1[$2];$n", 26);
STRING_LITERAL(TMP4174, "\011TFrame F; F.len = 0;$N", 23);
STRING_LITERAL(TMP4175, "}$N$N", 5);
STRING_LITERAL(TMP4176, "N_NIMCALL(void, nimLoadProcs$1)(void) {$2}$N$N", 46);
STRING_LITERAL(TMP4177, "/* 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(TMP4178, "; Generated by Nim Compiler v$1$N;   (c) 2012 Andreas Rumpf$N", 61);
STRING_LITERAL(TMP4179, "0.10.2", 6);
STRING_LITERAL(TMP4180, "/* 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(TMP4181, "; 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 TY175070 os_175069;
extern NIM_CONST TY175481 cpu_175480;
STRING_LITERAL(TMP4182, "#define NIM_INTBITS $1", 22);
STRING_LITERAL(TMP4190, "#include \"nimbase.h\"", 20);
STRING_LITERAL(TMP4191, "$N#include \"$1\"$N", 17);
STRING_LITERAL(TMP4192, "$N#include $1$N", 15);
STRING_LITERAL(TMP4193, "typedef struct {$1} NimThreadVars;$n", 36);
STRING_LITERAL(TMP4195, "extern \"C\"", 10);
STRING_LITERAL(TMP4196, "$#NI NimThreadVarsSize(){return (NI)sizeof(NimThreadVars);}$n", 61);
STRING_LITERAL(TMP4206, "__$1__", 6);
STRING_LITERAL(TMP4207, "#ifndef $1$n#define $1$n", 24);
STRING_LITERAL(TMP4208, "N_CDECL(void, NimMain)(void);$n", 31);
STRING_LITERAL(TMP4209, "#endif /* $1 */$n", 17);
tcgen550035* generatedheader_553201;
trope178009* indent_554045;
extern tgcheap47016 gch_47044;
trope178009* nimtv_561729;
ttypeseq226848* nimtvdeps_561751;
extern TNimType NTI226848; /* TTypeSeq */
intset223056 nimtvdeclared_561752;
extern TNimType NTI223056; /* IntSet */
NI breakpointid_574071;
trope178009* gbreakpoints_574072;
extern TY550150* gmodules_550171;
extern TNimType NTI550025; /* BModule */
extern TNimType NTI550035; /* TCGen */
extern NU32 goptions_170116;
extern TNimType NTI226818; /* TSymSeq */
extern trope178009* rnl_179454;
extern NU8 gcmd_170120;
extern NI gforwardedprocscounter_550172;
extern TNimType NTI226258; /* TTypeKind */
extern NI floatsize_175611;
extern NU8 ccompiler_203461;
extern NimStringDesc* tnl_175613;
extern NU8 gselectedgc_170121;
extern NI gbackendid_225013;
extern TNimType NTI226029; /* TNodeKind */
extern TNimType NTI226830; /* TLoc */
extern NU32 gglobaloptions_170118;
extern TNimType NTI226445; /* TSymKind */
extern NI intsize_175610;
extern TNimType NTI226532; /* TMagic */
extern TNimType NTI119808; /* seq[string] */
extern NI gverbosity_170127;
extern TNimType NTI196552; /* seq[PRope] */
extern TNimType NTI226810; /* TNodeSeq */
extern NimStringDesc* headerfile_170126;
extern NimStringDesc* gprojectfull_170236;
extern NI gerrorcounter_197306;
extern trope178009* mainmodprocs_550145;
extern trope178009* maindatinit_550148;
extern trope178009* mainmodinit_550146;
extern trope178009* othermodsinit_550147;
extern NU8 targetos_175589;
extern TY196621* fileinfos_196642;
extern NU8 targetcpu_175587;
extern trope178009* gmapping_550149;

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

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

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

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

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

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

static N_INLINE(void, rtladdcycleroot_49429)(tcell44933* 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)(tcell44933* c) {
	(*c).Refcount = (NI)((NU32)((*c).Refcount) + (NU32)(8));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_48667(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_49429(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_50604)(tcell44933* c) {
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(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) {
	{
		tcell44933* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_48646(src);
		incref_51025(LOC5);
	}
	LA3: ;
	{
		tcell44933* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_48646((*dest));
		decref_50604(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

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

N_NIMCALL(tcproc550031*, newpreinitproc_592039)(tcgen550035* m) {
	tcproc550031* result;
	result = 0;
	result = newproc_550230(NIM_NIL, m);
	(*result).Labels = 100000;
	return result;
}

N_NIMCALL(tcproc550031*, newpostinitproc_592050)(tcgen550035* m) {
	tcproc550031* result;
	result = 0;
	result = newproc_550230(NIM_NIL, m);
	(*result).Labels = 200000;
	return result;
}

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

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

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

N_NIMCALL(void, fillloc_553376)(tloc226830* a, NU8 k, ttype226852* typ, trope178009* r, NU8 s) {
	{
		if (!((*a).K == ((NU8) 0))) goto LA3;
		(*a).K = k;
		unsureAsgnRef((void**) (&(*a).T), getuniquetype_549401(typ));
		(*a).S = s;
		{
			if (!((*a).R == NIM_NIL)) goto LA7;
			unsureAsgnRef((void**) (&(*a).R), r);
		}
		LA7: ;
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, iskeyword_554651)(tident201021* 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(trope178009*, manglename_554667)(tsym226846* s) {
	trope178009* 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_170120 == ((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):
			{
				TY554703 LOC10;
				memset((void*)LOC10, 0, sizeof(LOC10));
				result = ropef_178107(((NimStringDesc*) &TMP3360), LOC10, 0);
			}
			break;
			case ((NU8) 8):
			case ((NU8) 21):
			case ((NU8) 11):
			case ((NU8) 9):
			{
				{
					TY554703 LOC16;
					if (!(((*s).Flags &(1<<((((NU8) 3))&31)))!=0)) goto LA14;
					memset((void*)LOC16, 0, sizeof(LOC16));
					result = ropef_178107(((NimStringDesc*) &TMP3360), LOC16, 0);
				}
				goto LA12;
				LA14: ;
				{
					TY554703 LOC18;
					memset((void*)LOC18, 0, sizeof(LOC18));
					result = ropef_178107(((NimStringDesc*) &TMP3361), LOC18, 0);
				}
				LA12: ;
			}
			break;
			case ((NU8) 5):
			case ((NU8) 3):
			case ((NU8) 7):
			case ((NU8) 20):
			case ((NU8) 6):
			{
				TY554703 LOC20;
				memset((void*)LOC20, 0, sizeof(LOC20));
				result = ropef_178107(((NimStringDesc*) &TMP3361), LOC20, 0);
			}
			break;
			default:
			{
				internalerror_198987((*s).Info, ((NimStringDesc*) &TMP3362));
			}
			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_554651((*s).Name);
		LOC22 = !(LOC26);
		LA25: ;
		keeporigname = LOC22;
		{
			NimStringDesc* LOC31;
			if (!keeporigname) goto LA29;
			LOC31 = 0;
			LOC31 = mangle_549763((*(*s).Name).S);
			result = newrope_178176(LOC31);
		}
		goto LA27;
		LA29: ;
		{
			NimStringDesc* LOC33;
			trope178009* LOC34;
			TY554703 LOC35;
			trope178009* LOC36;
			trope178009* LOC37;
			LOC33 = 0;
			LOC33 = mangle_549763((*(*s).Name).S);
			LOC34 = 0;
			LOC34 = newrope_178176(LOC33);
			app_178052(&result, LOC34);
			memset((void*)LOC35, 0, sizeof(LOC35));
			LOC36 = 0;
			LOC36 = ropef_178107(((NimStringDesc*) &TMP3365), LOC35, 0);
			app_178052(&result, LOC36);
			LOC37 = 0;
			LOC37 = torope_178082(((NI64) ((*s).Sup.Id)));
			app_178052(&result, LOC37);
		}
		LA27: ;
		asgnRefNoCycle((void**) (&(*s).Loc.R), result);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, fillprocloc_562229)(tsym226846* sym) {
	{
		trope178009* LOC5;
		if (!((*sym).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_554667(sym);
		fillloc_553376((&(*sym).Loc), ((NU8) 8), (*sym).Typ, LOC5, ((NU8) 1));
	}
	LA3: ;
}

N_NIMCALL(void, addforwardedproc_553251)(tcgen550035* m, tsym226846* prc) {
	(*m).Forwardedprocs = (tsymseq226818*) incrSeq(&((*m).Forwardedprocs)->Sup, sizeof(tsym226846*));
	asgnRefNoCycle((void**) (&(*m).Forwardedprocs->data[(*m).Forwardedprocs->Sup.len-1]), prc);
	gforwardedprocscounter_550172 += 1;
}

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

N_NIMCALL(trope178009*, typename_554883)(ttype226852* typ) {
	trope178009* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!!(((*typ).Sym == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = mangle_549763((*(*(*typ).Sym).Name).S);
		result = torope_178076(LOC5);
	}
	goto LA1;
	LA3: ;
	{
		TY554703 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		result = ropef_178107(((NimStringDesc*) &TMP3369), LOC7, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, gettypename_554914)(ttype226852* typ) {
	trope178009* 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_170120 == ((NU8) 5)));
		LA6: ;
		if (!LOC3) goto LA7;
		result = (*(*typ).Sym).Loc.R;
	}
	goto LA1;
	LA7: ;
	{
		{
			if (!((*typ).Loc.R == NIM_NIL)) goto LA12;
			{
				trope178009* LOC18;
				trope178009* LOC19;
				if (!!((gcmd_170120 == ((NU8) 5)))) goto LA16;
				LOC18 = 0;
				LOC18 = typename_554883(typ);
				LOC19 = 0;
				LOC19 = torope_178082(((NI64) ((*typ).Sup.Id)));
				asgnRefNoCycle((void**) (&(*typ).Loc.R), con_178024(LOC18, LOC19));
			}
			goto LA14;
			LA16: ;
			{
				TY555018 LOC21;
				TY554703 LOC22;
				memset((void*)LOC21, 0, sizeof(LOC21));
				memset((void*)LOC22, 0, sizeof(LOC22));
				LOC21[0] = ropef_178107(((NimStringDesc*) &TMP3361), LOC22, 0);
				LOC21[1] = typename_554883(typ);
				LOC21[2] = torope_178082(((NI64) ((*typ).Sup.Id)));
				asgnRefNoCycle((void**) (&(*typ).Loc.R), con_178045(LOC21, 3));
			}
			LA14: ;
		}
		LA12: ;
		result = (*typ).Loc.R;
	}
	LA1: ;
	{
		NimStringDesc* LOC27;
		if (!(result == NIM_NIL)) goto LA25;
		LOC27 = 0;
		LOC27 = rawNewString(reprEnum((*typ).Kind, (&NTI226258))->Sup.len + 13);
appendString(LOC27, ((NimStringDesc*) &TMP3370));
appendString(LOC27, reprEnum((*typ).Kind, (&NTI226258)));
		internalerror_199006(LOC27);
	}
	LA25: ;
	return result;
}

N_NIMCALL(trope178009*, typenameorliteral_556038)(ttype226852* t, NimStringDesc* literal) {
	trope178009* 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_554914(t);
	}
	goto LA1;
	LA7: ;
	{
		result = torope_178076(literal);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, getsimpletypedesc_556085)(tcgen550035* m, ttype226852* typ) {
	trope178009* result;
	result = 0;
	switch ((*typ).Kind) {
	case ((NU8) 26):
	{
		result = typenameorliteral_556038(typ, ((NimStringDesc*) &TMP3371));
	}
	break;
	case ((NU8) 14):
	{
		{
			NI64 LOC5;
			LOC5 = 0;
			LOC5 = firstord_264004(typ);
			if (!(LOC5 < IL64(0))) goto LA6;
			result = typenameorliteral_556038(typ, ((NimStringDesc*) &TMP3372));
		}
		goto LA3;
		LA6: ;
		{
			NI64 LOC9;
			LOC9 = 0;
			LOC9 = getsize_264199(typ);
			switch (((NI) (LOC9))) {
			case 1:
			{
				result = typenameorliteral_556038(typ, ((NimStringDesc*) &TMP3373));
			}
			break;
			case 2:
			{
				result = typenameorliteral_556038(typ, ((NimStringDesc*) &TMP3374));
			}
			break;
			case 4:
			{
				result = typenameorliteral_556038(typ, ((NimStringDesc*) &TMP3372));
			}
			break;
			case 8:
			{
				result = typenameorliteral_556038(typ, ((NimStringDesc*) &TMP3375));
			}
			break;
			default:
			{
				NimStringDesc* LOC15;
				NI64 LOC16;
				NimStringDesc* LOC17;
				LOC15 = 0;
				LOC16 = 0;
				LOC16 = getsize_264199(typ);
				LOC17 = 0;
				LOC17 = nimInt64ToStr(LOC16);
				LOC15 = rawNewString(LOC17->Sup.len + 19);
appendString(LOC15, ((NimStringDesc*) &TMP3376));
appendString(LOC15, LOC17);
				internalerror_198987((*(*typ).Sym).Info, LOC15);
				result = NIM_NIL;
			}
			break;
			}
		}
		LA3: ;
	}
	break;
	case ((NU8) 28):
	{
		trope178009* LOC19;
		LOC19 = 0;
		LOC19 = cgsym_553608(m, ((NimStringDesc*) &TMP3377));
		result = typenameorliteral_556038(typ, ((NimStringDesc*) &TMP3378));
	}
	break;
	case ((NU8) 29):
	{
		result = typenameorliteral_556038(typ, ((NimStringDesc*) &TMP3379));
	}
	break;
	case ((NU8) 1):
	{
		result = typenameorliteral_556038(typ, ((NimStringDesc*) &TMP3380));
	}
	break;
	case ((NU8) 2):
	{
		result = typenameorliteral_556038(typ, ((NimStringDesc*) &TMP3381));
	}
	break;
	case ((NU8) 5):
	{
		result = typenameorliteral_556038(typ, ((NimStringDesc*) &TMP3382));
	}
	break;
	case ((NU8) 31) ... ((NU8) 44):
	{
		result = typenameorliteral_556038(typ, numericaltypetostr_556090[((*typ).Kind)- 31]);
	}
	break;
	case ((NU8) 13):
	case ((NU8) 20):
	{
		result = getsimpletypedesc_556085(m, (*typ).Sons->data[0]);
	}
	break;
	default:
	{
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(trope178009*, cachegettype_555234)(tidtable226864 tab, ttype226852* key) {
	trope178009* result;
	tidobj201015* LOC1;
	TNimObject* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = &key->Sup;
	LOC2 = 0;
	LOC2 = idtableget_236182(tab, LOC1);
	result = ((trope178009*) (LOC2));
	return result;
}

N_NIMCALL(trope178009*, gettypepre_556100)(tcgen550035* m, ttype226852* typ) {
	trope178009* result;
	result = 0;
	{
		if (!(typ == NIM_NIL)) goto LA3;
		result = torope_178076(((NimStringDesc*) &TMP3368));
	}
	goto LA1;
	LA3: ;
	{
		result = getsimpletypedesc_556085(m, typ);
		{
			if (!(result == NIM_NIL)) goto LA8;
			result = cachegettype_555234((*m).Typecache, typ);
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

static N_INLINE(NI, sonslen_227255)(ttype226852* 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(ttype226852*, lastson_227267)(ttype226852* n) {
	ttype226852* result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = sonslen_227255(n);
	result = (*n).Sons->data[(NI32)(LOC1 - 1)];
	return result;
}

N_NIMCALL(NIM_BOOL, isimportedtype_556001)(ttype226852* 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_556162)(tcgen550035* m) {
	NimStringDesc* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_170120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		result = copyString(((NimStringDesc*) &TMP3394));
	}
	goto LA1;
	LA5: ;
	{
		result = copyString(((NimStringDesc*) &TMP3395));
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, structorunion_556142)(ttype226852* t) {
	trope178009* result;
	result = 0;
	{
		if (!(((*t).Flags &(1<<((((NU8) 1))&31)))!=0)) goto LA3;
		result = torope_178076(((NimStringDesc*) &TMP3396));
	}
	goto LA1;
	LA3: ;
	{
		result = torope_178076(((NimStringDesc*) &TMP3397));
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, gettypeforward_556191)(tcgen550035* m, ttype226852* typ) {
	trope178009* result;
	result = 0;
	result = cachegettype_555234((*m).Forwtypecache, typ);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = gettypepre_556100(m, typ);
	{
		if (!!((result == NIM_NIL))) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	switch ((*typ).Kind) {
	case ((NU8) 24):
	case ((NU8) 18):
	case ((NU8) 17):
	{
		tidobj201015* LOC17;
		TNimObject* LOC18;
		result = gettypename_554914(typ);
		{
			NIM_BOOL LOC12;
			NimStringDesc* LOC15;
			TY589896 LOC16;
			LOC12 = 0;
			LOC12 = isimportedtype_556001(typ);
			if (!!(LOC12)) goto LA13;
			LOC15 = 0;
			LOC15 = getforwardstructformat_556162(m);
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = structorunion_556142(typ);
			LOC16[1] = result;
			appf_178115(&(*m).S[(((NU8) 2))- 0], LOC15, LOC16, 2);
		}
		LA13: ;
		LOC17 = 0;
		LOC17 = &typ->Sup;
		LOC18 = 0;
		LOC18 = &result->Sup;
		idtableput_236196((&(*m).Forwtypecache), LOC17, LOC18);
	}
	break;
	default:
	{
		NimStringDesc* LOC20;
		LOC20 = 0;
		LOC20 = rawNewString(reprEnum((*typ).Kind, (&NTI226258))->Sup.len + 16);
appendString(LOC20, ((NimStringDesc*) &TMP3398));
appendString(LOC20, reprEnum((*typ).Kind, (&NTI226258)));
appendChar(LOC20, 41);
		internalerror_199006(LOC20);
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, pushtype_556915)(tcgen550035* m, ttype226852* typ) {
	(*m).Typestack = (ttypeseq226848*) incrSeq(&((*m).Typestack)->Sup, sizeof(ttype226852*));
	asgnRefNoCycle((void**) (&(*m).Typestack->data[(*m).Typestack->Sup.len-1]), typ);
}

N_NIMCALL(NU8, mapsettype_555047)(ttype226852* typ) {
	NU8 result;
	NI64 LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getsize_264199(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_555054)(ttype226852* 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_555047(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):
	{
		ttype226852* LOC8;
		LOC8 = 0;
		LOC8 = lastson_227267(typ);
		result = maptype_555054(LOC8);
	}
	break;
	case ((NU8) 14):
	{
		{
			NI64 LOC12;
			LOC12 = 0;
			LOC12 = firstord_264004(typ);
			if (!(LOC12 < IL64(0))) goto LA13;
			result = ((NU8) 6);
		}
		goto LA10;
		LA13: ;
		{
			NI64 LOC16;
			LOC16 = 0;
			LOC16 = getsize_264199(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_199006(((NimStringDesc*) &TMP3401));
			}
			break;
			}
		}
		LA10: ;
	}
	break;
	case ((NU8) 20):
	{
		result = maptype_555054((*typ).Sons->data[0]);
	}
	break;
	case ((NU8) 21):
	case ((NU8) 23):
	case ((NU8) 22):
	{
		ttype226852* base;
		ttype226852* LOC24;
		LOC24 = 0;
		LOC24 = lastson_227267(typ);
		base = skiptypes_231245(LOC24, IL64(211106232576256));
		switch ((*base).Kind) {
		case ((NU8) 27):
		case ((NU8) 4):
		case ((NU8) 16):
		case ((NU8) 48):
		{
			result = ((NU8) 18);
		}
		break;
		default:
		{
			result = ((NU8) 20);
		}
		break;
		}
	}
	break;
	case ((NU8) 26):
	{
		result = ((NU8) 20);
	}
	break;
	case ((NU8) 24):
	{
		result = ((NU8) 22);
	}
	break;
	case ((NU8) 25):
	{
		{
			if (!!(((*typ).Callconv == ((NU8) 8)))) goto LA32;
			result = ((NU8) 23);
		}
		goto LA30;
		LA32: ;
		{
			result = ((NU8) 19);
		}
		LA30: ;
	}
	break;
	case ((NU8) 28):
	{
		result = ((NU8) 21);
	}
	break;
	case ((NU8) 29):
	{
		result = ((NU8) 24);
	}
	break;
	case ((NU8) 31) ... ((NU8) 44):
	{
		result = ((NU8) ((NI32)(((NI) ((NI32)(((NI) ((*typ).Kind)) - 31))) + 3)));
	}
	break;
	default:
	{
		internalerror_199006(((NimStringDesc*) &TMP3401));
	}
	break;
	}
	return result;
}

N_NIMCALL(NIM_BOOL, needscomplexassignment_555121)(ttype226852* typ) {
	NIM_BOOL result;
	result = 0;
	result = containsgarbagecollectedref_264163(typ);
	return result;
}

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

N_NIMCALL(NIM_BOOL, isinvalidreturntype_555174)(ttype226852* rettype) {
	NIM_BOOL result;
	result = 0;
	{
		if (!(rettype == NIM_NIL)) goto LA3;
		result = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		NU8 LOC6;
		LOC6 = 0;
		LOC6 = maptype_555054(rettype);
		switch (LOC6) {
		case ((NU8) 17):
		{
			ttype226852* LOC8;
			LOC8 = 0;
			LOC8 = skiptypes_231245(rettype, IL64(211106232576256));
			result = !(((*LOC8).Kind == ((NU8) 23) || (*LOC8).Kind == ((NU8) 22) || (*LOC8).Kind == ((NU8) 21)));
		}
		break;
		case ((NU8) 19):
		{
			ttype226852* t;
			NIM_BOOL LOC10;
			NIM_BOOL LOC12;
			NIM_BOOL LOC14;
			t = skiptypes_231245(rettype, IL64(211106232576256));
			LOC10 = 0;
			LOC10 = needscomplexassignment_555121(t);
			if (LOC10) goto LA11;
			LOC12 = 0;
			LOC12 = ((*t).Kind == ((NU8) 17));
			if (!(LOC12)) goto LA13;
			LOC14 = 0;
			LOC14 = isobjlackingtypefield_555128(t);
			LOC12 = !(LOC14);
			LA13: ;
			LOC10 = LOC12;
			LA11: ;
			result = LOC10;
		}
		break;
		default:
		{
			result = NIM_FALSE;
		}
		break;
		}
	}
	LA1: ;
	return result;
}

static N_INLINE(NI, sonslen_227249)(tnode226816* 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_274466)(ttype226852* t) {
	NIM_BOOL result;
	result = 0;
	result = ((*t).Kind == ((NU8) 8) || (*t).Kind == ((NU8) 59));
	return result;
}

N_NIMCALL(NU8, paramstorageloc_555604)(tsym226846* param) {
	NU8 result;
	result = 0;
	{
		ttype226852* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_231245((*param).Typ, 8388864);
		if (!!(((*LOC3).Kind == ((NU8) 16) || (*LOC3).Kind == ((NU8) 27)))) goto LA4;
		result = ((NU8) 1);
	}
	goto LA1;
	LA4: ;
	{
		result = ((NU8) 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, getparamtypedesc_555527)(tcgen550035* m, ttype226852* t, intset223056* check) {
	trope178009* result;
	result = 0;
	result = gettypedescaux_555115(m, t, check);
	return result;
}

N_NIMCALL(NIM_BOOL, ccgintroducedptr_555262)(tsym226846* s) {
	NIM_BOOL result;
	ttype226852* pt;
	result = 0;
	pt = skiptypes_231245((*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_264199(pt);
			LOC11 = (((NI64) ((NI32)(floatsize_175611 * 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_264199(pt);
		LOC23 = (((NI64) ((NI32)(floatsize_175611 * 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_553228)(trope178009** dest, NimStringDesc* cformat, NimStringDesc* llvmformat, trope178009** args, NI argsLen0) {
	{
		if (!(gcmd_170120 == ((NU8) 5))) goto LA3;
		appf_178115(dest, llvmformat, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		appf_178115(dest, cformat, args, argsLen0);
	}
	LA1: ;
}

N_NIMCALL(NU8, mapreturntype_555099)(ttype226852* typ) {
	NU8 result;
	result = 0;
	{
		ttype226852* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_231245(typ, IL64(211106232576256));
		if (!((*LOC3).Kind == ((NU8) 16))) goto LA4;
		result = ((NU8) 20);
	}
	goto LA1;
	LA4: ;
	{
		result = maptype_555054(typ);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genprocparams_555626)(tcgen550035* m, ttype226852* t, trope178009** rettype, trope178009** params, intset223056* check, NIM_BOOL declareenvironment) {
	unsureAsgnRef((void**) (&(*params)), NIM_NIL);
	{
		NIM_BOOL LOC3;
		TY554703 LOC7;
		LOC3 = 0;
		LOC3 = ((*t).Sons->data[0] == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = isinvalidreturntype_555174((*t).Sons->data[0]);
		LA4: ;
		if (!LOC3) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		unsureAsgnRef((void**) (&(*rettype)), ropef_178107(((NimStringDesc*) &TMP3368), LOC7, 0));
	}
	goto LA1;
	LA5: ;
	{
		unsureAsgnRef((void**) (&(*rettype)), gettypedescaux_555115(m, (*t).Sons->data[0], check));
	}
	LA1: ;
	{
		NI i_555672;
		NI HEX3Atmp_555975;
		NI LOC10;
		NI res_555978;
		i_555672 = 0;
		HEX3Atmp_555975 = 0;
		LOC10 = 0;
		LOC10 = sonslen_227249((*t).N);
		HEX3Atmp_555975 = (NI32)(LOC10 - 1);
		res_555978 = 1;
		{
			while (1) {
				if (!(res_555978 <= HEX3Atmp_555975)) goto LA12;
				i_555672 = res_555978;
				{
					tsym226846* param;
					trope178009* LOC29;
					NU8 LOC30;
					trope178009* LOC31;
					TY554703 LOC39;
					trope178009* LOC40;
					ttype226852* arr;
					NI j;
					{
						if (!!(((*(*(*t).N).kindU.S6.Sons->data[i_555672]).Kind == ((NU8) 3)))) goto LA16;
						internalerror_198987((*(*t).N).Info, ((NimStringDesc*) &TMP3402));
					}
					LA16: ;
					param = (*(*(*t).N).kindU.S6.Sons->data[i_555672]).kindU.S4.Sym;
					{
						NIM_BOOL LOC20;
						LOC20 = 0;
						LOC20 = iscompiletimeonly_274466((*param).Typ);
						if (!LOC20) goto LA21;
						goto LA13;
					}
					LA21: ;
					{
						TY554703 LOC27;
						trope178009* LOC28;
						if (!!(((*params) == NIM_NIL))) goto LA25;
						memset((void*)LOC27, 0, sizeof(LOC27));
						LOC28 = 0;
						LOC28 = ropef_178107(((NimStringDesc*) &TMP3403), LOC27, 0);
						app_178052(params, LOC28);
					}
					LA25: ;
					LOC29 = 0;
					LOC29 = manglename_554667(param);
					LOC30 = 0;
					LOC30 = paramstorageloc_555604(param);
					fillloc_553376((&(*param).Loc), ((NU8) 4), (*param).Typ, LOC29, LOC30);
					LOC31 = 0;
					LOC31 = getparamtypedesc_555527(m, (*param).Typ, check);
					app_178052(params, LOC31);
					{
						NIM_BOOL LOC34;
						TY554703 LOC37;
						trope178009* LOC38;
						LOC34 = 0;
						LOC34 = ccgintroducedptr_555262(param);
						if (!LOC34) goto LA35;
						memset((void*)LOC37, 0, sizeof(LOC37));
						LOC38 = 0;
						LOC38 = ropef_178107(((NimStringDesc*) &TMP3399), LOC37, 0);
						app_178052(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_178107(((NimStringDesc*) &TMP3404), LOC39, 0);
					app_178052(params, LOC40);
					app_178052(params, (*param).Loc.R);
					arr = (*param).Typ;
					{
						if (!((*arr).Kind == ((NU8) 23))) goto LA43;
						arr = (*arr).Sons->data[0];
					}
					LA43: ;
					j = 0;
					{
						while (1) {
							TY589896 LOC51;
							if (!((*arr).Kind == ((NU8) 27) || (*arr).Kind == ((NU8) 48))) 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_178082(((NI64) (j)));
							appff_553228(params, ((NimStringDesc*) &TMP3405), ((NimStringDesc*) &TMP3406), LOC51, 2);
							j += 1;
							arr = (*arr).Sons->data[0];
						} LA46: ;
					}
				} LA13: ;
				res_555978 += 1;
			} LA12: ;
		}
	}
	{
		NIM_BOOL LOC54;
		ttype226852* arr;
		trope178009* LOC62;
		TY554703 LOC70;
		LOC54 = 0;
		LOC54 = !(((*t).Sons->data[0] == NIM_NIL));
		if (!(LOC54)) goto LA55;
		LOC54 = isinvalidreturntype_555174((*t).Sons->data[0]);
		LA55: ;
		if (!LOC54) goto LA56;
		arr = (*t).Sons->data[0];
		{
			if (!!(((*params) == NIM_NIL))) goto LA60;
			app_178060(params, ((NimStringDesc*) &TMP3403));
		}
		LA60: ;
		LOC62 = 0;
		LOC62 = gettypedescaux_555115(m, arr, check);
		app_178052(params, LOC62);
		{
			NIM_BOOL LOC65;
			NU8 LOC66;
			LOC65 = 0;
			LOC66 = 0;
			LOC66 = mapreturntype_555099((*t).Sons->data[0]);
			LOC65 = !((LOC66 == ((NU8) 17)));
			if (LOC65) goto LA67;
			LOC65 = (gcmd_170120 == ((NU8) 5));
			LA67: ;
			if (!LOC65) goto LA68;
			app_178060(params, ((NimStringDesc*) &TMP3399));
		}
		LA68: ;
		memset((void*)LOC70, 0, sizeof(LOC70));
		appff_553228(params, ((NimStringDesc*) &TMP3407), ((NimStringDesc*) &TMP3408), 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_178060(params, ((NimStringDesc*) &TMP3403));
		}
		LA79: ;
		app_178060(params, ((NimStringDesc*) &TMP3409));
	}
	LA75: ;
	{
		if (!(((*t).Flags &(1<<((((NU8) 0))&31)))!=0)) goto LA83;
		{
			if (!!(((*params) == NIM_NIL))) goto LA87;
			app_178060(params, ((NimStringDesc*) &TMP3403));
		}
		LA87: ;
		app_178060(params, ((NimStringDesc*) &TMP3410));
	}
	LA83: ;
	{
		NIM_BOOL LOC91;
		LOC91 = 0;
		LOC91 = ((*params) == NIM_NIL);
		if (!(LOC91)) goto LA92;
		LOC91 = !((gcmd_170120 == ((NU8) 5)));
		LA92: ;
		if (!LOC91) goto LA93;
		app_178060(params, ((NimStringDesc*) &TMP3411));
	}
	goto LA89;
	LA93: ;
	{
		app_178060(params, ((NimStringDesc*) &TMP3412));
	}
	LA89: ;
	unsureAsgnRef((void**) (&(*params)), con_178038(((NimStringDesc*) &TMP3413), (*params)));
}

N_NIMCALL(void, appcg_554004)(tcgen550035* m, trope178009** c, NimStringDesc* frmt, trope178009** args, NI argsLen0) {
	trope178009* LOC1;
	LOC1 = 0;
	LOC1 = ropecg_553615(m, frmt, args, argsLen0);
	app_178052(c, LOC1);
}

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

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

N_NIMCALL(trope178009*, manglerecfieldname_556246)(tsym226846* field, ttype226852* rectype) {
	trope178009* 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_554644((*(*field).Name).S);
		result = torope_178076(LOC8);
	}
	LA1: ;
	{
		if (!(result == NIM_NIL)) goto LA11;
		internalerror_198987((*field).Info, ((NimStringDesc*) &TMP3442));
	}
	LA11: ;
	return result;
}

N_NIMCALL(trope178009*, genrecordfieldsaux_556325)(tcgen550035* m, tnode226816* n, trope178009* accessexpr, ttype226852* rectype, intset223056* check) {
	trope178009* result;
	trope178009* ae;
	trope178009* uname;
	trope178009* sname;
	trope178009* a;
	tnode226816* k;
	tsym226846* 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_556352;
			NI HEX3Atmp_556625;
			NI LOC3;
			NI res_556628;
			i_556352 = 0;
			HEX3Atmp_556625 = 0;
			LOC3 = 0;
			LOC3 = sonslen_227249(n);
			HEX3Atmp_556625 = (NI32)(LOC3 - 1);
			res_556628 = 0;
			{
				while (1) {
					trope178009* LOC6;
					if (!(res_556628 <= HEX3Atmp_556625)) goto LA5;
					i_556352 = res_556628;
					LOC6 = 0;
					LOC6 = genrecordfieldsaux_556325(m, (*n).kindU.S6.Sons->data[i_556352], accessexpr, rectype, check);
					app_178052(&result, LOC6);
					res_556628 += 1;
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 138):
	{
		trope178009* LOC12;
		NimStringDesc* LOC13;
		NimStringDesc* LOC14;
		NimStringDesc* LOC21;
		TY178515 LOC42;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA10;
			internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3435));
		}
		LA10: ;
		LOC12 = 0;
		LOC12 = genrecordfieldsaux_556325(m, (*n).kindU.S6.Sons->data[0], accessexpr, rectype, check);
		app_178052(&result, LOC12);
		LOC13 = 0;
		LOC14 = 0;
		LOC14 = mangle_549763((*(*(*(*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_178076(LOC13);
		{
			TY589896 LOC19;
			if (!!((accessexpr == NIM_NIL))) goto LA17;
			memset((void*)LOC19, 0, sizeof(LOC19));
			LOC19[0] = accessexpr;
			LOC19[1] = uname;
			ae = ropef_178107(((NimStringDesc*) &TMP3436), LOC19, 2);
		}
		goto LA15;
		LA17: ;
		{
			ae = uname;
		}
		LA15: ;
		LOC21 = 0;
		LOC21 = rawNewString(tnl_175613->Sup.len + 7);
appendString(LOC21, ((NimStringDesc*) &TMP3437));
appendString(LOC21, tnl_175613);
		app_178060(&result, LOC21);
		{
			NI i_556468;
			NI HEX3Atmp_556631;
			NI LOC23;
			NI res_556634;
			i_556468 = 0;
			HEX3Atmp_556631 = 0;
			LOC23 = 0;
			LOC23 = sonslen_227249(n);
			HEX3Atmp_556631 = (NI32)(LOC23 - 1);
			res_556634 = 1;
			{
				while (1) {
					if (!(res_556634 <= HEX3Atmp_556631)) goto LA25;
					i_556468 = res_556634;
					switch ((*(*n).kindU.S6.Sons->data[i_556468]).Kind) {
					case ((NU8) 85):
					case ((NU8) 88):
					{
						k = lastson_227261((*n).kindU.S6.Sons->data[i_556468]);
						{
							trope178009* LOC31;
							TY589896 LOC32;
							trope178009* LOC33;
							if (!!(((*k).Kind == ((NU8) 3)))) goto LA29;
							LOC31 = 0;
							LOC31 = torope_178082(((NI64) (i_556468)));
							sname = con_178038(((NimStringDesc*) &TMP3438), LOC31);
							memset((void*)LOC32, 0, sizeof(LOC32));
							LOC32[0] = ae;
							LOC32[1] = sname;
							LOC33 = 0;
							LOC33 = ropef_178107(((NimStringDesc*) &TMP3436), LOC32, 2);
							a = genrecordfieldsaux_556325(m, k, LOC33, rectype, check);
							{
								TY178515 LOC38;
								if (!!((a == NIM_NIL))) goto LA36;
								app_178060(&result, ((NimStringDesc*) &TMP3439));
								app_178052(&result, a);
								memset((void*)LOC38, 0, sizeof(LOC38));
								LOC38[0] = sname;
								appf_178115(&result, ((NimStringDesc*) &TMP3440), LOC38, 1);
							}
							LA36: ;
						}
						goto LA27;
						LA29: ;
						{
							trope178009* LOC40;
							LOC40 = 0;
							LOC40 = genrecordfieldsaux_556325(m, k, ae, rectype, check);
							app_178052(&result, LOC40);
						}
						LA27: ;
					}
					break;
					default:
					{
						internalerror_199006(((NimStringDesc*) &TMP3441));
					}
					break;
					}
					res_556634 += 1;
				} LA25: ;
			}
		}
		memset((void*)LOC42, 0, sizeof(LOC42));
		LOC42[0] = uname;
		appf_178115(&result, ((NimStringDesc*) &TMP3440), LOC42, 1);
	}
	break;
	case ((NU8) 3):
	{
		ttype226852* fieldtype;
		field = (*n).kindU.S4.Sym;
		{
			if (!((*(*field).Typ).Kind == ((NU8) 3))) goto LA46;
			goto BeforeRet;
		}
		LA46: ;
		sname = manglerecfieldname_556246(field, rectype);
		{
			TY589896 LOC52;
			if (!!((accessexpr == NIM_NIL))) goto LA50;
			memset((void*)LOC52, 0, sizeof(LOC52));
			LOC52[0] = accessexpr;
			LOC52[1] = sname;
			ae = ropef_178107(((NimStringDesc*) &TMP3436), LOC52, 2);
		}
		goto LA48;
		LA50: ;
		{
			ae = sname;
		}
		LA48: ;
		fillloc_553376((&(*field).Loc), ((NU8) 5), (*field).Typ, ae, ((NU8) 0));
		fieldtype = (*field).Loc.T;
		{
			NIM_BOOL LOC56;
			TY589896 LOC60;
			ttype226852* 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_264656(fieldtype);
			LOC60[0] = gettypedescaux_555115(m, LOC61, check);
			LOC60[1] = sname;
			appf_178115(&result, ((NimStringDesc*) &TMP3443), LOC60, 2);
		}
		goto LA54;
		LA58: ;
		{
			TY589896 LOC63;
			memset((void*)LOC63, 0, sizeof(LOC63));
			LOC63[0] = gettypedescaux_555115(m, fieldtype, check);
			LOC63[1] = sname;
			appf_178115(&result, ((NimStringDesc*) &TMP3394), LOC63, 2);
		}
		LA54: ;
	}
	break;
	default:
	{
		internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3444));
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope178009*, getrecordfields_556657)(tcgen550035* m, ttype226852* typ, intset223056* check) {
	trope178009* result;
	result = 0;
	result = genrecordfieldsaux_556325(m, (*typ).N, NIM_NIL, typ, check);
	return result;
}

N_NIMCALL(trope178009*, getrecorddesc_556667)(tcgen550035* m, ttype226852* typ, trope178009* name, intset223056* check) {
	trope178009* result;
	NIM_BOOL hasfield;
	trope178009* attribute;
	TY555018 LOC6;
	trope178009* desc;
	NimStringDesc* LOC44;
	result = 0;
	hasfield = NIM_FALSE;
	{
		if (!(((*typ).Flags &(1<<((((NU8) 21))&31)))!=0)) goto LA3;
		attribute = torope_178076(cc_203434[(ccompiler_203461)- 1].Field19);
	}
	goto LA1;
	LA3: ;
	{
		attribute = NIM_NIL;
	}
	LA1: ;
	memset((void*)LOC6, 0, sizeof(LOC6));
	LOC6[0] = structorunion_556142(typ);
	LOC6[1] = name;
	LOC6[2] = attribute;
	result = ropecg_553615(m, cc_203434[(ccompiler_203461)- 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;
				TY554703 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_554004(m, &result, ((NimStringDesc*) &TMP3431), LOC23, 0);
			}
			goto LA15;
			LA21: ;
			{
				TY589896 LOC25;
				memset((void*)LOC25, 0, sizeof(LOC25));
				LOC25[0] = name;
				LOC25[1] = attribute;
				appcg_554004(m, &result, ((NimStringDesc*) &TMP3432), LOC25, 2);
				hasfield = NIM_TRUE;
			}
			LA15: ;
		}
		goto LA11;
		LA13: ;
		{
			NIM_BOOL LOC27;
			TY178515 LOC31;
			LOC27 = 0;
			LOC27 = (gcmd_170120 == ((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_555115(m, (*typ).Sons->data[0], check);
			appcg_554004(m, &result, ((NimStringDesc*) &TMP3433), LOC31, 1);
			hasfield = NIM_TRUE;
		}
		goto LA11;
		LA29: ;
		{
			TY178515 LOC33;
			memset((void*)LOC33, 0, sizeof(LOC33));
			LOC33[0] = gettypedescaux_555115(m, (*typ).Sons->data[0], check);
			appcg_554004(m, &result, ((NimStringDesc*) &TMP3434), LOC33, 1);
			hasfield = NIM_TRUE;
		}
		LA11: ;
	}
	goto LA7;
	LA9: ;
	{
		TY178515 LOC35;
		memset((void*)LOC35, 0, sizeof(LOC35));
		LOC35[0] = name;
		appf_178115(&result, ((NimStringDesc*) &TMP3431), LOC35, 1);
	}
	LA7: ;
	desc = getrecordfields_556657(m, typ, check);
	{
		NIM_BOOL LOC38;
		TY554703 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_178115(&result, ((NimStringDesc*) &TMP3445), LOC42, 0);
	}
	goto LA36;
	LA40: ;
	{
		app_178052(&result, desc);
	}
	LA36: ;
	LOC44 = 0;
	LOC44 = rawNewString(tnl_175613->Sup.len + 2);
appendString(LOC44, ((NimStringDesc*) &TMP3446));
appendString(LOC44, tnl_175613);
	app_178060(&result, LOC44);
	return result;
}

N_NIMCALL(trope178009*, gettupledesc_556845)(tcgen550035* m, ttype226852* typ, trope178009* name, intset223056* check) {
	trope178009* result;
	TY589896 LOC1;
	trope178009* desc;
	NimStringDesc* LOC13;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = structorunion_556142(typ);
	LOC1[1] = name;
	result = ropef_178107(((NimStringDesc*) &TMP3447), LOC1, 2);
	desc = NIM_NIL;
	{
		NI i_556870;
		NI HEX3Atmp_556898;
		NI LOC3;
		NI res_556901;
		i_556870 = 0;
		HEX3Atmp_556898 = 0;
		LOC3 = 0;
		LOC3 = sonslen_227255(typ);
		HEX3Atmp_556898 = (NI32)(LOC3 - 1);
		res_556901 = 0;
		{
			while (1) {
				TY589896 LOC6;
				if (!(res_556901 <= HEX3Atmp_556898)) goto LA5;
				i_556870 = res_556901;
				memset((void*)LOC6, 0, sizeof(LOC6));
				LOC6[0] = gettypedescaux_555115(m, (*typ).Sons->data[i_556870], check);
				LOC6[1] = torope_178082(((NI64) (i_556870)));
				appf_178115(&desc, ((NimStringDesc*) &TMP3448), LOC6, 2);
				res_556901 += 1;
			} LA5: ;
		}
	}
	{
		NimStringDesc* LOC11;
		if (!(desc == NIM_NIL)) goto LA9;
		LOC11 = 0;
		LOC11 = rawNewString(tnl_175613->Sup.len + 11);
appendString(LOC11, ((NimStringDesc*) &TMP3449));
appendString(LOC11, tnl_175613);
		app_178060(&result, LOC11);
	}
	goto LA7;
	LA9: ;
	{
		app_178052(&result, desc);
	}
	LA7: ;
	LOC13 = 0;
	LOC13 = rawNewString(tnl_175613->Sup.len + 2);
appendString(LOC13, ((NimStringDesc*) &TMP3446));
appendString(LOC13, tnl_175613);
	app_178060(&result, LOC13);
	return result;
}

N_NIMCALL(trope178009*, gettypedescaux_555115)(tcgen550035* m, ttype226852* typ, intset223056* check) {
	trope178009* result;
	trope178009* name;
	trope178009* rettype;
	trope178009* desc;
	trope178009* recdesc;
	NI64 n;
	ttype226852* t;
	ttype226852* et;
	result = 0;
	name = 0;
	rettype = 0;
	desc = 0;
	recdesc = 0;
	n = 0;
	t = 0;
	et = 0;
	t = getuniquetype_549401(typ);
	{
		if (!(t == NIM_NIL)) goto LA3;
		internalerror_199006(((NimStringDesc*) &TMP3367));
	}
	LA3: ;
	{
		if (!!(((*t).Sym == NIM_NIL))) goto LA7;
		useheader_553469(m, (*t).Sym);
	}
	LA7: ;
	result = gettypepre_556100(m, t);
	{
		if (!!((result == NIM_NIL))) goto LA11;
		goto BeforeRet;
	}
	LA11: ;
	{
		NIM_BOOL LOC15;
		NimStringDesc* LOC18;
		NimStringDesc* LOC19;
		LOC15 = 0;
		LOC15 = containsorincl_223916(check, (*t).Sup.Id);
		if (!LOC15) goto LA16;
		LOC18 = 0;
		LOC19 = 0;
		LOC19 = typetostring_264031(typ, ((NU8) 0));
		LOC18 = rawNewString(LOC19->Sup.len + 28);
appendString(LOC18, ((NimStringDesc*) &TMP3393));
appendString(LOC18, LOC19);
		internalerror_199006(LOC18);
	}
	LA16: ;
	switch ((*t).Kind) {
	case ((NU8) 22):
	case ((NU8) 21):
	case ((NU8) 23):
	{
		ttype226852* LOC21;
		LOC21 = 0;
		LOC21 = lastson_227267(t);
		et = getuniquetype_549401(LOC21);
		{
			ttype226852* LOC26;
			if (!((*et).Kind == ((NU8) 4) || (*et).Kind == ((NU8) 16) || (*et).Kind == ((NU8) 27) || (*et).Kind == ((NU8) 48))) goto LA24;
			LOC26 = 0;
			LOC26 = elemtype_264656(et);
			et = getuniquetype_549401(LOC26);
		}
		LA24: ;
		switch ((*et).Kind) {
		case ((NU8) 17):
		case ((NU8) 18):
		{
			tidobj201015* LOC28;
			TNimObject* LOC29;
			name = gettypeforward_556191(m, et);
			result = con_178031(name, ((NimStringDesc*) &TMP3399));
			LOC28 = 0;
			LOC28 = &t->Sup;
			LOC29 = 0;
			LOC29 = &result->Sup;
			idtableput_236196((&(*m).Typecache), LOC28, LOC29);
			pushtype_556915(m, et);
		}
		break;
		case ((NU8) 24):
		{
			tidobj201015* LOC31;
			TNimObject* LOC32;
			name = gettypeforward_556191(m, et);
			result = con_178031(name, ((NimStringDesc*) &TMP3400));
			LOC31 = 0;
			LOC31 = &t->Sup;
			LOC32 = 0;
			LOC32 = &result->Sup;
			idtableput_236196((&(*m).Typecache), LOC31, LOC32);
			pushtype_556915(m, et);
		}
		break;
		default:
		{
			trope178009* LOC34;
			tidobj201015* LOC35;
			TNimObject* LOC36;
			LOC34 = 0;
			LOC34 = gettypedescaux_555115(m, et, check);
			result = con_178031(LOC34, ((NimStringDesc*) &TMP3399));
			LOC35 = 0;
			LOC35 = &t->Sup;
			LOC36 = 0;
			LOC36 = &result->Sup;
			idtableput_236196((&(*m).Typecache), LOC35, LOC36);
		}
		break;
		}
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		trope178009* LOC38;
		tidobj201015* LOC39;
		TNimObject* LOC40;
		et = getuniquetype_549401((*t).Sons->data[0]);
		LOC38 = 0;
		LOC38 = gettypedescaux_555115(m, et, check);
		result = con_178031(LOC38, ((NimStringDesc*) &TMP3399));
		LOC39 = 0;
		LOC39 = &t->Sup;
		LOC40 = 0;
		LOC40 = &result->Sup;
		idtableput_236196((&(*m).Typecache), LOC39, LOC40);
	}
	break;
	case ((NU8) 25):
	{
		tidobj201015* LOC42;
		TNimObject* LOC43;
		result = gettypename_554914(t);
		LOC42 = 0;
		LOC42 = &t->Sup;
		LOC43 = 0;
		LOC43 = &result->Sup;
		idtableput_236196((&(*m).Typecache), LOC42, LOC43);
		genprocparams_555626(m, t, &rettype, &desc, check, NIM_TRUE);
		{
			NIM_BOOL LOC46;
			LOC46 = 0;
			LOC46 = isimportedtype_556001(t);
			if (!!(LOC46)) goto LA47;
			{
				TY557045 LOC53;
				if (!!(((*t).Callconv == ((NU8) 8)))) goto LA51;
				memset((void*)LOC53, 0, sizeof(LOC53));
				LOC53[0] = torope_178076(callingconvtostr_555222[((*t).Callconv)- 0]);
				LOC53[1] = rettype;
				LOC53[2] = result;
				LOC53[3] = desc;
				appf_178115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3414), LOC53, 4);
			}
			goto LA49;
			LA51: ;
			{
				TY555018 LOC55;
				memset((void*)LOC55, 0, sizeof(LOC55));
				LOC55[0] = result;
				LOC55[1] = rettype;
				LOC55[2] = desc;
				appf_178115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3425), LOC55, 3);
			}
			LA49: ;
		}
		LA47: ;
	}
	break;
	case ((NU8) 24):
	{
		tidobj201015* LOC70;
		trope178009* LOC71;
		TNimObject* LOC72;
		result = cachegettype_555234((*m).Forwtypecache, t);
		{
			tidobj201015* LOC68;
			TNimObject* LOC69;
			if (!(result == NIM_NIL)) goto LA59;
			result = gettypename_554914(t);
			{
				NIM_BOOL LOC63;
				NimStringDesc* LOC66;
				TY589896 LOC67;
				LOC63 = 0;
				LOC63 = isimportedtype_556001(t);
				if (!!(LOC63)) goto LA64;
				LOC66 = 0;
				LOC66 = getforwardstructformat_556162(m);
				memset((void*)LOC67, 0, sizeof(LOC67));
				LOC67[0] = structorunion_556142(t);
				LOC67[1] = result;
				appf_178115(&(*m).S[(((NU8) 2))- 0], LOC66, LOC67, 2);
			}
			LA64: ;
			LOC68 = 0;
			LOC68 = &t->Sup;
			LOC69 = 0;
			LOC69 = &result->Sup;
			idtableput_236196((&(*m).Forwtypecache), LOC68, LOC69);
		}
		LA59: ;
		LOC70 = 0;
		LOC70 = &t->Sup;
		LOC71 = 0;
		LOC71 = con_178031(result, ((NimStringDesc*) &TMP3399));
		LOC72 = 0;
		LOC72 = &LOC71->Sup;
		idtableput_236196((&(*m).Typecache), LOC70, LOC72);
		{
			NIM_BOOL LOC75;
			LOC75 = 0;
			LOC75 = isimportedtype_556001(t);
			if (!!(LOC75)) goto LA76;
			{
				ttype226852* LOC80;
				NimStringDesc* LOC83;
				NimStringDesc* LOC84;
				TY589896 LOC92;
				LOC80 = 0;
				LOC80 = skiptypes_231245((*t).Sons->data[0], IL64(211106232576256));
				if (!!(((*LOC80).Kind == ((NU8) 3)))) goto LA81;
				LOC83 = 0;
				LOC84 = 0;
				{
					NIM_BOOL LOC87;
					LOC87 = 0;
					LOC87 = (gcmd_170120 == ((NU8) 2));
					if (LOC87) goto LA88;
					LOC87 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
					LA88: ;
					if (!LOC87) goto LA89;
					LOC84 = copyString(((NimStringDesc*) &TMP3426));
				}
				goto LA85;
				LA89: ;
				{
					LOC84 = copyString(((NimStringDesc*) &TMP3427));
				}
				LA85: ;
				LOC83 = rawNewString(LOC84->Sup.len + 31);
appendString(LOC83, LOC84);
appendString(LOC83, ((NimStringDesc*) &TMP3428));
				memset((void*)LOC92, 0, sizeof(LOC92));
				LOC92[0] = gettypedescaux_555115(m, (*t).Sons->data[0], check);
				LOC92[1] = result;
				appcg_554004(m, &(*m).S[(((NU8) 4))- 0], LOC83, LOC92, 2);
			}
			goto LA78;
			LA81: ;
			{
				result = torope_178076(((NimStringDesc*) &TMP3429));
			}
			LA78: ;
		}
		LA76: ;
		app_178060(&result, ((NimStringDesc*) &TMP3399));
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		tidobj201015* LOC99;
		TNimObject* LOC100;
		n = lengthord_264016(t);
		{
			if (!(n <= IL64(0))) goto LA97;
			n = IL64(1);
		}
		LA97: ;
		result = gettypename_554914(t);
		LOC99 = 0;
		LOC99 = &t->Sup;
		LOC100 = 0;
		LOC100 = &result->Sup;
		idtableput_236196((&(*m).Typecache), LOC99, LOC100);
		{
			NIM_BOOL LOC103;
			TY555018 LOC106;
			LOC103 = 0;
			LOC103 = isimportedtype_556001(t);
			if (!!(LOC103)) goto LA104;
			memset((void*)LOC106, 0, sizeof(LOC106));
			LOC106[0] = gettypedescaux_555115(m, (*t).Sons->data[1], check);
			LOC106[1] = result;
			LOC106[2] = torope_178082(n);
			appf_178115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3430), LOC106, 3);
		}
		LA104: ;
	}
	break;
	case ((NU8) 17):
	case ((NU8) 18):
	{
		tidobj201015* LOC121;
		TNimObject* LOC122;
		result = cachegettype_555234((*m).Forwtypecache, t);
		{
			tidobj201015* LOC119;
			TNimObject* LOC120;
			if (!(result == NIM_NIL)) goto LA110;
			result = gettypename_554914(t);
			{
				NIM_BOOL LOC114;
				NimStringDesc* LOC117;
				TY589896 LOC118;
				LOC114 = 0;
				LOC114 = isimportedtype_556001(t);
				if (!!(LOC114)) goto LA115;
				LOC117 = 0;
				LOC117 = getforwardstructformat_556162(m);
				memset((void*)LOC118, 0, sizeof(LOC118));
				LOC118[0] = structorunion_556142(t);
				LOC118[1] = result;
				appf_178115(&(*m).S[(((NU8) 2))- 0], LOC117, LOC118, 2);
			}
			LA115: ;
			LOC119 = 0;
			LOC119 = &t->Sup;
			LOC120 = 0;
			LOC120 = &result->Sup;
			idtableput_236196((&(*m).Forwtypecache), LOC119, LOC120);
		}
		LA110: ;
		LOC121 = 0;
		LOC121 = &t->Sup;
		LOC122 = 0;
		LOC122 = &result->Sup;
		idtableput_236196((&(*m).Typecache), LOC121, LOC122);
		{
			if (!!(((*t).Kind == ((NU8) 18)))) goto LA125;
			recdesc = getrecorddesc_556667(m, t, result, check);
		}
		goto LA123;
		LA125: ;
		{
			recdesc = gettupledesc_556845(m, t, result, check);
		}
		LA123: ;
		{
			NIM_BOOL LOC130;
			LOC130 = 0;
			LOC130 = isimportedtype_556001(t);
			if (!!(LOC130)) goto LA131;
			app_178052(&(*m).S[(((NU8) 3))- 0], recdesc);
		}
		LA131: ;
	}
	break;
	case ((NU8) 19):
	{
		NI64 LOC134;
		LOC134 = 0;
		LOC134 = getsize_264199(t);
		switch (((NI) (LOC134))) {
		case 1:
		{
			result = torope_178076(((NimStringDesc*) &TMP3373));
		}
		break;
		case 2:
		{
			result = torope_178076(((NimStringDesc*) &TMP3374));
		}
		break;
		case 4:
		{
			result = torope_178076(((NimStringDesc*) &TMP3391));
		}
		break;
		case 8:
		{
			result = torope_178076(((NimStringDesc*) &TMP3392));
		}
		break;
		default:
		{
			tidobj201015* LOC140;
			TNimObject* LOC141;
			result = gettypename_554914(t);
			LOC140 = 0;
			LOC140 = &t->Sup;
			LOC141 = 0;
			LOC141 = &result->Sup;
			idtableput_236196((&(*m).Typecache), LOC140, LOC141);
			{
				NIM_BOOL LOC144;
				TY589896 LOC147;
				NI64 LOC148;
				LOC144 = 0;
				LOC144 = isimportedtype_556001(t);
				if (!!(LOC144)) goto LA145;
				memset((void*)LOC147, 0, sizeof(LOC147));
				LOC147[0] = result;
				LOC148 = 0;
				LOC148 = getsize_264199(t);
				LOC147[1] = torope_178082(LOC148);
				appf_178115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3450), 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):
	{
		ttype226852* LOC150;
		LOC150 = 0;
		LOC150 = lastson_227267(t);
		result = gettypedescaux_555115(m, LOC150, check);
	}
	break;
	default:
	{
		NimStringDesc* LOC152;
		LOC152 = 0;
		LOC152 = rawNewString(reprEnum((*t).Kind, (&NTI226258))->Sup.len + 16);
appendString(LOC152, ((NimStringDesc*) &TMP3451));
appendString(LOC152, reprEnum((*t).Kind, (&NTI226258)));
appendChar(LOC152, 41);
		internalerror_199006(LOC152);
		result = NIM_NIL;
	}
	break;
	}
	excl_223884(check, (*t).Sup.Id);
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope178009*, gettypedesc_557306)(tcgen550035* m, ttype226852* typ) {
	trope178009* result;
	intset223056 check;
	result = 0;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_223950((&check));
	result = gettypedescaux_555115(m, typ, (&check));
	return result;
}

N_NIMCALL(trope178009*, mangledynlibproc_561938)(tsym226846* sym) {
	trope178009* result;
	result = 0;
	{
		if (!(((*sym).Flags &(1<<((((NU8) 16))&31)))!=0)) goto LA3;
		result = torope_178076((*(*sym).Name).S);
	}
	goto LA1;
	LA3: ;
	{
		TY178515 LOC6;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = torope_178082(((NI64) ((*sym).Sup.Id)));
		result = ropef_178107(((NimStringDesc*) &TMP3452), LOC6, 1);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genclinedir_554252)(trope178009** r, NimStringDesc* filename, NI line) {
	{
		TY589896 LOC5;
		NimStringDesc* LOC6;
		if (!((goptions_170116 &(1<<((((NU8) 10))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC6 = 0;
		LOC6 = makesinglelinecstring_549737(filename);
		LOC5[0] = torope_178076(LOC6);
		LOC5[1] = torope_178082(((NI64) (line)));
		appff_553228(r, ((NimStringDesc*) &TMP3453), ((NimStringDesc*) &TMP3454), LOC5, 2);
	}
	LA3: ;
}

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

N_NIMCALL(NI, safelinenm_554241)(tlineinfo196539 info) {
	NI result;
	result = 0;
	result = tolinenumber_198073(info);
	{
		if (!(result < 0)) goto LA3;
		result = 0;
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, genclinedir_554424)(trope178009** r, tlineinfo196539 info) {
	NimStringDesc* LOC1;
	NI LOC2;
	LOC1 = 0;
	LOC1 = tofullpath_198037(info.Fileindex);
	LOC2 = 0;
	LOC2 = safelinenm_554241(info);
	genclinedir_554252(r, LOC1, LOC2);
}

N_NIMCALL(trope178009*, genprocheader_557516)(tcgen550035* m, tsym226846* prc) {
	trope178009* result;
	trope178009* rettype;
	trope178009* params;
	intset223056 check;
	trope178009* LOC15;
	result = 0;
	rettype = 0;
	params = 0;
	genclinedir_554424(&result, (*prc).Info);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !((gcmd_170120 == ((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_178060(&result, ((NimStringDesc*) &TMP3456));
		}
		goto LA7;
		LA9: ;
		{
			app_178060(&result, ((NimStringDesc*) &TMP3457));
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		if (!((*(*prc).Typ).Callconv == ((NU8) 5))) goto LA13;
		app_178060(&result, ((NimStringDesc*) &TMP3458));
	}
	goto LA1;
	LA13: ;
	LA1: ;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_223950((&check));
	LOC15 = 0;
	LOC15 = manglename_554667(prc);
	fillloc_553376((&(*prc).Loc), ((NU8) 8), (*prc).Typ, LOC15, ((NU8) 0));
	genprocparams_555626(m, (*prc).Typ, &rettype, &params, (&check), NIM_TRUE);
	{
		TY557045 LOC20;
		if (!(*prc).Constraint == 0) goto LA18;
		memset((void*)LOC20, 0, sizeof(LOC20));
		LOC20[0] = torope_178076(callingconvtostr_555222[((*(*prc).Typ).Callconv)- 0]);
		LOC20[1] = rettype;
		LOC20[2] = (*prc).Loc.R;
		LOC20[3] = params;
		appf_178115(&result, ((NimStringDesc*) &TMP3459), LOC20, 4);
	}
	goto LA16;
	LA18: ;
	{
		TY555018 LOC22;
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = rettype;
		LOC22[1] = (*prc).Loc.R;
		LOC22[2] = params;
		result = ropef_178107((*(*prc).Constraint).kindU.S3.Strval, LOC22, 3);
	}
	LA16: ;
	return result;
}

static N_INLINE(NIM_BOOL, crossescppboundary_589817)(tcgen550035* m, tsym226846* sym) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	tsym226846* LOC4;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
	if (!(LOC2)) goto LA3;
	LOC4 = 0;
	LOC4 = getmodule_236243(sym);
	LOC2 = !((((*LOC4).Flags &(1<<((((NU8) 27))&31)))!=0));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA5;
	LOC1 = !((gcmd_170120 == ((NU8) 2)));
	LA5: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genprocprototype_562314)(tcgen550035* m, tsym226846* sym) {
	useheader_553469(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;
			tsym226846* LOC12;
			NIM_BOOL LOC14;
			TY589896 LOC17;
			trope178009* LOC18;
			LOC11 = 0;
			LOC12 = 0;
			LOC12 = getmodule_236243(sym);
			LOC11 = !(((*LOC12).Sup.Id == (*(*m).Module).Sup.Id));
			if (!(LOC11)) goto LA13;
			LOC14 = 0;
			LOC14 = containsorincl_223916((&(*m).Declaredthings), (*sym).Sup.Id);
			LOC11 = !(LOC14);
			LA13: ;
			if (!LOC11) goto LA15;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = gettypedesc_557306(m, (*sym).Loc.T);
			LOC17[1] = mangledynlibproc_561938(sym);
			LOC18 = 0;
			LOC18 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3366), LOC17, 2);
			app_178052(&(*m).S[(((NU8) 9))- 0], LOC18);
			{
				if (!(gcmd_170120 == ((NU8) 5))) goto LA21;
				(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 0))%(sizeof(NI8)*8));
			}
			LA21: ;
		}
		LA15: ;
	}
	goto LA5;
	LA7: ;
	{
		NIM_BOOL LOC24;
		trope178009* header;
		TY178515 LOC39;
		trope178009* LOC40;
		LOC24 = 0;
		LOC24 = containsorincl_223916((&(*m).Declaredprotos), (*sym).Sup.Id);
		if (!!(LOC24)) goto LA25;
		header = genprocheader_557516(m, sym);
		{
			NIM_BOOL LOC29;
			LOC29 = 0;
			LOC29 = !(((*(*sym).Typ).Callconv == ((NU8) 5)));
			if (!(LOC29)) goto LA30;
			LOC29 = crossescppboundary_589817(m, sym);
			LA30: ;
			if (!LOC29) goto LA31;
			header = con_178038(((NimStringDesc*) &TMP3460), header);
		}
		LA31: ;
		{
			NIM_BOOL LOC35;
			LOC35 = 0;
			LOC35 = (((*sym).Flags &(1<<((((NU8) 9))&31)))!=0);
			if (!(LOC35)) goto LA36;
			LOC35 = ((cc_203434[(ccompiler_203461)- 1].Field20 &(1<<((((NU8) 7))&7)))!=0);
			LA36: ;
			if (!LOC35) goto LA37;
			app_178060(&header, ((NimStringDesc*) &TMP3461));
		}
		LA37: ;
		memset((void*)LOC39, 0, sizeof(LOC39));
		LOC39[0] = header;
		LOC40 = 0;
		LOC40 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3462), LOC39, 1);
		app_178052(&(*m).S[(((NU8) 7))- 0], LOC40);
	}
	goto LA5;
	LA25: ;
	LA5: ;
	BeforeRet: ;
}

static N_INLINE(NI, len_227364)(tnode226816* 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(trope178009**, s_550183)(tcproc550031* p, NU8 s) {
	trope178009** result;
	result = 0;
	result = &(*p).Blocks->data[(NI32)((*p).Blocks->Sup.len - 1)].Sections[(s)- 0];
	return result;
}

N_NIMCALL(trope178009*, indentline_554049)(tcproc550031* p, trope178009* r) {
	trope178009* result;
	result = 0;
	result = r;
	{
		NI i_554077;
		NI HEX3Atmp_554080;
		NI res_554083;
		i_554077 = 0;
		HEX3Atmp_554080 = 0;
		HEX3Atmp_554080 = (NI32)((*p).Blocks->Sup.len - 1);
		res_554083 = 0;
		{
			while (1) {
				if (!(res_554083 <= HEX3Atmp_554080)) goto LA3;
				i_554077 = res_554083;
				prepend_178068(&result, indent_554045);
				res_554083 += 1;
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(void, line_554100)(tcproc550031* p, NU8 s, trope178009* r) {
	trope178009** LOC1;
	trope178009* LOC2;
	LOC1 = 0;
	LOC1 = s_550183(p, s);
	LOC2 = 0;
	LOC2 = indentline_554049(p, r);
	app_178052(LOC1, LOC2);
}

N_NIMCALL(void, linef_554122)(tcproc550031* p, NU8 s, NimStringDesc* frmt, trope178009** args, NI argsLen0) {
	trope178009** LOC1;
	trope178009* LOC2;
	trope178009* LOC3;
	LOC1 = 0;
	LOC1 = s_550183(p, s);
	LOC2 = 0;
	LOC2 = ropef_178107(frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_554049(p, LOC2);
	app_178052(LOC1, LOC3);
}

N_NIMCALL(void, gentypeinfoauxbase_557801)(tcgen550035* m, ttype226852* typ, trope178009* name, trope178009* base) {
	NI nimtypekind;
	trope178009* size;
	TY557045 LOC12;
	NI flags;
	trope178009* LOC28;
	TY589896 LOC29;
	NimStringDesc* LOC30;
	nimtypekind = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isobjlackingtypefield_555128(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_178076(((NimStringDesc*) &TMP3476));
	}
	goto LA7;
	LA9: ;
	{
		size = gettypedesc_557306(m, typ);
	}
	LA7: ;
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = name;
	LOC12[1] = size;
	LOC12[2] = torope_178082(((NI64) (nimtypekind)));
	LOC12[3] = base;
	appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3477), LOC12, 4);
	flags = 0;
	{
		NIM_BOOL LOC15;
		LOC15 = 0;
		LOC15 = containsgarbagecollectedref_264163(typ);
		if (!!(LOC15)) goto LA16;
		flags = (NI)(flags | 1);
	}
	LA16: ;
	{
		NIM_BOOL LOC20;
		LOC20 = 0;
		LOC20 = canformacycle_264175(typ);
		if (!!(LOC20)) goto LA21;
		flags = (NI)(flags | 2);
	}
	LA21: ;
	{
		TY589896 LOC27;
		if (!!((flags == 0))) goto LA25;
		memset((void*)LOC27, 0, sizeof(LOC27));
		LOC27[0] = name;
		LOC27[1] = torope_178082(((NI64) (flags)));
		appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3478), LOC27, 2);
	}
	LA25: ;
	LOC28 = 0;
	LOC28 = cgsym_553608(m, ((NimStringDesc*) &TMP3472));
	memset((void*)LOC29, 0, sizeof(LOC29));
	LOC29[0] = name;
	LOC30 = 0;
	LOC30 = typetostring_264031(typ, ((NU8) 0));
	LOC29[1] = torope_178076(LOC30);
	appf_178115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3479), LOC29, 2);
}

N_NIMCALL(trope178009*, getnimnode_557606)(tcgen550035* m) {
	trope178009* result;
	TY589896 LOC1;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = (*m).Typenodesname;
	LOC1[1] = torope_178082(((NI64) ((*m).Typenodes)));
	result = ropef_178107(((NimStringDesc*) &TMP3480), LOC1, 2);
	(*m).Typenodes += 1;
	return result;
}

N_NIMCALL(void, gentupleinfo_558715)(tcgen550035* m, ttype226852* typ, trope178009* name) {
	trope178009* LOC1;
	trope178009* expr;
	NI length;
	TY589896 LOC15;
	LOC1 = 0;
	LOC1 = torope_178076(((NimStringDesc*) &TMP3382));
	gentypeinfoauxbase_557801(m, typ, name, LOC1);
	expr = getnimnode_557606(m);
	length = sonslen_227255(typ);
	{
		trope178009* tmp;
		TY589896 LOC6;
		TY555018 LOC12;
		if (!(0 < length)) goto LA4;
		tmp = gettempname_555242();
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = tmp;
		LOC6[1] = torope_178082(((NI64) (length)));
		appf_178115(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3481), LOC6, 2);
		{
			NI i_558741;
			NI HEX3Atmp_558770;
			NI res_558773;
			i_558741 = 0;
			HEX3Atmp_558770 = 0;
			HEX3Atmp_558770 = (NI32)(length - 1);
			res_558773 = 0;
			{
				while (1) {
					ttype226852* a;
					trope178009* tmp2;
					TY555018 LOC10;
					TY557045 LOC11;
					if (!(res_558773 <= HEX3Atmp_558770)) goto LA9;
					i_558741 = res_558773;
					a = (*typ).Sons->data[i_558741];
					tmp2 = getnimnode_557606(m);
					memset((void*)LOC10, 0, sizeof(LOC10));
					LOC10[0] = tmp;
					LOC10[1] = torope_178082(((NI64) (i_558741)));
					LOC10[2] = tmp2;
					appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3482), LOC10, 3);
					memset((void*)LOC11, 0, sizeof(LOC11));
					LOC11[0] = tmp2;
					LOC11[1] = gettypedesc_557306(m, typ);
					LOC11[2] = torope_178082(((NI64) (i_558741)));
					LOC11[3] = gentypeinfo_557602(m, a);
					appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3483), LOC11, 4);
					res_558773 += 1;
				} LA9: ;
			}
		}
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = expr;
		LOC12[1] = torope_178082(((NI64) (length)));
		LOC12[2] = tmp;
		appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3484), LOC12, 3);
	}
	goto LA2;
	LA4: ;
	{
		TY589896 LOC14;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = expr;
		LOC14[1] = torope_178082(((NI64) (length)));
		appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3485), LOC14, 2);
	}
	LA2: ;
	memset((void*)LOC15, 0, sizeof(LOC15));
	LOC15[0] = name;
	LOC15[1] = expr;
	appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3486), LOC15, 2);
}

N_NIMCALL(ttype226852*, fakeclosuretype_559218)(tsym226846* owner) {
	ttype226852* result;
	ttype226852* LOC1;
	ttype226852* r;
	ttype226852* LOC2;
	result = 0;
	result = newtype_227083(((NU8) 18), owner);
	LOC1 = 0;
	LOC1 = newtype_227083(((NU8) 26), owner);
	rawaddson_231562(result, LOC1);
	r = newtype_227083(((NU8) 22), owner);
	LOC2 = 0;
	LOC2 = newtype_227083(((NU8) 18), owner);
	rawaddson_231562(r, LOC2);
	rawaddson_231562(result, r);
	return result;
}

N_NIMCALL(void, gentypeinfoaux_557859)(tcgen550035* m, ttype226852* typ, trope178009* name) {
	trope178009* base;
	base = 0;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_227255(typ);
		LOC3 = (0 < LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = !(((*typ).Sons->data[0] == NIM_NIL));
		LA5: ;
		if (!LOC3) goto LA6;
		base = gentypeinfo_557602(m, (*typ).Sons->data[0]);
	}
	goto LA1;
	LA6: ;
	{
		base = torope_178076(((NimStringDesc*) &TMP3382));
	}
	LA1: ;
	gentypeinfoauxbase_557801(m, typ, name, base);
}

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

N_NIMCALL(trope178009*, getglobaltempname_555252)(void) {
	trope178009* result;
	TY178515 LOC1;
	NI LOC2;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = backendid_225425();
	LOC1[0] = torope_178082(((NI64) (LOC2)));
	result = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3487), LOC1, 1);
	return result;
}

N_NIMCALL(void, linefmt_554148)(tcproc550031* p, NU8 s, NimStringDesc* frmt, trope178009** args, NI argsLen0) {
	trope178009** LOC1;
	trope178009* LOC2;
	trope178009* LOC3;
	LOC1 = 0;
	LOC1 = s_550183(p, s);
	LOC2 = 0;
	LOC2 = ropecg_553615((*p).Module, frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_554049(p, LOC2);
	app_178052(LOC1, LOC3);
}

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

N_NIMCALL(trope178009*, rdloc_560637)(tloc226830 a) {
	trope178009* result;
	result = 0;
	result = a.R;
	{
		TY178515 LOC5;
		if (!((a.Flags &(1<<((((NU8) 0))&7)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = result;
		result = ropef_178107(((NimStringDesc*) &TMP3495), LOC5, 1);
	}
	LA3: ;
	return result;
}

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

N_NIMCALL(trope178009*, addrloc_560664)(tloc226830 a) {
	trope178009* result;
	result = 0;
	result = a.R;
	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		trope178009* LOC8;
		LOC3 = 0;
		LOC3 = !(((a.Flags &(1<<((((NU8) 0))&7)))!=0));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = maptype_555054(a.T);
		LOC3 = !((LOC5 == ((NU8) 17)));
		LA4: ;
		if (!LOC3) goto LA6;
		LOC8 = 0;
		LOC8 = con_178038(((NimStringDesc*) &TMP3471), result);
		result = con_178031(LOC8, ((NimStringDesc*) &TMP3412));
	}
	LA6: ;
	return result;
}

N_NIMCALL(void, genobjectinit_560721)(tcproc550031* p, NU8 section, ttype226852* t, tloc226830 a, NIM_BOOL takeaddr) {
	NU8 LOC1;
	LOC1 = 0;
	LOC1 = analyseobjectwithtypefield_264225(t);
	switch (LOC1) {
	case ((NU8) 0):
	{
	}
	break;
	case ((NU8) 1):
	{
		trope178009* r;
		ttype226852* s;
		TY589896 LOC19;
		r = rdloc_560637(a);
		{
			TY178515 LOC8;
			if (!!(takeaddr)) goto LA6;
			memset((void*)LOC8, 0, sizeof(LOC8));
			LOC8[0] = r;
			r = ropef_178107(((NimStringDesc*) &TMP3495), LOC8, 1);
		}
		LA6: ;
		s = skiptypes_231245(t, IL64(211106232576256));
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = (gcmd_170120 == ((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_178060(&r, ((NimStringDesc*) &TMP3498));
					s = skiptypes_231245((*s).Sons->data[0], IL64(211106232576256));
				} LA16: ;
			}
		}
		LA13: ;
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = r;
		LOC19[1] = gentypeinfo_557602((*p).Module, t);
		linefmt_554148(p, section, ((NimStringDesc*) &TMP3499), LOC19, 2);
	}
	break;
	case ((NU8) 2):
	{
		trope178009* r;
		TY589896 LOC26;
		{
			if (!takeaddr) goto LA23;
			r = addrloc_560664(a);
		}
		goto LA21;
		LA23: ;
		{
			r = rdloc_560637(a);
		}
		LA21: ;
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = r;
		LOC26[1] = gentypeinfo_557602((*p).Module, t);
		linefmt_554148(p, section, ((NimStringDesc*) &TMP3500), LOC26, 2);
	}
	break;
	}
}

N_NIMCALL(void, constructloc_560924)(tcproc550031* p, tloc226830 loc, NIM_BOOL istemp) {
	{
		ttype226852* LOC3;
		NIM_BOOL LOC4;
		TY178515 LOC7;
		LOC3 = 0;
		LOC3 = skiptypes_231245(loc.T, IL64(211106233624832));
		LOC4 = 0;
		LOC4 = iscomplexvaluetype_560828(LOC3);
		if (!!(LOC4)) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_560637(loc);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3494), LOC7, 1);
	}
	goto LA1;
	LA5: ;
	{
		{
			NIM_BOOL LOC11;
			TY589896 LOC15;
			LOC11 = 0;
			LOC11 = !(istemp);
			if (LOC11) goto LA12;
			LOC11 = containsgarbagecollectedref_264163(loc.T);
			LA12: ;
			if (!LOC11) goto LA13;
			usestringh_553459((*p).Module);
			memset((void*)LOC15, 0, sizeof(LOC15));
			LOC15[0] = addrloc_560664(loc);
			LOC15[1] = rdloc_560637(loc);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3497), LOC15, 2);
		}
		LA13: ;
		genobjectinit_560721(p, ((NU8) 2), loc.T, loc, NIM_TRUE);
	}
	LA1: ;
}

N_NIMCALL(void, gettemp_559246)(tcproc550031* p, ttype226852* t, tloc226830* result, NIM_BOOL needsinit) {
	(*p).Labels += 1;
	{
		trope178009* LOC5;
		if (!(gcmd_170120 == ((NU8) 5))) goto LA3;
		LOC5 = 0;
		LOC5 = torope_178082(((NI64) ((*p).Labels)));
		unsureAsgnRef((void**) (&(*result).R), con_178038(((NimStringDesc*) &TMP3492), LOC5));
	}
	goto LA1;
	LA3: ;
	{
		trope178009* LOC7;
		TY589896 LOC8;
		LOC7 = 0;
		LOC7 = torope_178082(((NI64) ((*p).Labels)));
		unsureAsgnRef((void**) (&(*result).R), con_178038(((NimStringDesc*) &TMP3493), LOC7));
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = gettypedesc_557306((*p).Module, t);
		LOC8[1] = (*result).R;
		linefmt_554148(p, ((NU8) 0), ((NimStringDesc*) &TMP3394), LOC8, 2);
	}
	LA1: ;
	(*result).K = ((NU8) 1);
	unsureAsgnRef((void**) (&(*result).T), getuniquetype_549401(t));
	(*result).S = ((NU8) 1);
	(*result).Flags = 0;
	constructloc_560924(p, (*result), !(needsinit));
}

static N_INLINE(trope178009*, parentobj_559700)(trope178009* accessor, tcgen550035* m) {
	trope178009* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		TY178515 LOC7;
		LOC3 = 0;
		LOC3 = (gcmd_170120 == ((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_178107(((NimStringDesc*) &TMP3506), LOC7, 1);
	}
	goto LA1;
	LA5: ;
	{
		result = accessor;
	}
	LA1: ;
	return result;
}

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

N_NIMCALL(trope178009*, intliteral_562339)(NI64 i) {
	trope178009* 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_178082(i);
	}
	goto LA1;
	LA5: ;
	{
		TY554703 LOC10;
		if (!(i == IL64(-2147483648))) goto LA8;
		memset((void*)LOC10, 0, sizeof(LOC10));
		result = ropef_178107(((NimStringDesc*) &TMP3511), LOC10, 0);
	}
	goto LA1;
	LA8: ;
	{
		TY178515 LOC14;
		if (!((IL64(-9223372036854775807) - IL64(1)) < i)) goto LA12;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = torope_178082(i);
		result = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3512), LOC14, 1);
	}
	goto LA1;
	LA12: ;
	{
		TY554703 LOC16;
		memset((void*)LOC16, 0, sizeof(LOC16));
		result = ropef_178107(((NimStringDesc*) &TMP3513), LOC16, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, int32literal_574942)(NI i) {
	trope178009* result;
	result = 0;
	{
		TY554703 LOC5;
		if (!(i == (-2147483647 -1))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		result = ropef_178107(((NimStringDesc*) &TMP3511), LOC5, 0);
	}
	goto LA1;
	LA3: ;
	{
		result = torope_178082(((NI64) (i)));
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, int64literal_574879)(NI64 i) {
	trope178009* result;
	result = 0;
	{
		TY178515 LOC5;
		if (!((IL64(-9223372036854775807) - IL64(1)) < i)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_178082(i);
		result = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3512), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY554703 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		result = ropef_178107(((NimStringDesc*) &TMP3513), LOC7, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, uint64literal_574900)(NU64 i) {
	trope178009* 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*) &TMP3516));
	result = torope_178076(LOC1);
	return result;
}

N_NIMCALL(trope178009*, getstrlit_574994)(tcgen550035* m, NimStringDesc* s) {
	trope178009* result;
	trope178009* LOC1;
	NI LOC2;
	trope178009* LOC3;
	TY555018 LOC4;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_553608(m, ((NimStringDesc*) &TMP3429));
	LOC2 = 0;
	LOC2 = backendid_225425();
	LOC3 = 0;
	LOC3 = torope_178082(((NI64) (LOC2)));
	result = con_178038(((NimStringDesc*) &TMP3518), LOC3);
	memset((void*)LOC4, 0, sizeof(LOC4));
	LOC4[0] = result;
	LOC4[1] = makecstring_196659(s);
	LOC4[2] = torope_178082(((NI64) (s->Sup.len)));
	appf_178115(&(*m).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3522), LOC4, 3);
	return result;
}

N_NIMCALL(trope178009*, genliteral_575007)(tcproc550031* p, tnode226816* n, ttype226852* ty) {
	trope178009* result;
	result = 0;
	{
		if (!(ty == NIM_NIL)) goto LA3;
		internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3510));
	}
	LA3: ;
	switch ((*n).Kind) {
	case ((NU8) 5) ... ((NU8) 15):
	{
		ttype226852* LOC6;
		LOC6 = 0;
		LOC6 = skiptypes_231245(ty, IL64(211106242013440));
		switch ((*LOC6).Kind) {
		case ((NU8) 2):
		case ((NU8) 5):
		{
			result = intliteral_562339((*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_574942(((NI) (((NI32) ((*n).kindU.S1.Intval)))));
			}
			goto LA9;
			LA13: ;
			{
				result = intliteral_562339((*n).kindU.S1.Intval);
			}
			LA9: ;
		}
		break;
		case ((NU8) 1):
		{
			{
				TY554703 LOC21;
				if (!!(((*n).kindU.S1.Intval == IL64(0)))) goto LA19;
				memset((void*)LOC21, 0, sizeof(LOC21));
				result = ropef_178107(((NimStringDesc*) &TMP3514), LOC21, 0);
			}
			goto LA17;
			LA19: ;
			{
				TY554703 LOC23;
				memset((void*)LOC23, 0, sizeof(LOC23));
				result = ropef_178107(((NimStringDesc*) &TMP3515), LOC23, 0);
			}
			LA17: ;
		}
		break;
		case ((NU8) 35):
		{
			result = int64literal_574879((*n).kindU.S1.Intval);
		}
		break;
		case ((NU8) 44):
		{
			result = uint64literal_574900(((NU64) ((*n).kindU.S1.Intval)));
		}
		break;
		default:
		{
			TY589896 LOC27;
			ttype226852* LOC28;
			memset((void*)LOC27, 0, sizeof(LOC27));
			LOC28 = 0;
			LOC28 = skiptypes_231245(ty, IL64(211106242013440));
			LOC27[0] = gettypedesc_557306((*p).Module, LOC28);
			LOC27[1] = intliteral_562339((*n).kindU.S1.Intval);
			result = ropef_178107(((NimStringDesc*) &TMP3517), LOC27, 2);
		}
		break;
		}
	}
	break;
	case ((NU8) 23):
	{
		ttype226852* t;
		t = skiptypes_231245(ty, IL64(211106242013440));
		{
			NIM_BOOL LOC32;
			NI id;
			trope178009* LOC36;
			LOC32 = 0;
			LOC32 = ((*t).Kind == ((NU8) 25));
			if (!(LOC32)) goto LA33;
			LOC32 = ((*t).Callconv == ((NU8) 8));
			LA33: ;
			if (!LOC32) goto LA34;
			id = nodetabletestorset_289121((&(*(*p).Module).Datacache), n, gbackendid_225013);
			LOC36 = 0;
			LOC36 = torope_178082(((NI64) (id)));
			result = con_178038(((NimStringDesc*) &TMP3518), LOC36);
			{
				TY589896 LOC41;
				if (!(id == gbackendid_225013)) goto LA39;
				gbackendid_225013 += 1;
				memset((void*)LOC41, 0, sizeof(LOC41));
				LOC41[0] = gettypedesc_557306((*p).Module, t);
				LOC41[1] = result;
				appf_178115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3519), LOC41, 2);
			}
			LA39: ;
		}
		goto LA30;
		LA34: ;
		{
			result = torope_178076(((NimStringDesc*) &TMP3520));
		}
		LA30: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		{
			ttype226852* LOC46;
			NI id;
			LOC46 = 0;
			LOC46 = skiptypes_231245(ty, IL64(211106242013440));
			if (!((*LOC46).Kind == ((NU8) 28))) goto LA47;
			id = nodetabletestorset_289121((&(*(*p).Module).Datacache), n, gbackendid_225013);
			{
				TY178515 LOC53;
				if (!(id == gbackendid_225013)) goto LA51;
				memset((void*)LOC53, 0, sizeof(LOC53));
				LOC53[0] = getstrlit_574994((*p).Module, (*n).kindU.S3.Strval);
				result = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3521), LOC53, 1);
			}
			goto LA49;
			LA51: ;
			{
				TY178515 LOC55;
				memset((void*)LOC55, 0, sizeof(LOC55));
				LOC55[0] = torope_178082(((NI64) (id)));
				result = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3523), LOC55, 1);
			}
			LA49: ;
		}
		goto LA44;
		LA47: ;
		{
			result = makecstring_196659((*n).kindU.S3.Strval);
		}
		LA44: ;
	}
	break;
	case ((NU8) 16) ... ((NU8) 18):
	{
		NimStringDesc* LOC58;
		LOC58 = 0;
		LOC58 = tostrmaxprecision_235024((*n).kindU.S2.Floatval);
		result = torope_178076(LOC58);
	}
	break;
	default:
	{
		NimStringDesc* LOC60;
		LOC60 = 0;
		LOC60 = rawNewString(reprEnum((*n).Kind, (&NTI226029))->Sup.len + 12);
appendString(LOC60, ((NimStringDesc*) &TMP3528));
appendString(LOC60, reprEnum((*n).Kind, (&NTI226029)));
appendChar(LOC60, 41);
		internalerror_198987((*n).Info, LOC60);
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(trope178009*, genliteral_562345)(tcproc550031* p, tnode226816* n) {
	trope178009* result;
	result = 0;
	result = genliteral_575007(p, n, (*n).Typ);
	return result;
}

N_NIMCALL(void, gencaserange_559242)(tcproc550031* p, tnode226816* branch) {
	NI length;
	length = len_227364(branch);
	{
		NI j_572162;
		NI HEX3Atmp_572254;
		NI res_572257;
		j_572162 = 0;
		HEX3Atmp_572254 = 0;
		HEX3Atmp_572254 = (NI32)(length - 2);
		res_572257 = 0;
		{
			while (1) {
				if (!(res_572257 <= HEX3Atmp_572254)) goto LA3;
				j_572162 = res_572257;
				{
					tnode226816* LOC6;
					LOC6 = 0;
					LOC6 = HEX5BHEX5D_227698(branch, j_572162);
					if (!((*LOC6).Kind == ((NU8) 44))) goto LA7;
					{
						TY589896 LOC13;
						tnode226816* LOC14;
						tnode226816* LOC15;
						tnode226816* LOC16;
						tnode226816* LOC17;
						if (!((cc_203434[(ccompiler_203461)- 1].Field20 &(1<<((((NU8) 0))&7)))!=0)) goto LA11;
						memset((void*)LOC13, 0, sizeof(LOC13));
						LOC14 = 0;
						LOC14 = HEX5BHEX5D_227698(branch, j_572162);
						LOC15 = 0;
						LOC15 = HEX5BHEX5D_227698(LOC14, 0);
						LOC13[0] = genliteral_562345(p, LOC15);
						LOC16 = 0;
						LOC16 = HEX5BHEX5D_227698(branch, j_572162);
						LOC17 = 0;
						LOC17 = HEX5BHEX5D_227698(LOC16, 1);
						LOC13[1] = genliteral_562345(p, LOC17);
						linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3509), LOC13, 2);
					}
					goto LA9;
					LA11: ;
					{
						tnode226816* v;
						tnode226816* LOC19;
						tnode226816* LOC20;
						LOC19 = 0;
						LOC19 = HEX5BHEX5D_227698(branch, j_572162);
						LOC20 = 0;
						LOC20 = HEX5BHEX5D_227698(LOC19, 0);
						v = copynode_227323(LOC20);
						{
							while (1) {
								tnode226816* LOC23;
								tnode226816* LOC24;
								TY178515 LOC25;
								LOC23 = 0;
								LOC23 = HEX5BHEX5D_227698(branch, j_572162);
								LOC24 = 0;
								LOC24 = HEX5BHEX5D_227698(LOC23, 1);
								if (!((*v).kindU.S1.Intval <= (*LOC24).kindU.S1.Intval)) goto LA22;
								memset((void*)LOC25, 0, sizeof(LOC25));
								LOC25[0] = genliteral_562345(p, v);
								linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3529), LOC25, 1);
								(*v).kindU.S1.Intval += 1;
							} LA22: ;
						}
					}
					LA9: ;
				}
				goto LA4;
				LA7: ;
				{
					TY178515 LOC27;
					tnode226816* LOC28;
					memset((void*)LOC27, 0, sizeof(LOC27));
					LOC28 = 0;
					LOC28 = HEX5BHEX5D_227698(branch, j_572162);
					LOC27[0] = genliteral_562345(p, LOC28);
					linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3529), LOC27, 1);
				}
				LA4: ;
				res_572257 += 1;
			} LA3: ;
		}
	}
}

N_NIMCALL(void, gentraverseproc_559253)(ttraversalclosure559233* c, trope178009* accessor, tnode226816* n) {
	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).Kind) {
	case ((NU8) 137):
	{
		{
			NI i_559288;
			NI HEX3Atmp_559668;
			NI LOC7;
			NI res_559671;
			i_559288 = 0;
			HEX3Atmp_559668 = 0;
			LOC7 = 0;
			LOC7 = sonslen_227249(n);
			HEX3Atmp_559668 = (NI32)(LOC7 - 1);
			res_559671 = 0;
			{
				while (1) {
					if (!(res_559671 <= HEX3Atmp_559668)) goto LA9;
					i_559288 = res_559671;
					gentraverseproc_559253(c, accessor, (*n).kindU.S6.Sons->data[i_559288]);
					res_559671 += 1;
				} LA9: ;
			}
		}
	}
	break;
	case ((NU8) 138):
	{
		tcproc550031* p;
		tsym226846* disc;
		TY589896 LOC15;
		TY554703 LOC28;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA13;
			internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3507));
		}
		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_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3508), LOC15, 2);
		{
			NI i_559372;
			NI HEX3Atmp_559674;
			NI LOC17;
			NI res_559677;
			i_559372 = 0;
			HEX3Atmp_559674 = 0;
			LOC17 = 0;
			LOC17 = sonslen_227249(n);
			HEX3Atmp_559674 = (NI32)(LOC17 - 1);
			res_559677 = 1;
			{
				while (1) {
					tnode226816* branch;
					tnode226816* LOC26;
					TY554703 LOC27;
					if (!(res_559677 <= HEX3Atmp_559674)) goto LA19;
					i_559372 = res_559677;
					branch = (*n).kindU.S6.Sons->data[i_559372];
					{
						if (!((*branch).Kind == ((NU8) 85))) goto LA22;
						gencaserange_559242((*c).P, branch);
					}
					goto LA20;
					LA22: ;
					{
						TY554703 LOC25;
						memset((void*)LOC25, 0, sizeof(LOC25));
						linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3530), LOC25, 0);
					}
					LA20: ;
					LOC26 = 0;
					LOC26 = lastson_227261(branch);
					gentraverseproc_559253(c, accessor, LOC26);
					memset((void*)LOC27, 0, sizeof(LOC27));
					linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3531), LOC27, 0);
					res_559677 += 1;
				} LA19: ;
			}
		}
		memset((void*)LOC28, 0, sizeof(LOC28));
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3532), LOC28, 0);
	}
	break;
	case ((NU8) 3):
	{
		tsym226846* field;
		TY589896 LOC34;
		trope178009* LOC35;
		field = (*n).kindU.S4.Sym;
		{
			if (!((*field).Loc.T == NIM_NIL)) goto LA32;
			internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3533));
		}
		LA32: ;
		memset((void*)LOC34, 0, sizeof(LOC34));
		LOC34[0] = accessor;
		LOC34[1] = (*field).Loc.R;
		LOC35 = 0;
		LOC35 = ropef_178107(((NimStringDesc*) &TMP3436), LOC34, 2);
		gentraverseproc_559236(c, LOC35, (*field).Loc.T);
	}
	break;
	default:
	{
		internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3533));
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, linecg_554135)(tcproc550031* p, NU8 s, NimStringDesc* frmt, trope178009** args, NI argsLen0) {
	trope178009** LOC1;
	trope178009* LOC2;
	trope178009* LOC3;
	LOC1 = 0;
	LOC1 = s_550183(p, s);
	LOC2 = 0;
	LOC2 = ropecg_553615((*p).Module, frmt, args, argsLen0);
	LOC3 = 0;
	LOC3 = indentline_554049(p, LOC2);
	app_178052(LOC1, LOC3);
}

N_NIMCALL(void, gentraverseproc_559236)(ttraversalclosure559233* c, trope178009* accessor, ttype226852* typ_559241) {
	tcproc550031* p;
	{
		if (!(typ_559241 == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	p = (*c).P;
	switch ((*typ_559241).Kind) {
	case ((NU8) 11):
	case ((NU8) 10):
	case ((NU8) 8):
	{
		ttype226852* LOC6;
		LOC6 = 0;
		LOC6 = lastson_227267(typ_559241);
		gentraverseproc_559236(c, accessor, LOC6);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		NI64 arraysize;
		tloc226830 i;
		ttype226852* LOC8;
		TY589896 LOC9;
		TY589896 LOC10;
		trope178009* LOC11;
		TY554703 LOC12;
		arraysize = lengthord_264016((*typ_559241).Sons->data[0]);
		memset((void*)(&i), 0, sizeof(i));
		LOC8 = 0;
		LOC8 = getsystype_283030(((NU8) 31));
		gettemp_559246(p, LOC8, (&i), NIM_FALSE);
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = i.R;
		LOC9[1] = torope_178082(arraysize);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3504), LOC9, 2);
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC10[0] = accessor;
		LOC10[1] = i.R;
		LOC11 = 0;
		LOC11 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3480), LOC10, 2);
		gentraverseproc_559236(c, LOC11, (*typ_559241).Sons->data[1]);
		memset((void*)LOC12, 0, sizeof(LOC12));
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3505), LOC12, 0);
	}
	break;
	case ((NU8) 17):
	{
		{
			NI i_559788;
			NI HEX3Atmp_559847;
			NI LOC15;
			NI res_559850;
			i_559788 = 0;
			HEX3Atmp_559847 = 0;
			LOC15 = 0;
			LOC15 = sonslen_227255(typ_559241);
			HEX3Atmp_559847 = (NI32)(LOC15 - 1);
			res_559850 = 0;
			{
				while (1) {
					trope178009* LOC18;
					if (!(res_559850 <= HEX3Atmp_559847)) goto LA17;
					i_559788 = res_559850;
					LOC18 = 0;
					LOC18 = parentobj_559700(accessor, (*(*c).P).Module);
					gentraverseproc_559236(c, LOC18, (*typ_559241).Sons->data[i_559788]);
					res_559850 += 1;
				} LA17: ;
			}
		}
		{
			if (!!(((*typ_559241).N == NIM_NIL))) goto LA21;
			gentraverseproc_559253(c, accessor, (*typ_559241).N);
		}
		LA21: ;
	}
	break;
	case ((NU8) 18):
	{
		ttype226852* typ;
		typ = getuniquetype_549401(typ_559241);
		{
			NI i_559819;
			NI HEX3Atmp_559853;
			NI LOC25;
			NI res_559856;
			i_559819 = 0;
			HEX3Atmp_559853 = 0;
			LOC25 = 0;
			LOC25 = sonslen_227255(typ);
			HEX3Atmp_559853 = (NI32)(LOC25 - 1);
			res_559856 = 0;
			{
				while (1) {
					TY589896 LOC28;
					trope178009* LOC29;
					if (!(res_559856 <= HEX3Atmp_559853)) goto LA27;
					i_559819 = res_559856;
					memset((void*)LOC28, 0, sizeof(LOC28));
					LOC28[0] = accessor;
					LOC28[1] = torope_178082(((NI64) (i_559819)));
					LOC29 = 0;
					LOC29 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3534), LOC28, 2);
					gentraverseproc_559236(c, LOC29, (*typ).Sons->data[i_559819]);
					res_559856 += 1;
				} LA27: ;
			}
		}
	}
	break;
	case ((NU8) 22):
	case ((NU8) 28):
	case ((NU8) 24):
	{
		TY178515 LOC31;
		memset((void*)LOC31, 0, sizeof(LOC31));
		LOC31[0] = accessor;
		linecg_554135(p, ((NU8) 2), (*c).Visitorfrmt, LOC31, 1);
	}
	break;
	case ((NU8) 25):
	{
		{
			TY178515 LOC37;
			TY178515 LOC38;
			if (!((*typ_559241).Callconv == ((NU8) 8))) goto LA35;
			memset((void*)LOC37, 0, sizeof(LOC37));
			memset((void*)LOC38, 0, sizeof(LOC38));
			LOC38[0] = accessor;
			LOC37[0] = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3535), LOC38, 1);
			linecg_554135(p, ((NU8) 2), (*c).Visitorfrmt, LOC37, 1);
		}
		LA35: ;
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, gentraverseprocseq_559879)(ttraversalclosure559233* c, trope178009* accessor, ttype226852* typ) {
	tcproc550031* p;
	tloc226830 i;
	ttype226852* LOC1;
	TY555018 LOC2;
	NimStringDesc* LOC3;
	TY589896 LOC11;
	trope178009* LOC12;
	TY554703 LOC13;
	p = (*c).P;
	memset((void*)(&i), 0, sizeof(i));
	LOC1 = 0;
	LOC1 = getsystype_283030(((NU8) 31));
	gettemp_559246(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_170120 == ((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*) &TMP3502));
	}
	goto LA4;
	LA8: ;
	{
		LOC3 = copyString(((NimStringDesc*) &TMP3503));
	}
	LA4: ;
	LOC2[2] = torope_178076(LOC3);
	linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3501), LOC2, 3);
	memset((void*)LOC11, 0, sizeof(LOC11));
	LOC11[0] = accessor;
	LOC11[1] = i.R;
	LOC12 = 0;
	LOC12 = ropef_178107(((NimStringDesc*) &TMP3536), LOC11, 2);
	gentraverseproc_559236(c, LOC12, (*typ).Sons->data[0]);
	memset((void*)LOC13, 0, sizeof(LOC13));
	linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3505), LOC13, 0);
}

N_NIMCALL(trope178009*, gentraverseproc_560044)(tcgen550035* m, ttype226852* typ, NU8 reason) {
	trope178009* result;
	ttraversalclosure559233 c;
	tcproc550031* p;
	trope178009* header;
	TY178515 LOC3;
	trope178009* t;
	TY178515 LOC4;
	TY178515 LOC5;
	trope178009* generatedproc;
	TY557045 LOC20;
	trope178009** LOC21;
	trope178009** LOC22;
	trope178009** LOC23;
	TY178515 LOC24;
	result = 0;
	memset((void*)(&c), 0, sizeof(c));
	p = newproc_550230(NIM_NIL, m);
	result = getglobaltempname_555252();
	switch (reason) {
	case ((NU8) 0):
	{
		c.Visitorfrmt = copyString(((NimStringDesc*) &TMP3488));
	}
	break;
	default:
	{
	}
	break;
	}
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = result;
	header = ropef_178107(((NimStringDesc*) &TMP3489), LOC3, 1);
	t = gettypedesc_557306(m, typ);
	memset((void*)LOC4, 0, sizeof(LOC4));
	LOC4[0] = t;
	linef_554122(p, ((NU8) 0), ((NimStringDesc*) &TMP3490), LOC4, 1);
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = t;
	linef_554122(p, ((NU8) 1), ((NimStringDesc*) &TMP3491), LOC5, 1);
	c.P = p;
	{
		trope178009* LOC10;
		if (!((*typ).Kind == ((NU8) 24))) goto LA8;
		LOC10 = 0;
		LOC10 = torope_178076(((NimStringDesc*) &TMP3537));
		gentraverseprocseq_559879((&c), LOC10, typ);
	}
	goto LA6;
	LA8: ;
	{
		{
			ttype226852* LOC14;
			trope178009* LOC17;
			LOC14 = 0;
			LOC14 = skiptypes_231245((*typ).Sons->data[0], IL64(211106232576256));
			if (!((*LOC14).Kind == ((NU8) 4) || (*LOC14).Kind == ((NU8) 16))) goto LA15;
			LOC17 = 0;
			LOC17 = torope_178076(((NimStringDesc*) &TMP3537));
			gentraverseproc_559236((&c), LOC17, (*typ).Sons->data[0]);
		}
		goto LA12;
		LA15: ;
		{
			trope178009* LOC19;
			LOC19 = 0;
			LOC19 = torope_178076(((NimStringDesc*) &TMP3538));
			gentraverseproc_559236((&c), LOC19, (*typ).Sons->data[0]);
		}
		LA12: ;
	}
	LA6: ;
	memset((void*)LOC20, 0, sizeof(LOC20));
	LOC20[0] = header;
	LOC21 = 0;
	LOC21 = s_550183(p, ((NU8) 0));
	unsureAsgnRef((void**) (&LOC20[1]), (*LOC21));
	LOC22 = 0;
	LOC22 = s_550183(p, ((NU8) 1));
	unsureAsgnRef((void**) (&LOC20[2]), (*LOC22));
	LOC23 = 0;
	LOC23 = s_550183(p, ((NU8) 2));
	unsureAsgnRef((void**) (&LOC20[3]), (*LOC23));
	generatedproc = ropef_178107(((NimStringDesc*) &TMP3539), LOC20, 4);
	memset((void*)LOC24, 0, sizeof(LOC24));
	LOC24[0] = header;
	appf_178115(&(*m).S[(((NU8) 7))- 0], ((NimStringDesc*) &TMP3462), LOC24, 1);
	app_178052(&(*m).S[(((NU8) 10))- 0], generatedproc);
	return result;
}

N_NIMCALL(void, genarrayinfo_559210)(tcgen550035* m, ttype226852* typ, trope178009* name) {
	trope178009* LOC1;
	LOC1 = 0;
	LOC1 = gentypeinfo_557602(m, (*typ).Sons->data[1]);
	gentypeinfoauxbase_557801(m, typ, name, LOC1);
}

N_NIMCALL(void, gensetinfo_559132)(tcgen550035* m, ttype226852* typ, trope178009* name) {
	trope178009* tmp;
	TY555018 LOC1;
	NI64 LOC2;
	gentypeinfoaux_557859(m, typ, name);
	tmp = getnimnode_557606(m);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = tmp;
	LOC2 = 0;
	LOC2 = firstord_264004(typ);
	LOC1[1] = torope_178082(LOC2);
	LOC1[2] = name;
	appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3541), LOC1, 3);
}

N_NIMCALL(void, genenuminfo_558787)(tcgen550035* m, ttype226852* typ, trope178009* name) {
	trope178009* nodeptrs;
	NI length;
	TY589896 LOC1;
	trope178009* enumnames;
	trope178009* specialcases;
	NI firstnimnode;
	NIM_BOOL hasholes;
	trope178009* enumarray;
	trope178009* counter;
	TY178515 LOC24;
	TY555018 LOC25;
	TY559098 LOC26;
	TY557045 LOC27;
	gentypeinfoaux_557859(m, typ, name);
	nodeptrs = gettempname_555242();
	length = sonslen_227249((*typ).N);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = nodeptrs;
	LOC1[1] = torope_178082(((NI64) (length)));
	appf_178115(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3481), LOC1, 2);
	enumnames = 0;
	specialcases = 0;
	firstnimnode = (*m).Typenodes;
	hasholes = NIM_FALSE;
	{
		NI i_558815;
		NI HEX3Atmp_559115;
		NI res_559118;
		i_558815 = 0;
		HEX3Atmp_559115 = 0;
		HEX3Atmp_559115 = (NI32)(length - 1);
		res_559118 = 0;
		{
			while (1) {
				tsym226846* field;
				trope178009* elemnode;
				if (!(res_559118 <= HEX3Atmp_559115)) goto LA4;
				i_558815 = res_559118;
				field = (*(*(*typ).N).kindU.S6.Sons->data[i_558815]).kindU.S4.Sym;
				elemnode = getnimnode_557606(m);
				{
					trope178009* LOC9;
					if (!((*field).Ast == NIM_NIL)) goto LA7;
					LOC9 = 0;
					LOC9 = makecstring_196659((*(*field).Name).S);
					app_178052(&enumnames, LOC9);
				}
				goto LA5;
				LA7: ;
				{
					trope178009* LOC11;
					LOC11 = 0;
					LOC11 = makecstring_196659((*(*field).Ast).kindU.S3.Strval);
					app_178052(&enumnames, LOC11);
				}
				LA5: ;
				{
					NimStringDesc* LOC16;
					if (!(i_558815 < (NI32)(length - 1))) goto LA14;
					LOC16 = 0;
					LOC16 = rawNewString(tnl_175613->Sup.len + 2);
appendString(LOC16, ((NimStringDesc*) &TMP3403));
appendString(LOC16, tnl_175613);
					app_178060(&enumnames, LOC16);
				}
				LA14: ;
				{
					NIM_BOOL LOC19;
					TY589896 LOC23;
					LOC19 = 0;
					LOC19 = !(((*field).Position == i_558815));
					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_178082(((NI64) ((*field).Position)));
					appf_178115(&specialcases, ((NimStringDesc*) &TMP3542), LOC23, 2);
					hasholes = NIM_TRUE;
				}
				LA21: ;
				res_559118 += 1;
			} LA4: ;
		}
	}
	enumarray = gettempname_555242();
	counter = gettempname_555242();
	memset((void*)LOC24, 0, sizeof(LOC24));
	LOC24[0] = counter;
	appf_178115(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3543), LOC24, 1);
	memset((void*)LOC25, 0, sizeof(LOC25));
	LOC25[0] = enumarray;
	LOC25[1] = torope_178082(((NI64) (length)));
	LOC25[2] = enumnames;
	appf_178115(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3544), LOC25, 3);
	memset((void*)LOC26, 0, sizeof(LOC26));
	LOC26[0] = counter;
	LOC26[1] = torope_178082(((NI64) (length)));
	LOC26[2] = (*m).Typenodesname;
	LOC26[3] = torope_178082(((NI64) (firstnimnode)));
	LOC26[4] = enumarray;
	LOC26[5] = nodeptrs;
	appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3545), LOC26, 6);
	app_178052(&(*m).S[(((NU8) 14))- 0], specialcases);
	memset((void*)LOC27, 0, sizeof(LOC27));
	LOC27[0] = getnimnode_557606(m);
	LOC27[1] = torope_178082(((NI64) (length)));
	LOC27[2] = nodeptrs;
	LOC27[3] = name;
	appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3546), LOC27, 4);
	{
		TY178515 LOC32;
		if (!hasholes) goto LA30;
		memset((void*)LOC32, 0, sizeof(LOC32));
		LOC32[0] = name;
		appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3547), LOC32, 1);
	}
	LA30: ;
}

N_NIMCALL(trope178009*, discriminatortablename_557887)(tcgen550035* m, ttype226852* objtype_557890, tsym226846* d) {
	trope178009* result;
	ttype226852* objtype;
	TY589896 LOC8;
	NimStringDesc* LOC9;
	result = 0;
	objtype = objtype_557890;
	{
		while (1) {
			tsym226846* LOC3;
			LOC3 = 0;
			LOC3 = lookupinrecord_236236((*objtype).N, (*d).Name);
			if (!(LOC3 == NIM_NIL)) goto LA2;
			objtype = (*objtype).Sons->data[0];
		} LA2: ;
	}
	{
		if (!((*objtype).Sym == NIM_NIL)) goto LA6;
		internalerror_198987((*d).Info, ((NimStringDesc*) &TMP3548));
	}
	LA6: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = torope_178082(((NI64) ((*objtype).Sup.Id)));
	LOC9 = 0;
	LOC9 = mangle_549763((*(*d).Name).S);
	LOC8[1] = torope_178076(LOC9);
	result = ropef_178107(((NimStringDesc*) &TMP3549), LOC8, 2);
	return result;
}

N_NIMCALL(void, genobjectfields_557956)(tcgen550035* m, ttype226852* typ, tnode226816* n, trope178009* expr) {
	switch ((*n).Kind) {
	case ((NU8) 137):
	{
		NI l;
		l = sonslen_227249(n);
		{
			if (!(l == 1)) goto LA4;
			genobjectfields_557956(m, typ, (*n).kindU.S6.Sons->data[0], expr);
		}
		goto LA2;
		LA4: ;
		{
			trope178009* tmp;
			TY589896 LOC9;
			TY555018 LOC14;
			if (!(0 < l)) goto LA7;
			tmp = gettempname_555242();
			memset((void*)LOC9, 0, sizeof(LOC9));
			LOC9[0] = tmp;
			LOC9[1] = torope_178082(((NI64) (l)));
			appf_178115(&(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP3481), LOC9, 2);
			{
				NI i_557996;
				NI HEX3Atmp_558597;
				NI res_558600;
				i_557996 = 0;
				HEX3Atmp_558597 = 0;
				HEX3Atmp_558597 = (NI32)(l - 1);
				res_558600 = 0;
				{
					while (1) {
						trope178009* tmp2;
						TY555018 LOC13;
						if (!(res_558600 <= HEX3Atmp_558597)) goto LA12;
						i_557996 = res_558600;
						tmp2 = getnimnode_557606(m);
						memset((void*)LOC13, 0, sizeof(LOC13));
						LOC13[0] = tmp;
						LOC13[1] = torope_178082(((NI64) (i_557996)));
						LOC13[2] = tmp2;
						appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3482), LOC13, 3);
						genobjectfields_557956(m, typ, (*n).kindU.S6.Sons->data[i_557996], tmp2);
						res_558600 += 1;
					} LA12: ;
				}
			}
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = expr;
			LOC14[1] = torope_178082(((NI64) (l)));
			LOC14[2] = tmp;
			appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3484), LOC14, 3);
		}
		goto LA2;
		LA7: ;
		{
			TY589896 LOC16;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = expr;
			LOC16[1] = torope_178082(((NI64) (l)));
			appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3485), LOC16, 2);
		}
		LA2: ;
	}
	break;
	case ((NU8) 138):
	{
		tsym226846* field;
		trope178009* tmp;
		NI64 l;
		TY558403 LOC18;
		TY589896 LOC19;
		field = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		tmp = discriminatortablename_557887(m, typ, field);
		l = lengthord_264016((*field).Typ);
		memset((void*)LOC18, 0, sizeof(LOC18));
		LOC18[0] = expr;
		LOC18[1] = gettypedesc_557306(m, typ);
		LOC18[2] = (*field).Loc.R;
		LOC18[3] = gentypeinfo_557602(m, (*field).Typ);
		LOC18[4] = makecstring_196659((*(*field).Name).S);
		LOC18[5] = tmp;
		LOC18[6] = torope_178082(l);
		appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3550), LOC18, 7);
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = tmp;
		LOC19[1] = torope_178082((NI64)(l + IL64(1)));
		appf_178115(&(*m).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3551), LOC19, 2);
		{
			NI i_558423;
			NI HEX3Atmp_558610;
			NI LOC21;
			NI res_558613;
			i_558423 = 0;
			HEX3Atmp_558610 = 0;
			LOC21 = 0;
			LOC21 = sonslen_227249(n);
			HEX3Atmp_558610 = (NI32)(LOC21 - 1);
			res_558613 = 1;
			{
				while (1) {
					tnode226816* b;
					trope178009* tmp2;
					tnode226816* LOC24;
					if (!(res_558613 <= HEX3Atmp_558610)) goto LA23;
					i_558423 = res_558613;
					b = (*n).kindU.S6.Sons->data[i_558423];
					tmp2 = getnimnode_557606(m);
					LOC24 = 0;
					LOC24 = lastson_227261(b);
					genobjectfields_557956(m, typ, LOC24, tmp2);
					switch ((*b).Kind) {
					case ((NU8) 85):
					{
						{
							NI LOC28;
							LOC28 = 0;
							LOC28 = sonslen_227249(b);
							if (!(LOC28 < 2)) goto LA29;
							internalerror_198987((*b).Info, ((NimStringDesc*) &TMP3552));
						}
						LA29: ;
						{
							NI j_558453;
							NI HEX3Atmp_558605;
							NI LOC32;
							NI res_558608;
							j_558453 = 0;
							HEX3Atmp_558605 = 0;
							LOC32 = 0;
							LOC32 = sonslen_227249(b);
							HEX3Atmp_558605 = (NI32)(LOC32 - 2);
							res_558608 = 0;
							{
								while (1) {
									if (!(res_558608 <= HEX3Atmp_558605)) goto LA34;
									j_558453 = res_558608;
									{
										NI x;
										NI64 LOC39;
										NI y;
										NI64 LOC40;
										if (!((*(*b).kindU.S6.Sons->data[j_558453]).Kind == ((NU8) 44))) goto LA37;
										LOC39 = 0;
										LOC39 = getordvalue_264187((*(*b).kindU.S6.Sons->data[j_558453]).kindU.S6.Sons->data[0]);
										x = ((NI) (LOC39));
										LOC40 = 0;
										LOC40 = getordvalue_264187((*(*b).kindU.S6.Sons->data[j_558453]).kindU.S6.Sons->data[1]);
										y = ((NI) (LOC40));
										{
											while (1) {
												TY555018 LOC43;
												if (!(x <= y)) goto LA42;
												memset((void*)LOC43, 0, sizeof(LOC43));
												LOC43[0] = tmp;
												LOC43[1] = torope_178082(((NI64) (x)));
												LOC43[2] = tmp2;
												appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3482), LOC43, 3);
												x += 1;
											} LA42: ;
										}
									}
									goto LA35;
									LA37: ;
									{
										TY555018 LOC45;
										NI64 LOC46;
										memset((void*)LOC45, 0, sizeof(LOC45));
										LOC45[0] = tmp;
										LOC46 = 0;
										LOC46 = getordvalue_264187((*b).kindU.S6.Sons->data[j_558453]);
										LOC45[1] = torope_178082(LOC46);
										LOC45[2] = tmp2;
										appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3482), LOC45, 3);
									}
									LA35: ;
									res_558608 += 1;
								} LA34: ;
							}
						}
					}
					break;
					case ((NU8) 88):
					{
						TY555018 LOC48;
						memset((void*)LOC48, 0, sizeof(LOC48));
						LOC48[0] = tmp;
						LOC48[1] = torope_178082(l);
						LOC48[2] = tmp2;
						appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3482), LOC48, 3);
					}
					break;
					default:
					{
						internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3553));
					}
					break;
					}
					res_558613 += 1;
				} LA23: ;
			}
		}
	}
	break;
	case ((NU8) 3):
	{
		tsym226846* field;
		TY558593 LOC51;
		field = (*n).kindU.S4.Sym;
		memset((void*)LOC51, 0, sizeof(LOC51));
		LOC51[0] = expr;
		LOC51[1] = gettypedesc_557306(m, typ);
		LOC51[2] = (*field).Loc.R;
		LOC51[3] = gentypeinfo_557602(m, (*field).Typ);
		LOC51[4] = makecstring_196659((*(*field).Name).S);
		appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3554), LOC51, 5);
	}
	break;
	default:
	{
		internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3555));
	}
	break;
	}
}

N_NIMCALL(void, genobjectinfo_558651)(tcgen550035* m, ttype226852* typ, trope178009* name) {
	trope178009* tmp;
	TY589896 LOC7;
	ttype226852* t;
	{
		if (!((*typ).Kind == ((NU8) 17))) goto LA3;
		gentypeinfoaux_557859(m, typ, name);
	}
	goto LA1;
	LA3: ;
	{
		trope178009* LOC6;
		LOC6 = 0;
		LOC6 = torope_178076(((NimStringDesc*) &TMP3382));
		gentypeinfoauxbase_557801(m, typ, name, LOC6);
	}
	LA1: ;
	tmp = getnimnode_557606(m);
	genobjectfields_557956(m, typ, (*typ).N, tmp);
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = name;
	LOC7[1] = tmp;
	appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3486), LOC7, 2);
	t = (*typ).Sons->data[0];
	{
		while (1) {
			if (!!((t == NIM_NIL))) goto LA9;
			t = skiptypes_231245(t, IL64(211106232576256));
			(*t).Flags |= ((NI32)1)<<((((NU8) 5))%(sizeof(NI32)*8));
			t = (*t).Sons->data[0];
		} LA9: ;
	}
}

N_NIMCALL(void, gendeepcopyproc_560484)(tcgen550035* m, tsym226846* s, trope178009* result) {
	TY589896 LOC1;
	genproc_554629(m, s);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = result;
	LOC1[1] = (*s).Loc.R;
	appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3557), LOC1, 2);
}

N_NIMCALL(trope178009*, gentypeinfo_557602)(tcgen550035* m, ttype226852* t_557605) {
	trope178009* result;
	ttype226852* origtype;
	ttype226852* t;
	TY178515 LOC1;
	tsym226846* owner;
	ttype226852* LOC10;
	TY555018 LOC54;
	result = 0;
	origtype = t_557605;
	t = getuniquetype_549401(t_557605);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = torope_178082(((NI64) ((*t).Sup.Id)));
	result = ropef_178107(((NimStringDesc*) &TMP3470), LOC1, 1);
	{
		NIM_BOOL LOC4;
		TY555018 LOC7;
		LOC4 = 0;
		LOC4 = containsorincl_223916((&(*m).Typeinfomarker), (*t).Sup.Id);
		if (!LOC4) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = torope_178076(((NimStringDesc*) &TMP3471));
		LOC7[1] = result;
		LOC7[2] = torope_178076(((NimStringDesc*) &TMP3412));
		result = con_178045(LOC7, 3);
		goto BeforeRet;
	}
	LA5: ;
	{
		while (1) {
			if (!((*t).Kind == ((NU8) 13))) goto LA9;
			t = lastson_227267(t);
		} LA9: ;
	}
	LOC10 = 0;
	LOC10 = skiptypes_231245(t, IL64(211106247256320));
	owner = getmodule_236243((*LOC10).Owner);
	{
		tcgen550035* LOC15;
		trope178009* LOC16;
		trope178009* LOC17;
		trope178009* LOC18;
		TY589896 LOC19;
		NimStringDesc* LOC20;
		TY555018 LOC21;
		if (!!((owner == (*m).Module))) goto LA13;
		LOC15 = 0;
		LOC15 = bmod_550220(owner);
		LOC16 = 0;
		LOC16 = gentypeinfo_557602(LOC15, t);
		LOC17 = 0;
		LOC17 = cgsym_553608(m, ((NimStringDesc*) &TMP3472));
		LOC18 = 0;
		LOC18 = cgsym_553608(m, ((NimStringDesc*) &TMP3473));
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = result;
		LOC20 = 0;
		LOC20 = typetostring_264031(t, ((NU8) 0));
		LOC19[1] = torope_178076(LOC20);
		appf_178115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3474), LOC19, 2);
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = torope_178076(((NimStringDesc*) &TMP3471));
		LOC21[1] = result;
		LOC21[2] = torope_178076(((NimStringDesc*) &TMP3412));
		result = con_178045(LOC21, 3);
		goto BeforeRet;
	}
	LA13: ;
	switch ((*t).Kind) {
	case ((NU8) 3):
	{
		result = torope_178076(((NimStringDesc*) &TMP3475));
	}
	break;
	case ((NU8) 26):
	case ((NU8) 1):
	case ((NU8) 2):
	case ((NU8) 29):
	case ((NU8) 28):
	case ((NU8) 31) ... ((NU8) 44):
	case ((NU8) 23):
	{
		trope178009* LOC24;
		LOC24 = 0;
		LOC24 = torope_178076(((NimStringDesc*) &TMP3475));
		gentypeinfoauxbase_557801(m, t, result, LOC24);
	}
	break;
	case ((NU8) 25):
	{
		{
			trope178009* LOC30;
			if (!!(((*t).Callconv == ((NU8) 8)))) goto LA28;
			LOC30 = 0;
			LOC30 = torope_178076(((NimStringDesc*) &TMP3475));
			gentypeinfoauxbase_557801(m, t, result, LOC30);
		}
		goto LA26;
		LA28: ;
		{
			ttype226852* LOC32;
			LOC32 = 0;
			LOC32 = fakeclosuretype_559218((*t).Owner);
			gentupleinfo_558715(m, LOC32, result);
		}
		LA26: ;
	}
	break;
	case ((NU8) 24):
	case ((NU8) 22):
	{
		gentypeinfoaux_557859(m, t, result);
		{
			trope178009* markerproc;
			TY589896 LOC38;
			if (!(((NU8) 2) <= gselectedgc_170121)) goto LA36;
			markerproc = gentraverseproc_560044(m, t, ((NU8) 0));
			memset((void*)LOC38, 0, sizeof(LOC38));
			LOC38[0] = result;
			LOC38[1] = markerproc;
			appf_178115(&(*m).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3540), LOC38, 2);
		}
		LA36: ;
	}
	break;
	case ((NU8) 21):
	case ((NU8) 20):
	{
		gentypeinfoaux_557859(m, t, result);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		genarrayinfo_559210(m, t, result);
	}
	break;
	case ((NU8) 19):
	{
		gensetinfo_559132(m, t, result);
	}
	break;
	case ((NU8) 14):
	{
		genenuminfo_558787(m, t, result);
	}
	break;
	case ((NU8) 17):
	{
		genobjectinfo_558651(m, t, result);
	}
	break;
	case ((NU8) 18):
	{
		gentupleinfo_558715(m, t, result);
	}
	break;
	default:
	{
		NimStringDesc* LOC46;
		LOC46 = 0;
		LOC46 = rawNewString(reprEnum((*t).Kind, (&NTI226258))->Sup.len + 13);
appendString(LOC46, ((NimStringDesc*) &TMP3556));
appendString(LOC46, reprEnum((*t).Kind, (&NTI226258)));
appendChar(LOC46, 41);
		internalerror_199006(LOC46);
	}
	break;
	}
	{
		if (!!(((*t).Deepcopy == NIM_NIL))) goto LA49;
		gendeepcopyproc_560484(m, (*t).Deepcopy, result);
	}
	goto LA47;
	LA49: ;
	{
		if (!!(((*origtype).Deepcopy == NIM_NIL))) goto LA52;
		gendeepcopyproc_560484(m, (*origtype).Deepcopy, result);
	}
	goto LA47;
	LA52: ;
	LA47: ;
	memset((void*)LOC54, 0, sizeof(LOC54));
	LOC54[0] = torope_178076(((NimStringDesc*) &TMP3471));
	LOC54[1] = result;
	LOC54[2] = torope_178076(((NimStringDesc*) &TMP3412));
	result = con_178045(LOC54, 3);
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, localdebuginfo_561469)(tcproc550031* p, tsym226846* s) {
	trope178009* a;
	TY557045 LOC16;
	NimStringDesc* LOC17;
	{
		if (!!(((163840 & (*p).Options) == 163840))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		ttype226852* LOC7;
		LOC7 = 0;
		LOC7 = skiptypes_231245((*s).Typ, IL64(211106240964864));
		if (!((*LOC7).Kind == ((NU8) 27) || (*LOC7).Kind == ((NU8) 48))) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	a = con_178038(((NimStringDesc*) &TMP3468), (*s).Loc.R);
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = ((*s).Kind == ((NU8) 3));
		if (!(LOC12)) goto LA13;
		LOC12 = ccgintroducedptr_555262(s);
		LA13: ;
		if (!LOC12) goto LA14;
		a = (*s).Loc.R;
	}
	LA14: ;
	memset((void*)LOC16, 0, sizeof(LOC16));
	LOC16[0] = torope_178082(((NI64) ((*p).Maxframelen)));
	LOC17 = 0;
	LOC17 = nsuNormalize((*(*s).Name).S);
	LOC16[1] = makecstring_196659(LOC17);
	LOC16[2] = a;
	LOC16[3] = gentypeinfo_557602((*p).Module, (*s).Loc.T);
	linef_554122(p, ((NU8) 1), ((NimStringDesc*) &TMP3469), LOC16, 4);
	(*p).Maxframelen += 1;
	(*p).Blocks->data[(NI32)((*p).Blocks->Sup.len - 1)].Framelen += 1;
	BeforeRet: ;
}

N_NIMCALL(void, assignlocalvar_561577)(tcproc550031* p, tsym226846* s) {
	trope178009* decl;
	{
		trope178009* LOC5;
		if (!((*s).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_554667(s);
		fillloc_553376((&(*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_557306((*p).Module, (*s).Loc.T);
	{
		TY178515 LOC22;
		if (!(*s).Constraint == 0) goto LA12;
		{
			if (!(((*s).Flags &(1<<((((NU8) 8))&31)))!=0)) goto LA16;
			app_178060(&decl, ((NimStringDesc*) &TMP3464));
		}
		LA16: ;
		{
			if (!(((*s).Flags &(1<<((((NU8) 7))&31)))!=0)) goto LA20;
			app_178060(&decl, ((NimStringDesc*) &TMP3465));
		}
		LA20: ;
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = (*s).Loc.R;
		appf_178115(&decl, ((NimStringDesc*) &TMP3466), LOC22, 1);
	}
	goto LA10;
	LA12: ;
	{
		NimStringDesc* LOC24;
		TY589896 LOC25;
		LOC24 = 0;
		LOC24 = rawNewString((*(*s).Constraint).kindU.S3.Strval->Sup.len + 3);
appendString(LOC24, (*(*s).Constraint).kindU.S3.Strval);
appendString(LOC24, ((NimStringDesc*) &TMP3467));
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = decl;
		LOC25[1] = (*s).Loc.R;
		decl = ropef_178107(LOC24, LOC25, 2);
	}
	LA10: ;
	line_554100(p, ((NU8) 0), decl);
	localdebuginfo_561469(p, s);
}

N_NIMCALL(void, initlocalvar_560943)(tcproc550031* p, tsym226846* v, NIM_BOOL immediateasgn) {
	{
		if (!!((((*v).Flags &(1<<((((NU8) 12))&31)))!=0))) goto LA3;
		{
			if (!!(immediateasgn)) goto LA7;
			constructloc_560924(p, (*v).Loc, NIM_FALSE);
		}
		LA7: ;
	}
	LA3: ;
}

N_NIMCALL(void, fillresult_555488)(tsym226846* param) {
	TY554703 LOC1;
	trope178009* LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = ropef_178107(((NimStringDesc*) &TMP3559), LOC1, 0);
	fillloc_553376((&(*param).Loc), ((NU8) 4), (*param).Typ, LOC2, ((NU8) 1));
	{
		NIM_BOOL LOC5;
		NU8 LOC6;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = mapreturntype_555099((*param).Typ);
		LOC5 = !((LOC6 == ((NU8) 17)));
		if (!(LOC5)) goto LA7;
		LOC5 = isinvalidreturntype_555174((*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_561344)(tcproc550031* p, tsym226846* s) {
	{
		trope178009* tmp;
		trope178009* LOC5;
		TY555018 LOC6;
		if (!!((((*s).Loc.Flags &(1<<((((NU8) 1))&7)))!=0))) goto LA3;
		(*p).Labels += 1;
		LOC5 = 0;
		LOC5 = torope_178082(((NI64) ((*p).Labels)));
		tmp = con_178038(((NimStringDesc*) &TMP3492), 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_557306((*p).Module, (*s).Loc.T);
		linef_554122(p, ((NU8) 1), ((NimStringDesc*) &TMP3560), LOC6, 3);
		asgnRefNoCycle((void**) (&(*s).Loc.R), tmp);
	}
	LA3: ;
}

N_NIMCALL(void, assignparam_562159)(tcproc550031* p, tsym226846* s) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*s).Flags &(1<<((((NU8) 15))&31)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = (gcmd_170120 == ((NU8) 5));
		LA4: ;
		if (!LOC3) goto LA5;
		allocparam_561344(p, s);
	}
	LA5: ;
	localdebuginfo_561469(p, s);
}

N_NIMCALL(void, closuresetup_589217)(tcproc550031* p, tsym226846* prc) {
	tnode226816* ls;
	tnode226816* LOC5;
	tsym226846* env;
	TY589896 LOC10;
	{
		if (!!((((*(*prc).Typ).Flags &(1<<((((NU8) 11))&31)))!=0))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = HEX5BHEX5D_227698((*prc).Ast, 3);
	ls = lastson_227261(LOC5);
	{
		if (!!(((*ls).Kind == ((NU8) 3)))) goto LA8;
		internalerror_198987((*prc).Info, ((NimStringDesc*) &TMP3561));
	}
	LA8: ;
	env = (*ls).kindU.S4.Sym;
	assignlocalvar_561577(p, env);
	memset((void*)LOC10, 0, sizeof(LOC10));
	LOC10[0] = rdloc_560637((*env).Loc);
	LOC10[1] = gettypedesc_557306((*p).Module, (*env).Typ);
	linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3562), LOC10, 2);
	BeforeRet: ;
}

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

N_NIMCALL(void, keepalive_561007)(tcproc550031* p, tloc226830 tokeepalive) {
}

N_NIMCALL(void, genrefassign_560819)(tcproc550031* p, tloc226830 dest, tloc226830 src, NU8 flags) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		TY589896 LOC8;
		LOC3 = 0;
		LOC3 = (dest.S == ((NU8) 1));
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = usesnativegc_170179();
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_560637(dest);
		LOC8[1] = rdloc_560637(src);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), LOC8, 2);
		{
			if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA11;
			keepalive_561007(p, dest);
		}
		LA11: ;
	}
	goto LA1;
	LA6: ;
	{
		if (!(dest.S == ((NU8) 2))) goto LA14;
		{
			NIM_BOOL LOC18;
			TY589896 LOC21;
			LOC18 = 0;
			LOC18 = canformacycle_264175(dest.T);
			if (!LOC18) goto LA19;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = addrloc_560664(dest);
			LOC21[1] = rdloc_560637(src);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3564), LOC21, 2);
		}
		goto LA16;
		LA19: ;
		{
			TY589896 LOC23;
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = addrloc_560664(dest);
			LOC23[1] = rdloc_560637(src);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3565), LOC23, 2);
		}
		LA16: ;
	}
	goto LA1;
	LA14: ;
	{
		TY589896 LOC25;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = addrloc_560664(dest);
		LOC25[1] = rdloc_560637(src);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3566), LOC25, 2);
		{
			if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA28;
			keepalive_561007(p, dest);
		}
		LA28: ;
	}
	LA1: ;
}

N_NIMCALL(void, optasgnloc_575760)(tloc226830 a, ttype226852* t, trope178009* field, tloc226830* Result) {
	trope178009* LOC1;
	trope178009* LOC2;
	(*Result).K = ((NU8) 5);
	(*Result).S = a.S;
	unsureAsgnRef((void**) (&(*Result).T), t);
	LOC1 = 0;
	LOC1 = rdloc_560637(a);
	LOC2 = 0;
	LOC2 = con_178031(LOC1, ((NimStringDesc*) &TMP3572));
	unsureAsgnRef((void**) (&(*Result).R), con_178024(LOC2, field));
	unsureAsgnRef((void**) (&(*Result).Heaproot), a.Heaproot);
}

N_NIMCALL(void, genoptasgntuple_575773)(tcproc550031* p, tloc226830 dest, tloc226830 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_575859;
		NI HEX3Atmp_575867;
		NI LOC10;
		NI res_575870;
		i_575859 = 0;
		HEX3Atmp_575867 = 0;
		LOC10 = 0;
		LOC10 = len_231005(dest.T);
		HEX3Atmp_575867 = (LOC10 - 1);
		res_575870 = 0;
		{
			while (1) {
				ttype226852* t;
				trope178009* field;
				TY178515 LOC13;
				tloc226830 LOC14;
				tloc226830 LOC15;
				if (!(res_575870 <= HEX3Atmp_575867)) goto LA12;
				i_575859 = res_575870;
				t = (*dest.T).Sons->data[i_575859];
				memset((void*)LOC13, 0, sizeof(LOC13));
				LOC13[0] = torope_178082(((NI64) (i_575859)));
				field = ropef_178107(((NimStringDesc*) &TMP3575), LOC13, 1);
				memset((void*)(&LOC14), 0, sizeof(LOC14));
				optasgnloc_575760(dest, t, field, (&LOC14));
				memset((void*)(&LOC15), 0, sizeof(LOC15));
				optasgnloc_575760(src, t, field, (&LOC15));
				genassignment_562330(p, LOC14, LOC15, newflags);
				res_575870 += 1;
			} LA12: ;
		}
	}
}

N_NIMCALL(void, gengenericasgn_576007)(tcproc550031* p, tloc226830 dest, tloc226830 src, NU8 flags) {
	{
		NIM_BOOL LOC3;
		ttype226852* LOC5;
		LOC3 = 0;
		LOC3 = !(((flags &(1<<((((NU8) 0))&7)))!=0));
		if (LOC3) goto LA4;
		LOC5 = 0;
		LOC5 = skiptypes_231245(dest.T, IL64(211106242013440));
		LOC3 = (((*LOC5).Flags &(1<<((((NU8) 6))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA6;
		{
			NIM_BOOL LOC10;
			NIM_BOOL LOC12;
			TY555018 LOC15;
			LOC10 = 0;
			LOC10 = (dest.S == ((NU8) 1));
			if (LOC10) goto LA11;
			LOC12 = 0;
			LOC12 = usesnativegc_170179();
			LOC10 = !(LOC12);
			LA11: ;
			if (!LOC10) goto LA13;
			usestringh_553459((*p).Module);
			memset((void*)LOC15, 0, sizeof(LOC15));
			LOC15[0] = addrloc_560664(dest);
			LOC15[1] = addrloc_560664(src);
			LOC15[2] = rdloc_560637(dest);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3576), LOC15, 3);
			{
				if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA18;
				keepalive_561007(p, dest);
			}
			LA18: ;
		}
		goto LA8;
		LA13: ;
		{
			TY555018 LOC21;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = addrloc_560664(dest);
			LOC21[1] = addrloc_560664(src);
			LOC21[2] = gentypeinfo_557602((*p).Module, dest.T);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3577), LOC21, 3);
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	{
		TY555018 LOC23;
		memset((void*)LOC23, 0, sizeof(LOC23));
		LOC23[0] = addrloc_560664(dest);
		LOC23[1] = addrloc_560664(src);
		LOC23[2] = gentypeinfo_557602((*p).Module, dest.T);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3578), LOC23, 3);
	}
	LA1: ;
}

N_NIMCALL(NI, asgncomplexity_575701)(tnode226816* 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):
		{
			{
				tnode226816* t_575723;
				t_575723 = 0;
				{
					NI i_575740;
					NI HEX3Atmp_575742;
					NI LOC10;
					NI res_575744;
					i_575740 = 0;
					HEX3Atmp_575742 = 0;
					LOC10 = 0;
					LOC10 = len_227364(n);
					HEX3Atmp_575742 = (LOC10 - 1);
					res_575744 = 0;
					{
						while (1) {
							NI LOC13;
							if (!(res_575744 <= HEX3Atmp_575742)) goto LA12;
							i_575740 = res_575744;
							t_575723 = (*n).kindU.S6.Sons->data[i_575740];
							LOC13 = 0;
							LOC13 = asgncomplexity_575701(t_575723);
							result += LOC13;
							res_575744 += 1;
						} LA12: ;
					}
				}
			}
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, genoptasgnobject_575884)(tcproc550031* p, tloc226830 dest, tloc226830 src, NU8 flags, tnode226816* 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):
	{
		tsym226846* field;
		tloc226830 LOC14;
		tloc226830 LOC15;
		field = (*t).kindU.S4.Sym;
		memset((void*)(&LOC14), 0, sizeof(LOC14));
		optasgnloc_575760(dest, (*field).Typ, (*field).Loc.R, (&LOC14));
		memset((void*)(&LOC15), 0, sizeof(LOC15));
		optasgnloc_575760(src, (*field).Typ, (*field).Loc.R, (&LOC15));
		genassignment_562330(p, LOC14, LOC15, newflags);
	}
	break;
	case ((NU8) 137):
	{
		{
			tnode226816* child_575982;
			child_575982 = 0;
			{
				NI i_575987;
				NI HEX3Atmp_575989;
				NI LOC19;
				NI res_575991;
				i_575987 = 0;
				HEX3Atmp_575989 = 0;
				LOC19 = 0;
				LOC19 = len_227364(t);
				HEX3Atmp_575989 = (LOC19 - 1);
				res_575991 = 0;
				{
					while (1) {
						if (!(res_575991 <= HEX3Atmp_575989)) goto LA21;
						i_575987 = res_575991;
						child_575982 = (*t).kindU.S6.Sons->data[i_575987];
						genoptasgnobject_575884(p, dest, src, newflags, child_575982);
						res_575991 += 1;
					} LA21: ;
				}
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, genassignment_562330)(tcproc550031* p, tloc226830 dest, tloc226830 src, NU8 flags) {
	ttype226852* ty;
	{
		NIM_BOOL LOC3;
		TY589896 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_560637(dest);
		LOC7[1] = rdloc_560637(src);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), LOC7, 2);
		goto BeforeRet;
	}
	LA5: ;
	ty = skiptypes_231245(dest.T, IL64(211106233624832));
	switch ((*ty).Kind) {
	case ((NU8) 22):
	{
		genrefassign_560819(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_560819(p, dest, src, flags);
		}
		goto LA10;
		LA14: ;
		{
			TY555018 LOC17;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = addrloc_560664(dest);
			LOC17[1] = rdloc_560637(src);
			LOC17[2] = gentypeinfo_557602((*p).Module, dest.T);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3567), 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_560819(p, dest, src, flags);
		}
		goto LA19;
		LA23: ;
		{
			{
				NIM_BOOL LOC28;
				NIM_BOOL LOC30;
				TY589896 LOC33;
				LOC28 = 0;
				LOC28 = (dest.S == ((NU8) 1));
				if (LOC28) goto LA29;
				LOC30 = 0;
				LOC30 = usesnativegc_170179();
				LOC28 = !(LOC30);
				LA29: ;
				if (!LOC28) goto LA31;
				memset((void*)LOC33, 0, sizeof(LOC33));
				LOC33[0] = rdloc_560637(dest);
				LOC33[1] = rdloc_560637(src);
				linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3568), LOC33, 2);
				{
					if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA36;
					keepalive_561007(p, dest);
				}
				LA36: ;
			}
			goto LA26;
			LA31: ;
			{
				tloc226830 tmp;
				TY555018 LOC41;
				TY178515 LOC42;
				if (!(dest.S == ((NU8) 2))) goto LA39;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_559246(p, ty, (&tmp), NIM_FALSE);
				memset((void*)LOC41, 0, sizeof(LOC41));
				LOC41[0] = rdloc_560637(dest);
				LOC41[1] = rdloc_560637(src);
				LOC41[2] = rdloc_560637(tmp);
				linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3569), LOC41, 3);
				memset((void*)LOC42, 0, sizeof(LOC42));
				LOC42[0] = rdloc_560637(tmp);
				linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3570), LOC42, 1);
			}
			goto LA26;
			LA39: ;
			{
				TY589896 LOC44;
				memset((void*)LOC44, 0, sizeof(LOC44));
				LOC44[0] = addrloc_560664(dest);
				LOC44[1] = rdloc_560637(src);
				linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3571), LOC44, 2);
				{
					if (!((flags &(1<<((((NU8) 6))&7)))!=0)) goto LA47;
					keepalive_561007(p, dest);
				}
				LA47: ;
			}
			LA26: ;
		}
		LA19: ;
	}
	break;
	case ((NU8) 25):
	{
		{
			NIM_BOOL LOC52;
			tloc226830 a;
			trope178009* LOC55;
			tloc226830 LOC56;
			tloc226830 b;
			trope178009* LOC57;
			tloc226830 LOC58;
			TY589896 LOC59;
			LOC52 = 0;
			LOC52 = needscomplexassignment_555121(dest.T);
			if (!LOC52) goto LA53;
			memset((void*)(&a), 0, sizeof(a));
			LOC55 = 0;
			LOC55 = torope_178076(((NimStringDesc*) &TMP3573));
			memset((void*)(&LOC56), 0, sizeof(LOC56));
			optasgnloc_575760(dest, dest.T, LOC55, (&LOC56));
			memcpy((void*)(&a), (NIM_CONST void*)(&LOC56), sizeof(a));
			memset((void*)(&b), 0, sizeof(b));
			LOC57 = 0;
			LOC57 = torope_178076(((NimStringDesc*) &TMP3573));
			memset((void*)(&LOC58), 0, sizeof(LOC58));
			optasgnloc_575760(src, dest.T, LOC57, (&LOC58));
			memcpy((void*)(&b), (NIM_CONST void*)(&LOC58), sizeof(b));
			genrefassign_560819(p, a, b, flags);
			memset((void*)LOC59, 0, sizeof(LOC59));
			LOC59[0] = rdloc_560637(dest);
			LOC59[1] = rdloc_560637(src);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3574), LOC59, 2);
		}
		goto LA50;
		LA53: ;
		{
			TY589896 LOC61;
			memset((void*)LOC61, 0, sizeof(LOC61));
			LOC61[0] = rdloc_560637(dest);
			LOC61[1] = rdloc_560637(src);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), LOC61, 2);
		}
		LA50: ;
	}
	break;
	case ((NU8) 18):
	{
		{
			NIM_BOOL LOC65;
			LOC65 = 0;
			LOC65 = needscomplexassignment_555121(dest.T);
			if (!LOC65) goto LA66;
			{
				NI LOC70;
				LOC70 = 0;
				LOC70 = len_231005(dest.T);
				if (!(LOC70 <= 4)) goto LA71;
				genoptasgntuple_575773(p, dest, src, flags);
			}
			goto LA68;
			LA71: ;
			{
				gengenericasgn_576007(p, dest, src, flags);
			}
			LA68: ;
		}
		goto LA63;
		LA66: ;
		{
			TY589896 LOC75;
			memset((void*)LOC75, 0, sizeof(LOC75));
			LOC75[0] = rdloc_560637(dest);
			LOC75[1] = rdloc_560637(src);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), LOC75, 2);
		}
		LA63: ;
	}
	break;
	case ((NU8) 17):
	{
		{
			NIM_BOOL LOC79;
			LOC79 = 0;
			LOC79 = isobjlackingtypefield_555128(ty);
			if (!!(LOC79)) goto LA80;
			gengenericasgn_576007(p, dest, src, flags);
		}
		goto LA77;
		LA80: ;
		{
			NIM_BOOL LOC83;
			LOC83 = 0;
			LOC83 = needscomplexassignment_555121(ty);
			if (!LOC83) goto LA84;
			{
				NIM_BOOL LOC88;
				NI LOC90;
				trope178009* LOC93;
				LOC88 = 0;
				LOC88 = (*ty).Sons->data[0] == 0;
				if (!(LOC88)) goto LA89;
				LOC90 = 0;
				LOC90 = asgncomplexity_575701((*ty).N);
				LOC88 = (LOC90 <= 4);
				LA89: ;
				if (!LOC88) goto LA91;
				LOC93 = 0;
				LOC93 = gettypedesc_557306((*p).Module, ty);
				{
					NimStringDesc* LOC98;
					if (!!(!(((*ty).N == NIM_NIL)))) goto LA96;
					LOC98 = 0;
					LOC98 = HEX24_199126(TMP3579);
					internalerror_199006(LOC98);
				}
				LA96: ;
				genoptasgnobject_575884(p, dest, src, flags, (*ty).N);
			}
			goto LA86;
			LA91: ;
			{
				gengenericasgn_576007(p, dest, src, flags);
			}
			LA86: ;
		}
		goto LA77;
		LA84: ;
		{
			TY589896 LOC101;
			memset((void*)LOC101, 0, sizeof(LOC101));
			LOC101[0] = rdloc_560637(dest);
			LOC101[1] = rdloc_560637(src);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), LOC101, 2);
		}
		LA77: ;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		{
			NIM_BOOL LOC105;
			LOC105 = 0;
			LOC105 = needscomplexassignment_555121(dest.T);
			if (!LOC105) goto LA106;
			gengenericasgn_576007(p, dest, src, flags);
		}
		goto LA103;
		LA106: ;
		{
			TY589896 LOC109;
			usestringh_553459((*p).Module);
			memset((void*)LOC109, 0, sizeof(LOC109));
			LOC109[0] = rdloc_560637(dest);
			LOC109[1] = rdloc_560637(src);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3581), LOC109, 2);
		}
		LA103: ;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			NIM_BOOL LOC113;
			TY555018 LOC116;
			LOC113 = 0;
			LOC113 = needscomplexassignment_555121(dest.T);
			if (!LOC113) goto LA114;
			memset((void*)LOC116, 0, sizeof(LOC116));
			LOC116[0] = addrloc_560664(dest);
			LOC116[1] = addrloc_560664(src);
			LOC116[2] = gentypeinfo_557602((*p).Module, dest.T);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3582), LOC116, 3);
		}
		goto LA111;
		LA114: ;
		{
			TY589896 LOC118;
			usestringh_553459((*p).Module);
			memset((void*)LOC118, 0, sizeof(LOC118));
			LOC118[0] = rdloc_560637(dest);
			LOC118[1] = rdloc_560637(src);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3583), LOC118, 2);
		}
		LA111: ;
	}
	break;
	case ((NU8) 19):
	{
		{
			NU8 LOC122;
			TY555018 LOC125;
			NI64 LOC126;
			LOC122 = 0;
			LOC122 = maptype_555054(ty);
			if (!(LOC122 == ((NU8) 17))) goto LA123;
			usestringh_553459((*p).Module);
			memset((void*)LOC125, 0, sizeof(LOC125));
			LOC125[0] = rdloc_560637(dest);
			LOC125[1] = rdloc_560637(src);
			LOC126 = 0;
			LOC126 = getsize_264199(dest.T);
			LOC125[2] = torope_178082(LOC126);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3584), LOC125, 3);
		}
		goto LA120;
		LA123: ;
		{
			TY589896 LOC128;
			memset((void*)LOC128, 0, sizeof(LOC128));
			LOC128[0] = rdloc_560637(dest);
			LOC128[1] = rdloc_560637(src);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), 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):
	{
		TY589896 LOC130;
		memset((void*)LOC130, 0, sizeof(LOC130));
		LOC130[0] = rdloc_560637(dest);
		LOC130[1] = rdloc_560637(src);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), LOC130, 2);
	}
	break;
	default:
	{
		NimStringDesc* LOC132;
		LOC132 = 0;
		LOC132 = rawNewString(reprEnum((*ty).Kind, (&NTI226258))->Sup.len + 15);
appendString(LOC132, ((NimStringDesc*) &TMP3585));
appendString(LOC132, reprEnum((*ty).Kind, (&NTI226258)));
		internalerror_199006(LOC132);
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(void, putlocintodest_562321)(tcproc550031* p, tloc226830* d, tloc226830 s) {
	{
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		{
			if (!(((*d).Flags &(1<<((((NU8) 2))&7)))!=0)) goto LA7;
			genassignment_562330(p, (*d), s, 0);
		}
		goto LA5;
		LA7: ;
		{
			genassignment_562330(p, (*d), s, 1);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		genericAssign((void*)(&(*d)), (void*)(&s), (&NTI226830));
	}
	LA1: ;
}

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

N_NIMCALL(void, declarethreadvar_561753)(tcgen550035* m, tsym226846* s, NIM_BOOL isextern) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = emulatedthreadvars_554624();
		if (!LOC3) goto LA4;
		{
			NIM_BOOL LOC8;
			TY589896 LOC11;
			LOC8 = 0;
			LOC8 = containsorincl_223916((&nimtvdeclared_561752), (*s).Sup.Id);
			if (!!(LOC8)) goto LA9;
			nimtvdeps_561751 = (ttypeseq226848*) incrSeq(&(nimtvdeps_561751)->Sup, sizeof(ttype226852*));
			asgnRefNoCycle((void**) (&nimtvdeps_561751->data[nimtvdeps_561751->Sup.len-1]), (*s).Loc.T);
			memset((void*)LOC11, 0, sizeof(LOC11));
			LOC11[0] = gettypedesc_557306(m, (*s).Loc.T);
			LOC11[1] = (*s).Loc.R;
			appf_178115(&nimtv_561729, ((NimStringDesc*) &TMP3394), LOC11, 2);
		}
		LA9: ;
	}
	goto LA1;
	LA4: ;
	{
		trope178009* LOC21;
		TY178515 LOC22;
		{
			if (!isextern) goto LA15;
			app_178060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3587));
		}
		LA15: ;
		{
			if (!((gglobaloptions_170118 &(1<<((((NU8) 21))&31)))!=0)) goto LA19;
			app_178060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3588));
		}
		LA19: ;
		LOC21 = 0;
		LOC21 = gettypedesc_557306(m, (*s).Loc.T);
		app_178052(&(*m).S[(((NU8) 9))- 0], LOC21);
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = (*s).Loc.R;
		appf_178115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3466), LOC22, 1);
	}
	LA1: ;
}

N_NIMCALL(void, genvarprototypeaux_567482)(tcgen550035* m, tsym226846* sym) {
	trope178009* LOC1;
	useheader_553469(m, sym);
	LOC1 = 0;
	LOC1 = manglename_554667(sym);
	fillloc_553376((&(*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_223916((&(*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_561753(m, sym, NIM_TRUE);
		}
		goto LA12;
		LA14: ;
		{
			trope178009* LOC17;
			TY178515 LOC30;
			app_178060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3587));
			LOC17 = 0;
			LOC17 = gettypedesc_557306(m, (*sym).Loc.T);
			app_178052(&(*m).S[(((NU8) 9))- 0], LOC17);
			{
				if (!(((*sym).Loc.Flags &(1<<((((NU8) 4))&7)))!=0)) goto LA20;
				app_178060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3399));
			}
			LA20: ;
			{
				if (!(((*sym).Flags &(1<<((((NU8) 8))&31)))!=0)) goto LA24;
				app_178060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3464));
			}
			LA24: ;
			{
				if (!(((*sym).Flags &(1<<((((NU8) 7))&31)))!=0)) goto LA28;
				app_178060(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3465));
			}
			LA28: ;
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = (*sym).Loc.R;
			appf_178115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3466), LOC30, 1);
		}
		LA12: ;
	}
	LA10: ;
	BeforeRet: ;
}

N_NIMCALL(void, genvarprototype_562284)(tcgen550035* m, tsym226846* sym) {
	genvarprototypeaux_567482(m, sym);
}

N_NIMCALL(NIM_BOOL, issimpleconst_553416)(ttype226852* typ) {
	NIM_BOOL result;
	ttype226852* t;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	result = 0;
	t = skiptypes_231245(typ, IL64(211106240964864));
	LOC1 = 0;
	LOC1 = !(((*t).Kind == ((NU8) 18) || (*t).Kind == ((NU8) 17) || (*t).Kind == ((NU8) 16) || (*t).Kind == ((NU8) 4) || (*t).Kind == ((NU8) 19) || (*t).Kind == ((NU8) 24)));
	if (!(LOC1)) goto LA2;
	LOC3 = 0;
	LOC3 = ((*t).Kind == ((NU8) 25));
	if (!(LOC3)) goto LA4;
	LOC3 = ((*t).Callconv == ((NU8) 8));
	LA4: ;
	LOC1 = !(LOC3);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, initloc_553361)(tloc226830* result, NU8 k, ttype226852* typ, NU8 s) {
	(*result).K = k;
	(*result).S = s;
	unsureAsgnRef((void**) (&(*result).T), getuniquetype_549401(typ));
	unsureAsgnRef((void**) (&(*result).R), NIM_NIL);
	(*result).Flags = 0;
}

N_NIMCALL(void, putintodest_576476)(tcproc550031* p, tloc226830* d, ttype226852* t, trope178009* r) {
	tloc226830 a;
	memset((void*)(&a), 0, sizeof(a));
	{
		ttype226852* LOC5;
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		LOC5 = 0;
		LOC5 = getuniquetype_549401(t);
		initloc_553361((&a), ((NU8) 7), LOC5, ((NU8) 0));
		a.R = r;
		{
			if (!(((*d).Flags &(1<<((((NU8) 2))&7)))!=0)) goto LA8;
			genassignment_562330(p, (*d), a, 0);
		}
		goto LA6;
		LA8: ;
		{
			genassignment_562330(p, (*d), a, 1);
		}
		LA6: ;
	}
	goto LA1;
	LA3: ;
	{
		(*d).K = ((NU8) 7);
		unsureAsgnRef((void**) (&(*d).T), getuniquetype_549401(t));
		unsureAsgnRef((void**) (&(*d).R), r);
	}
	LA1: ;
}

N_NIMCALL(tcgen550035*, findpendingmodule_553313)(tcgen550035* m, tsym226846* s) {
	tcgen550035* result;
	tsym226846* ms;
	result = 0;
	ms = getmodule_236243(s);
	result = gmodules_550171->data[(*ms).Position];
	return result;
}

N_NIMCALL(NI64, bitsettoword_575296)(tbitset284012* s, NI size) {
	NI64 result;
	result = 0;
	result = IL64(0);
	{
		NI j_575413;
		NI HEX3Atmp_575427;
		NI res_575430;
		j_575413 = 0;
		HEX3Atmp_575427 = 0;
		HEX3Atmp_575427 = (NI32)(size - 1);
		res_575430 = 0;
		{
			while (1) {
				if (!(res_575430 <= HEX3Atmp_575427)) goto LA3;
				j_575413 = res_575430;
				{
					if (!(j_575413 < s->Sup.len)) goto LA6;
					result = (NI64)(result | (NI64)((NU64)(((NI64)(NU64)(NU8)(s->data[j_575413]))) << (NU64)(((NI64) ((NI32)(j_575413 * 8))))));
				}
				LA6: ;
				res_575430 += 1;
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(trope178009*, genrawsetdata_575444)(tbitset284012* cs, NI size) {
	trope178009* result;
	NimStringDesc* frmt;
	result = 0;
	frmt = 0;
	{
		TY554703 LOC5;
		if (!(8 < size)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		result = ropef_178107(((NimStringDesc*) &TMP3590), LOC5, 0);
		{
			NI i_575470;
			NI HEX3Atmp_575480;
			NI res_575483;
			i_575470 = 0;
			HEX3Atmp_575480 = 0;
			HEX3Atmp_575480 = (NI32)(size - 1);
			res_575483 = 0;
			{
				while (1) {
					TY178515 LOC19;
					NimStringDesc* LOC20;
					if (!(res_575483 <= HEX3Atmp_575480)) goto LA8;
					i_575470 = res_575483;
					{
						if (!(i_575470 < (NI32)(size - 1))) goto LA11;
						{
							if (!(((NI) ((NI32)((NI32)(i_575470 + 1) % 8))) == 0)) goto LA15;
							frmt = copyString(((NimStringDesc*) &TMP3591));
						}
						goto LA13;
						LA15: ;
						{
							frmt = copyString(((NimStringDesc*) &TMP3592));
						}
						LA13: ;
					}
					goto LA9;
					LA11: ;
					{
						frmt = copyString(((NimStringDesc*) &TMP3593));
					}
					LA9: ;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC20 = 0;
					LOC20 = nsuToHex(((NI64)(NU64)(NU8)(cs->data[i_575470])), 2);
					LOC19[0] = torope_178076(LOC20);
					appf_178115(&result, frmt, LOC19, 1);
					res_575483 += 1;
				} LA8: ;
			}
		}
	}
	goto LA1;
	LA3: ;
	{
		NI64 LOC22;
		LOC22 = 0;
		LOC22 = bitsettoword_575296(cs, size);
		result = intliteral_562339(LOC22);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, appcg_554018)(tcgen550035* m, NU8 s, NimStringDesc* frmt, trope178009** args, NI argsLen0) {
	trope178009* LOC1;
	LOC1 = 0;
	LOC1 = ropecg_553615(m, frmt, args, argsLen0);
	app_178052(&(*m).S[(s)- 0], LOC1);
}

N_NIMCALL(trope178009*, genconstseq_588122)(tcproc550031* p, tnode226816* n, ttype226852* t) {
	trope178009* result;
	trope178009* data;
	TY178515 LOC1;
	NI LOC2;
	trope178009* LOC18;
	TY557045 LOC19;
	NI LOC20;
	TY589896 LOC21;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = len_227364(n);
	LOC1[0] = torope_178082(((NI64) (LOC2)));
	data = ropef_178107(((NimStringDesc*) &TMP3594), LOC1, 1);
	{
		NI LOC5;
		LOC5 = 0;
		LOC5 = len_227364(n);
		if (!(0 < LOC5)) goto LA6;
		app_178060(&data, ((NimStringDesc*) &TMP3595));
		{
			NI i_588147;
			NI HEX3Atmp_588195;
			NI LOC9;
			NI res_588198;
			i_588147 = 0;
			HEX3Atmp_588195 = 0;
			LOC9 = 0;
			LOC9 = len_227364(n);
			HEX3Atmp_588195 = (NI32)(LOC9 - 1);
			res_588198 = 0;
			{
				while (1) {
					trope178009* LOC17;
					if (!(res_588198 <= HEX3Atmp_588195)) goto LA11;
					i_588147 = res_588198;
					{
						TY554703 LOC16;
						if (!(0 < i_588147)) goto LA14;
						memset((void*)LOC16, 0, sizeof(LOC16));
						appf_178115(&data, ((NimStringDesc*) &TMP3596), LOC16, 0);
					}
					LA14: ;
					LOC17 = 0;
					LOC17 = genconstexpr_585775(p, (*n).kindU.S6.Sons->data[i_588147]);
					app_178052(&data, LOC17);
					res_588198 += 1;
				} LA11: ;
			}
		}
		app_178060(&data, ((NimStringDesc*) &TMP3597));
	}
	LA6: ;
	app_178060(&data, ((NimStringDesc*) &TMP3597));
	gbackendid_225013 += 1;
	LOC18 = 0;
	LOC18 = torope_178082(((NI64) (gbackendid_225013)));
	result = con_178038(((NimStringDesc*) &TMP3598), LOC18);
	memset((void*)LOC19, 0, sizeof(LOC19));
	LOC19[0] = gettypedesc_557306((*p).Module, (*t).Sons->data[0]);
	LOC20 = 0;
	LOC20 = len_227364(n);
	LOC19[1] = torope_178082(((NI64) (LOC20)));
	LOC19[2] = result;
	LOC19[3] = data;
	appcg_554018((*p).Module, ((NU8) 8), ((NimStringDesc*) &TMP3599), LOC19, 4);
	memset((void*)LOC21, 0, sizeof(LOC21));
	LOC21[0] = gettypedesc_557306((*p).Module, t);
	LOC21[1] = result;
	result = ropef_178107(((NimStringDesc*) &TMP3600), LOC21, 2);
	return result;
}

N_NIMCALL(trope178009*, gennamedconstexpr_588011)(tcproc550031* p, tnode226816* n) {
	trope178009* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		result = genconstexpr_585775(p, (*n).kindU.S6.Sons->data[1]);
	}
	goto LA1;
	LA3: ;
	{
		result = genconstexpr_585775(p, n);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, genconstsimplelist_588042)(tcproc550031* p, tnode226816* n) {
	trope178009* result;
	NI length;
	TY554703 LOC10;
	result = 0;
	length = sonslen_227249(n);
	result = torope_178076(((NimStringDesc*) &TMP3601));
	{
		NI i_588060;
		NI HEX3Atmp_588105;
		NI res_588108;
		i_588060 = 0;
		HEX3Atmp_588105 = 0;
		HEX3Atmp_588105 = (NI32)(length - 2);
		res_588108 = 0;
		{
			while (1) {
				TY178515 LOC4;
				if (!(res_588108 <= HEX3Atmp_588105)) goto LA3;
				i_588060 = res_588108;
				memset((void*)LOC4, 0, sizeof(LOC4));
				LOC4[0] = gennamedconstexpr_588011(p, (*n).kindU.S6.Sons->data[i_588060]);
				appf_178115(&result, ((NimStringDesc*) &TMP3602), LOC4, 1);
				res_588108 += 1;
			} LA3: ;
		}
	}
	{
		trope178009* LOC9;
		if (!(0 < length)) goto LA7;
		LOC9 = 0;
		LOC9 = gennamedconstexpr_588011(p, (*n).kindU.S6.Sons->data[(NI32)(length - 1)]);
		app_178052(&result, LOC9);
	}
	LA7: ;
	memset((void*)LOC10, 0, sizeof(LOC10));
	appf_178115(&result, ((NimStringDesc*) &TMP3505), LOC10, 0);
	return result;
}

N_NIMCALL(void, initlocexpr_562352)(tcproc550031* p, tnode226816* e, tloc226830* result) {
	initloc_553361(result, ((NU8) 0), (*e).Typ, ((NU8) 0));
	expr_562305(p, e, result);
}

N_NIMCALL(trope178009*, genconstexpr_585775)(tcproc550031* p, tnode226816* n) {
	trope178009* result;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 58):
	case ((NU8) 59):
	{
		result = genconstexpr_585775(p, (*n).kindU.S6.Sons->data[1]);
	}
	break;
	case ((NU8) 39):
	{
		tbitset284012* cs;
		NI64 LOC3;
		cs = 0;
		tobitset_285004(n, (&cs));
		LOC3 = 0;
		LOC3 = getsize_264199((*n).Typ);
		result = genrawsetdata_575444(cs, ((NI) (LOC3)));
	}
	break;
	case ((NU8) 41):
	case ((NU8) 37):
	case ((NU8) 154):
	{
		ttype226852* t;
		t = skiptypes_231245((*n).Typ, IL64(211106232576256));
		{
			if (!((*t).Kind == ((NU8) 24))) goto LA7;
			result = genconstseq_588122(p, n, t);
		}
		goto LA5;
		LA7: ;
		{
			result = genconstsimplelist_588042(p, n);
		}
		LA5: ;
	}
	break;
	default:
	{
		tloc226830 d;
		memset((void*)(&d), 0, sizeof(d));
		initlocexpr_562352(p, n, (&d));
		result = rdloc_560637(d);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, requestconstimpl_562291)(tcproc550031* p, tsym226846* sym) {
	tcgen550035* m;
	tcgen550035* q;
	m = (*p).Module;
	useheader_553469(m, sym);
	{
		trope178009* LOC5;
		if (!((*sym).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_554667(sym);
		fillloc_553376((&(*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_553313(m, sym);
	{
		NIM_BOOL LOC12;
		NIM_BOOL LOC14;
		TY555018 LOC17;
		LOC12 = 0;
		LOC12 = !((q == NIM_NIL));
		if (!(LOC12)) goto LA13;
		LOC14 = 0;
		LOC14 = containsorincl_223916((&(*q).Declaredthings), (*sym).Sup.Id);
		LOC12 = !(LOC14);
		LA13: ;
		if (!LOC12) goto LA15;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = gettypedesc_557306(q, (*sym).Typ);
		LOC17[1] = (*sym).Loc.R;
		LOC17[2] = genconstexpr_585775((*q).Initproc, (*sym).Ast);
		appf_178115(&(*q).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3589), LOC17, 3);
	}
	LA15: ;
	{
		NIM_BOOL LOC20;
		NIM_BOOL LOC22;
		trope178009* headerdecl;
		TY589896 LOC25;
		LOC20 = 0;
		LOC20 = !((q == m));
		if (!(LOC20)) goto LA21;
		LOC22 = 0;
		LOC22 = containsorincl_223916((&(*m).Declaredthings), (*sym).Sup.Id);
		LOC20 = !(LOC22);
		LA21: ;
		if (!LOC20) goto LA23;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = gettypedesc_557306(m, (*sym).Loc.T);
		LOC25[1] = (*sym).Loc.R;
		headerdecl = ropef_178107(((NimStringDesc*) &TMP3603), LOC25, 2);
		app_178052(&(*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_553201 == NIM_NIL));
			LA29: ;
			if (!LOC28) goto LA30;
			app_178052(&(*generatedheader_553201).S[(((NU8) 8))- 0], headerdecl);
		}
		LA30: ;
	}
	LA23: ;
	BeforeRet: ;
}

N_NIMCALL(void, gencomplexconst_586731)(tcproc550031* p, tsym226846* sym, tloc226830* d) {
	requestconstimpl_562291(p, sym);
	putlocintodest_562321(p, d, (*sym).Loc);
}

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

N_NIMCALL(void, accessthreadlocalvar_554617)(tcproc550031* p, tsym226846* s) {
	{
		NIM_BOOL LOC3;
		trope178009** LOC7;
		TY554703 LOC8;
		trope178009** LOC9;
		TY554703 LOC10;
		trope178009* LOC11;
		LOC3 = 0;
		LOC3 = emulatedthreadvars_554624();
		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_550207(p, ((NU8) 0));
		memset((void*)LOC8, 0, sizeof(LOC8));
		appf_178115(LOC7, ((NimStringDesc*) &TMP3605), LOC8, 0);
		LOC9 = 0;
		LOC9 = procsec_550207(p, ((NU8) 1));
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC11 = 0;
		LOC11 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3606), LOC10, 0);
		app_178052(LOC9, LOC11);
	}
	LA5: ;
}

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

N_NIMCALL(void, putdataintodest_576438)(tcproc550031* p, tloc226830* d, ttype226852* t, trope178009* r) {
	tloc226830 a;
	memset((void*)(&a), 0, sizeof(a));
	{
		ttype226852* LOC5;
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		LOC5 = 0;
		LOC5 = getuniquetype_549401(t);
		initloc_553361((&a), ((NU8) 9), LOC5, ((NU8) 0));
		a.R = r;
		{
			if (!(((*d).Flags &(1<<((((NU8) 2))&7)))!=0)) goto LA8;
			genassignment_562330(p, (*d), a, 0);
		}
		goto LA6;
		LA8: ;
		{
			genassignment_562330(p, (*d), a, 1);
		}
		LA6: ;
	}
	goto LA1;
	LA3: ;
	{
		(*d).K = ((NU8) 9);
		unsureAsgnRef((void**) (&(*d).T), getuniquetype_549401(t));
		unsureAsgnRef((void**) (&(*d).R), r);
	}
	LA1: ;
}

N_NIMCALL(void, genlinedir_554435)(tcproc550031* p, tnode226816* t) {
	NI line;
	trope178009** LOC9;
	NimStringDesc* LOC10;
	line = safelinenm_554241((*t).Info);
	{
		trope178009** LOC5;
		TY555018 LOC6;
		TY554703 LOC7;
		trope178009* LOC8;
		if (!((gglobaloptions_170118 &(1<<((((NU8) 31))&31)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = s_550183(p, ((NU8) 2));
		memset((void*)LOC6, 0, sizeof(LOC6));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC6[0] = ropef_178107(((NimStringDesc*) &TMP3612), LOC7, 0);
		LOC6[1] = sourceline_197277((*t).Info);
		LOC6[2] = rnl_179454;
		LOC8 = 0;
		LOC8 = con_178045(LOC6, 3);
		app_178052(LOC5, LOC8);
	}
	LA3: ;
	LOC9 = 0;
	LOC9 = s_550183(p, ((NU8) 2));
	LOC10 = 0;
	LOC10 = tofullpath_198037((*t).Info.Fileindex);
	genclinedir_554252(LOC9, LOC10, line);
	{
		NIM_BOOL LOC13;
		NIM_BOOL LOC15;
		TY589896 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_178082(((NI64) (line)));
		LOC20 = 0;
		LOC20 = tofilename_198025((*t).Info.Fileindex);
		LOC19[1] = makecstring_196659(LOC20);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3613), LOC19, 2);
	}
	goto LA11;
	LA17: ;
	{
		NIM_BOOL LOC22;
		NIM_BOOL LOC23;
		NIM_BOOL LOC25;
		TY589896 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_178082(((NI64) (line)));
		LOC30[1] = quotedfilename_199178((*t).Info);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3614), LOC30, 2);
	}
	goto LA11;
	LA28: ;
	LA11: ;
}

N_NIMCALL(trope178009*, getlabel_562248)(tcproc550031* p) {
	trope178009* result;
	trope178009* LOC1;
	result = 0;
	(*p).Labels += 1;
	LOC1 = 0;
	LOC1 = torope_178082(((NI64) ((*p).Labels)));
	result = con_178038(((NimStringDesc*) &TMP3616), LOC1);
	return result;
}

N_NIMCALL(void, fixlabel_562270)(tcproc550031* p, trope178009* labl) {
	TY178515 LOC1;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = labl;
	linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3619), LOC1, 1);
}

N_NIMCALL(void, genandor_580938)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 m) {
	trope178009* l;
	tloc226830 tmp;
	l = 0;
	memset((void*)(&tmp), 0, sizeof(tmp));
	gettemp_559246(p, (*e).Typ, (&tmp), NIM_FALSE);
	expr_562305(p, (*e).kindU.S6.Sons->data[1], (&tmp));
	l = getlabel_562248(p);
	{
		TY589896 LOC5;
		if (!(m == ((NU16) 135))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_560637(tmp);
		LOC5[1] = l;
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3617), LOC5, 2);
	}
	goto LA1;
	LA3: ;
	{
		TY589896 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_560637(tmp);
		LOC7[1] = l;
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3618), LOC7, 2);
	}
	LA1: ;
	expr_562305(p, (*e).kindU.S6.Sons->data[2], (&tmp));
	fixlabel_562270(p, l);
	{
		if (!((*d).K == ((NU8) 0))) goto LA10;
		genericAssign((void*)(&(*d)), (void*)(&tmp), (&NTI226830));
	}
	goto LA8;
	LA10: ;
	{
		genassignment_562330(p, (*d), tmp, 0);
	}
	LA8: ;
}

N_NIMCALL(void, unaryarith_578895)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 op) {
	tloc226830 a;
	ttype226852* t;
	TY555018 LOC1;
	NI64 LOC2;
	trope178009* LOC3;
	memset((void*)(&a), 0, sizeof(a));
	t = 0;
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	t = skiptypes_231245((*e).Typ, IL64(211106233624832));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_560637(a);
	LOC2 = 0;
	LOC2 = getsize_264199(t);
	LOC1[1] = torope_178082((NI64)(LOC2 * IL64(8)));
	LOC1[2] = getsimpletypedesc_556085((*p).Module, (*e).Typ);
	LOC3 = 0;
	LOC3 = ropef_178107(unarithtab_578902[(op)- 105], LOC1, 3);
	putintodest_576476(p, d, (*e).Typ, LOC3);
}

N_NIMCALL(void, unaryarithoverflow_577890)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 m) {
	tloc226830 a;
	ttype226852* t;
	TY589896 LOC7;
	NI64 LOC8;
	trope178009* LOC9;
	memset((void*)(&a), 0, sizeof(a));
	t = 0;
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	t = skiptypes_231245((*e).Typ, IL64(211106233624832));
	{
		TY589896 LOC5;
		NI64 LOC6;
		if (!(((*p).Options &(1<<((((NU8) 5))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_560637(a);
		LOC6 = 0;
		LOC6 = firstord_264004(t);
		LOC5[1] = intliteral_562339(LOC6);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3637), LOC5, 2);
	}
	LA3: ;
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = rdloc_560637(a);
	LOC8 = 0;
	LOC8 = getsize_264199(t);
	LOC7[1] = torope_178082((NI64)(LOC8 * IL64(8)));
	LOC9 = 0;
	LOC9 = ropef_178107(opr_577897[(m)- 101], LOC7, 2);
	putintodest_576476(p, d, (*e).Typ, LOC9);
}

N_NIMCALL(void, binaryarith_578042)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 op) {
	tloc226830 a;
	tloc226830 b;
	NI64 s;
	NI64 LOC1;
	NI64 LOC2;
	TY557045 LOC3;
	trope178009* LOC4;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	s = 0;
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
	LOC1 = 0;
	LOC1 = getsize_264199(a.T);
	LOC2 = 0;
	LOC2 = getsize_264199(b.T);
	s = (NI64)(((LOC1 >= LOC2) ? LOC1 : LOC2) * IL64(8));
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = rdloc_560637(a);
	LOC3[1] = rdloc_560637(b);
	LOC3[2] = torope_178082(s);
	LOC3[3] = getsimpletypedesc_556085((*p).Module, (*e).Typ);
	LOC4 = 0;
	LOC4 = ropef_178107(binarithtab_578049[(op)- 47], LOC3, 4);
	putintodest_576476(p, d, (*e).Typ, LOC4);
}

N_NIMCALL(void, binaryfloatarith_584957)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 m) {
	{
		tloc226830 a;
		tloc226830 b;
		TY557045 LOC5;
		tnode226816* LOC6;
		trope178009* LOC7;
		if (!!(((384 & (*p).Options) == 0))) goto LA3;
		memset((void*)(&a), 0, sizeof(a));
		memset((void*)(&b), 0, sizeof(b));
		initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
		initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_178076(opr_585001[(m)- 47]);
		LOC5[1] = rdloc_560637(a);
		LOC5[2] = rdloc_560637(b);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_227698(e, 1);
		LOC5[3] = getsimpletypedesc_556085((*p).Module, (*LOC6).Typ);
		LOC7 = 0;
		LOC7 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3639), LOC5, 4);
		putintodest_576476(p, d, (*e).Typ, LOC7);
		{
			TY178515 LOC12;
			if (!(((*p).Options &(1<<((((NU8) 7))&31)))!=0)) goto LA10;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_560637((*d));
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3643), LOC12, 1);
		}
		LA10: ;
		{
			TY178515 LOC17;
			if (!(((*p).Options &(1<<((((NU8) 8))&31)))!=0)) goto LA15;
			memset((void*)LOC17, 0, sizeof(LOC17));
			LOC17[0] = rdloc_560637((*d));
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3644), LOC17, 1);
		}
		LA15: ;
	}
	goto LA1;
	LA3: ;
	{
		binaryarith_578042(p, e, d, m);
	}
	LA1: ;
}

N_NIMCALL(void, geneqproc_578444)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 a;
	tloc226830 b;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
	{
		TY589896 LOC5;
		trope178009* LOC6;
		if (!((*a.T).Callconv == ((NU8) 8))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_560637(a);
		LOC5[1] = rdloc_560637(b);
		LOC6 = 0;
		LOC6 = ropef_178107(((NimStringDesc*) &TMP3674), LOC5, 2);
		putintodest_576476(p, d, (*e).Typ, LOC6);
	}
	goto LA1;
	LA3: ;
	{
		TY589896 LOC8;
		trope178009* LOC9;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_560637(a);
		LOC8[1] = rdloc_560637(b);
		LOC9 = 0;
		LOC9 = ropef_178107(((NimStringDesc*) &TMP3663), LOC8, 2);
		putintodest_576476(p, d, (*e).Typ, LOC9);
	}
	LA1: ;
}

N_NIMCALL(void, binaryarithoverflow_577502)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 m) {
	tloc226830 a;
	tloc226830 b;
	ttype226852* t;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
	t = skiptypes_231245((*e).Typ, IL64(211106233624832));
	{
		TY557045 LOC5;
		NI64 LOC6;
		trope178009* LOC7;
		if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_178076(opr_577514[(m)- 37]);
		LOC5[1] = rdloc_560637(a);
		LOC5[2] = rdloc_560637(b);
		LOC6 = 0;
		LOC6 = getsize_264199(t);
		LOC5[3] = torope_178082((NI64)(LOC6 * IL64(8)));
		LOC7 = 0;
		LOC7 = ropef_178107(((NimStringDesc*) &TMP3675), LOC5, 4);
		putintodest_576476(p, d, (*e).Typ, LOC7);
	}
	goto LA1;
	LA3: ;
	{
		trope178009* storage;
		NI64 size;
		trope178009* tmp;
		TY589896 LOC14;
		TY557045 LOC15;
		TY589896 LOC25;
		NI64 LOC26;
		trope178009* LOC27;
		storage = 0;
		size = getsize_264199(t);
		{
			if (!(size < ((NI64) (intsize_175610)))) goto LA11;
			storage = torope_178076(((NimStringDesc*) &TMP3383));
		}
		goto LA9;
		LA11: ;
		{
			storage = gettypedesc_557306((*p).Module, t);
		}
		LA9: ;
		tmp = gettempname_555242();
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = storage;
		LOC14[1] = tmp;
		linefmt_554148(p, ((NU8) 0), ((NimStringDesc*) &TMP3394), LOC14, 2);
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = tmp;
		LOC15[1] = torope_178076(prc_577509[(m)- 37]);
		LOC15[2] = rdloc_560637(a);
		LOC15[3] = rdloc_560637(b);
		linecg_554135(p, ((NU8) 2), ((NimStringDesc*) &TMP3676), LOC15, 4);
		{
			NIM_BOOL LOC18;
			TY555018 LOC22;
			NI64 LOC23;
			NI64 LOC24;
			LOC18 = 0;
			LOC18 = (size < ((NI64) (intsize_175610)));
			if (LOC18) goto LA19;
			LOC18 = ((*t).Kind == ((NU8) 20) || (*t).Kind == ((NU8) 14) || (*t).Kind == ((NU8) 19));
			LA19: ;
			if (!LOC18) goto LA20;
			memset((void*)LOC22, 0, sizeof(LOC22));
			LOC22[0] = tmp;
			LOC23 = 0;
			LOC23 = firstord_264004(t);
			LOC22[1] = intliteral_562339(LOC23);
			LOC24 = 0;
			LOC24 = lastord_264010(t);
			LOC22[2] = intliteral_562339(LOC24);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3687), LOC22, 3);
		}
		LA20: ;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC26 = 0;
		LOC26 = getsize_264199(t);
		LOC25[0] = torope_178082((NI64)(LOC26 * IL64(8)));
		LOC25[1] = tmp;
		LOC27 = 0;
		LOC27 = ropef_178107(((NimStringDesc*) &TMP3688), LOC25, 2);
		putintodest_576476(p, d, (*e).Typ, LOC27);
	}
	LA1: ;
}

N_NIMCALL(trope178009*, lenfield_562364)(tcproc550031* p) {
	trope178009* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = (gcmd_170120 == ((NU8) 2));
		if (LOC4) goto LA5;
		LOC4 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA5: ;
		if (!LOC4) goto LA6;
		LOC1 = copyString(((NimStringDesc*) &TMP3502));
	}
	goto LA2;
	LA6: ;
	{
		LOC1 = copyString(((NimStringDesc*) &TMP3503));
	}
	LA2: ;
	result = torope_178076(LOC1);
	return result;
}

N_NIMCALL(void, gcusage_581100)(tnode226816* n) {
	{
		NimStringDesc* LOC5;
		if (!(gselectedgc_170121 == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_251058(n, 0);
		message_198976((*n).Info, ((NU16) 256), LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, genrepr_582781)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 a;
	ttype226852* t;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	t = skiptypes_231245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	switch ((*t).Kind) {
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 40) ... ((NU8) 44):
	{
		TY178515 LOC2;
		trope178009* LOC3;
		memset((void*)LOC2, 0, sizeof(LOC2));
		LOC2[0] = rdloc_560637(a);
		LOC3 = 0;
		LOC3 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3689), LOC2, 1);
		putintodest_576476(p, d, (*e).Typ, LOC3);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		TY178515 LOC5;
		trope178009* LOC6;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_560637(a);
		LOC6 = 0;
		LOC6 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3690), LOC5, 1);
		putintodest_576476(p, d, (*e).Typ, LOC6);
	}
	break;
	case ((NU8) 1):
	{
		TY178515 LOC8;
		trope178009* LOC9;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_560637(a);
		LOC9 = 0;
		LOC9 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3691), LOC8, 1);
		putintodest_576476(p, d, (*e).Typ, LOC9);
	}
	break;
	case ((NU8) 2):
	{
		TY178515 LOC11;
		trope178009* LOC12;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = rdloc_560637(a);
		LOC12 = 0;
		LOC12 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3692), LOC11, 1);
		putintodest_576476(p, d, (*e).Typ, LOC12);
	}
	break;
	case ((NU8) 14):
	case ((NU8) 15):
	{
		TY589896 LOC14;
		trope178009* LOC15;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = rdloc_560637(a);
		LOC14[1] = gentypeinfo_557602((*p).Module, t);
		LOC15 = 0;
		LOC15 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3693), LOC14, 2);
		putintodest_576476(p, d, (*e).Typ, LOC15);
	}
	break;
	case ((NU8) 28):
	{
		TY178515 LOC17;
		trope178009* LOC18;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = rdloc_560637(a);
		LOC18 = 0;
		LOC18 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3694), LOC17, 1);
		putintodest_576476(p, d, (*e).Typ, LOC18);
	}
	break;
	case ((NU8) 19):
	{
		TY589896 LOC20;
		trope178009* LOC21;
		memset((void*)LOC20, 0, sizeof(LOC20));
		LOC20[0] = addrloc_560664(a);
		LOC20[1] = gentypeinfo_557602((*p).Module, t);
		LOC21 = 0;
		LOC21 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3695), LOC20, 2);
		putintodest_576476(p, d, (*e).Typ, LOC21);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		tloc226830 b;
		TY589896 LOC34;
		ttype226852* LOC35;
		trope178009* LOC36;
		memset((void*)(&b), 0, sizeof(b));
		switch ((*a.T).Kind) {
		case ((NU8) 27):
		case ((NU8) 48):
		{
			TY178515 LOC24;
			trope178009* LOC25;
			memset((void*)LOC24, 0, sizeof(LOC24));
			LOC24[0] = rdloc_560637(a);
			LOC25 = 0;
			LOC25 = ropef_178107(((NimStringDesc*) &TMP3696), LOC24, 1);
			putintodest_576476(p, (&b), (*e).Typ, LOC25);
		}
		break;
		case ((NU8) 28):
		case ((NU8) 24):
		{
			TY589896 LOC27;
			trope178009* LOC28;
			memset((void*)LOC27, 0, sizeof(LOC27));
			LOC27[0] = rdloc_560637(a);
			LOC27[1] = lenfield_562364(p);
			LOC28 = 0;
			LOC28 = ropef_178107(((NimStringDesc*) &TMP3697), LOC27, 2);
			putintodest_576476(p, (&b), (*e).Typ, LOC28);
		}
		break;
		case ((NU8) 16):
		case ((NU8) 4):
		{
			TY589896 LOC30;
			NI64 LOC31;
			trope178009* LOC32;
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = rdloc_560637(a);
			LOC31 = 0;
			LOC31 = lengthord_264016(a.T);
			LOC30[1] = torope_178082(LOC31);
			LOC32 = 0;
			LOC32 = ropef_178107(((NimStringDesc*) &TMP3698), LOC30, 2);
			putintodest_576476(p, (&b), (*e).Typ, LOC32);
		}
		break;
		default:
		{
			internalerror_198987((*(*e).kindU.S6.Sons->data[0]).Info, ((NimStringDesc*) &TMP3699));
		}
		break;
		}
		memset((void*)LOC34, 0, sizeof(LOC34));
		LOC34[0] = rdloc_560637(b);
		LOC35 = 0;
		LOC35 = elemtype_264656(t);
		LOC34[1] = gentypeinfo_557602((*p).Module, LOC35);
		LOC36 = 0;
		LOC36 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3700), LOC34, 2);
		putintodest_576476(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):
	{
		TY589896 LOC38;
		trope178009* LOC39;
		memset((void*)LOC38, 0, sizeof(LOC38));
		LOC38[0] = rdloc_560637(a);
		LOC38[1] = gentypeinfo_557602((*p).Module, t);
		LOC39 = 0;
		LOC39 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3701), LOC38, 2);
		putintodest_576476(p, d, (*e).Typ, LOC39);
	}
	break;
	default:
	{
		TY589896 LOC41;
		trope178009* LOC42;
		memset((void*)LOC41, 0, sizeof(LOC41));
		LOC41[0] = addrloc_560664(a);
		LOC41[1] = gentypeinfo_557602((*p).Module, t);
		LOC42 = 0;
		LOC42 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3701), LOC41, 2);
		putintodest_576476(p, d, (*e).Typ, LOC42);
	}
	break;
	}
	gcusage_581100(e);
}

N_NIMCALL(void, gengettypeinfo_582893)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	ttype226852* t;
	trope178009* LOC1;
	t = skiptypes_231245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	LOC1 = 0;
	LOC1 = gentypeinfo_557602((*p).Module, t);
	putintodest_576476(p, d, (*e).Typ, LOC1);
}

N_NIMCALL(void, genswap_583287)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 a;
	tloc226830 b;
	tloc226830 tmp;
	ttype226852* LOC1;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&tmp), 0, sizeof(tmp));
	LOC1 = 0;
	LOC1 = skiptypes_231245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	gettemp_559246(p, LOC1, (&tmp), NIM_FALSE);
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
	genassignment_562330(p, tmp, a, 0);
	genassignment_562330(p, a, b, 0);
	genassignment_562330(p, b, tmp, 0);
}

N_NIMCALL(void, unaryexpr_577440)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt) {
	tloc226830 a;
	TY178515 LOC1;
	trope178009* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_560637(a);
	LOC2 = 0;
	LOC2 = ropecg_553615((*p).Module, frmt, LOC1, 1);
	putintodest_576476(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, binaryexpr_576668)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt) {
	tloc226830 a;
	tloc226830 b;
	TY589896 LOC1;
	trope178009* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_560637(a);
	LOC1[1] = rdloc_560637(b);
	LOC2 = 0;
	LOC2 = ropecg_553615((*p).Module, frmt, LOC1, 2);
	putintodest_576476(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, binarystmt_576514)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt) {
	tloc226830 a;
	tloc226830 b;
	TY589896 LOC5;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	{
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		internalerror_198987((*e).Info, ((NimStringDesc*) &TMP3708));
	}
	LA3: ;
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = rdloc_560637(a);
	LOC5[1] = rdloc_560637(b);
	linecg_554135(p, ((NU8) 2), frmt, LOC5, 2);
}

N_NIMCALL(void, genstrconcat_581115)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 a;
	tloc226830 tmp;
	NI l;
	trope178009* appends;
	trope178009* lens;
	TY555018 LOC21;
	trope178009** LOC22;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&tmp), 0, sizeof(tmp));
	gettemp_559246(p, (*e).Typ, (&tmp), NIM_FALSE);
	l = 0;
	appends = NIM_NIL;
	lens = NIM_NIL;
	{
		NI i_581139;
		NI HEX3Atmp_581292;
		NI LOC2;
		NI res_581295;
		i_581139 = 0;
		HEX3Atmp_581292 = 0;
		LOC2 = 0;
		LOC2 = sonslen_227249(e);
		HEX3Atmp_581292 = (NI32)(LOC2 - 2);
		res_581295 = 0;
		{
			while (1) {
				if (!(res_581295 <= HEX3Atmp_581292)) goto LA4;
				i_581139 = res_581295;
				initlocexpr_562352(p, (*e).kindU.S6.Sons->data[(NI32)(i_581139 + 1)], (&a));
				{
					ttype226852* LOC7;
					TY589896 LOC10;
					trope178009* LOC11;
					LOC7 = 0;
					LOC7 = skiptypes_231245((*(*e).kindU.S6.Sons->data[(NI32)(i_581139 + 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_560637(a);
					LOC11 = 0;
					LOC11 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3715), LOC10, 2);
					app_178052(&appends, LOC11);
				}
				goto LA5;
				LA8: ;
				{
					TY589896 LOC19;
					trope178009* LOC20;
					{
						if (!((*(*e).kindU.S6.Sons->data[(NI32)(i_581139 + 1)]).Kind >= ((NU8) 20) && (*(*e).kindU.S6.Sons->data[(NI32)(i_581139 + 1)]).Kind <= ((NU8) 22))) goto LA15;
						l += (*(*e).kindU.S6.Sons->data[(NI32)(i_581139 + 1)]).kindU.S3.Strval->Sup.len;
					}
					goto LA13;
					LA15: ;
					{
						TY589896 LOC18;
						memset((void*)LOC18, 0, sizeof(LOC18));
						LOC18[0] = rdloc_560637(a);
						LOC18[1] = lenfield_562364(p);
						appf_178115(&lens, ((NimStringDesc*) &TMP3716), LOC18, 2);
					}
					LA13: ;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = tmp.R;
					LOC19[1] = rdloc_560637(a);
					LOC20 = 0;
					LOC20 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3717), LOC19, 2);
					app_178052(&appends, LOC20);
				}
				LA5: ;
				res_581295 += 1;
			} LA4: ;
		}
	}
	memset((void*)LOC21, 0, sizeof(LOC21));
	LOC21[0] = tmp.R;
	LOC21[1] = lens;
	LOC21[2] = torope_178082(((NI64) (l)));
	linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3718), LOC21, 3);
	LOC22 = 0;
	LOC22 = s_550183(p, ((NU8) 2));
	app_178052(LOC22, appends);
	{
		if (!((*d).K == ((NU8) 0))) goto LA25;
		genericAssign((void*)(&(*d)), (void*)(&tmp), (&NTI226830));
		keepalive_561007(p, tmp);
	}
	goto LA23;
	LA25: ;
	{
		genassignment_562330(p, (*d), tmp, 64);
	}
	LA23: ;
	gcusage_581100(e);
}

N_NIMCALL(void, genstrappend_581309)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 a;
	tloc226830 dest;
	trope178009* appends;
	trope178009* lens;
	NI l;
	TY555018 LOC21;
	trope178009** LOC22;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&dest), 0, sizeof(dest));
	appends = 0;
	lens = 0;
	l = 0;
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&dest));
	{
		NI i_581429;
		NI HEX3Atmp_581572;
		NI LOC2;
		NI res_581575;
		i_581429 = 0;
		HEX3Atmp_581572 = 0;
		LOC2 = 0;
		LOC2 = sonslen_227249(e);
		HEX3Atmp_581572 = (NI32)(LOC2 - 3);
		res_581575 = 0;
		{
			while (1) {
				if (!(res_581575 <= HEX3Atmp_581572)) goto LA4;
				i_581429 = res_581575;
				initlocexpr_562352(p, (*e).kindU.S6.Sons->data[(NI32)(i_581429 + 2)], (&a));
				{
					ttype226852* LOC7;
					TY589896 LOC10;
					trope178009* LOC11;
					LOC7 = 0;
					LOC7 = skiptypes_231245((*(*e).kindU.S6.Sons->data[(NI32)(i_581429 + 2)]).Typ, IL64(211106242013440));
					if (!((*LOC7).Kind == ((NU8) 2))) goto LA8;
					l += 1;
					memset((void*)LOC10, 0, sizeof(LOC10));
					LOC10[0] = rdloc_560637(dest);
					LOC10[1] = rdloc_560637(a);
					LOC11 = 0;
					LOC11 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3715), LOC10, 2);
					app_178052(&appends, LOC11);
				}
				goto LA5;
				LA8: ;
				{
					TY589896 LOC19;
					trope178009* LOC20;
					{
						if (!((*(*e).kindU.S6.Sons->data[(NI32)(i_581429 + 2)]).Kind >= ((NU8) 20) && (*(*e).kindU.S6.Sons->data[(NI32)(i_581429 + 2)]).Kind <= ((NU8) 22))) goto LA15;
						l += (*(*e).kindU.S6.Sons->data[(NI32)(i_581429 + 2)]).kindU.S3.Strval->Sup.len;
					}
					goto LA13;
					LA15: ;
					{
						TY589896 LOC18;
						memset((void*)LOC18, 0, sizeof(LOC18));
						LOC18[0] = rdloc_560637(a);
						LOC18[1] = lenfield_562364(p);
						appf_178115(&lens, ((NimStringDesc*) &TMP3716), LOC18, 2);
					}
					LA13: ;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = rdloc_560637(dest);
					LOC19[1] = rdloc_560637(a);
					LOC20 = 0;
					LOC20 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3717), LOC19, 2);
					app_178052(&appends, LOC20);
				}
				LA5: ;
				res_581575 += 1;
			} LA4: ;
		}
	}
	memset((void*)LOC21, 0, sizeof(LOC21));
	LOC21[0] = rdloc_560637(dest);
	LOC21[1] = lens;
	LOC21[2] = torope_178082(((NI64) (l)));
	linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3720), LOC21, 3);
	keepalive_561007(p, dest);
	LOC22 = 0;
	LOC22 = s_550183(p, ((NU8) 2));
	app_178052(LOC22, appends);
	gcusage_581100(e);
}

N_NIMCALL(void, genseqelemappend_581589)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	NimStringDesc* seqappendpattern;
	tloc226830 a;
	tloc226830 b;
	tloc226830 dest;
	TY555018 LOC8;
	ttype226852* LOC9;
	ttype226852* LOC10;
	TY589896 LOC11;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_170120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!!(LOC3)) goto LA5;
		seqappendpattern = copyString(((NimStringDesc*) &TMP3721));
	}
	goto LA1;
	LA5: ;
	{
		seqappendpattern = copyString(((NimStringDesc*) &TMP3722));
	}
	LA1: ;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&dest), 0, sizeof(dest));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rdloc_560637(a);
	LOC9 = 0;
	LOC9 = skiptypes_231245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	LOC8[1] = gettypedesc_557306((*p).Module, LOC9);
	LOC10 = 0;
	LOC10 = skiptypes_231245((*(*e).kindU.S6.Sons->data[2]).Typ, IL64(211106240964864));
	LOC8[2] = gettypedesc_557306((*p).Module, LOC10);
	linecg_554135(p, ((NU8) 2), seqappendpattern, LOC8, 3);
	keepalive_561007(p, a);
	initloc_553361((&dest), ((NU8) 7), b.T, ((NU8) 2));
	memset((void*)LOC11, 0, sizeof(LOC11));
	LOC11[0] = rdloc_560637(a);
	LOC11[1] = lenfield_562364(p);
	dest.R = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3723), LOC11, 2);
	genassignment_562330(p, dest, b, 5);
	gcusage_581100(e);
}

N_NIMCALL(void, genstrequals_584804)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 x;
	tnode226816* a;
	tnode226816* 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_576668(p, e, d, ((NimStringDesc*) &TMP3663));
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC8;
		TY589896 LOC12;
		trope178009* 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_562352(p, (*e).kindU.S6.Sons->data[2], (&x));
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = rdloc_560637(x);
		LOC12[1] = lenfield_562364(p);
		LOC13 = 0;
		LOC13 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3724), LOC12, 2);
		putintodest_576476(p, d, (*e).Typ, LOC13);
	}
	goto LA1;
	LA10: ;
	{
		NIM_BOOL LOC15;
		TY589896 LOC19;
		trope178009* 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_562352(p, (*e).kindU.S6.Sons->data[1], (&x));
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = rdloc_560637(x);
		LOC19[1] = lenfield_562364(p);
		LOC20 = 0;
		LOC20 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3724), LOC19, 2);
		putintodest_576476(p, d, (*e).Typ, LOC20);
	}
	goto LA1;
	LA17: ;
	{
		binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3725));
	}
	LA1: ;
}

N_NIMCALL(void, genisnil_578853)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	ttype226852* t;
	t = skiptypes_231245((*(*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_577440(p, e, d, ((NimStringDesc*) &TMP3728));
	}
	goto LA1;
	LA5: ;
	{
		unaryexpr_577440(p, e, d, ((NimStringDesc*) &TMP3729));
	}
	LA1: ;
}

N_NIMCALL(void, gendollar_582917)(tcproc550031* p, tnode226816* n, tloc226830* d, NimStringDesc* frmt) {
	tloc226830 a;
	TY178515 LOC1;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*n).kindU.S6.Sons->data[1], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_560637(a);
	a.R = ropecg_553615((*p).Module, frmt, LOC1, 1);
	{
		if (!((*d).K == ((NU8) 0))) goto LA4;
		gettemp_559246(p, (*n).Typ, d, NIM_FALSE);
	}
	LA4: ;
	genassignment_562330(p, (*d), a, 64);
	gcusage_581100(n);
}

N_NIMCALL(trope178009*, genofhelper_582450)(tcproc550031* p, ttype226852* dest, trope178009* a) {
	trope178009* result;
	trope178009* ti;
	result = 0;
	ti = gentypeinfo_557602((*p).Module, dest);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		TY589896 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_178107(((NimStringDesc*) &TMP3738), LOC9, 2);
	}
	goto LA1;
	LA7: ;
	{
		trope178009* LOC11;
		trope178009* cache;
		trope178009* LOC12;
		TY178515 LOC13;
		TY555018 LOC14;
		LOC11 = 0;
		LOC11 = cgsym_553608((*p).Module, ((NimStringDesc*) &TMP3472));
		(*(*p).Module).Labels += 1;
		LOC12 = 0;
		LOC12 = torope_178082(((NI64) ((*(*p).Module).Labels)));
		cache = con_178038(((NimStringDesc*) &TMP3739), LOC12);
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = cache;
		appf_178115(&(*(*p).Module).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3740), LOC13, 1);
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = a;
		LOC14[1] = ti;
		LOC14[2] = cache;
		result = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3741), LOC14, 3);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genof_582604)(tcproc550031* p, tnode226816* x, ttype226852* typ, tloc226830* d) {
	tloc226830 a;
	ttype226852* dest;
	trope178009* r;
	trope178009* nilcheck;
	ttype226852* t;
	ttype226852* LOC33;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, x, (&a));
	dest = skiptypes_231245(typ, IL64(211106247256320));
	r = rdloc_560637(a);
	nilcheck = NIM_NIL;
	t = skiptypes_231245(a.T, IL64(211106232576256));
	{
		while (1) {
			TY178515 LOC7;
			ttype226852* LOC8;
			if (!((*t).Kind == ((NU8) 23) || (*t).Kind == ((NU8) 21) || (*t).Kind == ((NU8) 22))) goto LA2;
			{
				if (!!(((*t).Kind == ((NU8) 23)))) goto LA5;
				nilcheck = r;
			}
			LA5: ;
			memset((void*)LOC7, 0, sizeof(LOC7));
			LOC7[0] = r;
			r = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3495), LOC7, 1);
			LOC8 = 0;
			LOC8 = lastson_227267(t);
			t = skiptypes_231245(LOC8, IL64(211106232576256));
		} LA2: ;
	}
	{
		NIM_BOOL LOC11;
		LOC11 = 0;
		LOC11 = (gcmd_170120 == ((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;
				TY554703 LOC19;
				trope178009* 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_178107(((NimStringDesc*) &TMP3498), LOC19, 0);
				app_178052(&r, LOC20);
				t = skiptypes_231245((*t).Sons->data[0], IL64(211106232576256));
			} LA16: ;
		}
	}
	LA13: ;
	{
		NIM_BOOL LOC23;
		LOC23 = 0;
		LOC23 = isobjlackingtypefield_555128(t);
		if (!LOC23) goto LA24;
		globalerror_198934((*x).Info, ((NU16) 4), ((NimStringDesc*) &TMP3736));
	}
	LA24: ;
	{
		TY589896 LOC30;
		if (!!((nilcheck == NIM_NIL))) goto LA28;
		memset((void*)LOC30, 0, sizeof(LOC30));
		LOC30[0] = nilcheck;
		LOC30[1] = genofhelper_582450(p, dest, r);
		r = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3737), LOC30, 2);
	}
	goto LA26;
	LA28: ;
	{
		TY178515 LOC32;
		memset((void*)LOC32, 0, sizeof(LOC32));
		LOC32[0] = genofhelper_582450(p, dest, r);
		r = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3742), LOC32, 1);
	}
	LA26: ;
	LOC33 = 0;
	LOC33 = getsystype_283030(((NU8) 1));
	putintodest_576476(p, d, LOC33, r);
}

N_NIMCALL(void, genof_582744)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	genof_582604(p, (*n).kindU.S6.Sons->data[1], (*(*n).kindU.S6.Sons->data[2]).Typ, d);
}

N_NIMCALL(void, rawgennew_581723)(tcproc550031* p, tloc226830 a, trope178009* sizeexpr_581727) {
	trope178009* sizeexpr;
	ttype226852* reftype;
	tloc226830 b;
	TY555018 args;
	ttype226852* bt;
	sizeexpr = sizeexpr_581727;
	reftype = skiptypes_231245(a.T, IL64(211106242013440));
	memset((void*)(&b), 0, sizeof(b));
	initloc_553361((&b), ((NU8) 7), a.T, ((NU8) 2));
	{
		TY178515 LOC5;
		ttype226852* LOC6;
		if (!sizeexpr == 0) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC6 = 0;
		LOC6 = skiptypes_231245((*reftype).Sons->data[0], IL64(211106233624832));
		LOC5[0] = gettypedesc_557306((*p).Module, LOC6);
		sizeexpr = ropef_178107(((NimStringDesc*) &TMP3743), LOC5, 1);
	}
	LA3: ;
	memset((void*)args, 0, sizeof(args));
	args[0] = gettypedesc_557306((*p).Module, reftype);
	args[1] = gentypeinfo_557602((*p).Module, reftype);
	args[2] = sizeexpr;
	{
		NIM_BOOL LOC9;
		TY589896 LOC21;
		LOC9 = 0;
		LOC9 = (a.S == ((NU8) 2));
		if (!(LOC9)) goto LA10;
		LOC9 = usesnativegc_170179();
		LA10: ;
		if (!LOC9) goto LA11;
		{
			NIM_BOOL LOC15;
			TY178515 LOC18;
			LOC15 = 0;
			LOC15 = canformacycle_264175(a.T);
			if (!LOC15) goto LA16;
			memset((void*)LOC18, 0, sizeof(LOC18));
			LOC18[0] = rdloc_560637(a);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3744), LOC18, 1);
		}
		goto LA13;
		LA16: ;
		{
			TY178515 LOC20;
			memset((void*)LOC20, 0, sizeof(LOC20));
			LOC20[0] = rdloc_560637(a);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3570), LOC20, 1);
		}
		LA13: ;
		b.R = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3745), args, 3);
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = rdloc_560637(a);
		LOC21[1] = rdloc_560637(b);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), LOC21, 2);
	}
	goto LA7;
	LA11: ;
	{
		b.R = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3746), args, 3);
		genassignment_562330(p, a, b, 64);
	}
	LA7: ;
	bt = skiptypes_231245((*reftype).Sons->data[0], IL64(211106233624832));
	genobjectinit_560721(p, ((NU8) 2), bt, a, NIM_FALSE);
}

N_NIMCALL(void, gennew_581777)(tcproc550031* p, tnode226816* e) {
	tloc226830 a;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	{
		NI LOC3;
		tloc226830 se;
		trope178009* LOC6;
		LOC3 = 0;
		LOC3 = len_227364(e);
		if (!(LOC3 == 3)) goto LA4;
		memset((void*)(&se), 0, sizeof(se));
		initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&se));
		LOC6 = 0;
		LOC6 = rdloc_560637(se);
		rawgennew_581723(p, a, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		rawgennew_581723(p, a, NIM_NIL);
	}
	LA1: ;
	gcusage_581100(e);
}

N_NIMCALL(void, gennewfinalize_582374)(tcproc550031* p, tnode226816* e) {
	tloc226830 a;
	tloc226830 b;
	tloc226830 f;
	ttype226852* reftype;
	ttype226852* bt;
	trope178009* ti;
	tcgen550035* oldmodule;
	TY589896 LOC1;
	TY555018 LOC2;
	ttype226852* 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_231245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&f));
	initloc_553361((&b), ((NU8) 7), a.T, ((NU8) 2));
	ti = gentypeinfo_557602((*p).Module, reftype);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = ti;
	LOC1[1] = rdloc_560637(f);
	appf_178115(&(*(*p).Module).S[(((NU8) 14))- 0], ((NimStringDesc*) &TMP3747), LOC1, 2);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = gettypedesc_557306((*p).Module, reftype);
	LOC2[1] = ti;
	LOC3 = 0;
	LOC3 = skiptypes_231245((*reftype).Sons->data[0], IL64(211106233624832));
	LOC2[2] = gettypedesc_557306((*p).Module, LOC3);
	b.R = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3748), LOC2, 3);
	genassignment_562330(p, a, b, 64);
	bt = skiptypes_231245((*reftype).Sons->data[0], IL64(211106233624832));
	genobjectinit_560721(p, ((NU8) 2), bt, a, NIM_FALSE);
	gcusage_581100(e);
}

N_NIMCALL(void, gennewseqaux_581818)(tcproc550031* p, tloc226830 dest, trope178009* length) {
	ttype226852* seqtype;
	TY555018 args;
	tloc226830 call;
	seqtype = skiptypes_231245(dest.T, IL64(211106242013440));
	memset((void*)args, 0, sizeof(args));
	args[0] = gettypedesc_557306((*p).Module, seqtype);
	args[1] = gentypeinfo_557602((*p).Module, seqtype);
	args[2] = length;
	memset((void*)(&call), 0, sizeof(call));
	initloc_553361((&call), ((NU8) 7), dest.T, ((NU8) 2));
	{
		NIM_BOOL LOC3;
		TY589896 LOC15;
		LOC3 = 0;
		LOC3 = (dest.S == ((NU8) 2));
		if (!(LOC3)) goto LA4;
		LOC3 = usesnativegc_170179();
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NIM_BOOL LOC9;
			TY178515 LOC12;
			LOC9 = 0;
			LOC9 = canformacycle_264175(dest.T);
			if (!LOC9) goto LA10;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_560637(dest);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3744), LOC12, 1);
		}
		goto LA7;
		LA10: ;
		{
			TY178515 LOC14;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = rdloc_560637(dest);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3570), LOC14, 1);
		}
		LA7: ;
		call.R = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3749), args, 3);
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = rdloc_560637(dest);
		LOC15[1] = rdloc_560637(call);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), LOC15, 2);
	}
	goto LA1;
	LA5: ;
	{
		call.R = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3750), args, 3);
		genassignment_562330(p, dest, call, 64);
	}
	LA1: ;
}

N_NIMCALL(void, gennewseq_581855)(tcproc550031* p, tnode226816* e) {
	tloc226830 a;
	tloc226830 b;
	trope178009* LOC1;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
	LOC1 = 0;
	LOC1 = rdloc_560637(b);
	gennewseqaux_581818(p, a, LOC1);
	gcusage_581100(e);
}

N_NIMCALL(trope178009*, getclosuretype_557321)(tcgen550035* m, ttype226852* t, NU8 kind) {
	trope178009* result;
	intset223056 check;
	trope178009* rettype;
	trope178009* desc;
	result = 0;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_223950((&check));
	result = gettempname_555242();
	rettype = 0;
	desc = 0;
	genprocparams_555626(m, t, &rettype, &desc, (&check), !((kind == ((NU8) 0))));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isimportedtype_556001(t);
		if (!!(LOC3)) goto LA4;
		{
			NIM_BOOL LOC8;
			TY557045 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_178076(callingconvtostr_555222[((*t).Callconv)- 0]);
			LOC12[1] = rettype;
			LOC12[2] = result;
			LOC12[3] = desc;
			appf_178115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3414), LOC12, 4);
		}
		goto LA6;
		LA10: ;
		{
			TY555018 LOC14;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = result;
			LOC14[1] = rettype;
			LOC14[2] = desc;
			appf_178115(&(*m).S[(((NU8) 3))- 0], ((NimStringDesc*) &TMP3425), LOC14, 3);
		}
		LA6: ;
	}
	LA4: ;
	return result;
}

N_NIMCALL(trope178009*, rdcharloc_560698)(tloc226830 a) {
	trope178009* result;
	result = 0;
	result = rdloc_560637(a);
	{
		ttype226852* LOC3;
		TY178515 LOC6;
		LOC3 = 0;
		LOC3 = skiptypes_231245(a.T, IL64(211106233624832));
		if (!((*LOC3).Kind == ((NU8) 2))) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = result;
		result = ropef_178107(((NimStringDesc*) &TMP3754), LOC6, 1);
	}
	LA4: ;
	return result;
}

N_NIMCALL(void, gensomecast_584391)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 a;
	ttype226852* etyp;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	etyp = skiptypes_231245((*e).Typ, IL64(211106233624832));
	{
		NIM_BOOL LOC3;
		TY589896 LOC7;
		trope178009* LOC8;
		LOC3 = 0;
		LOC3 = ((*etyp).Kind == ((NU8) 18) || (*etyp).Kind == ((NU8) 17) || (*etyp).Kind == ((NU8) 16) || (*etyp).Kind == ((NU8) 27) || (*etyp).Kind == ((NU8) 48) || (*etyp).Kind == ((NU8) 4));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((a.Flags &(1<<((((NU8) 0))&7)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_557306((*p).Module, (*e).Typ);
		LOC7[1] = addrloc_560664(a);
		LOC8 = 0;
		LOC8 = ropef_178107(((NimStringDesc*) &TMP3752), LOC7, 2);
		putintodest_576476(p, d, (*e).Typ, LOC8);
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC10;
		TY589896 LOC14;
		trope178009* 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_557321((*p).Module, etyp, ((NU8) 1));
		LOC14[1] = rdcharloc_560698(a);
		LOC15 = 0;
		LOC15 = ropef_178107(((NimStringDesc*) &TMP3753), LOC14, 2);
		putintodest_576476(p, d, (*e).Typ, LOC15);
	}
	goto LA1;
	LA12: ;
	{
		TY589896 LOC17;
		trope178009* LOC18;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = gettypedesc_557306((*p).Module, (*e).Typ);
		LOC17[1] = rdcharloc_560698(a);
		LOC18 = 0;
		LOC18 = ropef_178107(((NimStringDesc*) &TMP3753), LOC17, 2);
		putintodest_576476(p, d, (*e).Typ, LOC18);
	}
	LA1: ;
}

N_NIMCALL(void, unaryexprchar_577471)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt) {
	tloc226830 a;
	TY178515 LOC1;
	trope178009* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdcharloc_560698(a);
	LOC2 = 0;
	LOC2 = ropecg_553615((*p).Module, frmt, LOC1, 1);
	putintodest_576476(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, genord_584382)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	unaryexprchar_577471(p, e, d, ((NimStringDesc*) &TMP3621));
}

N_NIMCALL(void, genarraylen_582958)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 op) {
	tnode226816* a;
	ttype226852* 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_231245((*a).Typ, IL64(211106240964864));
	switch ((*typ).Kind) {
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			if (!(op == ((NU16) 5))) goto LA8;
			unaryexpr_577440(p, e, d, ((NimStringDesc*) &TMP3755));
		}
		goto LA6;
		LA8: ;
		{
			unaryexpr_577440(p, e, d, ((NimStringDesc*) &TMP3756));
		}
		LA6: ;
	}
	break;
	case ((NU8) 29):
	{
		usestringh_553459((*p).Module);
		{
			if (!(op == ((NU16) 5))) goto LA14;
			unaryexpr_577440(p, e, d, ((NimStringDesc*) &TMP3757));
		}
		goto LA12;
		LA14: ;
		{
			unaryexpr_577440(p, e, d, ((NimStringDesc*) &TMP3758));
		}
		LA12: ;
	}
	break;
	case ((NU8) 28):
	case ((NU8) 24):
	{
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = (gcmd_170120 == ((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_577440(p, e, d, ((NimStringDesc*) &TMP3759));
			}
			goto LA24;
			LA26: ;
			{
				unaryexpr_577440(p, e, d, ((NimStringDesc*) &TMP3760));
			}
			LA24: ;
		}
		goto LA18;
		LA22: ;
		{
			{
				if (!(op == ((NU16) 5))) goto LA32;
				unaryexpr_577440(p, e, d, ((NimStringDesc*) &TMP3761));
			}
			goto LA30;
			LA32: ;
			{
				unaryexpr_577440(p, e, d, ((NimStringDesc*) &TMP3762));
			}
			LA30: ;
		}
		LA18: ;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		{
			NI64 LOC40;
			trope178009* LOC41;
			if (!(op == ((NU16) 5))) goto LA38;
			LOC40 = 0;
			LOC40 = lastord_264010(typ);
			LOC41 = 0;
			LOC41 = torope_178082(LOC40);
			putintodest_576476(p, d, (*e).Typ, LOC41);
		}
		goto LA36;
		LA38: ;
		{
			NI64 LOC43;
			trope178009* LOC44;
			LOC43 = 0;
			LOC43 = lengthord_264016(typ);
			LOC44 = 0;
			LOC44 = torope_178082(LOC43);
			putintodest_576476(p, d, (*e).Typ, LOC44);
		}
		LA36: ;
	}
	break;
	default:
	{
		internalerror_198987((*e).Info, ((NimStringDesc*) &TMP3763));
	}
	break;
	}
}

N_NIMCALL(void, unarystmt_576571)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt) {
	tloc226830 a;
	TY178515 LOC5;
	memset((void*)(&a), 0, sizeof(a));
	{
		if (!!(((*d).K == ((NU8) 0)))) goto LA3;
		internalerror_198987((*e).Info, ((NimStringDesc*) &TMP3764));
	}
	LA3: ;
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = rdloc_560637(a);
	linecg_554135(p, ((NU8) 2), frmt, LOC5, 1);
}

N_NIMCALL(void, gensetlengthstr_583278)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	binarystmt_576514(p, e, d, ((NimStringDesc*) &TMP3767));
	keepalive_561007(p, (*d));
	gcusage_581100(e);
}

N_NIMCALL(void, gensetlengthseq_583074)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 a;
	tloc226830 b;
	ttype226852* t;
	NimStringDesc* setlenpattern;
	TY557045 LOC8;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
	t = skiptypes_231245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_170120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!!(LOC3)) goto LA5;
		setlenpattern = copyString(((NimStringDesc*) &TMP3768));
	}
	goto LA1;
	LA5: ;
	{
		setlenpattern = copyString(((NimStringDesc*) &TMP3769));
	}
	LA1: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rdloc_560637(a);
	LOC8[1] = rdloc_560637(b);
	LOC8[2] = gettypedesc_557306((*p).Module, t);
	LOC8[3] = gettypedesc_557306((*p).Module, (*t).Sons->data[0]);
	linecg_554135(p, ((NU8) 2), setlenpattern, LOC8, 4);
	keepalive_561007(p, a);
	gcusage_581100(e);
}

N_NIMCALL(trope178009*, rdsetelemloc_583353)(tloc226830 a, ttype226852* settype) {
	trope178009* result;
	result = 0;
	result = rdcharloc_560698(a);
	{
		NI64 LOC3;
		TY589896 LOC6;
		NI64 LOC7;
		LOC3 = 0;
		LOC3 = firstord_264004(settype);
		if (!!((LOC3 == IL64(0)))) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = result;
		LOC7 = 0;
		LOC7 = firstord_264004(settype);
		LOC6[1] = torope_178082(LOC7);
		result = ropef_178107(((NimStringDesc*) &TMP3770), LOC6, 2);
	}
	LA4: ;
	return result;
}

N_NIMCALL(void, binarystmtinexcl_583492)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt) {
	tloc226830 a;
	tloc226830 b;
	TY589896 LOC1;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_560637(a);
	LOC1[1] = rdsetelemloc_583353(b, a.T);
	linef_554122(p, ((NU8) 2), frmt, LOC1, 2);
}

N_NIMCALL(void, binaryexprchar_577040)(tcproc550031* p, tnode226816* e, tloc226830* d, NimStringDesc* frmt) {
	tloc226830 a;
	tloc226830 b;
	TY589896 LOC1;
	trope178009* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdcharloc_560698(a);
	LOC1[1] = rdcharloc_560698(b);
	LOC2 = 0;
	LOC2 = ropecg_553615((*p).Module, frmt, LOC1, 2);
	putintodest_576476(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(NIM_BOOL, fewcmps_583408)(tnode226816* s) {
	NIM_BOOL result;
	result = 0;
	{
		if (!!(((*s).Kind == ((NU8) 39)))) goto LA3;
		internalerror_198987((*s).Info, ((NimStringDesc*) &TMP3785));
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		NI64 LOC8;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = getsize_264199((*s).Typ);
		LOC7 = (LOC8 <= ((NI64) (intsize_175610)));
		if (!(LOC7)) goto LA9;
		LOC7 = (((*s).Flags &(1<<((((NU8) 4))&15)))!=0);
		LA9: ;
		if (!LOC7) goto LA10;
		result = NIM_FALSE;
	}
	goto LA5;
	LA10: ;
	{
		ttype226852* LOC13;
		LOC13 = 0;
		LOC13 = elemtype_264656((*s).Typ);
		if (!((*LOC13).Kind == ((NU8) 31) || (*LOC13).Kind >= ((NU8) 33) && (*LOC13).Kind <= ((NU8) 35))) goto LA14;
		result = NIM_TRUE;
	}
	goto LA5;
	LA14: ;
	{
		NI LOC17;
		LOC17 = 0;
		LOC17 = sonslen_227249(s);
		result = (LOC17 <= 8);
	}
	LA5: ;
	return result;
}

N_NIMCALL(void, binaryexprin_583451)(tcproc550031* p, tnode226816* e, tloc226830* a, tloc226830* b, tloc226830* d, NimStringDesc* frmt) {
	TY589896 LOC1;
	trope178009* LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_560637((*a));
	LOC1[1] = rdsetelemloc_583353((*b), (*a).T);
	LOC2 = 0;
	LOC2 = ropef_178107(frmt, LOC1, 2);
	putintodest_576476(p, d, (*e).Typ, LOC2);
}

N_NIMCALL(void, geninexpraux_579618)(tcproc550031* p, tnode226816* e, tloc226830* a, tloc226830* b, tloc226830* d) {
	ttype226852* LOC1;
	NI64 LOC2;
	LOC1 = 0;
	LOC1 = skiptypes_231245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	LOC2 = 0;
	LOC2 = getsize_264199(LOC1);
	switch (((NI) (LOC2))) {
	case 1:
	{
		binaryexprin_583451(p, e, a, b, d, ((NimStringDesc*) &TMP3789));
	}
	break;
	case 2:
	{
		binaryexprin_583451(p, e, a, b, d, ((NimStringDesc*) &TMP3790));
	}
	break;
	case 4:
	{
		binaryexprin_583451(p, e, a, b, d, ((NimStringDesc*) &TMP3791));
	}
	break;
	case 8:
	{
		binaryexprin_583451(p, e, a, b, d, ((NimStringDesc*) &TMP3792));
	}
	break;
	default:
	{
		binaryexprin_583451(p, e, a, b, d, ((NimStringDesc*) &TMP3793));
	}
	break;
	}
}

N_NIMCALL(void, geninop_583640)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 a;
	tloc226830 b;
	tloc226830 x;
	tloc226830 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;
		tnode226816* ea;
		NI length;
		LOC3 = 0;
		LOC3 = ((*(*e).kindU.S6.Sons->data[1]).Kind == ((NU8) 39));
		if (!(LOC3)) goto LA4;
		LOC3 = fewcmps_583408((*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_562352(p, ea, (&a));
		initloc_553361((&b), ((NU8) 7), (*e).Typ, ((NU8) 0));
		b.R = torope_178076(((NimStringDesc*) &TMP3413));
		length = sonslen_227249((*e).kindU.S6.Sons->data[1]);
		{
			NI i_583787;
			NI HEX3Atmp_584238;
			NI res_584241;
			i_583787 = 0;
			HEX3Atmp_584238 = 0;
			HEX3Atmp_584238 = (NI32)(length - 1);
			res_584241 = 0;
			{
				while (1) {
					if (!(res_584241 <= HEX3Atmp_584238)) goto LA14;
					i_583787 = res_584241;
					{
						TY555018 LOC19;
						if (!((*(*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_583787]).Kind == ((NU8) 44))) goto LA17;
						initlocexpr_562352(p, (*(*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_583787]).kindU.S6.Sons->data[0], (&x));
						initlocexpr_562352(p, (*(*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_583787]).kindU.S6.Sons->data[1], (&y));
						memset((void*)LOC19, 0, sizeof(LOC19));
						LOC19[0] = rdcharloc_560698(a);
						LOC19[1] = rdcharloc_560698(x);
						LOC19[2] = rdcharloc_560698(y);
						appf_178115(&b.R, ((NimStringDesc*) &TMP3786), LOC19, 3);
					}
					goto LA15;
					LA17: ;
					{
						TY589896 LOC21;
						initlocexpr_562352(p, (*(*e).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[i_583787], (&x));
						memset((void*)LOC21, 0, sizeof(LOC21));
						LOC21[0] = rdcharloc_560698(a);
						LOC21[1] = rdcharloc_560698(x);
						appf_178115(&b.R, ((NimStringDesc*) &TMP3787), LOC21, 2);
					}
					LA15: ;
					{
						if (!(i_583787 < (NI32)(length - 1))) goto LA24;
						app_178060(&b.R, ((NimStringDesc*) &TMP3788));
					}
					LA24: ;
					res_584241 += 1;
				} LA14: ;
			}
		}
		app_178060(&b.R, ((NimStringDesc*) &TMP3412));
		putintodest_576476(p, d, (*e).Typ, b.R);
	}
	goto LA1;
	LA5: ;
	{
		initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
		initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
		geninexpraux_579618(p, e, (&a), (&b), d);
	}
	LA1: ;
}

N_NIMCALL(void, gensetop_584255)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 op) {
	tloc226830 a;
	tloc226830 b;
	tloc226830 i;
	ttype226852* 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_231245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	LOC1 = 0;
	LOC1 = getsize_264199(settype);
	size = ((NI) (LOC1));
	switch (size) {
	case 1:
	case 2:
	case 4:
	case 8:
	{
		switch (op) {
		case ((NU16) 31):
		{
			NimStringDesc* ts;
			NimStringDesc* LOC4;
			NimStringDesc* LOC5;
			NimStringDesc* LOC6;
			LOC4 = 0;
			LOC5 = 0;
			LOC5 = nimIntToStr((NI32)(size * 8));
			LOC4 = rawNewString(LOC5->Sup.len + 2);
appendString(LOC4, ((NimStringDesc*) &TMP3383));
appendString(LOC4, LOC5);
			ts = LOC4;
			LOC6 = 0;
			LOC6 = rawNewString(ts->Sup.len + ts->Sup.len + 35);
appendString(LOC6, ((NimStringDesc*) &TMP3771));
appendString(LOC6, ts);
appendString(LOC6, ((NimStringDesc*) &TMP3772));
appendString(LOC6, ts);
appendString(LOC6, ((NimStringDesc*) &TMP3773));
			binarystmtinexcl_583492(p, e, d, LOC6);
		}
		break;
		case ((NU16) 32):
		{
			NimStringDesc* ts;
			NimStringDesc* LOC8;
			NimStringDesc* LOC9;
			NimStringDesc* LOC10;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = nimIntToStr((NI32)(size * 8));
			LOC8 = rawNewString(LOC9->Sup.len + 2);
appendString(LOC8, ((NimStringDesc*) &TMP3383));
appendString(LOC8, LOC9);
			ts = LOC8;
			LOC10 = 0;
			LOC10 = rawNewString(ts->Sup.len + ts->Sup.len + 42);
appendString(LOC10, ((NimStringDesc*) &TMP3774));
appendString(LOC10, ts);
appendString(LOC10, ((NimStringDesc*) &TMP3775));
appendString(LOC10, ts);
appendString(LOC10, ((NimStringDesc*) &TMP3776));
			binarystmtinexcl_583492(p, e, d, LOC10);
		}
		break;
		case ((NU16) 33):
		{
			{
				if (!(size <= 4)) goto LA14;
				unaryexprchar_577471(p, e, d, ((NimStringDesc*) &TMP3777));
			}
			goto LA12;
			LA14: ;
			{
				unaryexprchar_577471(p, e, d, ((NimStringDesc*) &TMP3778));
			}
			LA12: ;
		}
		break;
		case ((NU16) 141):
		{
			binaryexprchar_577040(p, e, d, ((NimStringDesc*) &TMP3779));
		}
		break;
		case ((NU16) 140):
		{
			binaryexprchar_577040(p, e, d, ((NimStringDesc*) &TMP3780));
		}
		break;
		case ((NU16) 139):
		{
			binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3663));
		}
		break;
		case ((NU16) 142):
		{
			binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3781));
		}
		break;
		case ((NU16) 143):
		{
			binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3782));
		}
		break;
		case ((NU16) 144):
		{
			binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3783));
		}
		break;
		case ((NU16) 145):
		{
			binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3784));
		}
		break;
		case ((NU16) 159):
		{
			geninop_583640(p, e, d);
		}
		break;
		default:
		{
			internalerror_198987((*e).Info, ((NimStringDesc*) &TMP3794));
		}
		break;
		}
	}
	break;
	default:
	{
		switch (op) {
		case ((NU16) 31):
		{
			binarystmtinexcl_583492(p, e, d, ((NimStringDesc*) &TMP3795));
		}
		break;
		case ((NU16) 32):
		{
			binarystmtinexcl_583492(p, e, d, ((NimStringDesc*) &TMP3796));
		}
		break;
		case ((NU16) 33):
		{
			NimStringDesc* LOC30;
			NimStringDesc* LOC31;
			LOC30 = 0;
			LOC31 = 0;
			LOC31 = nimIntToStr(size);
			LOC30 = rawNewString(LOC31->Sup.len + 14);
appendString(LOC30, ((NimStringDesc*) &TMP3797));
appendString(LOC30, LOC31);
appendChar(LOC30, 41);
			unaryexprchar_577471(p, e, d, LOC30);
		}
		break;
		case ((NU16) 141):
		case ((NU16) 140):
		{
			ttype226852* LOC33;
			TY558593 LOC39;
			LOC33 = 0;
			LOC33 = getsystype_283030(((NU8) 31));
			gettemp_559246(p, LOC33, (&i), NIM_FALSE);
			initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
			initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
			{
				ttype226852* LOC38;
				if (!((*d).K == ((NU8) 0))) goto LA36;
				LOC38 = 0;
				LOC38 = getsystype_283030(((NU8) 1));
				gettemp_559246(p, LOC38, d, NIM_FALSE);
			}
			LA36: ;
			memset((void*)LOC39, 0, sizeof(LOC39));
			LOC39[0] = rdloc_560637(i);
			LOC39[1] = torope_178082(((NI64) (size)));
			LOC39[2] = rdloc_560637((*d));
			LOC39[3] = rdloc_560637(a);
			LOC39[4] = rdloc_560637(b);
			linef_554122(p, ((NU8) 2), lookupopr_584262[(op)- 140], LOC39, 5);
		}
		break;
		case ((NU16) 139):
		{
			NimStringDesc* LOC41;
			NimStringDesc* LOC42;
			usestringh_553459((*p).Module);
			LOC41 = 0;
			LOC42 = 0;
			LOC42 = nimIntToStr(size);
			LOC41 = rawNewString(LOC42->Sup.len + 21);
appendString(LOC41, ((NimStringDesc*) &TMP3803));
appendString(LOC41, LOC42);
appendString(LOC41, ((NimStringDesc*) &TMP3804));
			binaryexprchar_577040(p, e, d, LOC41);
		}
		break;
		case ((NU16) 142):
		case ((NU16) 143):
		case ((NU16) 144):
		case ((NU16) 145):
		{
			ttype226852* LOC44;
			TY559098 LOC49;
			LOC44 = 0;
			LOC44 = getsystype_283030(((NU8) 31));
			gettemp_559246(p, LOC44, (&i), NIM_FALSE);
			initlocexpr_562352(p, (*e).kindU.S6.Sons->data[1], (&a));
			initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
			{
				if (!((*d).K == ((NU8) 0))) goto LA47;
				gettemp_559246(p, a.T, d, NIM_FALSE);
			}
			LA47: ;
			memset((void*)LOC49, 0, sizeof(LOC49));
			LOC49[0] = rdloc_560637(i);
			LOC49[1] = torope_178082(((NI64) (size)));
			LOC49[2] = rdloc_560637((*d));
			LOC49[3] = rdloc_560637(a);
			LOC49[4] = rdloc_560637(b);
			LOC49[5] = torope_178076(lookupopr_584262[(op)- 140]);
			linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3805), LOC49, 6);
		}
		break;
		case ((NU16) 159):
		{
			geninop_583640(p, e, d);
		}
		break;
		default:
		{
			internalerror_198987((*e).Info, ((NimStringDesc*) &TMP3806));
		}
		break;
		}
	}
	break;
	}
}

static N_INLINE(trope178009*, genargstringtocstring_563040)(tcproc550031* p, tnode226816* n) {
	trope178009* result;
	tloc226830 a;
	TY178515 LOC1;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*n).kindU.S6.Sons->data[0], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_560637(a);
	result = ropef_178107(((NimStringDesc*) &TMP3807), LOC1, 1);
	return result;
}

N_NIMCALL(trope178009*, openarrayloc_562955)(tcproc550031* p, tnode226816* n) {
	trope178009* result;
	tloc226830 a;
	tnode226816* q;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	q = skipconv_274732(n);
	{
		NU16 LOC3;
		tloc226830 b;
		tloc226830 c;
		tnode226816* LOC6;
		tnode226816* LOC7;
		tnode226816* LOC8;
		NimStringDesc* fmt;
		ttype226852* LOC9;
		TY555018 LOC21;
		LOC3 = 0;
		LOC3 = getmagic_262845(q);
		if (!(LOC3 == ((NU16) 151))) goto LA4;
		memset((void*)(&b), 0, sizeof(b));
		memset((void*)(&c), 0, sizeof(c));
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_227698(q, 1);
		initlocexpr_562352(p, LOC6, (&a));
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_227698(q, 2);
		initlocexpr_562352(p, LOC7, (&b));
		LOC8 = 0;
		LOC8 = HEX5BHEX5D_227698(q, 3);
		initlocexpr_562352(p, LOC8, (&c));
		LOC9 = 0;
		LOC9 = skiptypes_231245(a.T, IL64(211106243062016));
		switch ((*LOC9).Kind) {
		case ((NU8) 27):
		case ((NU8) 48):
		case ((NU8) 16):
		case ((NU8) 4):
		{
			fmt = copyString(((NimStringDesc*) &TMP3808));
		}
		break;
		case ((NU8) 28):
		case ((NU8) 24):
		{
			{
				ttype226852* LOC14;
				LOC14 = 0;
				LOC14 = skiptypes_231245((*n).Typ, IL64(211106232576256));
				if (!((*LOC14).Kind == ((NU8) 23))) goto LA15;
				fmt = copyString(((NimStringDesc*) &TMP3809));
			}
			goto LA12;
			LA15: ;
			{
				fmt = copyString(((NimStringDesc*) &TMP3810));
			}
			LA12: ;
		}
		break;
		default:
		{
			NimStringDesc* LOC19;
			NimStringDesc* LOC20;
			LOC19 = 0;
			LOC20 = 0;
			LOC20 = typetostring_264031(a.T, ((NU8) 0));
			LOC19 = rawNewString(LOC20->Sup.len + 14);
appendString(LOC19, ((NimStringDesc*) &TMP3811));
appendString(LOC19, LOC20);
			internalerror_199006(LOC19);
			fmt = copyString(((NimStringDesc*) &TMP3812));
		}
		break;
		}
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = rdloc_560637(a);
		LOC21[1] = rdloc_560637(b);
		LOC21[2] = rdloc_560637(c);
		result = ropef_178107(fmt, LOC21, 3);
	}
	goto LA1;
	LA4: ;
	{
		ttype226852* LOC23;
		initlocexpr_562352(p, n, (&a));
		LOC23 = 0;
		LOC23 = skiptypes_231245(a.T, IL64(211106240964864));
		switch ((*LOC23).Kind) {
		case ((NU8) 27):
		case ((NU8) 48):
		{
			TY178515 LOC25;
			memset((void*)LOC25, 0, sizeof(LOC25));
			LOC25[0] = rdloc_560637(a);
			result = ropef_178107(((NimStringDesc*) &TMP3696), LOC25, 1);
		}
		break;
		case ((NU8) 28):
		case ((NU8) 24):
		{
			{
				ttype226852* LOC29;
				TY589896 LOC32;
				LOC29 = 0;
				LOC29 = skiptypes_231245((*n).Typ, IL64(211106232576256));
				if (!((*LOC29).Kind == ((NU8) 23))) goto LA30;
				memset((void*)LOC32, 0, sizeof(LOC32));
				LOC32[0] = rdloc_560637(a);
				LOC32[1] = lenfield_562364(p);
				result = ropef_178107(((NimStringDesc*) &TMP3813), LOC32, 2);
			}
			goto LA27;
			LA30: ;
			{
				TY589896 LOC34;
				memset((void*)LOC34, 0, sizeof(LOC34));
				LOC34[0] = rdloc_560637(a);
				LOC34[1] = lenfield_562364(p);
				result = ropef_178107(((NimStringDesc*) &TMP3697), LOC34, 2);
			}
			LA27: ;
		}
		break;
		case ((NU8) 16):
		case ((NU8) 4):
		{
			TY589896 LOC36;
			NI64 LOC37;
			memset((void*)LOC36, 0, sizeof(LOC36));
			LOC36[0] = rdloc_560637(a);
			LOC37 = 0;
			LOC37 = lengthord_264016(a.T);
			LOC36[1] = torope_178082(LOC37);
			result = ropef_178107(((NimStringDesc*) &TMP3698), LOC36, 2);
		}
		break;
		default:
		{
			NimStringDesc* LOC39;
			NimStringDesc* LOC40;
			LOC39 = 0;
			LOC40 = 0;
			LOC40 = typetostring_264031(a.T, ((NU8) 0));
			LOC39 = rawNewString(LOC40->Sup.len + 14);
appendString(LOC39, ((NimStringDesc*) &TMP3811));
appendString(LOC39, LOC40);
			internalerror_199006(LOC39);
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, genarg_563069)(tcproc550031* p, tnode226816* n_563072, tsym226846* param) {
	trope178009* result;
	tloc226830 a;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	{
		if (!((*n_563072).Kind == ((NU8) 71))) goto LA3;
		result = genargstringtocstring_563040(p, n_563072);
	}
	goto LA1;
	LA3: ;
	{
		ttype226852* LOC6;
		tnode226816* n;
		LOC6 = 0;
		LOC6 = skiptypes_231245((*param).Typ, IL64(211106240964864));
		if (!((*LOC6).Kind == ((NU8) 27) || (*LOC6).Kind == ((NU8) 48))) goto LA7;
		{
			if (!!(((*n_563072).Kind == ((NU8) 64)))) goto LA11;
			n = n_563072;
		}
		goto LA9;
		LA11: ;
		{
			n = (*n_563072).kindU.S6.Sons->data[0];
		}
		LA9: ;
		result = openarrayloc_562955(p, n);
	}
	goto LA1;
	LA7: ;
	{
		NIM_BOOL LOC15;
		LOC15 = 0;
		LOC15 = ccgintroducedptr_555262(param);
		if (!LOC15) goto LA16;
		initlocexpr_562352(p, n_563072, (&a));
		result = addrloc_560664(a);
	}
	goto LA1;
	LA16: ;
	{
		initlocexpr_562352(p, n_563072, (&a));
		result = rdloc_560637(a);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, genargnoparam_563129)(tcproc550031* p, tnode226816* n) {
	trope178009* result;
	tloc226830 a;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	{
		if (!((*n).Kind == ((NU8) 71))) goto LA3;
		result = genargstringtocstring_563040(p, n);
	}
	goto LA1;
	LA3: ;
	{
		initlocexpr_562352(p, n, (&a));
		result = rdloc_560637(a);
	}
	LA1: ;
	return result;
}

N_NIMCALL(trope178009*, getrawproctype_563690)(tcproc550031* p, ttype226852* t) {
	trope178009* result;
	result = 0;
	result = getclosuretype_557321((*p).Module, t, ((NU8) 0));
	return result;
}

N_NIMCALL(NIM_BOOL, leftappearsonrightside_562396)(tnode226816* le, tnode226816* ri) {
	NIM_BOOL result;
	result = 0;
	{
		if (!!((le == NIM_NIL))) goto LA3;
		{
			NI i_562439;
			NI HEX3Atmp_562451;
			NI LOC6;
			NI res_562454;
			i_562439 = 0;
			HEX3Atmp_562451 = 0;
			LOC6 = 0;
			LOC6 = len_227364(ri);
			HEX3Atmp_562451 = (LOC6 - 1);
			res_562454 = 1;
			{
				while (1) {
					tnode226816* r;
					if (!(res_562454 <= HEX3Atmp_562451)) goto LA8;
					i_562439 = res_562454;
					r = HEX5BHEX5D_227698(ri, i_562439);
					{
						NU8 LOC11;
						LOC11 = 0;
						LOC11 = ispartof_479430(le, r);
						if (!!((LOC11 == ((NU8) 0)))) goto LA12;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA12: ;
					res_562454 += 1;
				} LA8: ;
			}
		}
	}
	LA3: ;
	BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, hasnoinit_562468)(tnode226816* 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_560870)(tcproc550031* p, tloc226830* loc) {
	NIM_BOOL containsgcref;
	containsgcref = containsgarbagecollectedref_264163((*loc).T);
	{
		ttype226852* LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC3 = skiptypes_231245((*loc).T, IL64(211106242013440));
		LOC4 = 0;
		LOC4 = iscomplexvaluetype_560828(LOC3);
		if (!!(LOC4)) goto LA5;
		{
			tloc226830 nilloc;
			if (!containsgcref) goto LA9;
			memset((void*)(&nilloc), 0, sizeof(nilloc));
			initloc_553361((&nilloc), ((NU8) 1), (*loc).T, ((NU8) 1));
			nilloc.R = torope_178076(((NimStringDesc*) &TMP3520));
			genrefassign_560819(p, (*loc), nilloc, 16);
		}
		goto LA7;
		LA9: ;
		{
			TY178515 LOC12;
			memset((void*)LOC12, 0, sizeof(LOC12));
			LOC12[0] = rdloc_560637((*loc));
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3494), LOC12, 1);
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		{
			TY178515 LOC18;
			if (!(((*p).Options &(1<<((((NU8) 6))&31)))!=0)) goto LA16;
			memset((void*)LOC18, 0, sizeof(LOC18));
			LOC18[0] = addrloc_560664((*loc));
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3816), LOC18, 1);
		}
		LA16: ;
		{
			TY589896 LOC23;
			if (!!(((*loc).S == ((NU8) 1)))) goto LA21;
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = addrloc_560664((*loc));
			LOC23[1] = gentypeinfo_557602((*p).Module, (*loc).T);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3817), LOC23, 2);
			genobjectinit_560721(p, ((NU8) 2), (*loc).T, (*loc), NIM_TRUE);
		}
		goto LA19;
		LA21: ;
		{
			TY589896 LOC25;
			usestringh_553459((*p).Module);
			memset((void*)LOC25, 0, sizeof(LOC25));
			LOC25[0] = addrloc_560664((*loc));
			LOC25[1] = rdloc_560637((*loc));
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3497), LOC25, 2);
			genobjectinit_560721(p, ((NU8) 2), (*loc).T, (*loc), NIM_TRUE);
		}
		LA19: ;
	}
	LA1: ;
}

N_NIMCALL(trope178009*, addcomma_563695)(trope178009* r) {
	trope178009* result;
	result = 0;
	{
		if (!(r == NIM_NIL)) goto LA3;
		result = r;
	}
	goto LA1;
	LA3: ;
	{
		TY554703 LOC6;
		trope178009* LOC7;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC7 = 0;
		LOC7 = ropef_178107(((NimStringDesc*) &TMP3403), LOC6, 0);
		result = con_178024(r, LOC7);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genclosurecall_563683)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* d) {
	tloc226830 op;
	trope178009* pl;
	ttype226852* typ;
	NI length;
	trope178009* rawproc;
	NimStringDesc* callpattern;
	memset((void*)(&op), 0, sizeof(op));
	initlocexpr_562352(p, (*ri).kindU.S6.Sons->data[0], (&op));
	pl = 0;
	typ = skiptypes_231245((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_227249(ri);
	{
		NI i_563814;
		NI HEX3Atmp_564416;
		NI res_564419;
		i_563814 = 0;
		HEX3Atmp_564416 = 0;
		HEX3Atmp_564416 = (NI32)(length - 1);
		res_564419 = 1;
		{
			while (1) {
				if (!(res_564419 <= HEX3Atmp_564416)) goto LA3;
				i_563814 = res_564419;
				{
					NI LOC6;
					trope178009* LOC9;
					LOC6 = 0;
					LOC6 = sonslen_227255(typ);
					if (!(i_563814 < LOC6)) goto LA7;
					LOC9 = 0;
					LOC9 = genarg_563069(p, (*ri).kindU.S6.Sons->data[i_563814], (*(*(*typ).N).kindU.S6.Sons->data[i_563814]).kindU.S4.Sym);
					app_178052(&pl, LOC9);
				}
				goto LA4;
				LA7: ;
				{
					trope178009* LOC11;
					LOC11 = 0;
					LOC11 = genargnoparam_563129(p, (*ri).kindU.S6.Sons->data[i_563814]);
					app_178052(&pl, LOC11);
				}
				LA4: ;
				{
					TY554703 LOC16;
					trope178009* LOC17;
					if (!(i_563814 < (NI32)(length - 1))) goto LA14;
					memset((void*)LOC16, 0, sizeof(LOC16));
					LOC17 = 0;
					LOC17 = ropef_178107(((NimStringDesc*) &TMP3403), LOC16, 0);
					app_178052(&pl, LOC17);
				}
				LA14: ;
				res_564419 += 1;
			} LA3: ;
		}
	}
	rawproc = getrawproctype_563690(p, typ);
	{
		if (!(((*typ).Flags &(1<<((((NU8) 14))&31)))!=0)) goto LA20;
		callpattern = copyString(((NimStringDesc*) &TMP3814));
	}
	goto LA18;
	LA20: ;
	{
		callpattern = copyString(((NimStringDesc*) &TMP3815));
	}
	LA18: ;
	{
		if (!!(((*typ).Sons->data[0] == NIM_NIL))) goto LA25;
		{
			NIM_BOOL LOC29;
			LOC29 = 0;
			LOC29 = isinvalidreturntype_555174((*typ).Sons->data[0]);
			if (!LOC29) goto LA30;
			{
				NI LOC34;
				TY554703 LOC37;
				trope178009* LOC38;
				LOC34 = 0;
				LOC34 = sonslen_227249(ri);
				if (!(1 < LOC34)) goto LA35;
				memset((void*)LOC37, 0, sizeof(LOC37));
				LOC38 = 0;
				LOC38 = ropef_178107(((NimStringDesc*) &TMP3403), LOC37, 0);
				app_178052(&pl, LOC38);
			}
			LA35: ;
			{
				NIM_BOOL LOC41;
				NIM_BOOL LOC43;
				trope178009* LOC56;
				NimStringDesc* LOC57;
				TY557045 LOC58;
				LOC41 = 0;
				LOC41 = ((3 &(1<<(((*d).K)&15)))!=0);
				if (LOC41) goto LA42;
				LOC43 = 0;
				LOC43 = leftappearsonrightside_562396(le, ri);
				LOC41 = !(LOC43);
				LA42: ;
				if (!LOC41) goto LA44;
				{
					if (!((*d).K == ((NU8) 0))) goto LA48;
					gettemp_559246(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_562468(ri);
					LOC51 = !(LOC53);
					LA52: ;
					if (!LOC51) goto LA54;
					resetloc_560870(p, d);
				}
				goto LA46;
				LA54: ;
				LA46: ;
				LOC56 = 0;
				LOC56 = addrloc_560664((*d));
				app_178052(&pl, LOC56);
				LOC57 = 0;
				LOC57 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC57, callpattern);
appendString(LOC57, ((NimStringDesc*) &TMP3467));
				memset((void*)LOC58, 0, sizeof(LOC58));
				LOC58[0] = op.R;
				LOC58[1] = pl;
				LOC58[2] = addcomma_563695(pl);
				LOC58[3] = rawproc;
				linef_554122(p, ((NU8) 2), LOC57, LOC58, 4);
			}
			goto LA39;
			LA44: ;
			{
				tloc226830 tmp;
				trope178009* LOC60;
				NimStringDesc* LOC61;
				TY557045 LOC62;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_559246(p, (*typ).Sons->data[0], (&tmp), NIM_TRUE);
				LOC60 = 0;
				LOC60 = addrloc_560664(tmp);
				app_178052(&pl, LOC60);
				LOC61 = 0;
				LOC61 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC61, callpattern);
appendString(LOC61, ((NimStringDesc*) &TMP3467));
				memset((void*)LOC62, 0, sizeof(LOC62));
				LOC62[0] = op.R;
				LOC62[1] = pl;
				LOC62[2] = addcomma_563695(pl);
				LOC62[3] = rawproc;
				linef_554122(p, ((NU8) 2), LOC61, LOC62, 4);
				genassignment_562330(p, (*d), tmp, 0);
			}
			LA39: ;
		}
		goto LA27;
		LA30: ;
		{
			tloc226830 list;
			TY557045 LOC68;
			{
				if (!((*d).K == ((NU8) 0))) goto LA66;
				gettemp_559246(p, (*typ).Sons->data[0], d, NIM_FALSE);
			}
			LA66: ;
			memset((void*)(&list), 0, sizeof(list));
			initloc_553361((&list), ((NU8) 10), (*d).T, ((NU8) 0));
			memset((void*)LOC68, 0, sizeof(LOC68));
			LOC68[0] = op.R;
			LOC68[1] = pl;
			LOC68[2] = addcomma_563695(pl);
			LOC68[3] = rawproc;
			list.R = ropef_178107(callpattern, LOC68, 4);
			genassignment_562330(p, (*d), list, 0);
		}
		LA27: ;
	}
	goto LA23;
	LA25: ;
	{
		NimStringDesc* LOC70;
		TY557045 LOC71;
		LOC70 = 0;
		LOC70 = rawNewString(callpattern->Sup.len + 3);
appendString(LOC70, callpattern);
appendString(LOC70, ((NimStringDesc*) &TMP3467));
		memset((void*)LOC71, 0, sizeof(LOC71));
		LOC71[0] = op.R;
		LOC71[1] = pl;
		LOC71[2] = addcomma_563695(pl);
		LOC71[3] = rawproc;
		linef_554122(p, ((NU8) 2), LOC70, LOC71, 4);
	}
	LA23: ;
}

N_NIMCALL(void, fixupcall_562539)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* d, trope178009* callee, trope178009* params) {
	trope178009* pl;
	TY555018 LOC1;
	TY554703 LOC2;
	ttype226852* typ;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = callee;
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC1[1] = ropef_178107(((NimStringDesc*) &TMP3413), LOC2, 0);
	LOC1[2] = params;
	pl = con_178045(LOC1, 3);
	typ = skiptypes_231245((*(*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_555174((*typ).Sons->data[0]);
			if (!LOC9) goto LA10;
			{
				TY554703 LOC16;
				trope178009* LOC17;
				if (!!((params == NIM_NIL))) goto LA14;
				memset((void*)LOC16, 0, sizeof(LOC16));
				LOC17 = 0;
				LOC17 = ropef_178107(((NimStringDesc*) &TMP3403), LOC16, 0);
				app_178052(&pl, LOC17);
			}
			LA14: ;
			{
				NIM_BOOL LOC20;
				NIM_BOOL LOC22;
				trope178009* LOC35;
				TY554703 LOC36;
				trope178009* LOC37;
				LOC20 = 0;
				LOC20 = ((3 &(1<<(((*d).K)&15)))!=0);
				if (LOC20) goto LA21;
				LOC22 = 0;
				LOC22 = leftappearsonrightside_562396(le, ri);
				LOC20 = !(LOC22);
				LA21: ;
				if (!LOC20) goto LA23;
				{
					if (!((*d).K == ((NU8) 0))) goto LA27;
					gettemp_559246(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_562468(ri);
					LOC30 = !(LOC32);
					LA31: ;
					if (!LOC30) goto LA33;
					resetloc_560870(p, d);
				}
				goto LA25;
				LA33: ;
				LA25: ;
				LOC35 = 0;
				LOC35 = addrloc_560664((*d));
				app_178052(&pl, LOC35);
				memset((void*)LOC36, 0, sizeof(LOC36));
				LOC37 = 0;
				LOC37 = ropef_178107(((NimStringDesc*) &TMP3819), LOC36, 0);
				app_178052(&pl, LOC37);
				line_554100(p, ((NU8) 2), pl);
			}
			goto LA18;
			LA23: ;
			{
				tloc226830 tmp;
				trope178009* LOC39;
				TY554703 LOC40;
				trope178009* LOC41;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_559246(p, (*typ).Sons->data[0], (&tmp), NIM_TRUE);
				LOC39 = 0;
				LOC39 = addrloc_560664(tmp);
				app_178052(&pl, LOC39);
				memset((void*)LOC40, 0, sizeof(LOC40));
				LOC41 = 0;
				LOC41 = ropef_178107(((NimStringDesc*) &TMP3819), LOC40, 0);
				app_178052(&pl, LOC41);
				line_554100(p, ((NU8) 2), pl);
				genassignment_562330(p, (*d), tmp, 0);
			}
			LA18: ;
		}
		goto LA7;
		LA10: ;
		{
			TY554703 LOC43;
			trope178009* LOC44;
			tloc226830 list;
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC44 = 0;
			LOC44 = ropef_178107(((NimStringDesc*) &TMP3412), LOC43, 0);
			app_178052(&pl, LOC44);
			{
				if (!((*d).K == ((NU8) 0))) goto LA47;
				gettemp_559246(p, (*typ).Sons->data[0], d, NIM_FALSE);
			}
			LA47: ;
			memset((void*)(&list), 0, sizeof(list));
			initloc_553361((&list), ((NU8) 10), (*d).T, ((NU8) 0));
			list.R = pl;
			genassignment_562330(p, (*d), list, 0);
		}
		LA7: ;
	}
	goto LA3;
	LA5: ;
	{
		TY554703 LOC50;
		trope178009* LOC51;
		memset((void*)LOC50, 0, sizeof(LOC50));
		LOC51 = 0;
		LOC51 = ropef_178107(((NimStringDesc*) &TMP3819), LOC50, 0);
		app_178052(&pl, LOC51);
		line_554100(p, ((NU8) 2), pl);
	}
	LA3: ;
}

N_NIMCALL(void, geninfixcall_564441)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* d) {
	tloc226830 op;
	tloc226830 a;
	trope178009* pl;
	ttype226852* typ;
	NI length;
	tsym226846* param;
	trope178009* LOC1;
	trope178009* params;
	memset((void*)(&op), 0, sizeof(op));
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*ri).kindU.S6.Sons->data[0], (&op));
	pl = NIM_NIL;
	typ = skiptypes_231245((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_227249(ri);
	param = (*(*(*typ).N).kindU.S6.Sons->data[1]).kindU.S4.Sym;
	LOC1 = 0;
	LOC1 = genarg_563069(p, (*ri).kindU.S6.Sons->data[1], param);
	app_178052(&pl, LOC1);
	{
		ttype226852* LOC4;
		TY554703 LOC7;
		trope178009* LOC8;
		LOC4 = 0;
		LOC4 = skiptypes_231245((*param).Typ, 2048);
		if (!((*LOC4).Kind == ((NU8) 21))) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC8 = 0;
		LOC8 = ropef_178107(((NimStringDesc*) &TMP3818), LOC7, 0);
		app_178052(&pl, LOC8);
	}
	goto LA2;
	LA5: ;
	{
		TY554703 LOC10;
		trope178009* LOC11;
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC11 = 0;
		LOC11 = ropef_178107(((NimStringDesc*) &TMP3572), LOC10, 0);
		app_178052(&pl, LOC11);
	}
	LA2: ;
	app_178052(&pl, op.R);
	params = 0;
	{
		NI i_564885;
		NI HEX3Atmp_565264;
		NI res_565267;
		i_564885 = 0;
		HEX3Atmp_565264 = 0;
		HEX3Atmp_565264 = (NI32)(length - 1);
		res_565267 = 2;
		{
			while (1) {
				if (!(res_565267 <= HEX3Atmp_565264)) goto LA14;
				i_564885 = res_565267;
				{
					TY554703 LOC19;
					trope178009* LOC20;
					if (!!((params == NIM_NIL))) goto LA17;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC20 = 0;
					LOC20 = ropef_178107(((NimStringDesc*) &TMP3403), LOC19, 0);
					app_178052(&params, LOC20);
				}
				LA17: ;
				{
					NI LOC23;
					trope178009* LOC26;
					LOC23 = 0;
					LOC23 = sonslen_227255(typ);
					if (!(i_564885 < LOC23)) goto LA24;
					LOC26 = 0;
					LOC26 = genarg_563069(p, (*ri).kindU.S6.Sons->data[i_564885], (*(*(*typ).N).kindU.S6.Sons->data[i_564885]).kindU.S4.Sym);
					app_178052(&params, LOC26);
				}
				goto LA21;
				LA24: ;
				{
					trope178009* LOC28;
					LOC28 = 0;
					LOC28 = genargnoparam_563129(p, (*ri).kindU.S6.Sons->data[i_564885]);
					app_178052(&params, LOC28);
				}
				LA21: ;
				res_565267 += 1;
			} LA14: ;
		}
	}
	fixupcall_562539(p, le, ri, d, pl, params);
}

N_NIMCALL(void, gennamedparamcall_565281)(tcproc550031* p, tnode226816* ri, tloc226830* d) {
	tloc226830 op;
	tloc226830 a;
	trope178009* pl;
	TY554703 LOC1;
	ttype226852* typ;
	NI length;
	memset((void*)(&op), 0, sizeof(op));
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*ri).kindU.S6.Sons->data[0], (&op));
	memset((void*)LOC1, 0, sizeof(LOC1));
	pl = ropef_178107(((NimStringDesc*) &TMP3820), LOC1, 0);
	typ = skiptypes_231245((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_227249(ri);
	{
		trope178009* LOC6;
		TY554703 LOC7;
		trope178009* LOC8;
		if (!(1 < length)) goto LA4;
		LOC6 = 0;
		LOC6 = genarg_563069(p, (*ri).kindU.S6.Sons->data[1], (*(*(*typ).N).kindU.S6.Sons->data[1]).kindU.S4.Sym);
		app_178052(&pl, LOC6);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC8 = 0;
		LOC8 = ropef_178107(((NimStringDesc*) &TMP3404), LOC7, 0);
		app_178052(&pl, LOC8);
	}
	LA4: ;
	app_178052(&pl, op.R);
	{
		TY554703 LOC13;
		trope178009* LOC14;
		trope178009* LOC15;
		if (!(2 < length)) goto LA11;
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC14 = 0;
		LOC14 = ropef_178107(((NimStringDesc*) &TMP3821), LOC13, 0);
		app_178052(&pl, LOC14);
		LOC15 = 0;
		LOC15 = genarg_563069(p, (*ri).kindU.S6.Sons->data[2], (*(*(*typ).N).kindU.S6.Sons->data[2]).kindU.S4.Sym);
		app_178052(&pl, LOC15);
	}
	LA11: ;
	{
		NI i_565718;
		NI HEX3Atmp_566216;
		NI res_566219;
		i_565718 = 0;
		HEX3Atmp_566216 = 0;
		HEX3Atmp_566216 = (NI32)(length - 1);
		res_566219 = 3;
		{
			while (1) {
				tsym226846* param;
				TY554703 LOC24;
				trope178009* LOC25;
				TY554703 LOC26;
				trope178009* LOC27;
				trope178009* LOC28;
				if (!(res_566219 <= HEX3Atmp_566216)) goto LA18;
				i_565718 = res_566219;
				{
					NI LOC21;
					LOC21 = 0;
					LOC21 = sonslen_227255(typ);
					if (!(LOC21 <= i_565718)) goto LA22;
					internalerror_198987((*ri).Info, ((NimStringDesc*) &TMP3822));
				}
				LA22: ;
				param = (*(*(*typ).N).kindU.S6.Sons->data[i_565718]).kindU.S4.Sym;
				memset((void*)LOC24, 0, sizeof(LOC24));
				LOC25 = 0;
				LOC25 = ropef_178107(((NimStringDesc*) &TMP3404), LOC24, 0);
				app_178052(&pl, LOC25);
				app_178060(&pl, (*(*param).Name).S);
				memset((void*)LOC26, 0, sizeof(LOC26));
				LOC27 = 0;
				LOC27 = ropef_178107(((NimStringDesc*) &TMP3821), LOC26, 0);
				app_178052(&pl, LOC27);
				LOC28 = 0;
				LOC28 = genarg_563069(p, (*ri).kindU.S6.Sons->data[i_565718], param);
				app_178052(&pl, LOC28);
				res_566219 += 1;
			} LA18: ;
		}
	}
	{
		if (!!(((*typ).Sons->data[0] == NIM_NIL))) goto LA31;
		{
			NIM_BOOL LOC35;
			LOC35 = 0;
			LOC35 = isinvalidreturntype_555174((*typ).Sons->data[0]);
			if (!LOC35) goto LA36;
			{
				NI LOC40;
				TY554703 LOC43;
				trope178009* LOC44;
				LOC40 = 0;
				LOC40 = sonslen_227249(ri);
				if (!(1 < LOC40)) goto LA41;
				memset((void*)LOC43, 0, sizeof(LOC43));
				LOC44 = 0;
				LOC44 = ropef_178107(((NimStringDesc*) &TMP3404), LOC43, 0);
				app_178052(&pl, LOC44);
			}
			LA41: ;
			{
				TY554703 LOC53;
				trope178009* LOC54;
				trope178009* LOC55;
				TY554703 LOC56;
				trope178009* LOC57;
				if (!((3 &(1<<(((*d).K)&15)))!=0)) goto LA47;
				{
					if (!((*d).K == ((NU8) 0))) goto LA51;
					gettemp_559246(p, (*typ).Sons->data[0], d, NIM_TRUE);
				}
				LA51: ;
				memset((void*)LOC53, 0, sizeof(LOC53));
				LOC54 = 0;
				LOC54 = ropef_178107(((NimStringDesc*) &TMP3823), LOC53, 0);
				app_178052(&pl, LOC54);
				LOC55 = 0;
				LOC55 = addrloc_560664((*d));
				app_178052(&pl, LOC55);
				memset((void*)LOC56, 0, sizeof(LOC56));
				LOC57 = 0;
				LOC57 = ropef_178107(((NimStringDesc*) &TMP3824), LOC56, 0);
				app_178052(&pl, LOC57);
				line_554100(p, ((NU8) 2), pl);
			}
			goto LA45;
			LA47: ;
			{
				tloc226830 tmp;
				trope178009* LOC59;
				TY554703 LOC60;
				trope178009* LOC61;
				memset((void*)(&tmp), 0, sizeof(tmp));
				gettemp_559246(p, (*typ).Sons->data[0], (&tmp), NIM_TRUE);
				LOC59 = 0;
				LOC59 = addrloc_560664(tmp);
				app_178052(&pl, LOC59);
				memset((void*)LOC60, 0, sizeof(LOC60));
				LOC61 = 0;
				LOC61 = ropef_178107(((NimStringDesc*) &TMP3824), LOC60, 0);
				app_178052(&pl, LOC61);
				line_554100(p, ((NU8) 2), pl);
				genassignment_562330(p, (*d), tmp, 0);
			}
			LA45: ;
		}
		goto LA33;
		LA36: ;
		{
			TY554703 LOC63;
			trope178009* LOC64;
			tloc226830 list;
			memset((void*)LOC63, 0, sizeof(LOC63));
			LOC64 = 0;
			LOC64 = ropef_178107(((NimStringDesc*) &TMP3825), LOC63, 0);
			app_178052(&pl, LOC64);
			{
				if (!((*d).K == ((NU8) 0))) goto LA67;
				gettemp_559246(p, (*typ).Sons->data[0], d, NIM_FALSE);
			}
			LA67: ;
			memset((void*)(&list), 0, sizeof(list));
			initloc_553361((&list), ((NU8) 10), NIM_NIL, ((NU8) 0));
			list.R = pl;
			genassignment_562330(p, (*d), list, 0);
		}
		LA33: ;
	}
	goto LA29;
	LA31: ;
	{
		TY554703 LOC70;
		trope178009* LOC71;
		memset((void*)LOC70, 0, sizeof(LOC70));
		LOC71 = 0;
		LOC71 = ropef_178107(((NimStringDesc*) &TMP3824), LOC70, 0);
		app_178052(&pl, LOC71);
		line_554100(p, ((NU8) 2), pl);
	}
	LA29: ;
}

N_NIMCALL(void, genprefixcall_563149)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* d) {
	tloc226830 op;
	trope178009* params;
	ttype226852* typ;
	NI length;
	memset((void*)(&op), 0, sizeof(op));
	initlocexpr_562352(p, (*ri).kindU.S6.Sons->data[0], (&op));
	params = 0;
	typ = skiptypes_231245((*(*ri).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
	length = sonslen_227249(ri);
	{
		NI i_563414;
		NI HEX3Atmp_563663;
		NI res_563666;
		i_563414 = 0;
		HEX3Atmp_563663 = 0;
		HEX3Atmp_563663 = (NI32)(length - 1);
		res_563666 = 1;
		{
			while (1) {
				if (!(res_563666 <= HEX3Atmp_563663)) goto LA3;
				i_563414 = res_563666;
				{
					{
						NIM_BOOL LOC7;
						LOC7 = 0;
						LOC7 = iscompiletimeonly_274466((*(*ri).kindU.S6.Sons->data[i_563414]).Typ);
						if (!LOC7) goto LA8;
						goto LA4;
					}
					LA8: ;
					{
						TY554703 LOC14;
						trope178009* LOC15;
						if (!!((params == NIM_NIL))) goto LA12;
						memset((void*)LOC14, 0, sizeof(LOC14));
						LOC15 = 0;
						LOC15 = ropef_178107(((NimStringDesc*) &TMP3403), LOC14, 0);
						app_178052(&params, LOC15);
					}
					LA12: ;
					{
						NI LOC18;
						trope178009* LOC21;
						LOC18 = 0;
						LOC18 = sonslen_227255(typ);
						if (!(i_563414 < LOC18)) goto LA19;
						LOC21 = 0;
						LOC21 = genarg_563069(p, (*ri).kindU.S6.Sons->data[i_563414], (*(*(*typ).N).kindU.S6.Sons->data[i_563414]).kindU.S4.Sym);
						app_178052(&params, LOC21);
					}
					goto LA16;
					LA19: ;
					{
						trope178009* LOC23;
						LOC23 = 0;
						LOC23 = genargnoparam_563129(p, (*ri).kindU.S6.Sons->data[i_563414]);
						app_178052(&params, LOC23);
					}
					LA16: ;
				} LA4: ;
				res_563666 += 1;
			} LA3: ;
		}
	}
	fixupcall_562539(p, le, ri, d, op.R, params);
}

static N_INLINE(void, poststmtactions_554608)(tcproc550031* p) {
	trope178009** LOC1;
	LOC1 = 0;
	LOC1 = s_550183(p, ((NU8) 2));
	app_178052(LOC1, (*(*p).Module).Injectstmt);
}

N_NIMCALL(void, gencall_566235)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	{
		if (!((*(*(*e).kindU.S6.Sons->data[0]).Typ).Callconv == ((NU8) 8))) goto LA3;
		genclosurecall_563683(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_227364(e);
		LOC6 = (2 <= LOC10);
		LA9: ;
		if (!LOC6) goto LA11;
		geninfixcall_564441(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_565281(p, e, d);
	}
	goto LA1;
	LA16: ;
	{
		genprefixcall_563149(p, NIM_NIL, e, d);
	}
	LA1: ;
	poststmtactions_554608(p);
}

N_NIMCALL(void, genreset_581695)(tcproc550031* p, tnode226816* n) {
	tloc226830 a;
	TY589896 LOC1;
	ttype226852* LOC2;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*n).kindU.S6.Sons->data[1], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = addrloc_560664(a);
	LOC2 = 0;
	LOC2 = skiptypes_231245(a.T, IL64(211106242013440));
	LOC1[1] = gentypeinfo_557602((*p).Module, LOC2);
	linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3817), LOC1, 2);
}

N_NIMCALL(void, genecho_581011)(tcproc550031* p, tnode226816* n) {
	NIM_BOOL LOC6;
	trope178009* args;
	tloc226830 a;
	TY589896 LOC12;
	NimStringDesc* LOC13;
	NI LOC14;
	NimStringDesc* LOC15;
	{
		NimStringDesc* LOC5;
		if (!!(((*n).Kind == ((NU8) 41)))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_199126(TMP3826);
		internalerror_199006(LOC5);
	}
	LA3: ;
	LOC6 = 0;
	LOC6 = includestr_127297((&(*(*p).Module).Headerfiles), ((NimStringDesc*) &TMP3827));
	args = NIM_NIL;
	memset((void*)(&a), 0, sizeof(a));
	{
		NI i_581055;
		NI HEX3Atmp_581083;
		NI LOC8;
		NI res_581086;
		i_581055 = 0;
		HEX3Atmp_581083 = 0;
		LOC8 = 0;
		LOC8 = len_227364(n);
		HEX3Atmp_581083 = (NI32)(LOC8 - 1);
		res_581086 = 0;
		{
			while (1) {
				TY178515 LOC11;
				if (!(res_581086 <= HEX3Atmp_581083)) goto LA10;
				i_581055 = res_581086;
				initlocexpr_562352(p, (*n).kindU.S6.Sons->data[i_581055], (&a));
				memset((void*)LOC11, 0, sizeof(LOC11));
				LOC11[0] = rdloc_560637(a);
				appf_178115(&args, ((NimStringDesc*) &TMP3828), LOC11, 1);
				res_581086 += 1;
			} LA10: ;
		}
	}
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC13 = 0;
	LOC14 = 0;
	LOC14 = len_227364(n);
	LOC15 = 0;
	LOC15 = nsuRepeatStr(LOC14, ((NimStringDesc*) &TMP3830));
	LOC13 = rawNewString(LOC15->Sup.len + tnl_175613->Sup.len + 0);
appendString(LOC13, LOC15);
appendString(LOC13, tnl_175613);
	LOC12[0] = makecstring_196659(LOC13);
	LOC12[1] = args;
	linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3829), LOC12, 2);
}

N_NIMCALL(void, genseqconstr_582162)(tcproc550031* p, tnode226816* t, tloc226830* d) {
	tloc226830 arr;
	NI LOC5;
	trope178009* LOC6;
	memset((void*)(&arr), 0, sizeof(arr));
	{
		if (!((*d).K == ((NU8) 0))) goto LA3;
		gettemp_559246(p, (*t).Typ, d, NIM_FALSE);
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = sonslen_227249(t);
	LOC6 = 0;
	LOC6 = intliteral_562339(((NI64) (LOC5)));
	gennewseqaux_581818(p, (*d), LOC6);
	{
		NI i_582190;
		NI HEX3Atmp_582213;
		NI LOC8;
		NI res_582216;
		i_582190 = 0;
		HEX3Atmp_582213 = 0;
		LOC8 = 0;
		LOC8 = sonslen_227249(t);
		HEX3Atmp_582213 = (NI32)(LOC8 - 1);
		res_582216 = 0;
		{
			while (1) {
				ttype226852* LOC11;
				ttype226852* LOC12;
				TY589896 LOC13;
				if (!(res_582216 <= HEX3Atmp_582213)) goto LA10;
				i_582190 = res_582216;
				LOC11 = 0;
				LOC11 = skiptypes_231245((*t).Typ, IL64(211106232576256));
				LOC12 = 0;
				LOC12 = elemtype_264656(LOC11);
				initloc_553361((&arr), ((NU8) 7), LOC12, ((NU8) 2));
				memset((void*)LOC13, 0, sizeof(LOC13));
				LOC13[0] = rdloc_560637((*d));
				LOC13[1] = intliteral_562339(((NI64) (i_582190)));
				arr.R = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3536), LOC13, 2);
				arr.S = ((NU8) 2);
				expr_562305(p, (*t).kindU.S6.Sons->data[i_582190], (&arr));
				res_582216 += 1;
			} LA10: ;
		}
	}
	gcusage_581100(t);
}

N_NIMCALL(void, genarrtoseq_582230)(tcproc550031* p, tnode226816* t, tloc226830* d) {
	tloc226830 elem;
	tloc226830 a;
	tloc226830 arr;
	NI l;
	NI64 LOC9;
	trope178009* 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_582162(p, (*t).kindU.S6.Sons->data[1], d);
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA7;
		gettemp_559246(p, (*t).Typ, d, NIM_FALSE);
	}
	LA7: ;
	LOC9 = 0;
	LOC9 = lengthord_264016((*(*t).kindU.S6.Sons->data[1]).Typ);
	l = ((NI) (LOC9));
	LOC10 = 0;
	LOC10 = intliteral_562339(((NI64) (l)));
	gennewseqaux_581818(p, (*d), LOC10);
	initlocexpr_562352(p, (*t).kindU.S6.Sons->data[1], (&a));
	{
		NI i_582327;
		NI HEX3Atmp_582357;
		NI res_582360;
		i_582327 = 0;
		HEX3Atmp_582357 = 0;
		HEX3Atmp_582357 = (NI32)(l - 1);
		res_582360 = 0;
		{
			while (1) {
				ttype226852* LOC14;
				ttype226852* LOC15;
				TY589896 LOC16;
				ttype226852* LOC17;
				ttype226852* LOC18;
				TY589896 LOC19;
				if (!(res_582360 <= HEX3Atmp_582357)) goto LA13;
				i_582327 = res_582360;
				LOC14 = 0;
				LOC14 = skiptypes_231245((*t).Typ, IL64(211106232576256));
				LOC15 = 0;
				LOC15 = elemtype_264656(LOC14);
				initloc_553361((&elem), ((NU8) 7), LOC15, ((NU8) 2));
				memset((void*)LOC16, 0, sizeof(LOC16));
				LOC16[0] = rdloc_560637((*d));
				LOC16[1] = intliteral_562339(((NI64) (i_582327)));
				elem.R = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3536), LOC16, 2);
				elem.S = ((NU8) 2);
				LOC17 = 0;
				LOC17 = skiptypes_231245((*(*t).kindU.S6.Sons->data[1]).Typ, IL64(211106232576256));
				LOC18 = 0;
				LOC18 = elemtype_264656(LOC17);
				initloc_553361((&arr), ((NU8) 7), LOC18, a.S);
				memset((void*)LOC19, 0, sizeof(LOC19));
				LOC19[0] = rdloc_560637(a);
				LOC19[1] = intliteral_562339(((NI64) (i_582327)));
				arr.R = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3480), LOC19, 2);
				genassignment_562330(p, elem, arr, 5);
				res_582360 += 1;
			} LA13: ;
		}
	}
	BeforeRet: ;
}

N_NIMCALL(void, gendeepcopy_576337)(tcproc550031* p, tloc226830 dest, tloc226830 src) {
	ttype226852* ty;
	ty = skiptypes_231245(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):
	{
		TY555018 LOC2;
		memset((void*)LOC2, 0, sizeof(LOC2));
		LOC2[0] = addrloc_560664(dest);
		LOC2[1] = addrloc_560664(src);
		LOC2[2] = gentypeinfo_557602((*p).Module, dest.T);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3892), LOC2, 3);
	}
	break;
	case ((NU8) 24):
	case ((NU8) 28):
	{
		TY555018 LOC4;
		memset((void*)LOC4, 0, sizeof(LOC4));
		LOC4[0] = addrloc_560664(dest);
		LOC4[1] = rdloc_560637(src);
		LOC4[2] = gentypeinfo_557602((*p).Module, dest.T);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3893), LOC4, 3);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		TY555018 LOC6;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = addrloc_560664(dest);
		LOC6[1] = addrloc_560664(src);
		LOC6[2] = gentypeinfo_557602((*p).Module, dest.T);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3894), LOC6, 3);
	}
	break;
	case ((NU8) 19):
	{
		{
			NU8 LOC10;
			TY555018 LOC13;
			NI64 LOC14;
			LOC10 = 0;
			LOC10 = maptype_555054(ty);
			if (!(LOC10 == ((NU8) 17))) goto LA11;
			usestringh_553459((*p).Module);
			memset((void*)LOC13, 0, sizeof(LOC13));
			LOC13[0] = rdloc_560637(dest);
			LOC13[1] = rdloc_560637(src);
			LOC14 = 0;
			LOC14 = getsize_264199(dest.T);
			LOC13[2] = torope_178082(LOC14);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3584), LOC13, 3);
		}
		goto LA8;
		LA11: ;
		{
			TY589896 LOC16;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_560637(dest);
			LOC16[1] = rdloc_560637(src);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), 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):
	{
		TY589896 LOC18;
		memset((void*)LOC18, 0, sizeof(LOC18));
		LOC18[0] = rdloc_560637(dest);
		LOC18[1] = rdloc_560637(src);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3563), LOC18, 2);
	}
	break;
	default:
	{
		NimStringDesc* LOC20;
		LOC20 = 0;
		LOC20 = rawNewString(reprEnum((*ty).Kind, (&NTI226258))->Sup.len + 13);
appendString(LOC20, ((NimStringDesc*) &TMP3895));
appendString(LOC20, reprEnum((*ty).Kind, (&NTI226258)));
		internalerror_199006(LOC20);
	}
	break;
	}
}

N_NIMCALL(void, genmagicexpr_585474)(tcproc550031* p, tnode226816* e, tloc226830* d, NU16 op) {
	trope178009* line;
	trope178009* filen;
	line = 0;
	filen = 0;
	switch (op) {
	case ((NU16) 135):
	case ((NU16) 134):
	{
		genandor_580938(p, e, d, op);
	}
	break;
	case ((NU16) 105) ... ((NU16) 125):
	{
		unaryarith_578895(p, e, d, op);
	}
	break;
	case ((NU16) 101) ... ((NU16) 104):
	{
		unaryarithoverflow_577890(p, e, d, op);
	}
	break;
	case ((NU16) 47) ... ((NU16) 50):
	{
		binaryfloatarith_584957(p, e, d, op);
	}
	break;
	case ((NU16) 51) ... ((NU16) 99):
	{
		binaryarith_578042(p, e, d, op);
	}
	break;
	case ((NU16) 100):
	{
		geneqproc_578444(p, e, d);
	}
	break;
	case ((NU16) 37) ... ((NU16) 46):
	{
		binaryarithoverflow_577502(p, e, d, op);
	}
	break;
	case ((NU16) 160):
	{
		genrepr_582781(p, e, d);
	}
	break;
	case ((NU16) 262):
	{
		gengettypeinfo_582893(p, e, d);
	}
	break;
	case ((NU16) 167):
	{
		genswap_583287(p, e, d);
	}
	break;
	case ((NU16) 18):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA14;
			unaryexpr_577440(p, e, d, ((NimStringDesc*) &TMP3702));
		}
		goto LA12;
		LA14: ;
		{
			unaryexpr_577440(p, e, d, ((NimStringDesc*) &TMP3703));
		}
		LA12: ;
	}
	break;
	case ((NU16) 20):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA20;
			binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3704));
		}
		goto LA18;
		LA20: ;
		{
			binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3705));
		}
		LA18: ;
	}
	break;
	case ((NU16) 19):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA26;
			binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3706));
		}
		goto LA24;
		LA26: ;
		{
			binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3707));
		}
		LA24: ;
	}
	break;
	case ((NU16) 21):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA32;
			binarystmt_576514(p, e, d, ((NimStringDesc*) &TMP3709));
		}
		goto LA30;
		LA32: ;
		{
			ttype226852* LOC35;
			LOC35 = 0;
			LOC35 = skiptypes_231245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
			if (!((*LOC35).Kind == ((NU8) 35))) goto LA36;
			binarystmt_576514(p, e, d, ((NimStringDesc*) &TMP3710));
		}
		goto LA30;
		LA36: ;
		{
			binarystmt_576514(p, e, d, ((NimStringDesc*) &TMP3711));
		}
		LA30: ;
	}
	break;
	case ((NU16) 22):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA42;
			binarystmt_576514(p, e, d, ((NimStringDesc*) &TMP3712));
		}
		goto LA40;
		LA42: ;
		{
			ttype226852* LOC45;
			LOC45 = 0;
			LOC45 = skiptypes_231245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
			if (!((*LOC45).Kind == ((NU8) 35))) goto LA46;
			binarystmt_576514(p, e, d, ((NimStringDesc*) &TMP3713));
		}
		goto LA40;
		LA46: ;
		{
			binarystmt_576514(p, e, d, ((NimStringDesc*) &TMP3714));
		}
		LA40: ;
	}
	break;
	case ((NU16) 146):
	{
		genstrconcat_581115(p, e, d);
	}
	break;
	case ((NU16) 155):
	{
		binarystmt_576514(p, e, d, ((NimStringDesc*) &TMP3719));
	}
	break;
	case ((NU16) 156):
	{
		genstrappend_581309(p, e, d);
	}
	break;
	case ((NU16) 157):
	{
		genseqelemappend_581589(p, e, d);
	}
	break;
	case ((NU16) 136):
	{
		genstrequals_584804(p, e, d);
	}
	break;
	case ((NU16) 137):
	{
		binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3726));
	}
	break;
	case ((NU16) 138):
	{
		binaryexpr_576668(p, e, d, ((NimStringDesc*) &TMP3727));
	}
	break;
	case ((NU16) 168):
	{
		genisnil_578853(p, e, d);
	}
	break;
	case ((NU16) 128):
	{
		gendollar_582917(p, e, d, ((NimStringDesc*) &TMP3730));
	}
	break;
	case ((NU16) 129):
	{
		gendollar_582917(p, e, d, ((NimStringDesc*) &TMP3731));
	}
	break;
	case ((NU16) 127):
	{
		gendollar_582917(p, e, d, ((NimStringDesc*) &TMP3732));
	}
	break;
	case ((NU16) 126):
	{
		gendollar_582917(p, e, d, ((NimStringDesc*) &TMP3733));
	}
	break;
	case ((NU16) 130):
	{
		gendollar_582917(p, e, d, ((NimStringDesc*) &TMP3734));
	}
	break;
	case ((NU16) 131):
	{
		gendollar_582917(p, e, d, ((NimStringDesc*) &TMP3735));
	}
	break;
	case ((NU16) 132):
	{
		expr_562305(p, (*e).kindU.S6.Sons->data[1], d);
	}
	break;
	case ((NU16) 133):
	{
		genrepr_582781(p, e, d);
	}
	break;
	case ((NU16) 9):
	{
		genof_582744(p, e, d);
	}
	break;
	case ((NU16) 24):
	{
		gennew_581777(p, e);
	}
	break;
	case ((NU16) 25):
	{
		gennewfinalize_582374(p, e);
	}
	break;
	case ((NU16) 26):
	{
		gennewseq_581855(p, e);
	}
	break;
	case ((NU16) 6):
	{
		ttype226852* t;
		TY178515 LOC70;
		trope178009* LOC71;
		t = skiptypes_231245((*(*e).kindU.S6.Sons->data[1]).Typ, 256);
		memset((void*)LOC70, 0, sizeof(LOC70));
		LOC70[0] = gettypedesc_557306((*p).Module, t);
		LOC71 = 0;
		LOC71 = ropef_178107(((NimStringDesc*) &TMP3751), LOC70, 1);
		putintodest_576476(p, d, (*e).Typ, LOC71);
	}
	break;
	case ((NU16) 34):
	{
		gensomecast_584391(p, e, d);
	}
	break;
	case ((NU16) 23):
	{
		genord_584382(p, e, d);
	}
	break;
	case ((NU16) 29):
	case ((NU16) 5):
	case ((NU16) 28):
	case ((NU16) 30):
	case ((NU16) 27):
	{
		genarraylen_582958(p, e, d, op);
	}
	break;
	case ((NU16) 35):
	{
		unarystmt_576571(p, e, d, ((NimStringDesc*) &TMP3765));
	}
	break;
	case ((NU16) 36):
	{
		unarystmt_576571(p, e, d, ((NimStringDesc*) &TMP3766));
	}
	break;
	case ((NU16) 162):
	{
		gensetlengthstr_583278(p, e, d);
	}
	break;
	case ((NU16) 163):
	{
		gensetlengthseq_583074(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_584255(p, e, d, op);
	}
	break;
	case ((NU16) 172):
	case ((NU16) 173):
	case ((NU16) 170):
	case ((NU16) 171):
	case ((NU16) 161):
	case ((NU16) 174):
	{
		tsym226846* opr;
		opr = (*(*e).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		{
			NimStringDesc* LOC85;
			trope178009* LOC86;
			if (!!((((*opr).Loc.Flags &(1<<((((NU8) 3))&7)))!=0))) goto LA83;
			LOC85 = 0;
			LOC85 = ropetostr_178101((*opr).Loc.R);
			LOC86 = 0;
			LOC86 = cgsym_553608((*p).Module, LOC85);
		}
		LA83: ;
		gencall_566235(p, e, d);
	}
	break;
	case ((NU16) 175):
	{
		genreset_581695(p, e);
	}
	break;
	case ((NU16) 10):
	{
		tnode226816* LOC89;
		tnode226816* LOC90;
		LOC89 = 0;
		LOC89 = HEX5BHEX5D_227698(e, 1);
		LOC90 = 0;
		LOC90 = skipconv_274732(LOC89);
		genecho_581011(p, LOC90);
	}
	break;
	case ((NU16) 169):
	{
		genarrtoseq_582230(p, e, d);
	}
	break;
	case ((NU16) 228) ... ((NU16) 260):
	{
		localerror_198955((*e).Info, ((NU16) 212), (*(*(*(*e).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
	}
	break;
	case ((NU16) 12) ... ((NU16) 17):
	{
		localerror_198955((*e).Info, ((NU16) 224), (*(*(*(*e).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
	}
	break;
	case ((NU16) 213):
	{
		tnode226816* n;
		n = wrapprocforspawn_427897((*(*p).Module).Module, e, (*e).Typ, NIM_NIL, NIM_NIL);
		expr_562305(p, n, d);
	}
	break;
	case ((NU16) 166):
	{
		tnode226816* n;
		n = liftparallel_486972((*(*p).Module).Module, e);
		expr_562305(p, n, d);
	}
	break;
	case ((NU16) 214):
	{
		tloc226830 a;
		tloc226830 b;
		tnode226816* x;
		memset((void*)(&a), 0, sizeof(a));
		memset((void*)(&b), 0, sizeof(b));
		{
			tnode226816* LOC99;
			tnode226816* LOC102;
			LOC99 = 0;
			LOC99 = HEX5BHEX5D_227698(e, 1);
			if (!((*LOC99).Kind == ((NU8) 63) || (*LOC99).Kind == ((NU8) 64))) goto LA100;
			LOC102 = 0;
			LOC102 = HEX5BHEX5D_227698(e, 1);
			x = HEX5BHEX5D_227698(LOC102, 0);
		}
		goto LA97;
		LA100: ;
		{
			x = HEX5BHEX5D_227698(e, 1);
		}
		LA97: ;
		initlocexpr_562352(p, x, (&a));
		initlocexpr_562352(p, (*e).kindU.S6.Sons->data[2], (&b));
		gendeepcopy_576337(p, a, b);
	}
	break;
	default:
	{
		NimStringDesc* LOC105;
		LOC105 = 0;
		LOC105 = rawNewString(reprEnum(op, (&NTI226532))->Sup.len + 14);
appendString(LOC105, ((NimStringDesc*) &TMP3896));
appendString(LOC105, reprEnum(op, (&NTI226532)));
		internalerror_198987((*e).Info, LOC105);
	}
	break;
	}
}

N_NIMCALL(trope178009*, gensetnode_575497)(tcproc550031* p, tnode226816* n) {
	trope178009* result;
	tbitset284012* cs;
	NI size;
	NI64 LOC1;
	result = 0;
	cs = 0;
	LOC1 = 0;
	LOC1 = getsize_264199((*n).Typ);
	size = ((NI) (LOC1));
	tobitset_285004(n, (&cs));
	{
		NI id;
		trope178009* LOC6;
		if (!(8 < size)) goto LA4;
		id = nodetabletestorset_289121((&(*(*p).Module).Datacache), n, gbackendid_225013);
		LOC6 = 0;
		LOC6 = torope_178082(((NI64) (id)));
		result = con_178038(((NimStringDesc*) &TMP3518), LOC6);
		{
			TY555018 LOC11;
			if (!(id == gbackendid_225013)) goto LA9;
			gbackendid_225013 += 1;
			memset((void*)LOC11, 0, sizeof(LOC11));
			LOC11[0] = gettypedesc_557306((*p).Module, (*n).Typ);
			LOC11[1] = result;
			LOC11[2] = genrawsetdata_575444(cs, size);
			appf_178115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3897), LOC11, 3);
		}
		LA9: ;
	}
	goto LA2;
	LA4: ;
	{
		result = genrawsetdata_575444(cs, size);
	}
	LA2: ;
	return result;
}

N_NIMCALL(void, gensetconstr_585832)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 a;
	tloc226830 b;
	tloc226830 idx;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	memset((void*)(&idx), 0, sizeof(idx));
	{
		trope178009* LOC5;
		if (!(((*e).Flags &(1<<((((NU8) 4))&15)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = gensetnode_575497(p, e);
		putintodest_576476(p, d, (*e).Typ, LOC5);
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!((*d).K == ((NU8) 0))) goto LA9;
			gettemp_559246(p, (*e).Typ, d, NIM_FALSE);
		}
		LA9: ;
		{
			NI64 LOC13;
			TY178515 LOC16;
			LOC13 = 0;
			LOC13 = getsize_264199((*e).Typ);
			if (!(IL64(8) < LOC13)) goto LA14;
			usestringh_553459((*p).Module);
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_560637((*d));
			linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3898), LOC16, 1);
			{
				NI i_585880;
				NI HEX3Atmp_586113;
				NI LOC18;
				NI res_586116;
				i_585880 = 0;
				HEX3Atmp_586113 = 0;
				LOC18 = 0;
				LOC18 = sonslen_227249(e);
				HEX3Atmp_586113 = (NI32)(LOC18 - 1);
				res_586116 = 0;
				{
					while (1) {
						if (!(res_586116 <= HEX3Atmp_586113)) goto LA20;
						i_585880 = res_586116;
						{
							ttype226852* LOC25;
							TY557045 LOC26;
							if (!((*(*e).kindU.S6.Sons->data[i_585880]).Kind == ((NU8) 44))) goto LA23;
							LOC25 = 0;
							LOC25 = getsystype_283030(((NU8) 31));
							gettemp_559246(p, LOC25, (&idx), NIM_FALSE);
							initlocexpr_562352(p, (*(*e).kindU.S6.Sons->data[i_585880]).kindU.S6.Sons->data[0], (&a));
							initlocexpr_562352(p, (*(*e).kindU.S6.Sons->data[i_585880]).kindU.S6.Sons->data[1], (&b));
							memset((void*)LOC26, 0, sizeof(LOC26));
							LOC26[0] = rdloc_560637(idx);
							LOC26[1] = rdloc_560637((*d));
							LOC26[2] = rdsetelemloc_583353(a, (*e).Typ);
							LOC26[3] = rdsetelemloc_583353(b, (*e).Typ);
							linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3899), LOC26, 4);
						}
						goto LA21;
						LA23: ;
						{
							TY589896 LOC28;
							initlocexpr_562352(p, (*e).kindU.S6.Sons->data[i_585880], (&a));
							memset((void*)LOC28, 0, sizeof(LOC28));
							LOC28[0] = rdloc_560637((*d));
							LOC28[1] = rdsetelemloc_583353(a, (*e).Typ);
							linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3795), LOC28, 2);
						}
						LA21: ;
						res_586116 += 1;
					} LA20: ;
				}
			}
		}
		goto LA11;
		LA14: ;
		{
			NimStringDesc* ts;
			NimStringDesc* LOC30;
			NI64 LOC31;
			NimStringDesc* LOC32;
			TY178515 LOC33;
			LOC30 = 0;
			LOC31 = 0;
			LOC31 = getsize_264199((*e).Typ);
			LOC32 = 0;
			LOC32 = nimInt64ToStr((NI64)(LOC31 * IL64(8)));
			LOC30 = rawNewString(LOC32->Sup.len + 2);
appendString(LOC30, ((NimStringDesc*) &TMP3383));
appendString(LOC30, LOC32);
			ts = LOC30;
			memset((void*)LOC33, 0, sizeof(LOC33));
			LOC33[0] = rdloc_560637((*d));
			linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3494), LOC33, 1);
			{
				NI i_586003;
				NI HEX3Atmp_586119;
				NI LOC35;
				NI res_586122;
				i_586003 = 0;
				HEX3Atmp_586119 = 0;
				LOC35 = 0;
				LOC35 = sonslen_227249(e);
				HEX3Atmp_586119 = (NI32)(LOC35 - 1);
				res_586122 = 0;
				{
					while (1) {
						if (!(res_586122 <= HEX3Atmp_586119)) goto LA37;
						i_586003 = res_586122;
						{
							ttype226852* LOC42;
							NimStringDesc* LOC43;
							TY557045 LOC44;
							if (!((*(*e).kindU.S6.Sons->data[i_586003]).Kind == ((NU8) 44))) goto LA40;
							LOC42 = 0;
							LOC42 = getsystype_283030(((NU8) 31));
							gettemp_559246(p, LOC42, (&idx), NIM_FALSE);
							initlocexpr_562352(p, (*(*e).kindU.S6.Sons->data[i_586003]).kindU.S6.Sons->data[0], (&a));
							initlocexpr_562352(p, (*(*e).kindU.S6.Sons->data[i_586003]).kindU.S6.Sons->data[1], (&b));
							LOC43 = 0;
							LOC43 = rawNewString(ts->Sup.len + ts->Sup.len + 66);
appendString(LOC43, ((NimStringDesc*) &TMP3900));
appendString(LOC43, ts);
appendString(LOC43, ((NimStringDesc*) &TMP3901));
appendString(LOC43, ts);
appendString(LOC43, ((NimStringDesc*) &TMP3776));
							memset((void*)LOC44, 0, sizeof(LOC44));
							LOC44[0] = rdloc_560637(idx);
							LOC44[1] = rdloc_560637((*d));
							LOC44[2] = rdsetelemloc_583353(a, (*e).Typ);
							LOC44[3] = rdsetelemloc_583353(b, (*e).Typ);
							linef_554122(p, ((NU8) 2), LOC43, LOC44, 4);
						}
						goto LA38;
						LA40: ;
						{
							NimStringDesc* LOC46;
							TY589896 LOC47;
							initlocexpr_562352(p, (*e).kindU.S6.Sons->data[i_586003], (&a));
							LOC46 = 0;
							LOC46 = rawNewString(ts->Sup.len + ts->Sup.len + 34);
appendString(LOC46, ((NimStringDesc*) &TMP3902));
appendString(LOC46, ts);
appendString(LOC46, ((NimStringDesc*) &TMP3903));
appendString(LOC46, ts);
appendString(LOC46, ((NimStringDesc*) &TMP3776));
							memset((void*)LOC47, 0, sizeof(LOC47));
							LOC47[0] = rdloc_560637((*d));
							LOC47[1] = rdsetelemloc_583353(a, (*e).Typ);
							linef_554122(p, ((NU8) 2), LOC46, LOC47, 2);
						}
						LA38: ;
						res_586122 += 1;
					} LA37: ;
				}
			}
		}
		LA11: ;
	}
	LA1: ;
}

N_NIMCALL(void, exprcomplexconst_587230)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	ttype226852* t;
	trope178009* LOC1;
	NI id;
	trope178009* tmp;
	trope178009* LOC2;
	t = getuniquetype_549401((*n).Typ);
	LOC1 = 0;
	LOC1 = gettypedesc_557306((*p).Module, t);
	id = nodetabletestorset_289121((&(*(*p).Module).Datacache), n, gbackendid_225013);
	LOC2 = 0;
	LOC2 = torope_178082(((NI64) (id)));
	tmp = con_178038(((NimStringDesc*) &TMP3518), LOC2);
	{
		TY555018 LOC7;
		if (!(id == gbackendid_225013)) goto LA5;
		gbackendid_225013 += 1;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_557306((*p).Module, t);
		LOC7[1] = tmp;
		LOC7[2] = genconstexpr_585775(p, n);
		appf_178115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3589), LOC7, 3);
	}
	LA5: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA10;
		fillloc_553376(d, ((NU8) 9), t, tmp, ((NU8) 2));
	}
	goto LA8;
	LA10: ;
	{
		putdataintodest_576438(p, d, t, tmp);
	}
	LA8: ;
}

N_NIMCALL(NIM_BOOL, handleconstexpr_585779)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	NIM_BOOL result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NI LOC8;
		ttype226852* t;
		trope178009* LOC12;
		NI id;
		trope178009* LOC13;
		trope178009* 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_227364(n);
		LOC4 = (0 < LOC8);
		LA7: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA9;
		LOC3 = isdeepconstexpr_262958(n);
		LA9: ;
		if (!LOC3) goto LA10;
		t = getuniquetype_549401((*n).Typ);
		LOC12 = 0;
		LOC12 = gettypedesc_557306((*p).Module, t);
		id = nodetabletestorset_289121((&(*(*p).Module).Datacache), n, gbackendid_225013);
		LOC13 = 0;
		LOC13 = torope_178082(((NI64) (id)));
		LOC14 = 0;
		LOC14 = con_178038(((NimStringDesc*) &TMP3518), LOC13);
		fillloc_553376(d, ((NU8) 9), t, LOC14, ((NU8) 2));
		{
			TY555018 LOC19;
			if (!(id == gbackendid_225013)) goto LA17;
			gbackendid_225013 += 1;
			memset((void*)LOC19, 0, sizeof(LOC19));
			LOC19[0] = gettypedesc_557306((*p).Module, t);
			LOC19[1] = (*d).R;
			LOC19[2] = genconstexpr_585775(p, n);
			appf_178115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3589), LOC19, 3);
		}
		LA17: ;
		result = NIM_TRUE;
	}
	goto LA1;
	LA10: ;
	{
		result = NIM_FALSE;
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genarrayconstr_586663)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	tloc226830 arr;
	memset((void*)(&arr), 0, sizeof(arr));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = handleconstexpr_585779(p, n, d);
		if (!!(LOC3)) goto LA4;
		{
			if (!((*d).K == ((NU8) 0))) goto LA8;
			gettemp_559246(p, (*n).Typ, d, NIM_FALSE);
		}
		LA8: ;
		{
			NI i_586691;
			NI HEX3Atmp_586714;
			NI LOC11;
			NI res_586717;
			i_586691 = 0;
			HEX3Atmp_586714 = 0;
			LOC11 = 0;
			LOC11 = sonslen_227249(n);
			HEX3Atmp_586714 = (NI32)(LOC11 - 1);
			res_586717 = 0;
			{
				while (1) {
					ttype226852* LOC14;
					ttype226852* LOC15;
					TY589896 LOC16;
					if (!(res_586717 <= HEX3Atmp_586714)) goto LA13;
					i_586691 = res_586717;
					LOC14 = 0;
					LOC14 = skiptypes_231245((*n).Typ, IL64(211106232576256));
					LOC15 = 0;
					LOC15 = elemtype_264656(LOC14);
					initloc_553361((&arr), ((NU8) 7), LOC15, (*d).S);
					memset((void*)LOC16, 0, sizeof(LOC16));
					LOC16[0] = rdloc_560637((*d));
					LOC16[1] = intliteral_562339(((NI64) (i_586691)));
					arr.R = ropef_178107(((NimStringDesc*) &TMP3480), LOC16, 2);
					expr_562305(p, (*n).kindU.S6.Sons->data[i_586691], (&arr));
					res_586717 += 1;
				} LA13: ;
			}
		}
	}
	LA4: ;
}

N_NIMCALL(void, gentupleconstr_586145)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	tloc226830 rec;
	memset((void*)(&rec), 0, sizeof(rec));
	{
		NIM_BOOL LOC3;
		ttype226852* t;
		trope178009* LOC6;
		LOC3 = 0;
		LOC3 = handleconstexpr_585779(p, n, d);
		if (!!(LOC3)) goto LA4;
		t = getuniquetype_549401((*n).Typ);
		LOC6 = 0;
		LOC6 = gettypedesc_557306((*p).Module, t);
		{
			if (!((*d).K == ((NU8) 0))) goto LA9;
			gettemp_559246(p, t, d, NIM_FALSE);
		}
		LA9: ;
		{
			NI i_586174;
			NI HEX3Atmp_586403;
			NI LOC12;
			NI res_586406;
			i_586174 = 0;
			HEX3Atmp_586403 = 0;
			LOC12 = 0;
			LOC12 = sonslen_227249(n);
			HEX3Atmp_586403 = (NI32)(LOC12 - 1);
			res_586406 = 0;
			{
				while (1) {
					tnode226816* it;
					TY589896 LOC19;
					if (!(res_586406 <= HEX3Atmp_586403)) goto LA14;
					i_586174 = res_586406;
					it = (*n).kindU.S6.Sons->data[i_586174];
					{
						if (!((*it).Kind == ((NU8) 34))) goto LA17;
						it = (*it).kindU.S6.Sons->data[1];
					}
					LA17: ;
					initloc_553361((&rec), ((NU8) 7), (*it).Typ, (*d).S);
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = rdloc_560637((*d));
					LOC19[1] = torope_178082(((NI64) (i_586174)));
					rec.R = ropef_178107(((NimStringDesc*) &TMP3534), LOC19, 2);
					expr_562305(p, it, (&rec));
					res_586406 += 1;
				} LA14: ;
			}
		}
	}
	LA4: ;
}

N_NIMCALL(void, genfieldcheck_579626)(tcproc550031* p, tnode226816* e, trope178009* obj, tsym226846* field) {
	tloc226830 test;
	tloc226830 u;
	tloc226830 v;
	memset((void*)(&test), 0, sizeof(test));
	memset((void*)(&u), 0, sizeof(u));
	memset((void*)(&v), 0, sizeof(v));
	{
		NI i_579647;
		NI HEX3Atmp_580263;
		NI LOC2;
		NI res_580266;
		i_579647 = 0;
		HEX3Atmp_580263 = 0;
		LOC2 = 0;
		LOC2 = sonslen_227249(e);
		HEX3Atmp_580263 = (NI32)(LOC2 - 1);
		res_580266 = 1;
		{
			while (1) {
				tnode226816* it;
				tsym226846* op;
				tnode226816* disc;
				TY589896 LOC9;
				NI id;
				tnode226816* LOC10;
				trope178009* strlit;
				if (!(res_580266 <= HEX3Atmp_580263)) goto LA4;
				i_579647 = res_580266;
				it = (*e).kindU.S6.Sons->data[i_579647];
				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_274732((*it).kindU.S6.Sons->data[2]);
				initloc_553361((&test), ((NU8) 0), (*it).Typ, ((NU8) 1));
				initlocexpr_562352(p, (*it).kindU.S6.Sons->data[1], (&u));
				initloc_553361((&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_178107(((NimStringDesc*) &TMP3436), LOC9, 2);
				geninexpraux_579618(p, it, (&u), (&v), (&test));
				LOC10 = 0;
				LOC10 = newstrnode_227118(((NU8) 20), (*(*field).Name).S);
				id = nodetabletestorset_289121((&(*(*p).Module).Datacache), LOC10, gbackendid_225013);
				{
					if (!(id == gbackendid_225013)) goto LA13;
					strlit = getstrlit_574994((*p).Module, (*(*field).Name).S);
				}
				goto LA11;
				LA13: ;
				{
					trope178009* LOC16;
					LOC16 = 0;
					LOC16 = torope_178082(((NI64) (id)));
					strlit = con_178038(((NimStringDesc*) &TMP3518), LOC16);
				}
				LA11: ;
				{
					TY589896 LOC21;
					if (!((*op).Magic == ((NU16) 105))) goto LA19;
					memset((void*)LOC21, 0, sizeof(LOC21));
					LOC21[0] = rdloc_560637(test);
					LOC21[1] = strlit;
					linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3905), LOC21, 2);
				}
				goto LA17;
				LA19: ;
				{
					TY589896 LOC23;
					memset((void*)LOC23, 0, sizeof(LOC23));
					LOC23[0] = rdloc_560637(test);
					LOC23[1] = strlit;
					linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3906), LOC23, 2);
				}
				LA17: ;
				res_580266 += 1;
			} LA4: ;
		}
	}
}

N_NIMCALL(void, genobjconstr_581896)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 tmp;
	ttype226852* t;
	NIM_BOOL isref;
	trope178009* r;
	trope178009* LOC7;
	memset((void*)(&tmp), 0, sizeof(tmp));
	t = skiptypes_231245((*e).Typ, IL64(211106232576256));
	gettemp_559246(p, t, (&tmp), NIM_FALSE);
	isref = ((*t).Kind == ((NU8) 22));
	r = rdloc_560637(tmp);
	{
		TY178515 LOC5;
		if (!isref) goto LA3;
		rawgennew_581723(p, tmp, NIM_NIL);
		t = skiptypes_231245((*t).Sons->data[0], IL64(211106232576256));
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = r;
		r = ropef_178107(((NimStringDesc*) &TMP3495), LOC5, 1);
		gcusage_581100(e);
	}
	goto LA1;
	LA3: ;
	{
		constructloc_560924(p, tmp, NIM_FALSE);
	}
	LA1: ;
	LOC7 = 0;
	LOC7 = gettypedesc_557306((*p).Module, t);
	{
		NI i_581941;
		NI HEX3Atmp_582139;
		NI LOC9;
		NI res_582142;
		i_581941 = 0;
		HEX3Atmp_582139 = 0;
		LOC9 = 0;
		LOC9 = len_227364(e);
		HEX3Atmp_582139 = (LOC9 - 1);
		res_582142 = 1;
		{
			while (1) {
				tnode226816* it;
				tloc226830 tmp2;
				tsym226846* field;
				ttype226852* ty;
				if (!(res_582142 <= HEX3Atmp_582139)) goto LA11;
				i_581941 = res_582142;
				it = (*e).kindU.S6.Sons->data[i_581941];
				memset((void*)(&tmp2), 0, sizeof(tmp2));
				tmp2.R = r;
				field = NIM_NIL;
				ty = t;
				{
					while (1) {
						if (!!((ty == NIM_NIL))) goto LA13;
						field = lookupinrecord_236236((*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_170120 == ((NU8) 2));
							if (LOC20) goto LA21;
							LOC20 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
							LA21: ;
							if (!!(LOC20)) goto LA22;
							app_178060(&tmp2.R, ((NimStringDesc*) &TMP3498));
						}
						LA22: ;
						ty = getuniquetype_549401((*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_198987((*e).Info, ((NimStringDesc*) &TMP3904));
				}
				LA28: ;
				{
					NIM_BOOL LOC32;
					NI LOC33;
					LOC32 = 0;
					LOC33 = 0;
					LOC33 = len_227364(it);
					LOC32 = (LOC33 == 3);
					if (!(LOC32)) goto LA34;
					LOC32 = (((*p).Options &(1<<((((NU8) 2))&31)))!=0);
					LA34: ;
					if (!LOC32) goto LA35;
					genfieldcheck_579626(p, (*it).kindU.S6.Sons->data[2], tmp2.R, field);
				}
				LA35: ;
				app_178060(&tmp2.R, ((NimStringDesc*) &TMP3572));
				app_178052(&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_562305(p, (*it).kindU.S6.Sons->data[1], (&tmp2));
				res_582142 += 1;
			} LA11: ;
		}
	}
	{
		if (!((*d).K == ((NU8) 0))) goto LA44;
		genericAssign((void*)(&(*d)), (void*)(&tmp), (&NTI226830));
	}
	goto LA42;
	LA44: ;
	{
		genassignment_562330(p, (*d), tmp, 0);
	}
	LA42: ;
}

N_NIMCALL(void, gencast_584476)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	ttype226852* destt;
	ttype226852* srct;
	destt = skiptypes_231245((*e).Typ, IL64(211106233624832));
	srct = skiptypes_231245((*(*e).kindU.S6.Sons->data[1]).Typ, IL64(211106233624832));
	{
		NIM_BOOL LOC3;
		trope178009* lbl;
		tloc226830 tmp;
		TY178515 LOC7;
		TY555018 LOC8;
		TY178515 LOC9;
		trope178009* LOC10;
		LOC3 = 0;
		LOC3 = ((*destt).Kind >= ((NU8) 36) && (*destt).Kind <= ((NU8) 39));
		if (LOC3) goto LA4;
		LOC3 = ((*srct).Kind >= ((NU8) 36) && (*srct).Kind <= ((NU8) 39));
		LA4: ;
		if (!LOC3) goto LA5;
		(*p).Labels += 1;
		lbl = torope_178082(((NI64) ((*p).Labels)));
		memset((void*)(&tmp), 0, sizeof(tmp));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = lbl;
		tmp.R = ropef_178107(((NimStringDesc*) &TMP3907), LOC7, 1);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = gettypedesc_557306((*p).Module, srct);
		LOC8[1] = gettypedesc_557306((*p).Module, destt);
		LOC8[2] = lbl;
		linefmt_554148(p, ((NU8) 0), ((NimStringDesc*) &TMP3908), LOC8, 3);
		tmp.K = ((NU8) 7);
		tmp.T = srct;
		tmp.S = ((NU8) 1);
		tmp.Flags = 0;
		expr_562305(p, (*e).kindU.S6.Sons->data[1], (&tmp));
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = lbl;
		LOC10 = 0;
		LOC10 = ropef_178107(((NimStringDesc*) &TMP3909), LOC9, 1);
		putintodest_576476(p, d, (*e).Typ, LOC10);
	}
	goto LA1;
	LA5: ;
	{
		gensomecast_584391(p, e, d);
	}
	LA1: ;
}

N_NIMCALL(void, genconv_584707)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = comparetypes_271571((*e).Typ, (*(*e).kindU.S6.Sons->data[1]).Typ, ((NU8) 1), 0);
		if (!LOC3) goto LA4;
		expr_562305(p, (*e).kindU.S6.Sons->data[1], d);
	}
	goto LA1;
	LA4: ;
	{
		gensomecast_584391(p, e, d);
	}
	LA1: ;
}

N_NIMCALL(void, genaddr_579115)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	{
		ttype226852* LOC3;
		tloc226830 a;
		trope178009* LOC6;
		LOC3 = 0;
		LOC3 = skiptypes_231245((*(*e).kindU.S6.Sons->data[0]).Typ, IL64(211106232576256));
		if (!((*LOC3).Kind == ((NU8) 22) || (*LOC3).Kind == ((NU8) 21))) goto LA4;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_562352(p, (*e).kindU.S6.Sons->data[0], (&a));
		LOC6 = 0;
		LOC6 = con_178038(((NimStringDesc*) &TMP3468), a.R);
		putintodest_576476(p, d, (*e).Typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		NU8 LOC8;
		LOC8 = 0;
		LOC8 = maptype_555054((*(*e).kindU.S6.Sons->data[0]).Typ);
		if (!(LOC8 == ((NU8) 17))) goto LA9;
		expr_562305(p, (*e).kindU.S6.Sons->data[0], d);
	}
	goto LA1;
	LA9: ;
	{
		tloc226830 a;
		trope178009* LOC12;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_562352(p, (*e).kindU.S6.Sons->data[0], (&a));
		LOC12 = 0;
		LOC12 = addrloc_560664(a);
		putintodest_576476(p, d, (*e).Typ, LOC12);
	}
	LA1: ;
}

N_NIMCALL(void, genarrayelem_580509)(tcproc550031* p, tnode226816* x, tnode226816* y, tloc226830* d) {
	tloc226830 a;
	tloc226830 b;
	ttype226852* ty;
	ttype226852* LOC1;
	trope178009* first;
	NI64 LOC2;
	ttype226852* LOC56;
	ttype226852* LOC57;
	TY555018 LOC58;
	trope178009* LOC59;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_562352(p, x, (&a));
	initlocexpr_562352(p, y, (&b));
	LOC1 = 0;
	LOC1 = skiptypes_231245(a.T, IL64(211106242013440));
	ty = skiptypes_231245(LOC1, IL64(211106247256320));
	LOC2 = 0;
	LOC2 = firstord_264004(ty);
	first = intliteral_562339(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_262921(y);
			if (!!(LOC11)) goto LA12;
			{
				NI64 LOC16;
				LOC16 = 0;
				LOC16 = firstord_264004(ty);
				if (!(LOC16 == IL64(0))) goto LA17;
				{
					NIM_BOOL LOC21;
					NI64 LOC22;
					NI64 LOC23;
					NI64 LOC25;
					NI64 LOC26;
					TY589896 LOC29;
					NI64 LOC30;
					LOC21 = 0;
					LOC22 = 0;
					LOC22 = firstord_264004(b.T);
					LOC23 = 0;
					LOC23 = firstord_264004(ty);
					LOC21 = (LOC22 < LOC23);
					if (LOC21) goto LA24;
					LOC25 = 0;
					LOC25 = lastord_264010(ty);
					LOC26 = 0;
					LOC26 = lastord_264010(b.T);
					LOC21 = (LOC25 < LOC26);
					LA24: ;
					if (!LOC21) goto LA27;
					memset((void*)LOC29, 0, sizeof(LOC29));
					LOC29[0] = rdcharloc_560698(b);
					LOC30 = 0;
					LOC30 = lastord_264010(ty);
					LOC29[1] = intliteral_562339(LOC30);
					linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3910), LOC29, 2);
				}
				LA27: ;
			}
			goto LA14;
			LA17: ;
			{
				TY555018 LOC32;
				NI64 LOC33;
				memset((void*)LOC32, 0, sizeof(LOC32));
				LOC32[0] = rdcharloc_560698(b);
				LOC32[1] = first;
				LOC33 = 0;
				LOC33 = lastord_264010(ty);
				LOC32[2] = intliteral_562339(LOC33);
				linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3911), LOC32, 3);
			}
			LA14: ;
		}
		goto LA9;
		LA12: ;
		{
			NI64 idx;
			idx = getordvalue_264187(y);
			{
				NIM_BOOL LOC37;
				NI64 LOC38;
				NI64 LOC40;
				LOC37 = 0;
				LOC38 = 0;
				LOC38 = firstord_264004(ty);
				LOC37 = (idx < LOC38);
				if (LOC37) goto LA39;
				LOC40 = 0;
				LOC40 = lastord_264010(ty);
				LOC37 = (LOC40 < idx);
				LA39: ;
				if (!LOC37) goto LA41;
				localerror_198955((*x).Info, ((NU16) 82), ((NimStringDesc*) &TMP3812));
			}
			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_231245(ty, IL64(211106240964864));
	LOC57 = 0;
	LOC57 = elemtype_264656(LOC56);
	memset((void*)LOC58, 0, sizeof(LOC58));
	LOC58[0] = rdloc_560637(a);
	LOC58[1] = rdcharloc_560698(b);
	LOC58[2] = first;
	LOC59 = 0;
	LOC59 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3912), LOC58, 3);
	putintodest_576476(p, d, LOC57, LOC59);
}

N_NIMCALL(void, genopenarrayelem_580643)(tcproc550031* p, tnode226816* x, tnode226816* y, tloc226830* d) {
	tloc226830 a;
	tloc226830 b;
	ttype226852* LOC10;
	ttype226852* LOC11;
	TY589896 LOC12;
	trope178009* LOC13;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_562352(p, x, (&a));
	initlocexpr_562352(p, y, (&b));
	{
		TY589896 LOC5;
		if (!(((*p).Options &(1<<((((NU8) 4))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_560637(b);
		LOC5[1] = rdloc_560637(a);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3913), LOC5, 2);
	}
	LA3: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA8;
		(*d).S = a.S;
	}
	LA8: ;
	LOC10 = 0;
	LOC10 = skiptypes_231245(a.T, IL64(211106240964864));
	LOC11 = 0;
	LOC11 = elemtype_264656(LOC10);
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = rdloc_560637(a);
	LOC12[1] = rdcharloc_560698(b);
	LOC13 = 0;
	LOC13 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3480), LOC12, 2);
	putintodest_576476(p, d, LOC11, LOC13);
}

N_NIMCALL(void, genseqelem_580689)(tcproc550031* p, tnode226816* x, tnode226816* y, tloc226830* d) {
	tloc226830 a;
	tloc226830 b;
	ttype226852* ty;
	ttype226852* LOC27;
	ttype226852* LOC28;
	TY589896 LOC29;
	trope178009* LOC30;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_562352(p, x, (&a));
	initlocexpr_562352(p, y, (&b));
	ty = skiptypes_231245(a.T, IL64(211106242013440));
	{
		ttype226852* LOC5;
		if (!((*ty).Kind == ((NU8) 22) || (*ty).Kind == ((NU8) 21))) goto LA3;
		LOC5 = 0;
		LOC5 = lastson_227267(ty);
		ty = skiptypes_231245(LOC5, IL64(211106242013440));
	}
	LA3: ;
	{
		if (!(((*p).Options &(1<<((((NU8) 4))&31)))!=0)) goto LA8;
		{
			TY555018 LOC14;
			if (!((*ty).Kind == ((NU8) 28))) goto LA12;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = rdloc_560637(b);
			LOC14[1] = rdloc_560637(a);
			LOC14[2] = lenfield_562364(p);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3914), LOC14, 3);
		}
		goto LA10;
		LA12: ;
		{
			TY555018 LOC16;
			memset((void*)LOC16, 0, sizeof(LOC16));
			LOC16[0] = rdloc_560637(b);
			LOC16[1] = rdloc_560637(a);
			LOC16[2] = lenfield_562364(p);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3915), LOC16, 3);
		}
		LA10: ;
	}
	LA8: ;
	{
		if (!((*d).K == ((NU8) 0))) goto LA19;
		(*d).S = ((NU8) 2);
	}
	LA19: ;
	unsureAsgnRef((void**) (&(*d).Heaproot), a.R);
	{
		ttype226852* LOC23;
		TY178515 LOC26;
		LOC23 = 0;
		LOC23 = skiptypes_231245(a.T, IL64(211106240964864));
		if (!((*LOC23).Kind == ((NU8) 22) || (*LOC23).Kind == ((NU8) 21))) goto LA24;
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = a.R;
		a.R = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3495), LOC26, 1);
	}
	LA24: ;
	LOC27 = 0;
	LOC27 = skiptypes_231245(a.T, IL64(211106240964864));
	LOC28 = 0;
	LOC28 = elemtype_264656(LOC27);
	memset((void*)LOC29, 0, sizeof(LOC29));
	LOC29[0] = rdloc_560637(a);
	LOC29[1] = rdcharloc_560698(b);
	LOC30 = 0;
	LOC30 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3536), LOC29, 2);
	putintodest_576476(p, d, LOC28, LOC30);
}

N_NIMCALL(void, gencstringelem_580613)(tcproc550031* p, tnode226816* x, tnode226816* y, tloc226830* d) {
	tloc226830 a;
	tloc226830 b;
	ttype226852* ty;
	ttype226852* LOC5;
	ttype226852* LOC6;
	TY589896 LOC7;
	trope178009* LOC8;
	memset((void*)(&a), 0, sizeof(a));
	memset((void*)(&b), 0, sizeof(b));
	initlocexpr_562352(p, x, (&a));
	initlocexpr_562352(p, y, (&b));
	ty = skiptypes_231245(a.T, IL64(211106242013440));
	{
		if (!((*d).K == ((NU8) 0))) goto LA3;
		(*d).S = a.S;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = skiptypes_231245(ty, IL64(211106240964864));
	LOC6 = 0;
	LOC6 = elemtype_264656(LOC5);
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0] = rdloc_560637(a);
	LOC7[1] = rdcharloc_560698(b);
	LOC8 = 0;
	LOC8 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3480), LOC7, 2);
	putintodest_576476(p, d, LOC6, LOC8);
}

N_NIMCALL(void, gentupleelem_579322)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 a;
	NI i;
	trope178009* LOC14;
	ttype226852* ty;
	trope178009* r;
	TY178515 LOC17;
	memset((void*)(&a), 0, sizeof(a));
	i = 0;
	initlocexpr_562352(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_557306((*p).Module, a.T);
	ty = a.T;
	r = rdloc_560637(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_198987((*e).Info, ((NimStringDesc*) &TMP3916));
	}
	break;
	}
	memset((void*)LOC17, 0, sizeof(LOC17));
	LOC17[0] = torope_178082(((NI64) (i)));
	appf_178115(&r, ((NimStringDesc*) &TMP3917), LOC17, 1);
	putintodest_576476(p, d, (*ty).Sons->data[i], r);
}

N_NIMCALL(void, genbracketexpr_580781)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	ttype226852* ty;
	ty = skiptypes_231245((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106242013440));
	{
		ttype226852* LOC5;
		if (!((*ty).Kind == ((NU8) 22) || (*ty).Kind == ((NU8) 21))) goto LA3;
		LOC5 = 0;
		LOC5 = lastson_227267(ty);
		ty = skiptypes_231245(LOC5, IL64(211106242013440));
	}
	LA3: ;
	switch ((*ty).Kind) {
	case ((NU8) 16):
	case ((NU8) 4):
	{
		genarrayelem_580509(p, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1], d);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		genopenarrayelem_580643(p, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1], d);
	}
	break;
	case ((NU8) 24):
	case ((NU8) 28):
	{
		genseqelem_580689(p, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1], d);
	}
	break;
	case ((NU8) 29):
	{
		gencstringelem_580613(p, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1], d);
	}
	break;
	case ((NU8) 18):
	{
		gentupleelem_579322(p, n, d);
	}
	break;
	default:
	{
		NimStringDesc* LOC12;
		LOC12 = 0;
		LOC12 = rawNewString(reprEnum((*ty).Kind, (&NTI226258))->Sup.len + 21);
appendString(LOC12, ((NimStringDesc*) &TMP3918));
appendString(LOC12, reprEnum((*ty).Kind, (&NTI226258)));
appendChar(LOC12, 41);
		internalerror_198987((*n).Info, LOC12);
	}
	break;
	}
}

N_NIMCALL(void, genderef_566881)(tcproc550031* p, tnode226816* e, tloc226830* d, NIM_BOOL enforcederef) {
	NU8 mt;
	mt = maptype_555054((*(*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_562305(p, (*e).kindU.S6.Sons->data[0], d);
	}
	goto LA1;
	LA5: ;
	{
		tloc226830 a;
		ttype226852* LOC8;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_562352(p, (*e).kindU.S6.Sons->data[0], (&a));
		LOC8 = 0;
		LOC8 = skiptypes_231245(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, (&NTI226258))->Sup.len + 9);
appendString(LOC13, ((NimStringDesc*) &TMP3919));
appendString(LOC13, reprEnum((*a.T).Kind, (&NTI226258)));
			internalerror_198987((*e).Info, LOC13);
		}
		break;
		}
		{
			NIM_BOOL LOC16;
			trope178009* LOC20;
			LOC16 = 0;
			LOC16 = enforcederef;
			if (!(LOC16)) goto LA17;
			LOC16 = (mt == ((NU8) 18));
			LA17: ;
			if (!LOC16) goto LA18;
			LOC20 = 0;
			LOC20 = rdloc_560637(a);
			putintodest_576476(p, d, (*a.T).Sons->data[0], LOC20);
		}
		goto LA14;
		LA18: ;
		{
			TY178515 LOC22;
			trope178009* LOC23;
			memset((void*)LOC22, 0, sizeof(LOC22));
			LOC22[0] = rdloc_560637(a);
			LOC23 = 0;
			LOC23 = ropef_178107(((NimStringDesc*) &TMP3495), LOC22, 1);
			putintodest_576476(p, d, (*a.T).Sons->data[0], LOC23);
		}
		LA14: ;
	}
	LA1: ;
}

N_NIMCALL(ttype226852*, genrecordfieldaux_579231)(tcproc550031* p, tnode226816* e, tloc226830* d, tloc226830* a) {
	ttype226852* result;
	trope178009* LOC18;
	result = 0;
	initlocexpr_562352(p, (*e).kindU.S6.Sons->data[0], a);
	{
		if (!!(((*(*e).kindU.S6.Sons->data[1]).Kind == ((NU8) 3)))) goto LA3;
		internalerror_198987((*e).Info, ((NimStringDesc*) &TMP3920));
	}
	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_557306((*p).Module, (*a).T);
	result = (*a).T;
	return result;
}

N_NIMCALL(void, genrecordfield_579442)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	tloc226830 a;
	ttype226852* ty;
	trope178009* r;
	tsym226846* f;
	memset((void*)(&a), 0, sizeof(a));
	ty = genrecordfieldaux_579231(p, e, d, (&a));
	r = rdloc_560637(a);
	f = (*(*e).kindU.S6.Sons->data[1]).kindU.S4.Sym;
	{
		TY178515 LOC5;
		if (!((*ty).Kind == ((NU8) 18))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_178082(((NI64) ((*f).Position)));
		appf_178115(&r, ((NimStringDesc*) &TMP3917), LOC5, 1);
		putintodest_576476(p, d, (*f).Typ, r);
	}
	goto LA1;
	LA3: ;
	{
		tsym226846* field;
		TY178515 LOC31;
		field = NIM_NIL;
		{
			while (1) {
				if (!!((ty == NIM_NIL))) goto LA8;
				{
					if (!!(((*ty).Kind == ((NU8) 18) || (*ty).Kind == ((NU8) 17)))) goto LA11;
					internalerror_198987((*e).Info, ((NimStringDesc*) &TMP3921));
				}
				LA11: ;
				field = lookupinrecord_236236((*ty).N, (*f).Name);
				{
					if (!!((field == NIM_NIL))) goto LA15;
					goto LA7;
				}
				LA15: ;
				{
					NIM_BOOL LOC19;
					LOC19 = 0;
					LOC19 = (gcmd_170120 == ((NU8) 2));
					if (LOC19) goto LA20;
					LOC19 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
					LA20: ;
					if (!!(LOC19)) goto LA21;
					app_178060(&r, ((NimStringDesc*) &TMP3498));
				}
				LA21: ;
				ty = getuniquetype_549401((*ty).Sons->data[0]);
			} LA8: ;
		} LA7: ;
		{
			if (!(field == NIM_NIL)) goto LA25;
			internalerror_198987((*e).Info, ((NimStringDesc*) &TMP3922));
		}
		LA25: ;
		{
			if (!((*field).Loc.R == NIM_NIL)) goto LA29;
			internalerror_198987((*e).Info, ((NimStringDesc*) &TMP3923));
		}
		LA29: ;
		memset((void*)LOC31, 0, sizeof(LOC31));
		LOC31[0] = (*field).Loc.R;
		appf_178115(&r, ((NimStringDesc*) &TMP3924), LOC31, 1);
		putintodest_576476(p, d, (*field).Typ, r);
	}
	LA1: ;
}

N_NIMCALL(void, gencheckedrecordfield_580280)(tcproc550031* p, tnode226816* e, tloc226830* d) {
	{
		tloc226830 a;
		tsym226846* f;
		tsym226846* field;
		ttype226852* ty;
		trope178009* r;
		TY178515 LOC25;
		trope178009* 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_579231(p, (*e).kindU.S6.Sons->data[0], d, (&a));
		r = rdloc_560637(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_236236((*ty).N, (*f).Name);
				{
					if (!!((field == NIM_NIL))) goto LA9;
					goto LA5;
				}
				LA9: ;
				{
					NIM_BOOL LOC13;
					LOC13 = 0;
					LOC13 = (gcmd_170120 == ((NU8) 2));
					if (LOC13) goto LA14;
					LOC13 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
					LA14: ;
					if (!!(LOC13)) goto LA15;
					app_178060(&r, ((NimStringDesc*) &TMP3498));
				}
				LA15: ;
				ty = getuniquetype_549401((*ty).Sons->data[0]);
			} LA6: ;
		} LA5: ;
		{
			if (!(field == NIM_NIL)) goto LA19;
			internalerror_198987((*e).Info, ((NimStringDesc*) &TMP3925));
		}
		LA19: ;
		{
			if (!((*field).Loc.R == NIM_NIL)) goto LA23;
			internalerror_198987((*e).Info, ((NimStringDesc*) &TMP3925));
		}
		LA23: ;
		genfieldcheck_579626(p, e, r, field);
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = (*field).Loc.R;
		LOC26 = 0;
		LOC26 = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3924), LOC25, 1);
		app_178052(&r, LOC26);
		putintodest_576476(p, d, (*field).Typ, r);
	}
	goto LA1;
	LA3: ;
	{
		genrecordfield_579442(p, (*e).kindU.S6.Sons->data[0], d);
	}
	LA1: ;
}

N_NIMCALL(NI, startblock_566985)(tcproc550031* p, NimStringDesc* start, trope178009** args, NI argsLen0) {
	NI result;
	result = 0;
	linecg_554135(p, ((NU8) 2), start, args, argsLen0);
	(*p).Labels += 1;
	result = (*p).Blocks->Sup.len;
	(*p).Blocks = (TY550102*) setLengthSeq(&((*p).Blocks)->Sup, sizeof(tblock550029), (NI32)(result + 1));
	(*p).Blocks->data[result].Id = ((NI) ((*p).Labels));
	(*p).Blocks->data[result].Nestedtrystmts = ((NI16) ((*p).Nestedtrystmts->Sup.len));
	(*p).Blocks->data[result].Nestedexceptstmts = ((NI16) ((*p).Inexceptblock));
	return result;
}

N_NIMCALL(trope178009*, blockbody_567053)(tblock550029* b) {
	trope178009* result;
	result = 0;
	result = (*b).Sections[(((NU8) 0))- 0];
	{
		TY178515 LOC5;
		if (!(((NI16) 0) < (*b).Framelen)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_178082(((NI64) ((*b).Framelen)));
		appf_178115(&result, ((NimStringDesc*) &TMP3928), LOC5, 1);
	}
	LA3: ;
	app_178052(&result, (*b).Sections[(((NU8) 1))- 0]);
	app_178052(&result, (*b).Sections[(((NU8) 2))- 0]);
	return result;
}

N_NIMCALL(void, endblock_567069)(tcproc550031* p, trope178009* blockend) {
	NI topblock;
	trope178009* LOC1;
	topblock = (NI32)((*p).Blocks->Sup.len - 1);
	LOC1 = 0;
	LOC1 = blockbody_567053((&(*p).Blocks->data[topblock]));
	app_178052(&(*p).Blocks->data[(NI32)(topblock - 1)].Sections[(((NU8) 2))- 0], LOC1);
	(*p).Blocks = (TY550102*) setLengthSeq(&((*p).Blocks)->Sup, sizeof(tblock550029), topblock);
	line_554100(p, ((NU8) 2), blockend);
}

N_NIMCALL(void, endblock_567106)(tcproc550031* p) {
	NI topblock;
	trope178009* blockend;
	NI16 framelen;
	topblock = (NI32)((*p).Blocks->Sup.len - 1);
	{
		TY178515 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_553615(NIM_NIL, ((NimStringDesc*) &TMP3926), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY554703 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		blockend = ropef_178107(((NimStringDesc*) &TMP3505), LOC7, 0);
	}
	LA1: ;
	framelen = (*p).Blocks->data[topblock].Framelen;
	{
		TY178515 LOC12;
		if (!(((NI16) 0) < framelen)) goto LA10;
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = torope_178082(((NI64) (framelen)));
		appf_178115(&blockend, ((NimStringDesc*) &TMP3927), LOC12, 1);
	}
	LA10: ;
	endblock_567069(p, blockend);
}

N_NIMCALL(void, genblock_569796)(tcproc550031* p, tnode226816* t, tloc226830* d) {
	NI oldbreakidx_569803;
	TY554703 LOC1;
	oldbreakidx_569803 = (*p).Breakidx;
	memset((void*)LOC1, 0, sizeof(LOC1));
	(*p).Breakidx = startblock_566985(p, ((NimStringDesc*) &TMP3590), LOC1, 0);
	{
		tsym226846* 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 = (NI32)((*p).Breakidx + 1);
	}
	LA4: ;
	expr_562305(p, (*t).kindU.S6.Sons->data[1], d);
	endblock_567106(p);
	(*p).Breakidx = oldbreakidx_569803;
}

N_NIMCALL(void, genstmtlistexpr_586804)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	NI length;
	length = sonslen_227249(n);
	{
		NI i_586823;
		NI HEX3Atmp_586854;
		NI res_586857;
		i_586823 = 0;
		HEX3Atmp_586854 = 0;
		HEX3Atmp_586854 = (NI32)(length - 2);
		res_586857 = 0;
		{
			while (1) {
				if (!(res_586857 <= HEX3Atmp_586854)) goto LA3;
				i_586823 = res_586857;
				genstmts_562298(p, (*n).kindU.S6.Sons->data[i_586823]);
				res_586857 += 1;
			} LA3: ;
		}
	}
	{
		if (!(0 < length)) goto LA6;
		expr_562305(p, (*n).kindU.S6.Sons->data[(NI32)(length - 1)], d);
	}
	LA6: ;
}

N_NIMCALL(void, lineff_554218)(tcproc550031* p, NU8 s, NimStringDesc* cformat, NimStringDesc* llvmformat, trope178009** args, NI argsLen0) {
	{
		if (!(gcmd_170120 == ((NU8) 5))) goto LA3;
		linef_554122(p, s, llvmformat, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		linef_554122(p, s, cformat, args, argsLen0);
	}
	LA1: ;
}

N_NIMCALL(void, genif_568223)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	tloc226830 a;
	trope178009* lelse;
	trope178009* lend;
	memset((void*)(&a), 0, sizeof(a));
	lelse = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_233990((*n).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_559246(p, (*n).Typ, d, NIM_FALSE);
	}
	LA6: ;
	genlinedir_554435(p, n);
	lend = getlabel_562248(p);
	{
		NI i_568253;
		NI HEX3Atmp_568645;
		NI LOC9;
		NI res_568648;
		i_568253 = 0;
		HEX3Atmp_568645 = 0;
		LOC9 = 0;
		LOC9 = sonslen_227249(n);
		HEX3Atmp_568645 = (NI32)(LOC9 - 1);
		res_568648 = 0;
		{
			while (1) {
				tnode226816* it;
				if (!(res_568648 <= HEX3Atmp_568645)) goto LA11;
				i_568253 = res_568648;
				it = (*n).kindU.S6.Sons->data[i_568253];
				{
					NI LOC14;
					TY554703 LOC17;
					NI LOC18;
					TY555018 LOC19;
					LOC14 = 0;
					LOC14 = len_227364(it);
					if (!(LOC14 == 2)) goto LA15;
					memset((void*)LOC17, 0, sizeof(LOC17));
					LOC18 = 0;
					LOC18 = startblock_566985(p, ((NimStringDesc*) &TMP3590), LOC17, 0);
					initlocexpr_562352(p, (*it).kindU.S6.Sons->data[0], (&a));
					lelse = getlabel_562248(p);
					(*p).Labels += 1;
					memset((void*)LOC19, 0, sizeof(LOC19));
					LOC19[0] = rdloc_560637(a);
					LOC19[1] = lelse;
					LOC19[2] = torope_178082(((NI64) ((*p).Labels)));
					lineff_554218(p, ((NU8) 2), ((NimStringDesc*) &TMP3929), ((NimStringDesc*) &TMP3930), LOC19, 3);
					expr_562305(p, (*it).kindU.S6.Sons->data[1], d);
					endblock_567106(p);
					{
						NI LOC22;
						TY178515 LOC25;
						LOC22 = 0;
						LOC22 = sonslen_227249(n);
						if (!(1 < LOC22)) goto LA23;
						memset((void*)LOC25, 0, sizeof(LOC25));
						LOC25[0] = lend;
						lineff_554218(p, ((NU8) 2), ((NimStringDesc*) &TMP3931), ((NimStringDesc*) &TMP3932), LOC25, 1);
					}
					LA23: ;
					fixlabel_562270(p, lelse);
				}
				goto LA12;
				LA15: ;
				{
					NI LOC27;
					TY554703 LOC30;
					NI LOC31;
					LOC27 = 0;
					LOC27 = len_227364(it);
					if (!(LOC27 == 1)) goto LA28;
					memset((void*)LOC30, 0, sizeof(LOC30));
					LOC31 = 0;
					LOC31 = startblock_566985(p, ((NimStringDesc*) &TMP3590), LOC30, 0);
					expr_562305(p, (*it).kindU.S6.Sons->data[0], d);
					endblock_567106(p);
				}
				goto LA12;
				LA28: ;
				{
					internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3933));
				}
				LA12: ;
				res_568648 += 1;
			} LA11: ;
		}
	}
	{
		NI LOC35;
		LOC35 = 0;
		LOC35 = sonslen_227249(n);
		if (!(1 < LOC35)) goto LA36;
		fixlabel_562270(p, lend);
	}
	LA36: ;
}

N_NIMCALL(void, downconv_587061)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_170120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		expr_562305(p, (*n).kindU.S6.Sons->data[0], d);
	}
	goto LA1;
	LA5: ;
	{
		ttype226852* dest;
		tnode226816* arg;
		ttype226852* src;
		tloc226830 a;
		trope178009* r;
		NIM_BOOL isref;
		ttype226852* LOC10;
		dest = skiptypes_231245((*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_231245((*arg).Typ, IL64(211106247256320));
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_562352(p, arg, (&a));
		r = rdloc_560637(a);
		LOC10 = 0;
		LOC10 = skiptypes_231245((*arg).Typ, IL64(211106232576256));
		isref = ((*LOC10).Kind == ((NU8) 22) || (*LOC10).Kind == ((NU8) 21) || (*LOC10).Kind == ((NU8) 23));
		{
			if (!isref) goto LA13;
			app_178060(&r, ((NimStringDesc*) &TMP3934));
		}
		goto LA11;
		LA13: ;
		{
			app_178060(&r, ((NimStringDesc*) &TMP3498));
		}
		LA11: ;
		{
			NI i_587175;
			NI HEX3Atmp_587207;
			NI LOC17;
			NI res_587210;
			i_587175 = 0;
			HEX3Atmp_587207 = 0;
			LOC17 = 0;
			LOC17 = inheritancediff_271588(dest, src);
			HEX3Atmp_587207 = (LOC17 > 0? (LOC17) : -(LOC17));
			res_587210 = 2;
			{
				while (1) {
					if (!(res_587210 <= HEX3Atmp_587207)) goto LA19;
					i_587175 = res_587210;
					app_178060(&r, ((NimStringDesc*) &TMP3498));
					res_587210 += 1;
				} LA19: ;
			}
		}
		{
			if (!isref) goto LA22;
			{
				NIM_BOOL LOC26;
				ttype226852* LOC28;
				TY589896 LOC31;
				LOC26 = 0;
				LOC26 = ((*d).K == ((NU8) 0));
				if (!(LOC26)) goto LA27;
				LOC28 = 0;
				LOC28 = skiptypes_231245((*n).Typ, IL64(211106232576256));
				LOC26 = ((*LOC28).Kind == ((NU8) 22) || (*LOC28).Kind == ((NU8) 21) || (*LOC28).Kind == ((NU8) 23));
				LA27: ;
				if (!LOC26) goto LA29;
				gettemp_559246(p, (*n).Typ, d, NIM_FALSE);
				memset((void*)LOC31, 0, sizeof(LOC31));
				LOC31[0] = rdloc_560637((*d));
				LOC31[1] = r;
				linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3935), LOC31, 2);
			}
			goto LA24;
			LA29: ;
			{
				r = con_178038(((NimStringDesc*) &TMP3468), r);
				putintodest_576476(p, d, (*n).Typ, r);
			}
			LA24: ;
		}
		goto LA20;
		LA22: ;
		{
			putintodest_576476(p, d, (*n).Typ, r);
		}
		LA20: ;
	}
	LA1: ;
}

N_NIMCALL(void, upconv_586871)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	tloc226830 a;
	ttype226852* dest;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*n).kindU.S6.Sons->data[0], (&a));
	dest = skiptypes_231245((*n).Typ, IL64(211106247256320));
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		trope178009* r;
		trope178009* nilcheck;
		ttype226852* t;
		LOC3 = 0;
		LOC3 = (((*p).Options &(1<<((((NU8) 1))&31)))!=0);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = isobjlackingtypefield_555128(dest);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		r = rdloc_560637(a);
		nilcheck = NIM_NIL;
		t = skiptypes_231245(a.T, IL64(211106232576256));
		{
			while (1) {
				TY178515 LOC14;
				ttype226852* LOC15;
				if (!((*t).Kind == ((NU8) 23) || (*t).Kind == ((NU8) 21) || (*t).Kind == ((NU8) 22))) goto LA9;
				{
					if (!!(((*t).Kind == ((NU8) 23)))) goto LA12;
					nilcheck = r;
				}
				LA12: ;
				memset((void*)LOC14, 0, sizeof(LOC14));
				LOC14[0] = r;
				r = ropef_178107(((NimStringDesc*) &TMP3495), LOC14, 1);
				LOC15 = 0;
				LOC15 = lastson_227267(t);
				t = skiptypes_231245(LOC15, IL64(211106232576256));
			} LA9: ;
		}
		{
			NIM_BOOL LOC18;
			LOC18 = 0;
			LOC18 = (gcmd_170120 == ((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_178060(&r, ((NimStringDesc*) &TMP3498));
					t = skiptypes_231245((*t).Sons->data[0], IL64(211106232576256));
				} LA23: ;
			}
		}
		LA20: ;
		{
			TY555018 LOC30;
			if (!!((nilcheck == NIM_NIL))) goto LA28;
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = nilcheck;
			LOC30[1] = r;
			LOC30[2] = gentypeinfo_557602((*p).Module, dest);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3936), LOC30, 3);
		}
		goto LA26;
		LA28: ;
		{
			TY589896 LOC32;
			memset((void*)LOC32, 0, sizeof(LOC32));
			LOC32[0] = r;
			LOC32[1] = gentypeinfo_557602((*p).Module, dest);
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3937), LOC32, 2);
		}
		LA26: ;
	}
	LA6: ;
	{
		TY589896 LOC37;
		trope178009* LOC38;
		if (!!(((*(*(*n).kindU.S6.Sons->data[0]).Typ).Kind == ((NU8) 17)))) goto LA35;
		memset((void*)LOC37, 0, sizeof(LOC37));
		LOC37[0] = gettypedesc_557306((*p).Module, (*n).Typ);
		LOC37[1] = rdloc_560637(a);
		LOC38 = 0;
		LOC38 = ropef_178107(((NimStringDesc*) &TMP3753), LOC37, 2);
		putintodest_576476(p, d, (*n).Typ, LOC38);
	}
	goto LA33;
	LA35: ;
	{
		TY589896 LOC40;
		trope178009* LOC41;
		memset((void*)LOC40, 0, sizeof(LOC40));
		LOC40[0] = gettypedesc_557306((*p).Module, dest);
		LOC40[1] = addrloc_560664(a);
		LOC41 = 0;
		LOC41 = ropef_178107(((NimStringDesc*) &TMP3752), LOC40, 2);
		putintodest_576476(p, d, (*n).Typ, LOC41);
	}
	LA33: ;
}

N_NIMCALL(void, genrangechck_584573)(tcproc550031* p, tnode226816* n, tloc226830* d, NimStringDesc* magic) {
	tloc226830 a;
	ttype226852* dest;
	memset((void*)(&a), 0, sizeof(a));
	dest = skiptypes_231245((*n).Typ, IL64(211106240964864));
	{
		NIM_BOOL LOC3;
		TY589896 LOC7;
		trope178009* LOC8;
		LOC3 = 0;
		LOC3 = !((((*p).Options &(1<<((((NU8) 3))&31)))!=0));
		if (LOC3) goto LA4;
		LOC3 = ((*dest).Kind >= ((NU8) 40) && (*dest).Kind <= ((NU8) 44));
		LA4: ;
		if (!LOC3) goto LA5;
		initlocexpr_562352(p, (*n).kindU.S6.Sons->data[0], (&a));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_557306((*p).Module, dest);
		LOC7[1] = rdcharloc_560698(a);
		LOC8 = 0;
		LOC8 = ropef_178107(((NimStringDesc*) &TMP3753), LOC7, 2);
		putintodest_576476(p, d, (*n).Typ, LOC8);
	}
	goto LA1;
	LA5: ;
	{
		TY558593 LOC15;
		trope178009* LOC16;
		initlocexpr_562352(p, (*n).kindU.S6.Sons->data[0], (&a));
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = levalue_236487((*n).kindU.S6.Sons->data[2], (*n).kindU.S6.Sons->data[1]);
			if (!LOC12) goto LA13;
			internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3938));
		}
		LA13: ;
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = gettypedesc_557306((*p).Module, dest);
		LOC15[1] = rdcharloc_560698(a);
		LOC15[2] = genliteral_575007(p, (*n).kindU.S6.Sons->data[1], dest);
		LOC15[3] = genliteral_575007(p, (*n).kindU.S6.Sons->data[2], dest);
		LOC15[4] = torope_178076(magic);
		LOC16 = 0;
		LOC16 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3939), LOC15, 5);
		putintodest_576476(p, d, dest, LOC16);
	}
	LA1: ;
}

N_NIMCALL(void, convstrtocstr_584744)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	tloc226830 a;
	ttype226852* LOC1;
	TY178515 LOC2;
	trope178009* LOC3;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*n).kindU.S6.Sons->data[0], (&a));
	LOC1 = 0;
	LOC1 = skiptypes_231245((*n).Typ, IL64(211106240964864));
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = rdloc_560637(a);
	LOC3 = 0;
	LOC3 = ropef_178107(((NimStringDesc*) &TMP3807), LOC2, 1);
	putintodest_576476(p, d, LOC1, LOC3);
}

N_NIMCALL(void, convcstrtostr_584774)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	tloc226830 a;
	ttype226852* LOC1;
	TY178515 LOC2;
	trope178009* LOC3;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*n).kindU.S6.Sons->data[0], (&a));
	LOC1 = 0;
	LOC1 = skiptypes_231245((*n).Typ, IL64(211106240964864));
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = rdloc_560637(a);
	LOC3 = 0;
	LOC3 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP3735), LOC2, 1);
	putintodest_576476(p, d, LOC1, LOC3);
	gcusage_581100(n);
}

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

static N_INLINE(NIM_BOOL, isconstclosure_586420)(tnode226816* 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_233780((*(*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_586501)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	{
		NIM_BOOL LOC3;
		trope178009* tmp;
		trope178009* LOC6;
		TY555018 LOC7;
		LOC3 = 0;
		LOC3 = isconstclosure_586420(n);
		if (!LOC3) goto LA4;
		(*p).Labels += 1;
		LOC6 = 0;
		LOC6 = torope_178082(((NI64) ((*p).Labels)));
		tmp = con_178038(((NimStringDesc*) &TMP3493), LOC6);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = gettypedesc_557306((*p).Module, (*n).Typ);
		LOC7[1] = tmp;
		LOC7[2] = genconstexpr_585775(p, n);
		appf_178115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3589), LOC7, 3);
		putintodest_576476(p, d, (*n).Typ, tmp);
	}
	goto LA1;
	LA4: ;
	{
		tloc226830 tmp;
		tloc226830 a;
		tloc226830 b;
		TY555018 LOC9;
		memset((void*)(&tmp), 0, sizeof(tmp));
		memset((void*)(&a), 0, sizeof(a));
		memset((void*)(&b), 0, sizeof(b));
		initlocexpr_562352(p, (*n).kindU.S6.Sons->data[0], (&a));
		initlocexpr_562352(p, (*n).kindU.S6.Sons->data[1], (&b));
		gettemp_559246(p, (*n).Typ, (&tmp), NIM_FALSE);
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = rdloc_560637(tmp);
		LOC9[1] = rdloc_560637(a);
		LOC9[2] = rdloc_560637(b);
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3943), LOC9, 3);
		putlocintodest_562321(p, d, tmp);
	}
	LA1: ;
}

static N_INLINE(trope178009*, assignlabel_567045)(tblock550029* b) {
	trope178009* result;
	trope178009* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = torope_178082(((NI64) ((*b).Id)));
	unsureAsgnRef((void**) (&(*b).Label), con_178038(((NimStringDesc*) &TMP3616), LOC1));
	result = (*b).Label;
	return result;
}

N_NIMCALL(void, gencomputedgoto_569038)(tcproc550031* p, tnode226816* n) {
	NI casepos;
	NI arraysize;
	NI id;
	trope178009* tmp;
	TY178515 LOC27;
	trope178009* gotoarray;
	TY589896 LOC28;
	TY178515 LOC33;
	NI topblock;
	trope178009* oldbody;
	trope178009* tailb;
	trope178009* taila;
	tnode226816* casestmt;
	tloc226830 a_569269;
	TY589896 LOC41;
	casepos = -1;
	arraysize = 0;
	{
		NI i_569065;
		NI HEX3Atmp_569408;
		NI LOC2;
		NI res_569411;
		i_569065 = 0;
		HEX3Atmp_569408 = 0;
		LOC2 = 0;
		LOC2 = len_227364(n);
		HEX3Atmp_569408 = (LOC2 - 1);
		res_569411 = 0;
		{
			while (1) {
				tnode226816* it;
				if (!(res_569411 <= HEX3Atmp_569408)) goto LA4;
				i_569065 = res_569411;
				it = (*n).kindU.S6.Sons->data[i_569065];
				{
					NI64 asize;
					if (!((*it).Kind == ((NU8) 97))) goto LA7;
					{
						tnode226816* LOC11;
						LOC11 = 0;
						LOC11 = lastson_227261(it);
						if (!!(((*LOC11).Kind == ((NU8) 85)))) goto LA12;
						localerror_198966((*it).Info, ((NimStringDesc*) &TMP3945));
						goto BeforeRet;
					}
					LA12: ;
					casepos = i_569065;
					asize = lengthord_264016((*(*it).kindU.S6.Sons->data[0]).Typ);
					{
						if (!(IL64(10000) < asize)) goto LA16;
						localerror_198966((*it).Info, ((NimStringDesc*) &TMP3946));
						goto BeforeRet;
					}
					LA16: ;
					arraysize = ((NI) (asize));
					{
						NI64 LOC20;
						LOC20 = 0;
						LOC20 = firstord_264004((*(*it).kindU.S6.Sons->data[0]).Typ);
						if (!!((LOC20 == IL64(0)))) goto LA21;
						localerror_198966((*it).Info, ((NimStringDesc*) &TMP3947));
						goto BeforeRet;
					}
					LA21: ;
				}
				LA7: ;
				res_569411 += 1;
			} LA4: ;
		}
	}
	{
		if (!(casepos < 0)) goto LA25;
		localerror_198966((*n).Info, ((NimStringDesc*) &TMP3948));
		goto BeforeRet;
	}
	LA25: ;
	id = (NI32)(((NI) ((*p).Labels)) + 1);
	(*p).Labels += (NI32)(arraysize + 1);
	memset((void*)LOC27, 0, sizeof(LOC27));
	LOC27[0] = torope_178082(((NI64) (id)));
	tmp = ropef_178107(((NimStringDesc*) &TMP3487), LOC27, 1);
	memset((void*)LOC28, 0, sizeof(LOC28));
	LOC28[0] = tmp;
	LOC28[1] = torope_178082(((NI64) (arraysize)));
	gotoarray = ropef_178107(((NimStringDesc*) &TMP3949), LOC28, 2);
	{
		NI i_569165;
		NI HEX3Atmp_569414;
		NI res_569417;
		i_569165 = 0;
		HEX3Atmp_569414 = 0;
		HEX3Atmp_569414 = (NI32)(arraysize - 1);
		res_569417 = 1;
		{
			while (1) {
				TY178515 LOC32;
				if (!(res_569417 <= HEX3Atmp_569414)) goto LA31;
				i_569165 = res_569417;
				memset((void*)LOC32, 0, sizeof(LOC32));
				LOC32[0] = torope_178082(((NI64) ((NI32)(((NI) (id)) + i_569165))));
				appf_178115(&gotoarray, ((NimStringDesc*) &TMP3950), LOC32, 1);
				res_569417 += 1;
			} LA31: ;
		}
	}
	memset((void*)LOC33, 0, sizeof(LOC33));
	LOC33[0] = torope_178082(((NI64) ((NI32)(((NI) (id)) + arraysize))));
	appf_178115(&gotoarray, ((NimStringDesc*) &TMP3951), LOC33, 1);
	line_554100(p, ((NU8) 0), gotoarray);
	topblock = (NI32)((*p).Blocks->Sup.len - 1);
	oldbody = (*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0];
	asgnRefNoCycle((void**) (&(*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0]), NIM_NIL);
	{
		NI j_569210;
		NI HEX3Atmp_569420;
		NI HEX3Atmp_569421;
		NI LOC35;
		NI res_569424;
		j_569210 = 0;
		HEX3Atmp_569420 = 0;
		HEX3Atmp_569421 = 0;
		HEX3Atmp_569420 = (NI32)(casepos + 1);
		LOC35 = 0;
		LOC35 = len_227364(n);
		HEX3Atmp_569421 = (LOC35 - 1);
		res_569424 = HEX3Atmp_569420;
		{
			while (1) {
				if (!(res_569424 <= HEX3Atmp_569421)) goto LA37;
				j_569210 = res_569424;
				genstmts_562298(p, (*n).kindU.S6.Sons->data[j_569210]);
				res_569424 += 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_569236;
		NI HEX3Atmp_569427;
		NI res_569430;
		j_569236 = 0;
		HEX3Atmp_569427 = 0;
		HEX3Atmp_569427 = (NI32)(casepos - 1);
		res_569430 = 0;
		{
			while (1) {
				if (!(res_569430 <= HEX3Atmp_569427)) goto LA40;
				j_569236 = res_569430;
				genstmts_562298(p, (*n).kindU.S6.Sons->data[j_569236]);
				res_569430 += 1;
			} LA40: ;
		}
	}
	taila = (*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0];
	asgnRefNoCycle((void**) (&(*p).Blocks->data[topblock].Sections[(((NU8) 2))- 0]), con_178024(oldbody, taila));
	casestmt = (*n).kindU.S6.Sons->data[casepos];
	memset((void*)(&a_569269), 0, sizeof(a_569269));
	initlocexpr_562352(p, (*casestmt).kindU.S6.Sons->data[0], (&a_569269));
	memset((void*)LOC41, 0, sizeof(LOC41));
	LOC41[0] = tmp;
	LOC41[1] = rdloc_560637(a_569269);
	linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3952), LOC41, 2);
	{
		NI i_569310;
		NI HEX3Atmp_569441;
		NI LOC43;
		NI res_569444;
		i_569310 = 0;
		HEX3Atmp_569441 = 0;
		LOC43 = 0;
		LOC43 = len_227364(casestmt);
		HEX3Atmp_569441 = (LOC43 - 1);
		res_569444 = 1;
		{
			while (1) {
				TY554703 LOC46;
				NI LOC47;
				tnode226816* it;
				tnode226816* LOC57;
				trope178009** LOC58;
				trope178009** LOC59;
				tloc226830 a;
				TY589896 LOC60;
				if (!(res_569444 <= HEX3Atmp_569441)) goto LA45;
				i_569310 = res_569444;
				memset((void*)LOC46, 0, sizeof(LOC46));
				LOC47 = 0;
				LOC47 = startblock_566985(p, ((NimStringDesc*) &TMP3590), LOC46, 0);
				it = (*casestmt).kindU.S6.Sons->data[i_569310];
				{
					NI j_569343;
					NI HEX3Atmp_569435;
					NI LOC49;
					NI res_569438;
					j_569343 = 0;
					HEX3Atmp_569435 = 0;
					LOC49 = 0;
					LOC49 = len_227364(it);
					HEX3Atmp_569435 = (NI32)(LOC49 - 2);
					res_569438 = 0;
					{
						while (1) {
							NI64 val;
							TY178515 LOC56;
							if (!(res_569438 <= HEX3Atmp_569435)) goto LA51;
							j_569343 = res_569438;
							{
								if (!((*(*it).kindU.S6.Sons->data[j_569343]).Kind == ((NU8) 44))) goto LA54;
								localerror_198966((*it).Info, ((NimStringDesc*) &TMP3953));
								goto BeforeRet;
							}
							LA54: ;
							val = getordvalue_264187((*it).kindU.S6.Sons->data[j_569343]);
							memset((void*)LOC56, 0, sizeof(LOC56));
							LOC56[0] = intliteral_562339((NI64)((NI64)(val + ((NI64) (id))) + IL64(1)));
							linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3954), LOC56, 1);
							res_569438 += 1;
						} LA51: ;
					}
				}
				LOC57 = 0;
				LOC57 = lastson_227261(it);
				genstmts_562298(p, LOC57);
				LOC58 = 0;
				LOC58 = s_550183(p, ((NU8) 2));
				app_178052(LOC58, tailb);
				LOC59 = 0;
				LOC59 = s_550183(p, ((NU8) 2));
				app_178052(LOC59, taila);
				memset((void*)(&a), 0, sizeof(a));
				initlocexpr_562352(p, (*casestmt).kindU.S6.Sons->data[0], (&a));
				memset((void*)LOC60, 0, sizeof(LOC60));
				LOC60[0] = tmp;
				LOC60[1] = rdloc_560637(a);
				linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3952), LOC60, 2);
				endblock_567106(p);
				res_569444 += 1;
			} LA45: ;
		}
	}
	BeforeRet: ;
}

N_NIMCALL(void, genwhilestmt_569503)(tcproc550031* p, tnode226816* t) {
	tloc226830 a;
	trope178009* labl;
	NI oldbreakidx_569614;
	TY554703 LOC1;
	tnode226816* loopbody;
	memset((void*)(&a), 0, sizeof(a));
	labl = 0;
	(*p).Withinloop += 1;
	genlinedir_554435(p, t);
	oldbreakidx_569614 = (*p).Breakidx;
	memset((void*)LOC1, 0, sizeof(LOC1));
	(*p).Breakidx = startblock_566985(p, ((NimStringDesc*) &TMP3944), LOC1, 0);
	(*p).Blocks->data[(*p).Breakidx].Isloop = NIM_TRUE;
	initlocexpr_562352(p, (*t).kindU.S6.Sons->data[0], (&a));
	{
		NIM_BOOL LOC4;
		trope178009* label;
		TY589896 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_567045((&(*p).Blocks->data[(*p).Breakidx]));
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_560637(a);
		LOC8[1] = label;
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3929), LOC8, 2);
	}
	LA6: ;
	loopbody = (*t).kindU.S6.Sons->data[1];
	{
		NIM_BOOL LOC11;
		LOC11 = 0;
		LOC11 = stmtscontainpragma_549128(loopbody, ((NU8) 175));
		if (!(LOC11)) goto LA12;
		LOC11 = ((cc_203434[(ccompiler_203461)- 1].Field20 &(1<<((((NU8) 1))&7)))!=0);
		LA12: ;
		if (!LOC11) goto LA13;
		{
			NIM_BOOL LOC17;
			NI LOC18;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = len_227364(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_569038(p, loopbody);
	}
	goto LA9;
	LA13: ;
	{
		genstmts_562298(p, loopbody);
	}
	LA9: ;
	{
		TY554703 LOC27;
		if (!(((*p).Options &(1<<((((NU8) 19))&31)))!=0)) goto LA25;
		memset((void*)LOC27, 0, sizeof(LOC27));
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3955), LOC27, 0);
	}
	LA25: ;
	endblock_567106(p);
	(*p).Breakidx = oldbreakidx_569614;
	(*p).Withinloop -= 1;
}

N_NIMCALL(void, loaddynamiclib_588310)(tcgen550035* m, tlib226834* lib) {
	{
		trope178009* tmp;
		TY178515 LOC5;
		if (!!((*lib).Generated)) goto LA3;
		(*lib).Generated = NIM_TRUE;
		tmp = getglobaltempname_555252();
		asgnRefNoCycle((void**) (&(*lib).Name), tmp);
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = tmp;
		appf_178115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3956), LOC5, 1);
		{
			TY119808* s;
			trope178009* loadlib;
			TY589896 LOC23;
			if (!((*(*lib).Path).Kind >= ((NU8) 20) && (*(*lib).Path).Kind <= ((NU8) 22))) goto LA8;
			s = (TY119808*) newSeq((&NTI119808), 0);
			libcandidates_171409((*(*lib).Path).kindU.S3.Strval, (&s));
			{
				NimStringDesc* LOC14;
				if (!(2 <= gverbosity_170127)) goto LA12;
				LOC14 = 0;
				LOC14 = rawNewString((*(*lib).Path).kindU.S3.Strval->Sup.len + 12);
appendString(LOC14, ((NimStringDesc*) &TMP3957));
appendString(LOC14, (*(*lib).Path).kindU.S3.Strval);
				msgwriteln_198236(LOC14);
			}
			LA12: ;
			loadlib = NIM_NIL;
			{
				NI i_588683;
				NI HEX3Atmp_588771;
				NI res_588774;
				i_588683 = 0;
				HEX3Atmp_588771 = 0;
				HEX3Atmp_588771 = (s->Sup.len-1);
				res_588774 = 0;
				{
					while (1) {
						TY589896 LOC22;
						if (!(res_588774 <= HEX3Atmp_588771)) goto LA17;
						i_588683 = res_588774;
						(*m).Labels += 1;
						{
							if (!(0 < i_588683)) goto LA20;
							app_178060(&loadlib, ((NimStringDesc*) &TMP3958));
						}
						LA20: ;
						memset((void*)LOC22, 0, sizeof(LOC22));
						LOC22[0] = tmp;
						LOC22[1] = getstrlit_574994(m, s->data[i_588683]);
						appcg_554004(m, &loadlib, ((NimStringDesc*) &TMP3959), LOC22, 2);
						res_588774 += 1;
					} LA17: ;
				}
			}
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = loadlib;
			LOC23[1] = getstrlit_574994(m, (*(*lib).Path).kindU.S3.Strval);
			appcg_554004(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP3960), LOC23, 2);
		}
		goto LA6;
		LA8: ;
		{
			tcproc550031* p;
			tloc226830 dest;
			trope178009** LOC25;
			trope178009** LOC26;
			trope178009** LOC27;
			TY589896 LOC28;
			p = newproc_550230(NIM_NIL, m);
			(*p).Options = ((*p).Options & ~ 163840);
			memset((void*)(&dest), 0, sizeof(dest));
			initlocexpr_562352(p, (*lib).Path, (&dest));
			LOC25 = 0;
			LOC25 = s_550183(p, ((NU8) 0));
			app_178052(&(*m).S[(((NU8) 9))- 0], (*LOC25));
			LOC26 = 0;
			LOC26 = s_550183(p, ((NU8) 1));
			app_178052(&(*m).S[(((NU8) 16))- 0], (*LOC26));
			LOC27 = 0;
			LOC27 = s_550183(p, ((NU8) 2));
			app_178052(&(*m).S[(((NU8) 16))- 0], (*LOC27));
			memset((void*)LOC28, 0, sizeof(LOC28));
			LOC28[0] = tmp;
			LOC28[1] = rdloc_560637(dest);
			appcg_554004(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP3961), LOC28, 2);
		}
		LA6: ;
	}
	LA3: ;
	{
		if (!((*lib).Name == NIM_NIL)) goto LA31;
		internalerror_199006(((NimStringDesc*) &TMP3962));
	}
	LA31: ;
}

N_NIMCALL(trope178009*, cstringlit_561296)(tcgen550035* m, trope178009** r, NimStringDesc* s) {
	trope178009* result;
	result = 0;
	{
		TY178515 LOC5;
		TY555018 LOC6;
		TY555018 LOC7;
		if (!(gcmd_170120 == ((NU8) 5))) goto LA3;
		(*m).Labels += 2;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_178082(((NI64) ((NI32)(((NI) ((*m).Labels)) - 1))));
		result = ropef_178107(((NimStringDesc*) &TMP3964), LOC5, 1);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = torope_178082(((NI64) ((*m).Labels)));
		LOC6[1] = torope_178082(((NI64) (s->Sup.len)));
		LOC6[2] = makellvmstring_549816(s);
		appf_178115(&(*m).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3965), LOC6, 3);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = result;
		LOC7[1] = torope_178082(((NI64) (s->Sup.len)));
		LOC7[2] = torope_178082(((NI64) ((*m).Labels)));
		appf_178115(r, ((NimStringDesc*) &TMP3968), LOC7, 3);
	}
	goto LA1;
	LA3: ;
	{
		result = makecstring_196659(s);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, varindynamiclib_561931)(tcgen550035* m, tsym226846* sym) {
	tlib226834* lib;
	trope178009* extname;
	trope178009* tmp;
	TY557045 LOC1;
	NimStringDesc* LOC2;
	TY589896 LOC3;
	lib = (*sym).Annex;
	extname = (*sym).Loc.R;
	loaddynamiclib_588310(m, lib);
	(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 0))%(sizeof(NI8)*8));
	tmp = mangledynlibproc_561938(sym);
	asgnRefNoCycle((void**) (&(*sym).Loc.R), tmp);
	(*m).Labels += 2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = tmp;
	LOC1[1] = gettypedesc_557306(m, (*sym).Typ);
	LOC1[2] = (*lib).Name;
	LOC2 = 0;
	LOC2 = ropetostr_178101(extname);
	LOC1[3] = cstringlit_561296(m, &(*m).S[(((NU8) 16))- 0], LOC2);
	appcg_554004(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP3963), LOC1, 4);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = (*sym).Loc.R;
	LOC3[1] = gettypedesc_557306(m, (*sym).Loc.T);
	appf_178115(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP3969), LOC3, 2);
}

N_NIMCALL(trope178009*, cstringlit_561237)(tcproc550031* p, trope178009** r, NimStringDesc* s) {
	trope178009* result;
	result = 0;
	{
		TY178515 LOC5;
		TY555018 LOC6;
		TY555018 LOC7;
		if (!(gcmd_170120 == ((NU8) 5))) goto LA3;
		(*(*p).Module).Labels += 1;
		(*p).Labels += 1;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_178082(((NI64) ((*p).Labels)));
		result = ropef_178107(((NimStringDesc*) &TMP3971), LOC5, 1);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = torope_178082(((NI64) ((*(*p).Module).Labels)));
		LOC6[1] = torope_178082(((NI64) (s->Sup.len)));
		LOC6[2] = makellvmstring_549816(s);
		appf_178115(&(*(*p).Module).S[(((NU8) 8))- 0], ((NimStringDesc*) &TMP3972), LOC6, 3);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = result;
		LOC7[1] = torope_178082(((NI64) (s->Sup.len)));
		LOC7[2] = torope_178082(((NI64) ((*(*p).Module).Labels)));
		appf_178115(r, ((NimStringDesc*) &TMP3973), LOC7, 3);
	}
	goto LA1;
	LA3: ;
	{
		result = makecstring_196659(s);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, assignglobalvar_561944)(tcproc550031* p, tsym226846* s) {
	{
		trope178009* LOC5;
		if (!((*s).Loc.K == ((NU8) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = manglename_554667(s);
		fillloc_553376((&(*s).Loc), ((NU8) 3), (*s).Typ, LOC5, ((NU8) 2));
	}
	LA3: ;
	{
		tcgen550035* q;
		if (!(((*s).Loc.Flags &(1<<((((NU8) 4))&7)))!=0)) goto LA8;
		q = findpendingmodule_553313((*p).Module, s);
		{
			NIM_BOOL LOC12;
			NIM_BOOL LOC14;
			LOC12 = 0;
			LOC12 = !((q == NIM_NIL));
			if (!(LOC12)) goto LA13;
			LOC14 = 0;
			LOC14 = containsorincl_223916((&(*q).Declaredthings), (*s).Sup.Id);
			LOC12 = !(LOC14);
			LA13: ;
			if (!LOC12) goto LA15;
			varindynamiclib_561931(q, s);
		}
		goto LA10;
		LA15: ;
		{
			asgnRefNoCycle((void**) (&(*s).Loc.R), mangledynlibproc_561938(s));
		}
		LA10: ;
		goto BeforeRet;
	}
	LA8: ;
	useheader_553469((*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_561753((*p).Module, s, (((*s).Flags &(1<<((((NU8) 5))&31)))!=0));
	}
	goto LA22;
	LA24: ;
	{
		trope178009* decl;
		trope178009* td;
		decl = NIM_NIL;
		td = gettypedesc_557306((*p).Module, (*s).Loc.T);
		{
			TY178515 LOC43;
			if (!(*s).Constraint == 0) goto LA29;
			{
				if (!(((*s).Flags &(1<<((((NU8) 5))&31)))!=0)) goto LA33;
				app_178060(&decl, ((NimStringDesc*) &TMP3587));
			}
			LA33: ;
			app_178052(&decl, td);
			{
				if (!(((*s).Flags &(1<<((((NU8) 8))&31)))!=0)) goto LA37;
				app_178060(&decl, ((NimStringDesc*) &TMP3464));
			}
			LA37: ;
			{
				if (!(((*s).Flags &(1<<((((NU8) 7))&31)))!=0)) goto LA41;
				app_178060(&decl, ((NimStringDesc*) &TMP3465));
			}
			LA41: ;
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC43[0] = (*s).Loc.R;
			appf_178115(&decl, ((NimStringDesc*) &TMP3466), LOC43, 1);
		}
		goto LA27;
		LA29: ;
		{
			NimStringDesc* LOC45;
			TY589896 LOC46;
			LOC45 = 0;
			LOC45 = rawNewString((*(*s).Constraint).kindU.S3.Strval->Sup.len + 3);
appendString(LOC45, (*(*s).Constraint).kindU.S3.Strval);
appendString(LOC45, ((NimStringDesc*) &TMP3467));
			memset((void*)LOC46, 0, sizeof(LOC46));
			LOC46[0] = td;
			LOC46[1] = (*s).Loc.R;
			decl = ropef_178107(LOC45, LOC46, 2);
		}
		LA27: ;
		app_178052(&(*(*p).Module).S[(((NU8) 9))- 0], decl);
	}
	LA22: ;
	{
		if (!(0 < (*p).Withinloop)) goto LA49;
		resetloc_560870(p, (&(*s).Loc));
	}
	LA49: ;
	{
		TY555018 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_561237(p, &(*(*p).Module).S[(((NU8) 15))- 0], LOC57);
		LOC55[1] = (*s).Loc.R;
		LOC55[2] = gentypeinfo_557602((*p).Module, (*s).Typ);
		appcg_554004((*p).Module, &(*(*p).Module).S[(((NU8) 15))- 0], ((NimStringDesc*) &TMP3970), LOC55, 3);
	}
	LA53: ;
	BeforeRet: ;
}

N_NIMCALL(trope178009*, gentraverseprocforglobal_560442)(tcgen550035* m, tsym226846* s) {
	trope178009* result;
	trope178009* LOC1;
	ttraversalclosure559233 c;
	tcproc550031* p;
	trope178009* sloc;
	trope178009* header;
	TY178515 LOC8;
	trope178009* generatedproc;
	TY557045 LOC9;
	trope178009** LOC10;
	trope178009** LOC11;
	trope178009** LOC12;
	TY178515 LOC13;
	result = 0;
	LOC1 = 0;
	LOC1 = gentypeinfo_557602(m, (*s).Loc.T);
	memset((void*)(&c), 0, sizeof(c));
	p = newproc_550230(NIM_NIL, m);
	sloc = (*s).Loc.R;
	result = getglobaltempname_555252();
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = (((*s).Flags &(1<<((((NU8) 22))&31)))!=0);
		if (!(LOC4)) goto LA5;
		LOC4 = emulatedthreadvars_554624();
		LA5: ;
		if (!LOC4) goto LA6;
		accessthreadlocalvar_554617(p, s);
		sloc = con_178038(((NimStringDesc*) &TMP3607), sloc);
	}
	LA6: ;
	c.Visitorfrmt = copyString(((NimStringDesc*) &TMP3974));
	c.P = p;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = result;
	header = ropef_178107(((NimStringDesc*) &TMP3975), LOC8, 1);
	gentraverseproc_559236((&c), sloc, (*s).Loc.T);
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC9[0] = header;
	LOC10 = 0;
	LOC10 = s_550183(p, ((NU8) 0));
	unsureAsgnRef((void**) (&LOC9[1]), (*LOC10));
	LOC11 = 0;
	LOC11 = s_550183(p, ((NU8) 1));
	unsureAsgnRef((void**) (&LOC9[2]), (*LOC11));
	LOC12 = 0;
	LOC12 = s_550183(p, ((NU8) 2));
	unsureAsgnRef((void**) (&LOC9[3]), (*LOC12));
	generatedproc = ropef_178107(((NimStringDesc*) &TMP3539), LOC9, 4);
	memset((void*)LOC13, 0, sizeof(LOC13));
	LOC13[0] = header;
	appf_178115(&(*m).S[(((NU8) 7))- 0], ((NimStringDesc*) &TMP3462), LOC13, 1);
	app_178052(&(*m).S[(((NU8) 10))- 0], generatedproc);
	return result;
}

N_NIMCALL(void, registergcroot_566607)(tcproc550031* p, tsym226846* v) {
	{
		NIM_BOOL LOC3;
		trope178009* prc;
		TY178515 LOC7;
		LOC3 = 0;
		LOC3 = ((36 &(1<<((gselectedgc_170121)&7)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = containsgarbagecollectedref_264163((*v).Loc.T);
		LA4: ;
		if (!LOC3) goto LA5;
		prc = gentraverseprocforglobal_560442((*p).Module, v);
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = prc;
		linefmt_554148((*(*p).Module).Initproc, ((NU8) 2), ((NimStringDesc*) &TMP3976), LOC7, 1);
	}
	LA5: ;
}

static N_INLINE(NIM_BOOL, isassignedimmediately_566633)(tnode226816* 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_555174((*n).Typ);
		if (!LOC7) goto LA8;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA8: ;
	result = NIM_TRUE;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, genasgncall_566404)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* d) {
	{
		if (!((*(*(*ri).kindU.S6.Sons->data[0]).Typ).Callconv == ((NU8) 8))) goto LA3;
		genclosurecall_563683(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_227364(ri);
		LOC6 = (2 <= LOC10);
		LA9: ;
		if (!LOC6) goto LA11;
		geninfixcall_564441(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_565281(p, ri, d);
	}
	goto LA1;
	LA16: ;
	{
		genprefixcall_563149(p, le, ri, d);
	}
	LA1: ;
	poststmtactions_554608(p);
}

static N_INLINE(void, loadinto_566888)(tcproc550031* p, tnode226816* le, tnode226816* ri, tloc226830* 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_566404(p, le, ri, a);
	}
	goto LA1;
	LA7: ;
	{
		if (!((*ri).Kind == ((NU8) 47) || (*ri).Kind == ((NU8) 65))) goto LA10;
		genderef_566881(p, ri, a, NIM_TRUE);
	}
	goto LA1;
	LA10: ;
	{
		expr_562305(p, ri, a);
	}
	LA1: ;
}

N_NIMCALL(void, gensinglevar_567486)(tcproc550031* p, tnode226816* a) {
	tsym226846* v;
	tcproc550031* 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_561944(targetproc, v);
		genobjectinit_560721((*(*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_553201 == NIM_NIL));
			LA24: ;
			if (!LOC23) goto LA25;
			genvarprototypeaux_567482(generatedheader_553201, v);
		}
		LA25: ;
		registergcroot_566607(p, v);
	}
	goto LA5;
	LA7: ;
	{
		NIM_BOOL LOC28;
		assignlocalvar_561577(p, v);
		LOC28 = 0;
		LOC28 = isassignedimmediately_566633((*a).kindU.S6.Sons->data[2]);
		initlocalvar_560943(p, v, LOC28);
	}
	LA5: ;
	{
		if (!!(((*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)))) goto LA31;
		genlinedir_554435(targetproc, a);
		loadinto_566888(targetproc, (*a).kindU.S6.Sons->data[0], (*a).kindU.S6.Sons->data[2], (&(*v).Loc));
	}
	LA31: ;
	BeforeRet: ;
}

N_NIMCALL(void, genclosurevar_567753)(tcproc550031* p, tnode226816* a) {
	NIM_BOOL immediateasgn;
	immediateasgn = !(((*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)));
	{
		tloc226830 v;
		if (!immediateasgn) goto LA3;
		memset((void*)(&v), 0, sizeof(v));
		initlocexpr_562352(p, (*a).kindU.S6.Sons->data[0], (&v));
		genlinedir_554435(p, a);
		loadinto_566888(p, (*a).kindU.S6.Sons->data[0], (*a).kindU.S6.Sons->data[2], (&v));
	}
	LA3: ;
}

N_NIMCALL(void, genvartuple_566649)(tcproc550031* p, tnode226816* n) {
	tloc226830 tup;
	tloc226830 field;
	NI l;
	NIM_BOOL uselowering;
	ttype226852* t;
	memset((void*)(&tup), 0, sizeof(tup));
	memset((void*)(&field), 0, sizeof(field));
	{
		if (!!(((*n).Kind == ((NU8) 36)))) goto LA3;
		internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3977));
	}
	LA3: ;
	l = sonslen_227249(n);
	uselowering = NIM_FALSE;
	{
		NI i_566678;
		NI HEX3Atmp_566845;
		NI res_566848;
		i_566678 = 0;
		HEX3Atmp_566845 = 0;
		HEX3Atmp_566845 = (NI32)(l - 3);
		res_566848 = 0;
		{
			while (1) {
				if (!(res_566848 <= HEX3Atmp_566845)) goto LA7;
				i_566678 = res_566848;
				{
					tnode226816* LOC10;
					LOC10 = 0;
					LOC10 = HEX5BHEX5D_227698(n, i_566678);
					if (!!(((*LOC10).Kind == ((NU8) 3)))) goto LA11;
					uselowering = NIM_TRUE;
					goto LA5;
				}
				LA11: ;
				res_566848 += 1;
			} LA7: ;
		}
	} LA5: ;
	{
		tnode226816* LOC17;
		if (!uselowering) goto LA15;
		LOC17 = 0;
		LOC17 = lowertupleunpacking_425184(n, (*p).Prc);
		genstmts_562298(p, LOC17);
		goto BeforeRet;
	}
	LA15: ;
	genlinedir_554435(p, n);
	initlocexpr_562352(p, (*n).kindU.S6.Sons->data[(NI32)(l - 1)], (&tup));
	t = tup.T;
	{
		NI i_566716;
		NI HEX3Atmp_566852;
		NI res_566855;
		i_566716 = 0;
		HEX3Atmp_566852 = 0;
		HEX3Atmp_566852 = (NI32)(l - 3);
		res_566855 = 0;
		{
			while (1) {
				if (!(res_566855 <= HEX3Atmp_566852)) goto LA20;
				i_566716 = res_566855;
				{
					tsym226846* v;
					v = (*(*n).kindU.S6.Sons->data[i_566716]).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_561944(p, v);
						genobjectinit_560721(p, ((NU8) 1), (*v).Typ, (*v).Loc, NIM_TRUE);
						registergcroot_566607(p, v);
					}
					goto LA26;
					LA28: ;
					{
						tnode226816* LOC31;
						NIM_BOOL LOC32;
						assignlocalvar_561577(p, v);
						LOC31 = 0;
						LOC31 = HEX5BHEX5D_227698(n, (NI32)(l - 1));
						LOC32 = 0;
						LOC32 = isassignedimmediately_566633(LOC31);
						initlocalvar_560943(p, v, LOC32);
					}
					LA26: ;
					initloc_553361((&field), ((NU8) 7), (*t).Sons->data[i_566716], tup.S);
					{
						TY589896 LOC37;
						if (!((*t).Kind == ((NU8) 18))) goto LA35;
						memset((void*)LOC37, 0, sizeof(LOC37));
						LOC37[0] = rdloc_560637(tup);
						LOC37[1] = torope_178082(((NI64) (i_566716)));
						field.R = ropef_178107(((NimStringDesc*) &TMP3534), LOC37, 2);
					}
					goto LA33;
					LA35: ;
					{
						TY589896 LOC43;
						{
							if (!!(((*(*(*t).N).kindU.S6.Sons->data[i_566716]).Kind == ((NU8) 3)))) goto LA41;
							internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3977));
						}
						LA41: ;
						memset((void*)LOC43, 0, sizeof(LOC43));
						LOC43[0] = rdloc_560637(tup);
						LOC43[1] = manglerecfieldname_556246((*(*(*t).N).kindU.S6.Sons->data[i_566716]).kindU.S4.Sym, t);
						field.R = ropef_178107(((NimStringDesc*) &TMP3436), LOC43, 2);
					}
					LA33: ;
					putlocintodest_562321(p, (&(*v).Loc), field);
				} LA21: ;
				res_566855 += 1;
			} LA20: ;
		}
	}
	BeforeRet: ;
}

N_NIMCALL(void, genvarstmt_567830)(tcproc550031* p, tnode226816* n) {
	{
		NI i_567846;
		NI HEX3Atmp_567905;
		NI LOC2;
		NI res_567908;
		i_567846 = 0;
		HEX3Atmp_567905 = 0;
		LOC2 = 0;
		LOC2 = sonslen_227249(n);
		HEX3Atmp_567905 = (NI32)(LOC2 - 1);
		res_567908 = 0;
		{
			while (1) {
				if (!(res_567908 <= HEX3Atmp_567905)) goto LA4;
				i_567846 = res_567908;
				{
					tnode226816* a;
					a = (*n).kindU.S6.Sons->data[i_567846];
					{
						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_567486(p, a);
						}
						goto LA14;
						LA16: ;
						{
							genclosurevar_567753(p, a);
						}
						LA14: ;
					}
					goto LA10;
					LA12: ;
					{
						genvartuple_566649(p, a);
					}
					LA10: ;
				} LA5: ;
				res_567908 += 1;
			} LA4: ;
		}
	}
}

static N_INLINE(NIM_BOOL, emitlazily_553325)(tsym226846* s) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	tsym226846* LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((gglobaloptions_170118 &(1<<((((NU8) 2))&31)))!=0);
	if (LOC1) goto LA2;
	LOC3 = 0;
	LOC3 = getmodule_236243(s);
	LOC1 = (((*LOC3).Flags &(1<<((((NU8) 25))&31)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genconststmt_567925)(tcproc550031* p, tnode226816* t) {
	{
		NI i_567941;
		NI HEX3Atmp_568203;
		NI LOC2;
		NI res_568206;
		i_567941 = 0;
		HEX3Atmp_568203 = 0;
		LOC2 = 0;
		LOC2 = sonslen_227249(t);
		HEX3Atmp_568203 = (NI32)(LOC2 - 1);
		res_568206 = 0;
		{
			while (1) {
				if (!(res_568206 <= HEX3Atmp_568203)) goto LA4;
				i_567941 = res_568206;
				{
					tnode226816* it;
					tsym226846* c;
					it = (*t).kindU.S6.Sons->data[i_567941];
					{
						if (!((*it).Kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!!(((*it).Kind == ((NU8) 102)))) goto LA12;
						internalerror_198987((*t).Info, ((NimStringDesc*) &TMP3978));
					}
					LA12: ;
					c = (*(*it).kindU.S6.Sons->data[0]).kindU.S4.Sym;
					{
						NIM_BOOL LOC16;
						LOC16 = 0;
						LOC16 = containscompiletimeonly_274490((*c).Typ);
						if (!LOC16) goto LA17;
						goto LA5;
					}
					LA17: ;
					{
						if (!(((*c).Flags &(1<<((((NU8) 25))&31)))!=0)) goto LA21;
						gensinglevar_567486(p, it);
					}
					goto LA19;
					LA21: ;
					{
						NIM_BOOL LOC24;
						NIM_BOOL LOC25;
						NI LOC28;
						LOC24 = 0;
						LOC25 = 0;
						LOC25 = ((*(*c).Typ).Kind == ((NU8) 4) || (*(*c).Typ).Kind == ((NU8) 16) || (*(*c).Typ).Kind == ((NU8) 19) || (*(*c).Typ).Kind == ((NU8) 18) || (*(*c).Typ).Kind == ((NU8) 24));
						if (!(LOC25)) goto LA26;
						LOC25 = !((((*c).Loc.Flags &(1<<((((NU8) 3))&7)))!=0));
						LA26: ;
						LOC24 = LOC25;
						if (!(LOC24)) goto LA27;
						LOC28 = 0;
						LOC28 = len_227364((*c).Ast);
						LOC24 = !((LOC28 == 0));
						LA27: ;
						if (!LOC24) goto LA29;
						{
							NIM_BOOL LOC33;
							LOC33 = 0;
							LOC33 = emitlazily_553325(c);
							if (!!(LOC33)) goto LA34;
							requestconstimpl_562291(p, c);
						}
						LA34: ;
					}
					goto LA19;
					LA29: ;
					LA19: ;
				} LA5: ;
				res_568206 += 1;
			} LA4: ;
		}
	}
}

N_NIMCALL(void, gencasestringbranch_571258)(tcproc550031* p, tnode226816* b, tloc226830 e, trope178009* labl, trope178009** branches, NI branchesLen0) {
	tloc226830 x;
	NI length;
	memset((void*)(&x), 0, sizeof(x));
	length = sonslen_227249(b);
	{
		NI i_571281;
		NI HEX3Atmp_571637;
		NI res_571640;
		i_571281 = 0;
		HEX3Atmp_571637 = 0;
		HEX3Atmp_571637 = (NI32)(length - 2);
		res_571640 = 0;
		{
			while (1) {
				NI j;
				NI64 LOC4;
				TY555018 LOC5;
				if (!(res_571640 <= HEX3Atmp_571637)) goto LA3;
				i_571281 = res_571640;
				initlocexpr_562352(p, (*b).kindU.S6.Sons->data[i_571281], (&x));
				LOC4 = 0;
				LOC4 = hashstring_549156((*(*b).kindU.S6.Sons->data[i_571281]).kindU.S3.Strval);
				j = ((NI) ((NI64)(LOC4 & ((NI64) ((branchesLen0-1))))));
				memset((void*)LOC5, 0, sizeof(LOC5));
				LOC5[0] = rdloc_560637(e);
				LOC5[1] = rdloc_560637(x);
				LOC5[2] = labl;
				appcg_554004((*p).Module, &branches[j], ((NimStringDesc*) &TMP3980), LOC5, 3);
				res_571640 += 1;
			} LA3: ;
		}
	}
}

N_NIMCALL(void, exprblock_567174)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	TY554703 LOC1;
	NI LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = startblock_566985(p, ((NimStringDesc*) &TMP3590), LOC1, 0);
	expr_562305(p, n, d);
	endblock_567106(p);
}

N_NIMCALL(trope178009*, gencasesecondpass_570974)(tcproc550031* p, tnode226816* t, tloc226830* d, NI labid, NI until) {
	trope178009* result;
	trope178009* lend;
	result = 0;
	lend = getlabel_562248(p);
	{
		NI i_570994;
		NI res_571100;
		i_570994 = 0;
		res_571100 = 1;
		{
			while (1) {
				TY178515 LOC4;
				if (!(res_571100 <= until)) goto LA3;
				i_570994 = res_571100;
				memset((void*)LOC4, 0, sizeof(LOC4));
				LOC4[0] = torope_178082(((NI64) ((NI32)(labid + i_570994))));
				linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3984), LOC4, 1);
				{
					NI length;
					TY178515 LOC9;
					if (!((*(*t).kindU.S6.Sons->data[i_570994]).Kind == ((NU8) 85))) goto LA7;
					length = sonslen_227249((*t).kindU.S6.Sons->data[i_570994]);
					exprblock_567174(p, (*(*t).kindU.S6.Sons->data[i_570994]).kindU.S6.Sons->data[(NI32)(length - 1)], d);
					memset((void*)LOC9, 0, sizeof(LOC9));
					LOC9[0] = lend;
					linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3931), LOC9, 1);
				}
				goto LA5;
				LA7: ;
				{
					exprblock_567174(p, (*(*t).kindU.S6.Sons->data[i_570994]).kindU.S6.Sons->data[0], d);
				}
				LA5: ;
				res_571100 += 1;
			} LA3: ;
		}
	}
	result = lend;
	return result;
}

N_NIMCALL(void, gencasegenericbranch_570826)(tcproc550031* p, tnode226816* b, tloc226830 e, NimStringDesc* rangeformat, NimStringDesc* eqformat, trope178009* labl) {
	tloc226830 x;
	tloc226830 y;
	NI length;
	memset((void*)(&x), 0, sizeof(x));
	memset((void*)(&y), 0, sizeof(y));
	length = sonslen_227249(b);
	{
		NI i_570849;
		NI HEX3Atmp_570957;
		NI res_570960;
		i_570849 = 0;
		HEX3Atmp_570957 = 0;
		HEX3Atmp_570957 = (NI32)(length - 2);
		res_570960 = 0;
		{
			while (1) {
				if (!(res_570960 <= HEX3Atmp_570957)) goto LA3;
				i_570849 = res_570960;
				{
					TY557045 LOC8;
					if (!((*(*b).kindU.S6.Sons->data[i_570849]).Kind == ((NU8) 44))) goto LA6;
					initlocexpr_562352(p, (*(*b).kindU.S6.Sons->data[i_570849]).kindU.S6.Sons->data[0], (&x));
					initlocexpr_562352(p, (*(*b).kindU.S6.Sons->data[i_570849]).kindU.S6.Sons->data[1], (&y));
					memset((void*)LOC8, 0, sizeof(LOC8));
					LOC8[0] = rdcharloc_560698(e);
					LOC8[1] = rdcharloc_560698(x);
					LOC8[2] = rdcharloc_560698(y);
					LOC8[3] = labl;
					linecg_554135(p, ((NU8) 2), rangeformat, LOC8, 4);
				}
				goto LA4;
				LA6: ;
				{
					TY555018 LOC10;
					initlocexpr_562352(p, (*b).kindU.S6.Sons->data[i_570849], (&x));
					memset((void*)LOC10, 0, sizeof(LOC10));
					LOC10[0] = rdcharloc_560698(e);
					LOC10[1] = rdcharloc_560698(x);
					LOC10[2] = labl;
					linecg_554135(p, ((NU8) 2), eqformat, LOC10, 3);
				}
				LA4: ;
				res_570960 += 1;
			} LA3: ;
		}
	}
}

N_NIMCALL(trope178009*, genifforcaseuntil_571114)(tcproc550031* p, tnode226816* t, tloc226830* d, NimStringDesc* rangeformat, NimStringDesc* eqformat, NI until, tloc226830 a) {
	trope178009* result;
	NI labid;
	result = 0;
	labid = (*p).Labels;
	{
		NI i_571136;
		NI res_571215;
		i_571136 = 0;
		res_571215 = 1;
		{
			while (1) {
				if (!(res_571215 <= until)) goto LA3;
				i_571136 = res_571215;
				(*p).Labels += 1;
				{
					trope178009* LOC8;
					trope178009* LOC9;
					if (!((*(*t).kindU.S6.Sons->data[i_571136]).Kind == ((NU8) 85))) goto LA6;
					LOC8 = 0;
					LOC8 = torope_178082(((NI64) ((*p).Labels)));
					LOC9 = 0;
					LOC9 = con_178038(((NimStringDesc*) &TMP3616), LOC8);
					gencasegenericbranch_570826(p, (*t).kindU.S6.Sons->data[i_571136], a, rangeformat, eqformat, LOC9);
				}
				goto LA4;
				LA6: ;
				{
					TY178515 LOC11;
					memset((void*)LOC11, 0, sizeof(LOC11));
					LOC11[0] = torope_178082(((NI64) ((*p).Labels)));
					linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3983), LOC11, 1);
				}
				LA4: ;
				res_571215 += 1;
			} LA3: ;
		}
	}
	{
		NI LOC14;
		NI gototarget;
		TY178515 LOC17;
		TY178515 LOC18;
		LOC14 = 0;
		LOC14 = len_227364(t);
		if (!(until < (NI32)(LOC14 - 1))) goto LA15;
		(*p).Labels += 1;
		gototarget = (*p).Labels;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = torope_178082(((NI64) (gototarget)));
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3983), LOC17, 1);
		result = gencasesecondpass_570974(p, t, d, ((NI) (labid)), until);
		memset((void*)LOC18, 0, sizeof(LOC18));
		LOC18[0] = torope_178082(((NI64) (gototarget)));
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3984), LOC18, 1);
	}
	goto LA12;
	LA15: ;
	{
		result = gencasesecondpass_570974(p, t, d, ((NI) (labid)), until);
	}
	LA12: ;
	return result;
}

N_NIMCALL(void, gencasegeneric_571229)(tcproc550031* p, tnode226816* t, tloc226830* d, NimStringDesc* rangeformat, NimStringDesc* eqformat) {
	tloc226830 a;
	trope178009* lend;
	NI LOC1;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*t).kindU.S6.Sons->data[0], (&a));
	LOC1 = 0;
	LOC1 = sonslen_227249(t);
	lend = genifforcaseuntil_571114(p, t, d, rangeformat, eqformat, (NI32)(LOC1 - 1), a);
	fixlabel_562270(p, lend);
}

N_NIMCALL(void, genstringcase_571654)(tcproc550031* p, tnode226816* t, tloc226830* d) {
	NI strings;
	strings = 0;
	{
		NI i_571673;
		NI HEX3Atmp_571897;
		NI LOC2;
		NI res_571900;
		i_571673 = 0;
		HEX3Atmp_571897 = 0;
		LOC2 = 0;
		LOC2 = sonslen_227249(t);
		HEX3Atmp_571897 = (NI32)(LOC2 - 1);
		res_571900 = 1;
		{
			while (1) {
				if (!(res_571900 <= HEX3Atmp_571897)) goto LA4;
				i_571673 = res_571900;
				{
					NI LOC9;
					if (!((*(*t).kindU.S6.Sons->data[i_571673]).Kind == ((NU8) 85))) goto LA7;
					LOC9 = 0;
					LOC9 = sonslen_227249((*t).kindU.S6.Sons->data[i_571673]);
					strings += (NI32)(LOC9 - 1);
				}
				LA7: ;
				res_571900 += 1;
			} LA4: ;
		}
	}
	{
		NI bitmask;
		NI LOC14;
		TY196552* branches;
		tloc226830 a;
		NI labid;
		TY589896 LOC26;
		TY554703 LOC35;
		trope178009* lend;
		NI LOC42;
		if (!(8 < strings)) goto LA12;
		LOC14 = 0;
		LOC14 = nextpoweroftwo_147528(strings);
		bitmask = (NI32)(LOC14 - 1);
		branches = 0;
		branches = (TY196552*) newSeq((&NTI196552), (NI32)(bitmask + 1));
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_562352(p, (*t).kindU.S6.Sons->data[0], (&a));
		labid = (*p).Labels;
		{
			NI i_571772;
			NI HEX3Atmp_571905;
			NI LOC16;
			NI res_571908;
			i_571772 = 0;
			HEX3Atmp_571905 = 0;
			LOC16 = 0;
			LOC16 = sonslen_227249(t);
			HEX3Atmp_571905 = (NI32)(LOC16 - 1);
			res_571908 = 1;
			{
				while (1) {
					if (!(res_571908 <= HEX3Atmp_571905)) goto LA18;
					i_571772 = res_571908;
					(*p).Labels += 1;
					{
						trope178009* LOC23;
						trope178009* LOC24;
						if (!((*(*t).kindU.S6.Sons->data[i_571772]).Kind == ((NU8) 85))) goto LA21;
						LOC23 = 0;
						LOC23 = torope_178082(((NI64) ((*p).Labels)));
						LOC24 = 0;
						LOC24 = con_178038(((NimStringDesc*) &TMP3616), LOC23);
						gencasestringbranch_571258(p, (*t).kindU.S6.Sons->data[i_571772], a, LOC24, branches->data, branches->Sup.len);
					}
					goto LA19;
					LA21: ;
					{
					}
					LA19: ;
					res_571908 += 1;
				} LA18: ;
			}
		}
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = rdloc_560637(a);
		LOC26[1] = torope_178082(((NI64) (bitmask)));
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3981), LOC26, 2);
		{
			NI j_571839;
			NI HEX3Atmp_571911;
			NI res_571914;
			j_571839 = 0;
			HEX3Atmp_571911 = 0;
			HEX3Atmp_571911 = (branches->Sup.len-1);
			res_571914 = 0;
			{
				while (1) {
					if (!(res_571914 <= HEX3Atmp_571911)) goto LA29;
					j_571839 = res_571914;
					{
						TY589896 LOC34;
						if (!!((branches->data[j_571839] == NIM_NIL))) goto LA32;
						memset((void*)LOC34, 0, sizeof(LOC34));
						LOC34[0] = intliteral_562339(((NI64) (j_571839)));
						LOC34[1] = branches->data[j_571839];
						linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3982), LOC34, 2);
					}
					LA32: ;
					res_571914 += 1;
				} LA29: ;
			}
		}
		memset((void*)LOC35, 0, sizeof(LOC35));
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3505), LOC35, 0);
		{
			NI LOC38;
			TY178515 LOC41;
			LOC38 = 0;
			LOC38 = sonslen_227249(t);
			if (!!(((*(*t).kindU.S6.Sons->data[(NI32)(LOC38 - 1)]).Kind == ((NU8) 85)))) goto LA39;
			memset((void*)LOC41, 0, sizeof(LOC41));
			LOC41[0] = torope_178082(((NI64) ((*p).Labels)));
			linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3983), LOC41, 1);
		}
		LA39: ;
		LOC42 = 0;
		LOC42 = sonslen_227249(t);
		lend = gencasesecondpass_570974(p, t, d, ((NI) (labid)), (NI32)(LOC42 - 1));
		fixlabel_562270(p, lend);
	}
	goto LA10;
	LA12: ;
	{
		gencasegeneric_571229(p, t, d, ((NimStringDesc*) &TMP3812), ((NimStringDesc*) &TMP3980));
	}
	LA10: ;
}

N_NIMCALL(NIM_BOOL, branchhastoobigrange_571946)(tnode226816* b) {
	NIM_BOOL result;
	result = 0;
	{
		NI i_571962;
		NI HEX3Atmp_572072;
		NI LOC2;
		NI res_572075;
		i_571962 = 0;
		HEX3Atmp_572072 = 0;
		LOC2 = 0;
		LOC2 = sonslen_227249(b);
		HEX3Atmp_572072 = (NI32)(LOC2 - 2);
		res_572075 = 0;
		{
			while (1) {
				if (!(res_572075 <= HEX3Atmp_572072)) goto LA4;
				i_571962 = res_572075;
				{
					NIM_BOOL LOC7;
					LOC7 = 0;
					LOC7 = ((*(*b).kindU.S6.Sons->data[i_571962]).Kind == ((NU8) 44));
					if (!(LOC7)) goto LA8;
					LOC7 = (IL64(256) < (NI64)((*(*(*b).kindU.S6.Sons->data[i_571962]).kindU.S6.Sons->data[1]).kindU.S1.Intval - (*(*(*b).kindU.S6.Sons->data[i_571962]).kindU.S6.Sons->data[0]).kindU.S1.Intval));
					LA8: ;
					if (!LOC7) goto LA9;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA9: ;
				res_572075 += 1;
			} LA4: ;
		}
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, ifswitchsplitpoint_572089)(tcproc550031* p, tnode226816* n) {
	NI result;
	result = 0;
	{
		NI i_572104;
		NI HEX3Atmp_572130;
		NI LOC2;
		NI res_572133;
		i_572104 = 0;
		HEX3Atmp_572130 = 0;
		LOC2 = 0;
		LOC2 = len_227364(n);
		HEX3Atmp_572130 = (NI32)(LOC2 - 1);
		res_572133 = 1;
		{
			while (1) {
				tnode226816* branch;
				tnode226816* stmtblock;
				if (!(res_572133 <= HEX3Atmp_572130)) goto LA4;
				i_572104 = res_572133;
				branch = HEX5BHEX5D_227698(n, i_572104);
				stmtblock = lastson_227261(branch);
				{
					NIM_BOOL LOC7;
					LOC7 = 0;
					LOC7 = stmtscontainpragma_549128(stmtblock, ((NU8) 174));
					if (!LOC7) goto LA8;
					result = i_572104;
				}
				goto LA5;
				LA8: ;
				{
					if (!!(((cc_203434[(ccompiler_203461)- 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_571946(branch);
						LA16: ;
						if (!LOC15) goto LA17;
						result = i_572104;
					}
					LA17: ;
				}
				goto LA5;
				LA11: ;
				LA5: ;
				res_572133 += 1;
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(void, genordinalcase_572277)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	NI splitpoint;
	tloc226830 a;
	trope178009* lend;
	splitpoint = ifswitchsplitpoint_572089(p, n);
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*n).kindU.S6.Sons->data[0], (&a));
	{
		if (!(0 < splitpoint)) goto LA3;
		lend = genifforcaseuntil_571114(p, n, d, ((NimStringDesc*) &TMP3985), ((NimStringDesc*) &TMP3986), splitpoint, a);
	}
	goto LA1;
	LA3: ;
	{
		lend = NIM_NIL;
	}
	LA1: ;
	{
		NI LOC8;
		TY178515 LOC11;
		NIM_BOOL hasdefault;
		TY554703 LOC31;
		LOC8 = 0;
		LOC8 = len_227364(n);
		if (!((NI32)(splitpoint + 1) < LOC8)) goto LA9;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = rdcharloc_560698(a);
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3987), LOC11, 1);
		hasdefault = NIM_FALSE;
		{
			NI i_572329;
			NI HEX3Atmp_572400;
			NI HEX3Atmp_572401;
			NI LOC13;
			NI res_572404;
			i_572329 = 0;
			HEX3Atmp_572400 = 0;
			HEX3Atmp_572401 = 0;
			HEX3Atmp_572400 = (NI32)(splitpoint + 1);
			LOC13 = 0;
			LOC13 = len_227364(n);
			HEX3Atmp_572401 = (LOC13 - 1);
			res_572404 = HEX3Atmp_572400;
			{
				while (1) {
					tnode226816* branch;
					tnode226816* LOC22;
					TY554703 LOC23;
					if (!(res_572404 <= HEX3Atmp_572401)) goto LA15;
					i_572329 = res_572404;
					branch = HEX5BHEX5D_227698(n, i_572329);
					{
						if (!((*branch).Kind == ((NU8) 85))) goto LA18;
						gencaserange_559242(p, branch);
					}
					goto LA16;
					LA18: ;
					{
						TY554703 LOC21;
						memset((void*)LOC21, 0, sizeof(LOC21));
						linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3530), LOC21, 0);
						hasdefault = NIM_TRUE;
					}
					LA16: ;
					LOC22 = 0;
					LOC22 = lastson_227261(branch);
					exprblock_567174(p, LOC22, d);
					memset((void*)LOC23, 0, sizeof(LOC23));
					linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3531), LOC23, 0);
					res_572404 += 1;
				} LA15: ;
			}
		}
		{
			NIM_BOOL LOC26;
			TY554703 LOC30;
			LOC26 = 0;
			LOC26 = ((cc_203434[(ccompiler_203461)- 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_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3988), LOC30, 0);
		}
		LA28: ;
		memset((void*)LOC31, 0, sizeof(LOC31));
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3505), LOC31, 0);
	}
	LA9: ;
	{
		if (!!((lend == NIM_NIL))) goto LA34;
		fixlabel_562270(p, lend);
	}
	LA34: ;
}

N_NIMCALL(void, gencase_572418)(tcproc550031* p, tnode226816* t, tloc226830* d) {
	ttype226852* LOC8;
	genlinedir_554435(p, t);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_233990((*t).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_559246(p, (*t).Typ, d, NIM_FALSE);
	}
	LA6: ;
	LOC8 = 0;
	LOC8 = skiptypes_231245((*(*t).kindU.S6.Sons->data[0]).Typ, IL64(211106242013440));
	switch ((*LOC8).Kind) {
	case ((NU8) 28):
	{
		genstringcase_571654(p, t, d);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		gencasegeneric_571229(p, t, d, ((NimStringDesc*) &TMP3985), ((NimStringDesc*) &TMP3986));
	}
	break;
	default:
	{
		genordinalcase_572277(p, t, d);
	}
	break;
	}
}

static N_INLINE(tnode226816*, pop_568744)(tnodeseq226810** s_568752) {
	tnode226816* result;
	NI l;
	result = 0;
	l = (NI32)((*s_568752)->Sup.len - 1);
	result = (*s_568752)->data[l];
	(*s_568752) = (tnodeseq226810*) setLengthSeq(&((*s_568752))->Sup, sizeof(tnode226816*), l);
	return result;
}

N_NIMCALL(void, blockleaveactions_568662)(tcproc550031* p, NI howmanytrys, NI howmanyexcepts) {
	tnodeseq226810* stack;
	NI alreadypoppedcnt;
	stack = 0;
	stack = (tnodeseq226810*) newSeq((&NTI226810), 0);
	alreadypoppedcnt = (*p).Inexceptblock;
	{
		NI i_568698;
		NI res_568906;
		i_568698 = 0;
		res_568906 = 1;
		{
			while (1) {
				tnode226816* trystmt;
				tnode226816* finallystmt;
				if (!(res_568906 <= howmanytrys)) goto LA3;
				i_568698 = res_568906;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = (gcmd_170120 == ((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: ;
					{
						TY554703 LOC15;
						memset((void*)LOC15, 0, sizeof(LOC15));
						linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3989), LOC15, 0);
					}
					LA10: ;
				}
				LA8: ;
				trystmt = pop_568744((&(*p).Nestedtrystmts));
				stack = (tnodeseq226810*) incrSeq(&(stack)->Sup, sizeof(tnode226816*));
				asgnRefNoCycle((void**) (&stack->data[stack->Sup.len-1]), trystmt);
				finallystmt = lastson_227261(trystmt);
				{
					if (!((*finallystmt).Kind == ((NU8) 107))) goto LA18;
					genstmts_562298(p, (*finallystmt).kindU.S6.Sons->data[0]);
				}
				LA18: ;
				res_568906 += 1;
			} LA3: ;
		}
	}
	{
		NI i_568842;
		NI HEX3Atmp_568909;
		NI res_568912;
		i_568842 = 0;
		HEX3Atmp_568909 = 0;
		HEX3Atmp_568909 = (NI32)(howmanytrys - 1);
		res_568912 = HEX3Atmp_568909;
		{
			while (1) {
				if (!(0 <= res_568912)) goto LA22;
				i_568842 = res_568912;
				(*p).Nestedtrystmts = (tnodeseq226810*) incrSeq(&((*p).Nestedtrystmts)->Sup, sizeof(tnode226816*));
				asgnRefNoCycle((void**) (&(*p).Nestedtrystmts->data[(*p).Nestedtrystmts->Sup.len-1]), stack->data[i_568842]);
				res_568912 -= 1;
			} LA22: ;
		}
	}
	{
		NIM_BOOL LOC25;
		LOC25 = 0;
		LOC25 = (gcmd_170120 == ((NU8) 2));
		if (LOC25) goto LA26;
		LOC25 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA26: ;
		if (!!(LOC25)) goto LA27;
		{
			NI i_568894;
			NI HEX3Atmp_568914;
			NI res_568917;
			i_568894 = 0;
			HEX3Atmp_568914 = 0;
			HEX3Atmp_568914 = (NI32)(howmanyexcepts - 1);
			res_568917 = HEX3Atmp_568914;
			{
				while (1) {
					TY554703 LOC32;
					if (!(0 <= res_568917)) goto LA31;
					i_568894 = res_568917;
					memset((void*)LOC32, 0, sizeof(LOC32));
					linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3990), LOC32, 0);
					res_568917 -= 1;
				} LA31: ;
			}
		}
	}
	LA27: ;
}

N_NIMCALL(void, genreturnstmt_568948)(tcproc550031* p, tnode226816* t) {
	TY554703 LOC10;
	(*p).Beforeretneeded = NIM_TRUE;
	genlinedir_554435(p, t);
	{
		if (!!(((*(*t).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		genstmts_562298(p, (*t).kindU.S6.Sons->data[0]);
	}
	LA3: ;
	blockleaveactions_568662(p, (*p).Nestedtrystmts->Sup.len, (*p).Inexceptblock);
	{
		trope178009* safepoint;
		TY178515 LOC9;
		if (!(0 < (*p).Finallysafepoints->Sup.len)) goto LA7;
		safepoint = (*p).Finallysafepoints->data[(NI32)((*p).Finallysafepoints->Sup.len - 1)];
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = safepoint;
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3991), LOC9, 1);
	}
	LA7: ;
	memset((void*)LOC10, 0, sizeof(LOC10));
	lineff_554218(p, ((NU8) 2), ((NimStringDesc*) &TMP3992), ((NimStringDesc*) &TMP3993), LOC10, 0);
}

N_NIMCALL(void, genbreakstmt_570347)(tcproc550031* p, tnode226816* t) {
	NI idx;
	trope178009* label;
	TY178515 LOC16;
	idx = (*p).Breakidx;
	{
		tsym226846* sym;
		if (!!(((*(*t).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		sym = (*(*t).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		idx = (NI32)((*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_198987((*t).Info, ((NimStringDesc*) &TMP3994));
		}
		LA14: ;
	}
	LA1: ;
	label = assignlabel_567045((&(*p).Blocks->data[idx]));
	blockleaveactions_568662(p, (NI32)((*p).Nestedtrystmts->Sup.len - ((NI) ((*p).Blocks->data[idx].Nestedtrystmts))), (NI32)((*p).Inexceptblock - ((NI) ((*p).Blocks->data[idx].Nestedexceptstmts))));
	genlinedir_554435(p, t);
	memset((void*)LOC16, 0, sizeof(LOC16));
	LOC16[0] = label;
	linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3931), LOC16, 1);
}

N_NIMCALL(NIM_BOOL, fielddiscriminantcheckneeded_574403)(tcproc550031* p, tnode226816* asgn) {
	NIM_BOOL result;
	result = 0;
	{
		tnode226816* le;
		if (!(((*p).Options &(1<<((((NU8) 2))&31)))!=0)) goto LA3;
		le = (*asgn).kindU.S6.Sons->data[0];
		{
			tsym226846* 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: ;
		{
			tsym226846* 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(trope178009*, discriminatortabledecl_557942)(tcgen550035* m, ttype226852* objtype, tsym226846* d) {
	trope178009* result;
	trope178009* LOC1;
	trope178009* tmp;
	TY589896 LOC2;
	NI64 LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_553608(m, ((NimStringDesc*) &TMP3473));
	tmp = discriminatortablename_557887(m, objtype, d);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = tmp;
	LOC3 = 0;
	LOC3 = lengthord_264016((*d).Typ);
	LOC2[1] = torope_178082((NI64)(LOC3 + IL64(1)));
	result = ropef_178107(((NimStringDesc*) &TMP3551), LOC2, 2);
	return result;
}

N_NIMCALL(void, gendiscriminantcheck_574555)(tcproc550031* p, tloc226830 a, tloc226830 tmp, ttype226852* objtype, tsym226846* field) {
	ttype226852* t;
	trope178009* LOC1;
	NI64 l;
	TY557045 LOC8;
	t = skiptypes_231245(objtype, IL64(211106240964864));
	LOC1 = 0;
	LOC1 = gentypeinfo_557602((*p).Module, t);
	l = lengthord_264016((*field).Typ);
	{
		NIM_BOOL LOC4;
		TY178515 LOC7;
		LOC4 = 0;
		LOC4 = containsorincl_223916((&(*(*p).Module).Declaredthings), (*field).Sup.Id);
		if (!!(LOC4)) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = discriminatortabledecl_557942((*p).Module, t, field);
		appcg_554018((*p).Module, ((NU8) 9), ((NimStringDesc*) &TMP3995), LOC7, 1);
	}
	LA5: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rdloc_560637(a);
	LOC8[1] = rdloc_560637(tmp);
	LOC8[2] = discriminatortablename_557887((*p).Module, t, field);
	LOC8[3] = intliteral_562339((NI64)(l + IL64(1)));
	linecg_554135(p, ((NU8) 2), ((NimStringDesc*) &TMP3996), LOC8, 4);
}

N_NIMCALL(void, asgnfielddiscriminant_574614)(tcproc550031* p, tnode226816* e) {
	tloc226830 a;
	tloc226830 tmp;
	tnode226816* dotexpr;
	tsym226846* 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_562352(p, (*e).kindU.S6.Sons->data[0], (&a));
	gettemp_559246(p, a.T, (&tmp), NIM_FALSE);
	expr_562305(p, (*e).kindU.S6.Sons->data[1], (&tmp));
	gendiscriminantcheck_574555(p, a, tmp, (*(*dotexpr).kindU.S6.Sons->data[0]).Typ, (*(*dotexpr).kindU.S6.Sons->data[1]).kindU.S4.Sym);
	genassignment_562330(p, a, tmp, 0);
}

N_NIMCALL(void, genasgn_574740)(tcproc550031* p, tnode226816* e, NIM_BOOL fastasgn) {
	genlinedir_554435(p, e);
	{
		NIM_BOOL LOC3;
		tloc226830 a;
		LOC3 = 0;
		LOC3 = fielddiscriminantcheckneeded_574403(p, e);
		if (!!(LOC3)) goto LA4;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_562352(p, (*e).kindU.S6.Sons->data[0], (&a));
		{
			if (!fastasgn) goto LA8;
			a.Flags |= ((NI8)1)<<((((NU8) 2))%(sizeof(NI8)*8));
		}
		LA8: ;
		loadinto_566888(p, (*e).kindU.S6.Sons->data[0], (*e).kindU.S6.Sons->data[1], (&a));
	}
	goto LA1;
	LA4: ;
	{
		asgnfielddiscriminant_574614(p, e);
	}
	LA1: ;
}

N_NIMCALL(trope178009*, genasmoremitstmt_573652)(tcproc550031* p, tnode226816* t, NIM_BOOL isasmstmt) {
	trope178009* result;
	NimStringDesc* res;
	result = 0;
	res = copyString(((NimStringDesc*) &TMP3812));
	{
		NI i_573671;
		NI HEX3Atmp_573853;
		NI LOC2;
		NI res_573856;
		i_573671 = 0;
		HEX3Atmp_573853 = 0;
		LOC2 = 0;
		LOC2 = sonslen_227249(t);
		HEX3Atmp_573853 = (NI32)(LOC2 - 1);
		res_573856 = 0;
		{
			while (1) {
				if (!(res_573856 <= HEX3Atmp_573853)) goto LA4;
				i_573671 = res_573856;
				switch ((*(*t).kindU.S6.Sons->data[i_573671]).Kind) {
				case ((NU8) 20) ... ((NU8) 22):
				{
					res = resizeString(res, (*(*t).kindU.S6.Sons->data[i_573671]).kindU.S3.Strval->Sup.len + 0);
appendString(res, (*(*t).kindU.S6.Sons->data[i_573671]).kindU.S3.Strval);
				}
				break;
				case ((NU8) 3):
				{
					tsym226846* sym;
					sym = (*(*t).kindU.S6.Sons->data[i_573671]).kindU.S4.Sym;
					{
						tloc226830 a;
						trope178009* LOC11;
						NimStringDesc* LOC12;
						if (!((61440 &(1<<(((*sym).Kind)&31)))!=0)) goto LA9;
						memset((void*)(&a), 0, sizeof(a));
						initlocexpr_562352(p, (*t).kindU.S6.Sons->data[i_573671], (&a));
						LOC11 = 0;
						LOC11 = rdloc_560637(a);
						LOC12 = 0;
						LOC12 = ropetostr_178101(LOC11);
						res = resizeString(res, LOC12->Sup.len + 0);
appendString(res, LOC12);
					}
					goto LA7;
					LA9: ;
					{
						trope178009* r;
						NimStringDesc* LOC18;
						r = (*sym).Loc.R;
						{
							if (!(r == NIM_NIL)) goto LA16;
							r = manglename_554667(sym);
							asgnRefNoCycle((void**) (&(*sym).Loc.R), r);
						}
						LA16: ;
						LOC18 = 0;
						LOC18 = ropetostr_178101(r);
						res = resizeString(res, LOC18->Sup.len + 0);
appendString(res, LOC18);
					}
					LA7: ;
				}
				break;
				default:
				{
					internalerror_198987((*(*t).kindU.S6.Sons->data[i_573671]).Info, ((NimStringDesc*) &TMP3997));
				}
				break;
				}
				res_573856 += 1;
			} LA4: ;
		}
	}
	{
		NIM_BOOL LOC22;
		LOC22 = 0;
		LOC22 = isasmstmt;
		if (!(LOC22)) goto LA23;
		LOC22 = ((cc_203434[(ccompiler_203461)- 1].Field20 &(1<<((((NU8) 5))&7)))!=0);
		LA23: ;
		if (!LOC22) goto LA24;
		{
			NimStringDesc* x_573818;
			NI first_573863;
			NI last_573865;
			x_573818 = 0;
			first_573863 = 0;
			last_573865 = 0;
			{
				while (1) {
					NI j;
					{
						while (1) {
							if (!!((((NU8)(res->data[last_573865])) == ((NU8)(0)) || ((NU8)(res->data[last_573865])) == ((NU8)(13)) || ((NU8)(res->data[last_573865])) == ((NU8)(10))))) goto LA30;
							last_573865 += 1;
						} LA30: ;
					}
					x_573818 = copyStrLast(res, first_573863, (NI32)(last_573865 - 1));
					j = 0;
					{
						while (1) {
							if (!(((NU8)(x_573818->data[j])) == ((NU8)(32)) || ((NU8)(x_573818->data[j])) == ((NU8)(9)))) goto LA32;
							j += 1;
						} LA32: ;
					}
					{
						NIM_BOOL LOC35;
						NIM_BOOL LOC36;
						LOC35 = 0;
						LOC36 = 0;
						LOC36 = ((NU8)(x_573818->data[j]) == (NU8)(58));
						if (!(LOC36)) goto LA37;
						LOC36 = ((NU8)(x_573818->data[(NI32)(j + 1)]) == (NU8)(34));
						LA37: ;
						LOC35 = LOC36;
						if (LOC35) goto LA38;
						LOC35 = ((NU8)(x_573818->data[j]) == (NU8)(34));
						LA38: ;
						if (!LOC35) goto LA39;
						app_178060(&result, x_573818);
						app_178060(&result, tnl_175613);
					}
					goto LA33;
					LA39: ;
					{
						if (!!(((NU8)(x_573818->data[j]) == (NU8)(0)))) goto LA42;
						app_178060(&result, ((NimStringDesc*) &TMP3998));
						app_178060(&result, x_573818);
						app_178060(&result, ((NimStringDesc*) &TMP3999));
					}
					goto LA33;
					LA42: ;
					LA33: ;
					{
						if (!((NU8)(res->data[last_573865]) == (NU8)(10))) goto LA46;
						last_573865 += 1;
					}
					goto LA44;
					LA46: ;
					{
						if (!((NU8)(res->data[last_573865]) == (NU8)(13))) goto LA49;
						last_573865 += 1;
						{
							if (!((NU8)(res->data[last_573865]) == (NU8)(10))) goto LA53;
							last_573865 += 1;
						}
						LA53: ;
					}
					goto LA44;
					LA49: ;
					{
						goto LA27;
					}
					LA44: ;
					first_573863 = last_573865;
				}
			} LA27: ;
		}
	}
	goto LA20;
	LA24: ;
	{
		res = resizeString(res, tnl_175613->Sup.len + 0);
appendString(res, tnl_175613);
		result = torope_178076(res);
	}
	LA20: ;
	return result;
}

N_NIMCALL(void, genasmstmt_573899)(tcproc550031* p, tnode226816* t) {
	trope178009* s;
	genlinedir_554435(p, t);
	s = genasmoremitstmt_573652(p, t, NIM_TRUE);
	{
		TY178515 LOC5;
		if (!((*p).Prc == NIM_NIL)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = s;
		appf_178115(&(*(*p).Module).S[(((NU8) 7))- 0], cc_203434[(ccompiler_203461)- 1].Field17, LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY178515 LOC7;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = s;
		linef_554122(p, ((NU8) 2), cc_203434[(ccompiler_203461)- 1].Field17, LOC7, 1);
	}
	LA1: ;
}

static N_INLINE(void, gensimpleblock_567160)(tcproc550031* p, tnode226816* stmts) {
	TY554703 LOC1;
	NI LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = startblock_566985(p, ((NimStringDesc*) &TMP3590), LOC1, 0);
	genstmts_562298(p, stmts);
	endblock_567106(p);
}

N_NIMCALL(void, gentrycpp_572517)(tcproc550031* p, tnode226816* t, tloc226830* d) {
	trope178009* exc;
	NI i;
	NI length;
	NI blen;
	TY554703 LOC16;
	NI LOC17;
	TY178515 LOC18;
	trope178009* LOC19;
	NIM_BOOL catchallpresent;
	TY554703 LOC66;
	tnode226816* LOC67;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_233990((*t).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_559246(p, (*t).Typ, d, NIM_FALSE);
	}
	LA6: ;
	exc = 0;
	i = 0;
	length = 0;
	blen = 0;
	genlinedir_554435(p, t);
	exc = gettempname_555242();
	{
		tsym226846* LOC10;
		trope178009* LOC13;
		LOC10 = 0;
		LOC10 = getcompilerproc_283036(((NimStringDesc*) &TMP4000));
		if (!!((LOC10 == NIM_NIL))) goto LA11;
		LOC13 = 0;
		LOC13 = cgsym_553608((*p).Module, ((NimStringDesc*) &TMP4000));
	}
	goto LA8;
	LA11: ;
	{
		trope178009* LOC15;
		LOC15 = 0;
		LOC15 = cgsym_553608((*p).Module, ((NimStringDesc*) &TMP4001));
	}
	LA8: ;
	(*p).Nestedtrystmts = (tnodeseq226810*) incrSeq(&((*p).Nestedtrystmts)->Sup, sizeof(tnode226816*));
	asgnRefNoCycle((void**) (&(*p).Nestedtrystmts->data[(*p).Nestedtrystmts->Sup.len-1]), t);
	memset((void*)LOC16, 0, sizeof(LOC16));
	LOC17 = 0;
	LOC17 = startblock_566985(p, ((NimStringDesc*) &TMP4002), LOC16, 0);
	expr_562305(p, (*t).kindU.S6.Sons->data[0], d);
	length = sonslen_227249(t);
	memset((void*)LOC18, 0, sizeof(LOC18));
	LOC18[0] = exc;
	LOC19 = 0;
	LOC19 = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP4003), LOC18, 1);
	endblock_567069(p, LOC19);
	{
		TY554703 LOC24;
		if (!(((*p).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA22;
		memset((void*)LOC24, 0, sizeof(LOC24));
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4004), 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_227249((*t).kindU.S6.Sons->data[i]);
			{
				trope178009** LOC33;
				TY554703 LOC34;
				if (!(1 < i)) goto LA31;
				LOC33 = 0;
				LOC33 = s_550183(p, ((NU8) 2));
				memset((void*)LOC34, 0, sizeof(LOC34));
				appf_178115(LOC33, ((NimStringDesc*) &TMP4005), LOC34, 0);
			}
			LA31: ;
			{
				if (!(blen == 1)) goto LA37;
				catchallpresent = NIM_TRUE;
				exprblock_567174(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0], d);
			}
			goto LA35;
			LA37: ;
			{
				trope178009* orexpr;
				TY178515 LOC48;
				orexpr = NIM_NIL;
				{
					NI j_572716;
					NI HEX3Atmp_573036;
					NI res_573039;
					j_572716 = 0;
					HEX3Atmp_573036 = 0;
					HEX3Atmp_573036 = (NI32)(blen - 2);
					res_573039 = 0;
					{
						while (1) {
							TY589896 LOC47;
							if (!(res_573039 <= HEX3Atmp_573036)) goto LA42;
							j_572716 = res_573039;
							{
								if (!!((orexpr == NIM_NIL))) goto LA45;
								app_178060(&orexpr, ((NimStringDesc*) &TMP3958));
							}
							LA45: ;
							memset((void*)LOC47, 0, sizeof(LOC47));
							LOC47[0] = exc;
							LOC47[1] = gentypeinfo_557602((*p).Module, (*(*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[j_572716]).Typ);
							appcg_554004((*p).Module, &orexpr, ((NimStringDesc*) &TMP4006), LOC47, 2);
							res_573039 += 1;
						} LA42: ;
					}
				}
				memset((void*)LOC48, 0, sizeof(LOC48));
				LOC48[0] = orexpr;
				linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP4007), LOC48, 1);
				exprblock_567174(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[(NI32)(blen - 1)], d);
			}
			LA35: ;
			i += 1;
		} LA26: ;
	}
	{
		TY554703 LOC58;
		NI LOC59;
		tnode226816* finallyblock;
		TY554703 LOC64;
		trope178009* LOC65;
		if (!!(catchallpresent)) goto LA51;
		{
			TY554703 LOC57;
			if (!(1 < i)) goto LA55;
			memset((void*)LOC57, 0, sizeof(LOC57));
			linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP4005), LOC57, 0);
		}
		LA55: ;
		memset((void*)LOC58, 0, sizeof(LOC58));
		LOC59 = 0;
		LOC59 = startblock_566985(p, ((NimStringDesc*) &TMP3590), LOC58, 0);
		finallyblock = lastson_227261(t);
		{
			if (!((*finallyblock).Kind == ((NU8) 107))) goto LA62;
			genstmts_562298(p, (*finallyblock).kindU.S6.Sons->data[0]);
		}
		LA62: ;
		memset((void*)LOC64, 0, sizeof(LOC64));
		LOC65 = 0;
		LOC65 = ropef_178107(((NimStringDesc*) &TMP4008), LOC64, 0);
		line_554100(p, ((NU8) 2), LOC65);
		endblock_567106(p);
	}
	LA51: ;
	memset((void*)LOC66, 0, sizeof(LOC66));
	linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3505), LOC66, 0);
	(*p).Inexceptblock -= 1;
	LOC67 = 0;
	LOC67 = pop_568744((&(*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_567160(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0]);
	}
	LA72: ;
}

N_NIMCALL(void, line_554111)(tcproc550031* p, NU8 s, NimStringDesc* r) {
	trope178009** LOC1;
	trope178009* LOC2;
	trope178009* LOC3;
	LOC1 = 0;
	LOC1 = s_550183(p, s);
	LOC2 = 0;
	LOC2 = torope_178076(r);
	LOC3 = 0;
	LOC3 = indentline_554049(p, LOC2);
	app_178052(LOC1, LOC3);
}

static N_INLINE(trope178009*, pop_178533)(TY196552** s_178541) {
	trope178009* result;
	NI l;
	result = 0;
	l = (NI32)((*s_178541)->Sup.len - 1);
	result = (*s_178541)->data[l];
	(*s_178541) = (TY196552*) setLengthSeq(&((*s_178541))->Sup, sizeof(trope178009*), l);
	return result;
}

N_NIMCALL(void, gentry_573059)(tcproc550031* p, tnode226816* t, tloc226830* d) {
	NIM_BOOL LOC8;
	trope178009* safepoint;
	TY178515 LOC17;
	TY178515 LOC18;
	TY178515 LOC37;
	NI LOC38;
	NI length;
	TY554703 LOC39;
	TY554703 LOC40;
	NI LOC41;
	TY554703 LOC42;
	NI i;
	tnode226816* LOC82;
	TY178515 LOC90;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = isemptytype_233990((*t).Typ);
		LOC3 = !(LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = ((*d).K == ((NU8) 0));
		LA5: ;
		if (!LOC3) goto LA6;
		gettemp_559246(p, (*t).Typ, d, NIM_FALSE);
	}
	LA6: ;
	LOC8 = 0;
	LOC8 = includestr_127297((&(*(*p).Module).Headerfiles), ((NimStringDesc*) &TMP4009));
	genlinedir_554435(p, t);
	safepoint = gettempname_555242();
	{
		tsym226846* LOC11;
		trope178009* LOC14;
		LOC11 = 0;
		LOC11 = getcompilerproc_283036(((NimStringDesc*) &TMP4000));
		if (!!((LOC11 == NIM_NIL))) goto LA12;
		LOC14 = 0;
		LOC14 = cgsym_553608((*p).Module, ((NimStringDesc*) &TMP4000));
	}
	goto LA9;
	LA12: ;
	{
		trope178009* LOC16;
		LOC16 = 0;
		LOC16 = cgsym_553608((*p).Module, ((NimStringDesc*) &TMP4001));
	}
	LA9: ;
	memset((void*)LOC17, 0, sizeof(LOC17));
	LOC17[0] = safepoint;
	linefmt_554148(p, ((NU8) 0), ((NimStringDesc*) &TMP4010), LOC17, 1);
	memset((void*)LOC18, 0, sizeof(LOC18));
	LOC18[0] = safepoint;
	linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4011), LOC18, 1);
	{
		NIM_BOOL LOC21;
		TY178515 LOC24;
		LOC21 = 0;
		LOC21 = isdefined_202036(((NimStringDesc*) &TMP4012));
		if (!LOC21) goto LA22;
		memset((void*)LOC24, 0, sizeof(LOC24));
		LOC24[0] = safepoint;
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4013), LOC24, 1);
	}
	goto LA19;
	LA22: ;
	{
		NIM_BOOL LOC26;
		TY178515 LOC29;
		LOC26 = 0;
		LOC26 = isdefined_202036(((NimStringDesc*) &TMP4014));
		if (!LOC26) goto LA27;
		memset((void*)LOC29, 0, sizeof(LOC29));
		LOC29[0] = safepoint;
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4015), LOC29, 1);
	}
	goto LA19;
	LA27: ;
	{
		NIM_BOOL LOC31;
		TY178515 LOC34;
		LOC31 = 0;
		LOC31 = isdefined_202036(((NimStringDesc*) &TMP4016));
		if (!LOC31) goto LA32;
		memset((void*)LOC34, 0, sizeof(LOC34));
		LOC34[0] = safepoint;
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4017), LOC34, 1);
	}
	goto LA19;
	LA32: ;
	{
		TY178515 LOC36;
		memset((void*)LOC36, 0, sizeof(LOC36));
		LOC36[0] = safepoint;
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4013), LOC36, 1);
	}
	LA19: ;
	memset((void*)LOC37, 0, sizeof(LOC37));
	LOC37[0] = safepoint;
	LOC38 = 0;
	LOC38 = startblock_566985(p, ((NimStringDesc*) &TMP4018), LOC37, 1);
	length = sonslen_227249(t);
	(*p).Nestedtrystmts = (tnodeseq226810*) incrSeq(&((*p).Nestedtrystmts)->Sup, sizeof(tnode226816*));
	asgnRefNoCycle((void**) (&(*p).Nestedtrystmts->data[(*p).Nestedtrystmts->Sup.len-1]), t);
	expr_562305(p, (*t).kindU.S6.Sons->data[0], d);
	memset((void*)LOC39, 0, sizeof(LOC39));
	linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3989), LOC39, 0);
	endblock_567106(p);
	memset((void*)LOC40, 0, sizeof(LOC40));
	LOC41 = 0;
	LOC41 = startblock_566985(p, ((NimStringDesc*) &TMP4019), LOC40, 0);
	memset((void*)LOC42, 0, sizeof(LOC42));
	linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3989), LOC42, 0);
	{
		TY554703 LOC47;
		if (!(((*p).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA45;
		memset((void*)LOC47, 0, sizeof(LOC47));
		linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4004), 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_227249((*t).kindU.S6.Sons->data[i]);
			{
				TY554703 LOC61;
				NI LOC62;
				TY178515 LOC63;
				TY554703 LOC64;
				if (!(blen == 1)) goto LA54;
				{
					TY554703 LOC60;
					if (!(1 < i)) goto LA58;
					memset((void*)LOC60, 0, sizeof(LOC60));
					linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP4020), LOC60, 0);
				}
				LA58: ;
				memset((void*)LOC61, 0, sizeof(LOC61));
				LOC62 = 0;
				LOC62 = startblock_566985(p, ((NimStringDesc*) &TMP3590), LOC61, 0);
				memset((void*)LOC63, 0, sizeof(LOC63));
				LOC63[0] = safepoint;
				linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4021), LOC63, 1);
				expr_562305(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0], d);
				memset((void*)LOC64, 0, sizeof(LOC64));
				linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3990), LOC64, 0);
				endblock_567106(p);
			}
			goto LA52;
			LA54: ;
			{
				trope178009* orexpr;
				TY178515 LOC78;
				NI LOC79;
				TY178515 LOC80;
				TY554703 LOC81;
				orexpr = NIM_NIL;
				{
					NI j_573314;
					NI HEX3Atmp_573629;
					NI res_573632;
					j_573314 = 0;
					HEX3Atmp_573629 = 0;
					HEX3Atmp_573629 = (NI32)(blen - 2);
					res_573632 = 0;
					{
						while (1) {
							TY178515 LOC73;
							if (!(res_573632 <= HEX3Atmp_573629)) goto LA68;
							j_573314 = res_573632;
							{
								if (!!((orexpr == NIM_NIL))) goto LA71;
								app_178060(&orexpr, ((NimStringDesc*) &TMP3958));
							}
							LA71: ;
							memset((void*)LOC73, 0, sizeof(LOC73));
							LOC73[0] = gentypeinfo_557602((*p).Module, (*(*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[j_573314]).Typ);
							appcg_554004((*p).Module, &orexpr, ((NimStringDesc*) &TMP4022), LOC73, 1);
							res_573632 += 1;
						} LA68: ;
					}
				}
				{
					if (!(1 < i)) goto LA76;
					line_554111(p, ((NU8) 2), ((NimStringDesc*) &TMP4005));
				}
				LA76: ;
				memset((void*)LOC78, 0, sizeof(LOC78));
				LOC78[0] = orexpr;
				LOC79 = 0;
				LOC79 = startblock_566985(p, ((NimStringDesc*) &TMP4023), LOC78, 1);
				memset((void*)LOC80, 0, sizeof(LOC80));
				LOC80[0] = safepoint;
				linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4021), LOC80, 1);
				expr_562305(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[(NI32)(blen - 1)], d);
				memset((void*)LOC81, 0, sizeof(LOC81));
				linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP3990), LOC81, 0);
				endblock_567106(p);
			}
			LA52: ;
			i += 1;
		} LA49: ;
	}
	(*p).Inexceptblock -= 1;
	LOC82 = 0;
	LOC82 = pop_568744((&(*p).Nestedtrystmts));
	endblock_567106(p);
	{
		NIM_BOOL LOC85;
		trope178009* 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 = (TY196552*) incrSeq(&((*p).Finallysafepoints)->Sup, sizeof(trope178009*));
		asgnRefNoCycle((void**) (&(*p).Finallysafepoints->data[(*p).Finallysafepoints->Sup.len-1]), safepoint);
		gensimpleblock_567160(p, (*(*t).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0]);
		LOC89 = 0;
		LOC89 = pop_178533((&(*p).Finallysafepoints));
	}
	LA87: ;
	memset((void*)LOC90, 0, sizeof(LOC90));
	LOC90[0] = safepoint;
	linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4024), LOC90, 1);
}

N_NIMCALL(NimStringDesc*, getraisefrmt_570641)(tcproc550031* p) {
	NimStringDesc* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_170120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		result = copyString(((NimStringDesc*) &TMP4025));
	}
	goto LA1;
	LA5: ;
	{
		tsym226846* LOC8;
		LOC8 = 0;
		LOC8 = getcompilerproc_283036(((NimStringDesc*) &TMP4000));
		if (!!((LOC8 == NIM_NIL))) goto LA9;
		result = copyString(((NimStringDesc*) &TMP4026));
	}
	goto LA1;
	LA9: ;
	{
		result = copyString(((NimStringDesc*) &TMP4027));
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genraisestmt_570687)(tcproc550031* p, tnode226816* t) {
	{
		tnode226816* finallyblock;
		if (!(0 < (*p).Inexceptblock)) goto LA3;
		finallyblock = lastson_227261((*p).Nestedtrystmts->data[(NI32)((*p).Nestedtrystmts->Sup.len - 1)]);
		{
			if (!((*finallyblock).Kind == ((NU8) 107))) goto LA7;
			gensimpleblock_567160(p, (*finallyblock).kindU.S6.Sons->data[0]);
		}
		LA7: ;
	}
	LA3: ;
	{
		tloc226830 a;
		trope178009* e;
		ttype226852* typ;
		NimStringDesc* LOC13;
		TY589896 LOC14;
		if (!!(((*(*t).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA11;
		memset((void*)(&a), 0, sizeof(a));
		initlocexpr_562352(p, (*t).kindU.S6.Sons->data[0], (&a));
		e = rdloc_560637(a);
		typ = skiptypes_231245((*(*t).kindU.S6.Sons->data[0]).Typ, IL64(211106247256320));
		genlinedir_554435(p, t);
		LOC13 = 0;
		LOC13 = getraisefrmt_570641(p);
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = e;
		LOC14[1] = makecstring_196659((*(*(*typ).Sym).Name).S);
		linecg_554135(p, ((NU8) 2), LOC13, LOC14, 2);
	}
	goto LA9;
	LA11: ;
	{
		genlinedir_554435(p, t);
		{
			NIM_BOOL LOC18;
			TY554703 LOC22;
			trope178009* LOC23;
			LOC18 = 0;
			LOC18 = (gcmd_170120 == ((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_178107(((NimStringDesc*) &TMP4008), LOC22, 0);
			line_554100(p, ((NU8) 2), LOC23);
		}
		goto LA16;
		LA20: ;
		{
			TY554703 LOC25;
			memset((void*)LOC25, 0, sizeof(LOC25));
			linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4028), LOC25, 0);
		}
		LA16: ;
	}
	LA9: ;
}

N_NIMCALL(void, gentypesection_560627)(tcgen550035* m, tnode226816* n) {
}

N_NIMCALL(void, genemit_574031)(tcproc550031* p, tnode226816* t) {
	trope178009* s;
	genlinedir_554435(p, t);
	s = genasmoremitstmt_573652(p, (*t).kindU.S6.Sons->data[1], NIM_FALSE);
	{
		if (!((*p).Prc == NIM_NIL)) goto LA3;
		app_178052(&(*(*p).Module).S[(((NU8) 7))- 0], s);
	}
	goto LA1;
	LA3: ;
	{
		line_554100(p, ((NU8) 2), s);
	}
	LA1: ;
}

N_NIMCALL(void, genbreakpoint_574073)(tcproc550031* p, tnode226816* t) {
	NimStringDesc* name;
	name = 0;
	{
		TY555018 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_574071 += 1;
			LOC10 = 0;
			LOC11 = 0;
			LOC11 = nimIntToStr(breakpointid_574071);
			LOC10 = rawNewString(LOC11->Sup.len + 2);
appendString(LOC10, ((NimStringDesc*) &TMP4029));
appendString(LOC10, LOC11);
			name = LOC10;
		}
		LA5: ;
		genlinedir_554435(p, t);
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC13 = 0;
		LOC13 = tolinenumber_198073((*t).Info);
		LOC12[0] = torope_178082(((NI64) (LOC13)));
		LOC14 = 0;
		LOC14 = tofilename_198025((*t).Info.Fileindex);
		LOC12[1] = makecstring_196659(LOC14);
		LOC12[2] = makecstring_196659(name);
		appcg_554004((*p).Module, &gbreakpoints_574072, ((NimStringDesc*) &TMP4030), LOC12, 3);
	}
	LA3: ;
}

N_NIMCALL(void, genwatchpoint_574250)(tcproc550031* p, tnode226816* n) {
	tloc226830 a;
	ttype226852* typ;
	TY555018 LOC5;
	NimStringDesc* LOC6;
	{
		if (!!((((*p).Options &(1<<((((NU8) 17))&31)))!=0))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*n).kindU.S6.Sons->data[1], (&a));
	typ = skiptypes_231245((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = addrloc_560664(a);
	LOC6 = 0;
	LOC6 = rendertree_251058((*n).kindU.S6.Sons->data[1], 0);
	LOC5[1] = makecstring_196659(LOC6);
	LOC5[2] = gentypeinfo_557602((*p).Module, typ);
	linecg_554135(p, ((NU8) 2), ((NimStringDesc*) &TMP4031), LOC5, 3);
	BeforeRet: ;
}

N_NIMCALL(void, genpragma_574320)(tcproc550031* p_574322, tnode226816* n) {
	{
		NI i_574336;
		NI HEX3Atmp_574386;
		NI LOC2;
		NI res_574389;
		i_574336 = 0;
		HEX3Atmp_574386 = 0;
		LOC2 = 0;
		LOC2 = sonslen_227249(n);
		HEX3Atmp_574386 = (NI32)(LOC2 - 1);
		res_574389 = 0;
		{
			while (1) {
				tnode226816* it;
				NU8 LOC5;
				if (!(res_574389 <= HEX3Atmp_574386)) goto LA4;
				i_574336 = res_574389;
				it = (*n).kindU.S6.Sons->data[i_574336];
				LOC5 = 0;
				LOC5 = whichpragma_263304(it);
				switch (LOC5) {
				case ((NU8) 184):
				{
					genemit_574031(p_574322, it);
				}
				break;
				case ((NU8) 125):
				{
					genbreakpoint_574073(p_574322, it);
				}
				break;
				case ((NU8) 169):
				{
					genwatchpoint_574250(p_574322, it);
				}
				break;
				case ((NU8) 176):
				{
					tcproc550031* p;
					trope178009** LOC10;
					p = newproc_550230(NIM_NIL, (*p_574322).Module);
					(*p).Options = ((*p).Options & ~ 98304);
					genstmts_562298(p, (*it).kindU.S6.Sons->data[1]);
					LOC10 = 0;
					LOC10 = s_550183(p, ((NU8) 2));
					unsureAsgnRef((void**) (&(*(*p).Module).Injectstmt), (*LOC10));
				}
				break;
				default:
				{
				}
				break;
				}
				res_574389 += 1;
			} LA4: ;
		}
	}
}

N_NIMCALL(void, genparforstmt_570047)(tcproc550031* p, tnode226816* t) {
	NI oldbreakidx_570214;
	tsym226846* forloopvar;
	tloc226830 rangea;
	tloc226830 rangeb;
	tnode226816* call;
	TY557045 LOC1;
	NimStringDesc* LOC2;
	TY554703 LOC3;
	(*p).Withinloop += 1;
	genlinedir_554435(p, t);
	oldbreakidx_570214 = (*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_561577(p, forloopvar);
	call = (*t).kindU.S6.Sons->data[1];
	initlocexpr_562352(p, (*call).kindU.S6.Sons->data[1], (&rangea));
	initlocexpr_562352(p, (*call).kindU.S6.Sons->data[2], (&rangeb));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_560637((*forloopvar).Loc);
	LOC1[1] = rdloc_560637(rangea);
	LOC1[2] = rdloc_560637(rangeb);
	LOC2 = 0;
	LOC2 = getstr_233587((*call).kindU.S6.Sons->data[3]);
	LOC1[3] = torope_178076(LOC2);
	linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP4032), LOC1, 4);
	memset((void*)LOC3, 0, sizeof(LOC3));
	(*p).Breakidx = startblock_566985(p, ((NimStringDesc*) &TMP3590), LOC3, 0);
	(*p).Blocks->data[(*p).Breakidx].Isloop = NIM_TRUE;
	genstmts_562298(p, (*t).kindU.S6.Sons->data[2]);
	endblock_567106(p);
	(*p).Breakidx = oldbreakidx_570214;
	(*p).Withinloop -= 1;
}

N_NIMCALL(void, genstate_567194)(tcproc550031* p, tnode226816* n) {
	NI64 idx;
	TY178515 LOC9;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NimStringDesc* LOC8;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = len_227364(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_199126(TMP4033);
		internalerror_199006(LOC8);
	}
	LA6: ;
	idx = (*(*n).kindU.S6.Sons->data[0]).kindU.S1.Intval;
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC9[0] = torope_178082(idx);
	linefmt_554148(p, ((NU8) 2), ((NimStringDesc*) &TMP4035), LOC9, 1);
}

N_NIMCALL(void, gengotostate_567287)(tcproc550031* p, tnode226816* n) {
	tloc226830 a;
	TY178515 LOC1;
	TY554703 LOC2;
	TY554703 LOC7;
	memset((void*)(&a), 0, sizeof(a));
	initlocexpr_562352(p, (*n).kindU.S6.Sons->data[0], (&a));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_560637(a);
	linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3987), LOC1, 1);
	(*p).Beforeretneeded = NIM_TRUE;
	memset((void*)LOC2, 0, sizeof(LOC2));
	linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP4036), LOC2, 0);
	{
		NI64 i_567367;
		NI64 HEX3Atmp_567381;
		NI64 res_567384;
		i_567367 = 0;
		HEX3Atmp_567381 = 0;
		HEX3Atmp_567381 = lastord_264010((*(*n).kindU.S6.Sons->data[0]).Typ);
		res_567384 = IL64(0);
		{
			while (1) {
				TY178515 LOC6;
				if (!(res_567384 <= HEX3Atmp_567381)) goto LA5;
				i_567367 = res_567384;
				memset((void*)LOC6, 0, sizeof(LOC6));
				LOC6[0] = torope_178082(i_567367);
				linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP4037), LOC6, 1);
				res_567384 += 1;
			} LA5: ;
		}
	}
	memset((void*)LOC7, 0, sizeof(LOC7));
	linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP3505), LOC7, 0);
}

N_NIMCALL(void, genbreakstate_567398)(tcproc550031* p, tnode226816* n) {
	tloc226830 a;
	memset((void*)(&a), 0, sizeof(a));
	{
		TY178515 LOC5;
		if (!((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 154))) goto LA3;
		initlocexpr_562352(p, (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1], (&a));
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_560637(a);
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP4038), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY178515 LOC7;
		initlocexpr_562352(p, (*n).kindU.S6.Sons->data[0], (&a));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = rdloc_560637(a);
		linef_554122(p, ((NU8) 2), ((NimStringDesc*) &TMP4039), LOC7, 1);
	}
	LA1: ;
}

N_NIMCALL(void, expr_562305)(tcproc550031* p, tnode226816* n, tloc226830* d) {
	switch ((*n).Kind) {
	case ((NU8) 3):
	{
		tsym226846* sym;
		sym = (*n).kindU.S4.Sym;
		switch ((*sym).Kind) {
		case ((NU8) 13):
		{
			{
				NIM_BOOL LOC5;
				tnode226816* LOC6;
				LOC5 = 0;
				LOC6 = 0;
				LOC6 = getbody_280270(sym);
				LOC5 = ((*LOC6).Kind == ((NU8) 1));
				if (LOC5) goto LA7;
				LOC5 = (((*sym).Flags &(1<<((((NU8) 25))&31)))!=0);
				LA7: ;
				if (!LOC5) goto LA8;
				fillprocloc_562229(sym);
				genprocprototype_562314((*p).Module, sym);
			}
			goto LA3;
			LA8: ;
			{
				genproc_554629((*p).Module, sym);
			}
			LA3: ;
			putlocintodest_562321(p, d, (*sym).Loc);
		}
		break;
		case ((NU8) 12):
		case ((NU8) 16):
		case ((NU8) 14):
		case ((NU8) 15):
		{
			genproc_554629((*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*) &TMP3586));
appendString(LOC18, (*(*sym).Name).S);
				internalerror_198987((*n).Info, LOC18);
			}
			LA16: ;
			putlocintodest_562321(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_562284((*p).Module, sym);
				}
				LA26: ;
				putlocintodest_562321(p, d, (*sym).Loc);
			}
			goto LA20;
			LA22: ;
			{
				NIM_BOOL LOC29;
				trope178009* LOC32;
				LOC29 = 0;
				LOC29 = issimpleconst_553416((*sym).Typ);
				if (!LOC29) goto LA30;
				LOC32 = 0;
				LOC32 = genliteral_575007(p, (*sym).Ast, (*sym).Typ);
				putintodest_576476(p, d, (*n).Typ, LOC32);
			}
			goto LA20;
			LA30: ;
			{
				gencomplexconst_586731(p, sym, d);
			}
			LA20: ;
		}
		break;
		case ((NU8) 20):
		{
			trope178009* LOC35;
			LOC35 = 0;
			LOC35 = torope_178082(((NI64) ((*sym).Position)));
			putintodest_576476(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_562284((*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*) &TMP3604));
appendString(LOC47, (*(*sym).Name).S);
appendString(LOC47, ((NimStringDesc*) &TMP3365));
appendString(LOC47, LOC48);
				internalerror_198987((*n).Info, LOC47);
			}
			LA45: ;
			{
				if (!(((*sym).Flags &(1<<((((NU8) 22))&31)))!=0)) goto LA51;
				accessthreadlocalvar_554617(p, sym);
				{
					NIM_BOOL LOC55;
					trope178009* LOC58;
					LOC55 = 0;
					LOC55 = emulatedthreadvars_554624();
					if (!LOC55) goto LA56;
					LOC58 = 0;
					LOC58 = con_178038(((NimStringDesc*) &TMP3607), (*sym).Loc.R);
					putintodest_576476(p, d, (*sym).Loc.T, LOC58);
				}
				goto LA53;
				LA56: ;
				{
					putlocintodest_562321(p, d, (*sym).Loc);
				}
				LA53: ;
			}
			goto LA49;
			LA51: ;
			{
				putlocintodest_562321(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*) &TMP3608));
appendString(LOC68, (*(*sym).Name).S);
appendString(LOC68, ((NimStringDesc*) &TMP3365));
appendString(LOC68, LOC69);
				internalerror_198987((*n).Info, LOC68);
			}
			LA66: ;
			putlocintodest_562321(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*) &TMP3609));
appendString(LOC77, (*(*sym).Name).S);
appendString(LOC77, ((NimStringDesc*) &TMP3365));
appendString(LOC77, LOC78);
				internalerror_198987((*n).Info, LOC77);
			}
			LA75: ;
			putlocintodest_562321(p, d, (*sym).Loc);
		}
		break;
		default:
		{
			NimStringDesc* LOC80;
			LOC80 = 0;
			LOC80 = rawNewString(reprEnum((*sym).Kind, (&NTI226445))->Sup.len + 22);
appendString(LOC80, ((NimStringDesc*) &TMP3610));
appendString(LOC80, reprEnum((*sym).Kind, (&NTI226445)));
appendString(LOC80, ((NimStringDesc*) &TMP3611));
			internalerror_198987((*n).Info, LOC80);
		}
		break;
		}
	}
	break;
	case ((NU8) 23):
	{
		{
			NIM_BOOL LOC84;
			trope178009* LOC87;
			LOC84 = 0;
			LOC84 = isemptytype_233990((*n).Typ);
			if (!!(LOC84)) goto LA85;
			LOC87 = 0;
			LOC87 = genliteral_562345(p, n);
			putintodest_576476(p, d, (*n).Typ, LOC87);
		}
		LA85: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		trope178009* LOC89;
		LOC89 = 0;
		LOC89 = genliteral_562345(p, n);
		putdataintodest_576438(p, d, (*n).Typ, LOC89);
	}
	break;
	case ((NU8) 6) ... ((NU8) 15):
	case ((NU8) 16) ... ((NU8) 19):
	case ((NU8) 5):
	{
		trope178009* LOC91;
		LOC91 = 0;
		LOC91 = genliteral_562345(p, n);
		putintodest_576476(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):
	{
		tnode226816* op;
		genlinedir_554435(p, n);
		op = (*n).kindU.S6.Sons->data[0];
		{
			tloc226830 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_585474(p, n, (&a), (*(*op).kindU.S4.Sym).Magic);
			}
			goto LA97;
			LA101: ;
			{
				gencall_566235(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_585474(p, n, d, (*(*op).kindU.S4.Sym).Magic);
			}
			goto LA105;
			LA109: ;
			{
				gencall_566235(p, n, d);
			}
			LA105: ;
		}
		LA93: ;
	}
	break;
	case ((NU8) 39):
	{
		{
			NIM_BOOL LOC115;
			NI LOC117;
			trope178009* LOC120;
			LOC115 = 0;
			LOC115 = isdeepconstexpr_262958(n);
			if (!(LOC115)) goto LA116;
			LOC117 = 0;
			LOC117 = len_227364(n);
			LOC115 = !((LOC117 == 0));
			LA116: ;
			if (!LOC115) goto LA118;
			LOC120 = 0;
			LOC120 = gensetnode_575497(p, n);
			putintodest_576476(p, d, (*n).Typ, LOC120);
		}
		goto LA113;
		LA118: ;
		{
			gensetconstr_585832(p, n, d);
		}
		LA113: ;
	}
	break;
	case ((NU8) 41):
	{
		{
			NIM_BOOL LOC125;
			NI LOC127;
			LOC125 = 0;
			LOC125 = isdeepconstexpr_262958(n);
			if (!(LOC125)) goto LA126;
			LOC127 = 0;
			LOC127 = len_227364(n);
			LOC125 = !((LOC127 == 0));
			LA126: ;
			if (!LOC125) goto LA128;
			exprcomplexconst_587230(p, n, d);
		}
		goto LA123;
		LA128: ;
		{
			ttype226852* LOC131;
			LOC131 = 0;
			LOC131 = skiptypes_231245((*n).Typ, IL64(211106242013440));
			if (!((*LOC131).Kind == ((NU8) 24))) goto LA132;
			genseqconstr_582162(p, n, d);
		}
		goto LA123;
		LA132: ;
		{
			genarrayconstr_586663(p, n, d);
		}
		LA123: ;
	}
	break;
	case ((NU8) 37):
	{
		{
			NIM_BOOL LOC138;
			NI LOC140;
			LOC138 = 0;
			LOC138 = isdeepconstexpr_262958(n);
			if (!(LOC138)) goto LA139;
			LOC140 = 0;
			LOC140 = len_227364(n);
			LOC138 = !((LOC140 == 0));
			LA139: ;
			if (!LOC138) goto LA141;
			exprcomplexconst_587230(p, n, d);
		}
		goto LA136;
		LA141: ;
		{
			gentupleconstr_586145(p, n, d);
		}
		LA136: ;
	}
	break;
	case ((NU8) 38):
	{
		genobjconstr_581896(p, n, d);
	}
	break;
	case ((NU8) 61):
	{
		gencast_584476(p, n, d);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	{
		genconv_584707(p, n, d);
	}
	break;
	case ((NU8) 64):
	case ((NU8) 63):
	{
		genaddr_579115(p, n, d);
	}
	break;
	case ((NU8) 42):
	{
		genbracketexpr_580781(p, n, d);
	}
	break;
	case ((NU8) 47):
	case ((NU8) 65):
	{
		genderef_566881(p, n, d, NIM_FALSE);
	}
	break;
	case ((NU8) 45):
	{
		genrecordfield_579442(p, n, d);
	}
	break;
	case ((NU8) 46):
	{
		gencheckedrecordfield_580280(p, n, d);
	}
	break;
	case ((NU8) 127):
	case ((NU8) 112):
	{
		genblock_569796(p, n, d);
	}
	break;
	case ((NU8) 126):
	{
		genstmtlistexpr_586804(p, n, d);
	}
	break;
	case ((NU8) 115):
	{
		{
			NI i_587649;
			NI HEX3Atmp_587993;
			NI LOC156;
			NI res_587996;
			i_587649 = 0;
			HEX3Atmp_587993 = 0;
			LOC156 = 0;
			LOC156 = sonslen_227249(n);
			HEX3Atmp_587993 = (NI32)(LOC156 - 1);
			res_587996 = 0;
			{
				while (1) {
					if (!(res_587996 <= HEX3Atmp_587993)) goto LA158;
					i_587649 = res_587996;
					genstmts_562298(p, (*n).kindU.S6.Sons->data[i_587649]);
					res_587996 += 1;
				} LA158: ;
			}
		}
	}
	break;
	case ((NU8) 48):
	case ((NU8) 92):
	{
		genif_568223(p, n, d);
	}
	break;
	case ((NU8) 66):
	{
		downconv_587061(p, n, d);
	}
	break;
	case ((NU8) 67):
	{
		upconv_586871(p, n, d);
	}
	break;
	case ((NU8) 68):
	{
		genrangechck_584573(p, n, d, ((NimStringDesc*) &TMP3940));
	}
	break;
	case ((NU8) 69):
	{
		genrangechck_584573(p, n, d, ((NimStringDesc*) &TMP3941));
	}
	break;
	case ((NU8) 70):
	{
		genrangechck_584573(p, n, d, ((NimStringDesc*) &TMP3942));
	}
	break;
	case ((NU8) 71):
	{
		convstrtocstr_584744(p, n, d);
	}
	break;
	case ((NU8) 72):
	{
		convcstrtostr_584774(p, n, d);
	}
	break;
	case ((NU8) 51):
	case ((NU8) 52):
	{
		tsym226846* sym;
		sym = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		genproc_554629((*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*) &TMP3586));
appendString(LOC174, (*(*sym).Name).S);
			internalerror_198987((*n).Info, LOC174);
		}
		LA172: ;
		putlocintodest_562321(p, d, (*sym).Loc);
	}
	break;
	case ((NU8) 154):
	{
		genclosure_586501(p, n, d);
	}
	break;
	case ((NU8) 1):
	{
	}
	break;
	case ((NU8) 96):
	{
		genwhilestmt_569503(p, n);
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		genvarstmt_567830(p, n);
	}
	break;
	case ((NU8) 101):
	{
		genconststmt_567925(p, n);
	}
	break;
	case ((NU8) 94):
	{
		internalerror_198987((*n).Info, ((NimStringDesc*) &TMP3979));
	}
	break;
	case ((NU8) 97):
	{
		gencase_572418(p, n, d);
	}
	break;
	case ((NU8) 109):
	{
		genreturnstmt_568948(p, n);
	}
	break;
	case ((NU8) 110):
	{
		genbreakstmt_570347(p, n);
	}
	break;
	case ((NU8) 73):
	{
		genasgn_574740(p, n, NIM_FALSE);
	}
	break;
	case ((NU8) 74):
	{
		genasgn_574740(p, n, !(((*p).Prc == NIM_NIL)));
	}
	break;
	case ((NU8) 114):
	{
		{
			tloc226830 a;
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA189;
			memset((void*)(&a), 0, sizeof(a));
			genlinedir_554435(p, n);
			initlocexpr_562352(p, (*n).kindU.S6.Sons->data[0], (&a));
		}
		LA189: ;
	}
	break;
	case ((NU8) 89):
	{
		genasmstmt_573899(p, n);
	}
	break;
	case ((NU8) 106):
	{
		{
			NIM_BOOL LOC195;
			LOC195 = 0;
			LOC195 = (gcmd_170120 == ((NU8) 2));
			if (LOC195) goto LA196;
			LOC195 = (((*(*(*p).Module).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
			LA196: ;
			if (!LOC195) goto LA197;
			gentrycpp_572517(p, n, d);
		}
		goto LA193;
		LA197: ;
		{
			gentry_573059(p, n, d);
		}
		LA193: ;
	}
	break;
	case ((NU8) 108):
	{
		genraisestmt_570687(p, n);
	}
	break;
	case ((NU8) 98):
	{
		gentypesection_560627((*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_574320(p, n);
	}
	break;
	case ((NU8) 91):
	{
		tnode226816* LOC205;
		LOC205 = 0;
		LOC205 = lastson_227261(n);
		expr_562305(p, LOC205, d);
	}
	break;
	case ((NU8) 79):
	case ((NU8) 80):
	case ((NU8) 81):
	{
		{
			tsym226846* prc;
			if (!((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 1))) goto LA209;
			prc = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
			{
				tsym226846* LOC213;
				LOC213 = 0;
				LOC213 = skipgenericowner_233698(prc);
				if (!((*LOC213).Kind == ((NU8) 6))) goto LA214;
				{
					NIM_BOOL LOC218;
					NIM_BOOL LOC219;
					NIM_BOOL LOC220;
					NIM_BOOL LOC221;
					tsym226846* LOC223;
					NIM_BOOL LOC226;
					LOC218 = 0;
					LOC219 = 0;
					LOC220 = 0;
					LOC221 = 0;
					LOC221 = !(((gglobaloptions_170118 &(1<<((((NU8) 2))&31)))!=0));
					if (!(LOC221)) goto LA222;
					LOC223 = 0;
					LOC223 = getmodule_236243(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;
						tnode226816* LOC234;
						LOC233 = 0;
						LOC234 = 0;
						LOC234 = getbody_280270(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_554629((*p).Module, prc);
					}
					LA236: ;
				}
				LA229: ;
			}
			LA214: ;
		}
		LA209: ;
	}
	break;
	case ((NU8) 95):
	{
		genparforstmt_570047(p, n);
	}
	break;
	case ((NU8) 156):
	{
		genstate_567194(p, n);
	}
	break;
	case ((NU8) 155):
	{
		gengotostate_567287(p, n);
	}
	break;
	case ((NU8) 157):
	{
		genbreakstate_567398(p, n);
	}
	break;
	default:
	{
		NimStringDesc* LOC243;
		LOC243 = 0;
		LOC243 = rawNewString(reprEnum((*n).Kind, (&NTI226029))->Sup.len + 25);
appendString(LOC243, ((NimStringDesc*) &TMP3610));
appendString(LOC243, reprEnum((*n).Kind, (&NTI226029)));
appendString(LOC243, ((NimStringDesc*) &TMP4040));
		internalerror_198987((*n).Info, LOC243);
	}
	break;
	}
}

N_NIMCALL(void, genstmts_562298)(tcproc550031* p, tnode226816* t) {
	tloc226830 a;
	memset((void*)(&a), 0, sizeof(a));
	expr_562305(p, t, (&a));
	{
		NimStringDesc* LOC5;
		if (!!(((7 &(1<<((a.K)&15)))!=0))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_199126(TMP4041);
		internalerror_199006(LOC5);
	}
	LA3: ;
}

N_NIMCALL(trope178009*, initgcframe_561204)(tcproc550031* p) {
	trope178009* result;
	result = 0;
	{
		TY178515 LOC5;
		if (!(0 < ((NI) ((*p).Gcframeid)))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = (*p).Gcframetype;
		result = ropef_178107(((NimStringDesc*) &TMP4045), LOC5, 1);
	}
	LA3: ;
	return result;
}

N_NIMCALL(trope178009*, initframe_589179)(tcproc550031* p, trope178009* procname, trope178009* filename) {
	trope178009* result;
	trope178009* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_553608((*p).Module, ((NimStringDesc*) &TMP4046));
	{
		trope178009* LOC6;
		TY557045 LOC7;
		if (!(0 < (*p).Maxframelen)) goto LA4;
		LOC6 = 0;
		LOC6 = cgsym_553608((*p).Module, ((NimStringDesc*) &TMP4047));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = procname;
		LOC7[1] = filename;
		LOC7[2] = torope_178082(((NI64) ((*p).Maxframelen)));
		LOC7[3] = torope_178082(((NI64) ((*p).Blocks->data[0].Framelen)));
		result = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP4048), LOC7, 4);
	}
	goto LA2;
	LA4: ;
	{
		TY589896 LOC9;
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = procname;
		LOC9[1] = filename;
		result = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP4049), LOC9, 2);
	}
	LA2: ;
	return result;
}

N_NIMCALL(void, appcg_554032)(tcproc550031* p, NU8 s, NimStringDesc* frmt, trope178009** args, NI argsLen0) {
	trope178009** LOC1;
	trope178009* LOC2;
	LOC1 = 0;
	LOC1 = s_550183(p, s);
	LOC2 = 0;
	LOC2 = ropecg_553615((*p).Module, frmt, args, argsLen0);
	app_178052(LOC1, LOC2);
}

N_NIMCALL(trope178009*, deinitgcframe_561219)(tcproc550031* p) {
	trope178009* result;
	result = 0;
	{
		TY554703 LOC5;
		if (!(0 < ((NI) ((*p).Gcframeid)))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		result = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP4052), LOC5, 0);
	}
	LA3: ;
	return result;
}

N_NIMCALL(trope178009*, deinitframe_589200)(tcproc550031* p) {
	trope178009* result;
	TY554703 LOC1;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	result = ropecg_553615((*p).Module, ((NimStringDesc*) &TMP4053), LOC1, 0);
	return result;
}

N_NIMCALL(void, genprocaux_589269)(tcgen550035* m, tsym226846* prc) {
	tcproc550031* p;
	trope178009* header;
	trope178009* returnstmt;
	tnode226816* LOC38;
	trope178009* generatedproc;
	p = newproc_550230(prc, m);
	header = genprocheader_557516(m, prc);
	returnstmt = NIM_NIL;
	{
		NIM_BOOL LOC3;
		tsym226846* 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_227364((*prc).Ast);
			if (!(LOC9 <= 7)) goto LA10;
			internalerror_198987((*prc).Info, ((NimStringDesc*) &TMP3463));
		}
		LA10: ;
		res = (*(*(*prc).Ast).kindU.S6.Sons->data[7]).kindU.S4.Sym;
		{
			NIM_BOOL LOC14;
			TY178515 LOC21;
			LOC14 = 0;
			LOC14 = isinvalidreturntype_555174((*(*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_561577(p, res);
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = rdloc_560637((*res).Loc);
			returnstmt = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3558), LOC21, 1);
			initlocalvar_560943(p, res, NIM_FALSE);
		}
		goto LA12;
		LA15: ;
		{
			fillresult_555488(res);
			assignparam_562159(p, res);
			{
				ttype226852* LOC25;
				LOC25 = 0;
				LOC25 = skiptypes_231245((*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_589642;
		NI HEX3Atmp_589793;
		NI LOC29;
		NI res_589796;
		i_589642 = 0;
		HEX3Atmp_589793 = 0;
		LOC29 = 0;
		LOC29 = sonslen_227249((*(*prc).Typ).N);
		HEX3Atmp_589793 = (NI32)(LOC29 - 1);
		res_589796 = 1;
		{
			while (1) {
				if (!(res_589796 <= HEX3Atmp_589793)) goto LA31;
				i_589642 = res_589796;
				{
					tsym226846* param;
					param = (*(*(*(*prc).Typ).N).kindU.S6.Sons->data[i_589642]).kindU.S4.Sym;
					{
						NIM_BOOL LOC35;
						LOC35 = 0;
						LOC35 = iscompiletimeonly_274466((*param).Typ);
						if (!LOC35) goto LA36;
						goto LA32;
					}
					LA36: ;
					assignparam_562159(p, param);
				} LA32: ;
				res_589796 += 1;
			} LA31: ;
		}
	}
	closuresetup_589217(p, prc);
	LOC38 = 0;
	LOC38 = getbody_280270(prc);
	genstmts_562298(p, LOC38);
	generatedproc = 0;
	{
		TY557045 LOC47;
		trope178009** LOC48;
		trope178009** LOC49;
		trope178009** LOC50;
		if (!(((*prc).Flags &(1<<((((NU8) 9))&31)))!=0)) goto LA41;
		{
			if (!((cc_203434[(ccompiler_203461)- 1].Field20 &(1<<((((NU8) 6))&7)))!=0)) goto LA45;
			header = con_178038(((NimStringDesc*) &TMP4042), header);
		}
		LA45: ;
		memset((void*)LOC47, 0, sizeof(LOC47));
		LOC47[0] = header;
		LOC48 = 0;
		LOC48 = s_550183(p, ((NU8) 0));
		unsureAsgnRef((void**) (&LOC47[1]), (*LOC48));
		LOC49 = 0;
		LOC49 = s_550183(p, ((NU8) 1));
		unsureAsgnRef((void**) (&LOC47[2]), (*LOC49));
		LOC50 = 0;
		LOC50 = s_550183(p, ((NU8) 2));
		unsureAsgnRef((void**) (&LOC47[3]), (*LOC50));
		generatedproc = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP4043), LOC47, 4);
	}
	goto LA39;
	LA41: ;
	{
		TY178515 LOC52;
		trope178009* LOC53;
		trope178009** LOC70;
		trope178009** LOC71;
		trope178009* LOC78;
		TY554703 LOC84;
		trope178009* LOC85;
		memset((void*)LOC52, 0, sizeof(LOC52));
		LOC52[0] = header;
		generatedproc = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP4044), LOC52, 1);
		LOC53 = 0;
		LOC53 = initgcframe_561204(p);
		app_178052(&generatedproc, LOC53);
		{
			trope178009** LOC58;
			trope178009* procname;
			trope178009* LOC59;
			trope178009* LOC60;
			if (!(((*prc).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA56;
			LOC58 = 0;
			LOC58 = s_550183(p, ((NU8) 0));
			app_178052(&generatedproc, (*LOC58));
			procname = cstringlit_561237(p, &generatedproc, (*(*prc).Name).S);
			LOC59 = 0;
			LOC59 = quotedfilename_199178((*prc).Info);
			LOC60 = 0;
			LOC60 = initframe_589179(p, procname, LOC59);
			app_178052(&generatedproc, LOC60);
		}
		goto LA54;
		LA56: ;
		{
			trope178009** LOC62;
			LOC62 = 0;
			LOC62 = s_550183(p, ((NU8) 0));
			app_178052(&generatedproc, (*LOC62));
		}
		LA54: ;
		{
			NIM_BOOL LOC65;
			TY554703 LOC69;
			LOC65 = 0;
			LOC65 = (((*prc).Options &(1<<((((NU8) 19))&31)))!=0);
			if (!(LOC65)) goto LA66;
			LOC65 = !((gcmd_170120 == ((NU8) 5)));
			LA66: ;
			if (!LOC65) goto LA67;
			memset((void*)LOC69, 0, sizeof(LOC69));
			appcg_554032(p, ((NU8) 1), ((NimStringDesc*) &TMP4050), LOC69, 0);
		}
		LA67: ;
		LOC70 = 0;
		LOC70 = s_550183(p, ((NU8) 1));
		app_178052(&generatedproc, (*LOC70));
		LOC71 = 0;
		LOC71 = s_550183(p, ((NU8) 2));
		app_178052(&generatedproc, (*LOC71));
		{
			TY554703 LOC76;
			trope178009* LOC77;
			if (!(*p).Beforeretneeded) goto LA74;
			memset((void*)LOC76, 0, sizeof(LOC76));
			LOC77 = 0;
			LOC77 = ropef_178107(((NimStringDesc*) &TMP4051), LOC76, 0);
			app_178052(&generatedproc, LOC77);
		}
		LA74: ;
		LOC78 = 0;
		LOC78 = deinitgcframe_561219(p);
		app_178052(&generatedproc, LOC78);
		{
			trope178009* LOC83;
			if (!(((*prc).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA81;
			LOC83 = 0;
			LOC83 = deinitframe_589200(p);
			app_178052(&generatedproc, LOC83);
		}
		LA81: ;
		app_178052(&generatedproc, returnstmt);
		memset((void*)LOC84, 0, sizeof(LOC84));
		LOC85 = 0;
		LOC85 = ropef_178107(((NimStringDesc*) &TMP4054), LOC84, 0);
		app_178052(&generatedproc, LOC85);
	}
	LA39: ;
	app_178052(&(*m).S[(((NU8) 10))- 0], generatedproc);
}

N_NIMCALL(NIM_BOOL, isgetprocaddr_588255)(tlib226834* lib) {
	NIM_BOOL result;
	tnode226816* n;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	n = (*lib).Path;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*n).Kind == ((NU8) 27) || (*n).Kind == ((NU8) 29) || (*n).Kind == ((NU8) 30) || (*n).Kind == ((NU8) 31) || (*n).Kind == ((NU8) 26) || (*n).Kind == ((NU8) 28) || (*n).Kind == ((NU8) 32));
	if (!(LOC2)) goto LA3;
	LOC2 = !(((*n).Typ == NIM_NIL));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = ((*(*n).Typ).Kind == ((NU8) 26) || (*(*n).Typ).Kind == ((NU8) 25));
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, symindynamiclib_588819)(tcgen550035* m, tsym226846* sym) {
	tlib226834* lib;
	NIM_BOOL iscall;
	trope178009* extname;
	trope178009* tmp;
	TY589896 LOC47;
	lib = (*sym).Annex;
	iscall = isgetprocaddr_588255(lib);
	extname = (*sym).Loc.R;
	{
		if (!!(iscall)) goto LA3;
		loaddynamiclib_588310(m, lib);
	}
	LA3: ;
	{
		if (!(gcmd_170120 == ((NU8) 5))) goto LA7;
		(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 0))%(sizeof(NI8)*8));
	}
	LA7: ;
	tmp = mangledynlibproc_561938(sym);
	asgnRefNoCycle((void**) (&(*sym).Loc.R), tmp);
	asgnRefNoCycle((void**) (&(*(*sym).Typ).Sym), NIM_NIL);
	(*m).Labels += 2;
	{
		tnode226816* n;
		tloc226830 a;
		tnode226816* LOC13;
		trope178009* params;
		trope178009* LOC14;
		trope178009* load;
		TY557045 LOC21;
		NimStringDesc* LOC22;
		tnode226816* last;
		NimStringDesc* idx;
		if (!iscall) goto LA11;
		n = (*lib).Path;
		memset((void*)(&a), 0, sizeof(a));
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_227698(n, 0);
		initlocexpr_562352((*m).Initproc, LOC13, (&a));
		LOC14 = 0;
		LOC14 = rdloc_560637(a);
		params = con_178031(LOC14, ((NimStringDesc*) &TMP3413));
		{
			NI i_588880;
			NI HEX3Atmp_588982;
			NI LOC16;
			NI res_588985;
			i_588880 = 0;
			HEX3Atmp_588982 = 0;
			LOC16 = 0;
			LOC16 = len_227364(n);
			HEX3Atmp_588982 = (NI32)(LOC16 - 2);
			res_588985 = 1;
			{
				while (1) {
					tnode226816* LOC19;
					trope178009* LOC20;
					if (!(res_588985 <= HEX3Atmp_588982)) goto LA18;
					i_588880 = res_588985;
					LOC19 = 0;
					LOC19 = HEX5BHEX5D_227698(n, i_588880);
					initlocexpr_562352((*m).Initproc, LOC19, (&a));
					LOC20 = 0;
					LOC20 = rdloc_560637(a);
					app_178052(&params, LOC20);
					app_178060(&params, ((NimStringDesc*) &TMP3403));
					res_588985 += 1;
				} LA18: ;
			}
		}
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = tmp;
		LOC21[1] = gettypedesc_557306(m, (*sym).Typ);
		LOC21[2] = params;
		LOC22 = 0;
		LOC22 = ropetostr_178101(extname);
		LOC21[3] = cstringlit_561296(m, &(*m).S[(((NU8) 16))- 0], LOC22);
		load = ropef_178107(((NimStringDesc*) &TMP4055), LOC21, 4);
		last = lastson_227261(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_199126(TMP4056);
			internalerror_199006(LOC31);
		}
		LA29: ;
		idx = (*last).kindU.S3.Strval;
		{
			trope178009** LOC36;
			if (!(idx->Sup.len == 0)) goto LA34;
			LOC36 = 0;
			LOC36 = s_550183((*m).Initproc, ((NU8) 2));
			app_178052(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_178052(&(*m).Extensionloaders[(((NU8)(idx->data[0])))- 48], load);
		}
		goto LA32;
		LA40: ;
		{
			NimStringDesc* LOC43;
			LOC43 = 0;
			LOC43 = rawNewString(idx->Sup.len + 13);
appendString(LOC43, ((NimStringDesc*) &TMP4057));
appendString(LOC43, idx);
			internalerror_198987((*sym).Info, LOC43);
		}
		LA32: ;
	}
	goto LA9;
	LA11: ;
	{
		TY557045 LOC45;
		NimStringDesc* LOC46;
		memset((void*)LOC45, 0, sizeof(LOC45));
		LOC45[0] = tmp;
		LOC45[1] = gettypedesc_557306(m, (*sym).Typ);
		LOC45[2] = (*lib).Name;
		LOC46 = 0;
		LOC46 = ropetostr_178101(extname);
		LOC45[3] = cstringlit_561296(m, &(*m).S[(((NU8) 16))- 0], LOC46);
		appcg_554004(m, &(*m).S[(((NU8) 16))- 0], ((NimStringDesc*) &TMP4058), LOC45, 4);
	}
	LA9: ;
	memset((void*)LOC47, 0, sizeof(LOC47));
	LOC47[0] = (*sym).Loc.R;
	LOC47[1] = gettypedesc_557306(m, (*sym).Loc.T);
	appff_553228(&(*m).S[(((NU8) 9))- 0], ((NimStringDesc*) &TMP4059), ((NimStringDesc*) &TMP4060), LOC47, 2);
}

N_NIMCALL(void, symindynamiclibpartial_589054)(tcgen550035* m, tsym226846* sym) {
	asgnRefNoCycle((void**) (&(*sym).Loc.R), mangledynlibproc_561938(sym));
	asgnRefNoCycle((void**) (&(*(*sym).Typ).Sym), NIM_NIL);
}

N_NIMCALL(void, genprocnoforward_589973)(tcgen550035* m, tsym226846* prc) {
	fillprocloc_562229(prc);
	useheader_553469(m, prc);
	{
		trope178009* LOC5;
		if (!(((*prc).Loc.Flags &(1<<((((NU8) 7))&7)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = cgsym_553608(m, (*(*prc).Name).S);
		goto BeforeRet;
	}
	LA3: ;
	genprocprototype_562314(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_223916((&(*m).Declaredthings), (*prc).Sup.Id);
			if (!!(LOC15)) goto LA16;
			genprocaux_589269(m, prc);
		}
		LA16: ;
	}
	goto LA6;
	LA11: ;
	{
		tcgen550035* q;
		if (!(((*prc).Loc.Flags &(1<<((((NU8) 4))&7)))!=0)) goto LA19;
		q = findpendingmodule_553313(m, prc);
		{
			NIM_BOOL LOC23;
			NIM_BOOL LOC25;
			LOC23 = 0;
			LOC23 = !((q == NIM_NIL));
			if (!(LOC23)) goto LA24;
			LOC25 = 0;
			LOC25 = containsorincl_223916((&(*q).Declaredthings), (*prc).Sup.Id);
			LOC23 = !(LOC25);
			LA24: ;
			if (!LOC23) goto LA26;
			symindynamiclib_588819(q, prc);
		}
		goto LA21;
		LA26: ;
		{
			symindynamiclibpartial_589054(m, prc);
		}
		LA21: ;
	}
	goto LA6;
	LA19: ;
	{
		tcgen550035* q;
		if (!!((((*prc).Flags &(1<<((((NU8) 5))&31)))!=0))) goto LA30;
		q = findpendingmodule_553313(m, prc);
		{
			NIM_BOOL LOC34;
			NIM_BOOL LOC36;
			LOC34 = 0;
			LOC34 = !((q == NIM_NIL));
			if (!(LOC34)) goto LA35;
			LOC36 = 0;
			LOC36 = containsorincl_223916((&(*q).Declaredthings), (*prc).Sup.Id);
			LOC34 = !(LOC36);
			LA35: ;
			if (!LOC34) goto LA37;
			genprocaux_589269(q, prc);
		}
		LA37: ;
	}
	goto LA6;
	LA30: ;
	LA6: ;
	BeforeRet: ;
}

N_NIMCALL(void, genproc_554629)(tcgen550035* m, tsym226846* 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_590444(prc);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		goto BeforeRet;
	}
	LA6: ;
	fillprocloc_562229(prc);
	{
		if (!(((*prc).Flags &(1<<((((NU8) 4))&31)))!=0)) goto LA10;
		addforwardedproc_553251(m, prc);
	}
	goto LA8;
	LA10: ;
	{
		genprocnoforward_589973(m, prc);
		{
			NIM_BOOL LOC15;
			NIM_BOOL LOC16;
			LOC15 = 0;
			LOC16 = 0;
			LOC16 = ((65600 & (*prc).Flags) == 64);
			if (!(LOC16)) goto LA17;
			LOC16 = !((generatedheader_553201 == NIM_NIL));
			LA17: ;
			LOC15 = LOC16;
			if (!(LOC15)) goto LA18;
			LOC15 = !((((*prc).Loc.Flags &(1<<((((NU8) 3))&7)))!=0));
			LA18: ;
			if (!LOC15) goto LA19;
			genprocprototype_562314(generatedheader_553201, prc);
			{
				if (!((*(*prc).Typ).Callconv == ((NU8) 5))) goto LA23;
				{
					NIM_BOOL LOC27;
					LOC27 = 0;
					LOC27 = containsorincl_223916((&(*generatedheader_553201).Declaredthings), (*prc).Sup.Id);
					if (!!(LOC27)) goto LA28;
					genprocaux_589269(generatedheader_553201, prc);
				}
				LA28: ;
			}
			LA23: ;
		}
		LA19: ;
	}
	LA8: ;
	BeforeRet: ;
}

N_NIMCALL(trope178009*, cgsym_553608)(tcgen550035* m, NimStringDesc* name) {
	trope178009* result;
	tsym226846* sym;
	result = 0;
	sym = getcompilerproc_283036(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_554629(m, sym);
		}
		break;
		case ((NU8) 8):
		case ((NU8) 11):
		case ((NU8) 9):
		{
			genvarprototype_562284(m, sym);
		}
		break;
		case ((NU8) 7):
		{
			trope178009* LOC8;
			LOC8 = 0;
			LOC8 = gettypedesc_557306(m, (*sym).Typ);
		}
		break;
		default:
		{
			NimStringDesc* LOC10;
			LOC10 = 0;
			LOC10 = rawNewString(name->Sup.len + 7);
appendString(LOC10, ((NimStringDesc*) &TMP4061));
appendString(LOC10, name);
			internalerror_199006(LOC10);
		}
		break;
		}
	}
	goto LA1;
	LA3: ;
	{
		rawmessage_198733(((NU16) 64), name);
	}
	LA1: ;
	result = (*sym).Loc.R;
	return result;
}

N_NIMCALL(trope178009*, ropecg_553615)(tcgen550035* m, NimStringDesc* frmt, trope178009** args, NI argsLen0) {
	trope178009* 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_178060(&result, ((NimStringDesc*) &TMP3354));
					i += 1;
				}
				break;
				case 35:
				{
					i += 1;
					app_178052(&result, args[num]);
					num += 1;
				}
				break;
				case 48 ... 57:
				{
					NI j;
					j = 0;
					{
						while (1) {
							j = (NI32)((NI32)((NI32)(j * 10) + ((NI) (((NU8)(frmt->data[i]))))) - 48);
							i += 1;
							{
								NIM_BOOL 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 (!((NI32)((argsLen0-1) + 1) < j)) goto LA20;
						LOC22 = 0;
						LOC23 = 0;
						LOC23 = nimIntToStr(j);
						LOC22 = rawNewString(LOC23->Sup.len + 30);
appendString(LOC22, ((NimStringDesc*) &TMP3355));
appendString(LOC22, LOC23);
						internalerror_199006(LOC22);
					}
					LA20: ;
					app_178052(&result, args[(NI32)(j - 1)]);
				}
				break;
				case 110:
				{
					{
						if (!!(((goptions_170116 &(1<<((((NU8) 10))&31)))!=0))) goto LA27;
						app_178052(&result, rnl_179454);
					}
					LA27: ;
					i += 1;
				}
				break;
				case 78:
				{
					app_178052(&result, rnl_179454);
					i += 1;
				}
				break;
				default:
				{
					NimStringDesc* LOC31;
					LOC31 = 0;
					LOC31 = rawNewString(31);
appendString(LOC31, ((NimStringDesc*) &TMP3355));
appendChar(LOC31, frmt->data[i]);
					internalerror_199006(LOC31);
				}
				break;
				}
			}
			goto LA3;
			LA5: ;
			{
				NIM_BOOL LOC33;
				NI j;
				NimStringDesc* ident;
				trope178009* LOC39;
				LOC33 = 0;
				LOC33 = ((NU8)(frmt->data[i]) == (NU8)(35));
				if (!(LOC33)) goto LA34;
				LOC33 = (((NU8)(frmt->data[(NI32)(i + 1)])) >= ((NU8)(97)) && ((NU8)(frmt->data[(NI32)(i + 1)])) <= ((NU8)(122)) || ((NU8)(frmt->data[(NI32)(i + 1)])) >= ((NU8)(65)) && ((NU8)(frmt->data[(NI32)(i + 1)])) <= ((NU8)(90)) || ((NU8)(frmt->data[(NI32)(i + 1)])) == ((NU8)(95)));
				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, (NI32)(j - 1));
				i = j;
				LOC39 = 0;
				LOC39 = cgsym_553608(m, ident);
				app_178052(&result, LOC39);
			}
			goto LA3;
			LA35: ;
			{
				NIM_BOOL LOC41;
				NI j;
				NimStringDesc* LOC47;
				trope178009* LOC48;
				LOC41 = 0;
				LOC41 = ((NU8)(frmt->data[i]) == (NU8)(35));
				if (!(LOC41)) goto LA42;
				LOC41 = ((NU8)(frmt->data[(NI32)(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 = (NI32)((NI32)((NI32)(j * 10) + ((NI) (((NU8)(frmt->data[i]))))) - 48);
						i += 1;
					} LA46: ;
				}
				LOC47 = 0;
				LOC47 = ropetostr_178101(args[(NI32)(j - 1)]);
				LOC48 = 0;
				LOC48 = cgsym_553608(m, LOC47);
				app_178052(&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 <= (NI32)(i - 1))) goto LA60;
				LOC62 = 0;
				LOC62 = copyStrLast(frmt, start, (NI32)(i - 1));
				app_178060(&result, LOC62);
			}
			LA60: ;
		} LA2: ;
	}
	return result;
}

N_NIMCALL(trope178009*, gettempname_555242)(void) {
	trope178009* result;
	TY178515 LOC1;
	NI LOC2;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = backendid_225425();
	LOC1[0] = torope_178082(((NI64) (LOC2)));
	result = ropecg_553615(NIM_NIL, ((NimStringDesc*) &TMP3487), LOC1, 1);
	return result;
}

N_NIMCALL(tcgen550035*, rawnewmodule_592102)(tsym226846* module, NimStringDesc* filename) {
	tcgen550035* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	result = (tcgen550035*) newObj((&NTI550025), sizeof(tcgen550035));
	(*result).Sup.Sup.m_type = (&NTI550035);
	initlinkedlist_127043((&(*result).Headerfiles));
	initintset_223950((&(*result).Declaredthings));
	initintset_223950((&(*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_227167((&(*result).Typecache));
	initidtable_227167((&(*result).Forwtypecache));
	asgnRefNoCycle((void**) (&(*result).Module), module);
	initintset_223950((&(*result).Typeinfomarker));
	asgnRef((void**) (&(*result).Initproc), newproc_550230(NIM_NIL, result));
	(*(*result).Initproc).Options = initprocoptions_592061(result);
	asgnRef((void**) (&(*result).Preinitproc), newpreinitproc_592039(result));
	asgnRef((void**) (&(*result).Postinitproc), newpostinitproc_592050(result));
	initnodetable_227188((&(*result).Datacache));
	if ((*result).Typestack) nimGCunrefNoCycle((*result).Typestack);
	(*result).Typestack = (ttypeseq226848*) newSeqRC1((&NTI226848), 0);
	if ((*result).Forwardedprocs) nimGCunrefNoCycle((*result).Forwardedprocs);
	(*result).Forwardedprocs = (tsymseq226818*) newSeqRC1((&NTI226818), 0);
	asgnRefNoCycle((void**) (&(*result).Typenodesname), gettempname_555242());
	asgnRefNoCycle((void**) (&(*result).Nimtypesname), gettempname_555242());
	{
		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(tcgen550035*, rawnewmodule_592427)(tsym226846* module) {
	tcgen550035* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = tofullpath_198037(((NI32) ((*module).Position)));
	result = rawnewmodule_592102(module, LOC1);
	return result;
}

N_NIMCALL(tcgen550035*, newmodule_592438)(tsym226846* module) {
	tcgen550035* result;
	result = 0;
	{
		tcgen550035* LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = getcgenmodule_553291(module);
		if (!!((LOC3 == NIM_NIL))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX24_199126(TMP3352);
		internalerror_199006(LOC6);
	}
	LA4: ;
	result = rawnewmodule_592427(module);
	{
		if (!(gmodules_550171->Sup.len <= (*module).Position)) goto LA9;
		gmodules_550171 = (TY550150*) setLengthSeq(&(gmodules_550171)->Sup, sizeof(tcgen550035*), (NI32)((*module).Position + 1));
	}
	LA9: ;
	asgnRef((void**) (&gmodules_550171->data[(*module).Position]), result);
	{
		if (!((gglobaloptions_170118 &(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_198025(((NI32) ((*module).Position)));
			LOC19 = rawNewString(LOC20->Sup.len + 28);
appendString(LOC19, ((NimStringDesc*) &TMP4062));
appendString(LOC19, LOC20);
			internalerror_199006(LOC19);
		}
		LA17: ;
	}
	LA13: ;
	return result;
}

N_NIMCALL(tpasscontext287005*, myopen_592544)(tsym226846* module) {
	tpasscontext287005* result;
	tcgen550035* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = newmodule_592438(module);
	result = &LOC1->Sup;
	{
		NIM_BOOL LOC4;
		NimStringDesc* f;
		NimStringDesc* LOC13;
		NimStringDesc* LOC14;
		LOC4 = 0;
		LOC4 = ((gglobaloptions_170118 &(1<<((((NU8) 30))&31)))!=0);
		if (!(LOC4)) goto LA5;
		LOC4 = (generatedheader_553201 == NIM_NIL);
		LA5: ;
		if (!LOC4) goto LA6;
		{
			if (!(0 < headerfile_170126->Sup.len)) goto LA10;
			f = headerfile_170126;
		}
		goto LA8;
		LA10: ;
		{
			f = gprojectfull_170236;
		}
		LA8: ;
		LOC13 = 0;
		LOC13 = completecfilepath_203855(f, NIM_TRUE);
		LOC14 = 0;
		LOC14 = noschangeFileExt(LOC13, ((NimStringDesc*) &TMP4063));
		asgnRef((void**) (&generatedheader_553201), rawnewmodule_592102(module, LOC14));
		(*generatedheader_553201).Isheaderfile = NIM_TRUE;
	}
	LA6: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getcfile_592665)(tcgen550035* m) {
	NimStringDesc* result;
	NimStringDesc* ext;
	NimStringDesc* LOC13;
	NimStringDesc* LOC14;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (gcmd_170120 == ((NU8) 2));
		if (LOC3) goto LA4;
		LOC3 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		ext = copyString(((NimStringDesc*) &TMP4073));
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = (gcmd_170120 == ((NU8) 3));
		if (LOC8) goto LA9;
		LOC8 = (((*(*m).Module).Flags &(1<<((((NU8) 28))&31)))!=0);
		LA9: ;
		if (!LOC8) goto LA10;
		ext = copyString(((NimStringDesc*) &TMP4074));
	}
	goto LA1;
	LA10: ;
	{
		ext = copyString(((NimStringDesc*) &TMP4075));
	}
	LA1: ;
	LOC13 = 0;
	LOC13 = withpackagename_170946((*m).Cfilename);
	LOC14 = 0;
	LOC14 = completecfilepath_203855(LOC13, NIM_TRUE);
	result = noschangeFileExt(LOC14, ext);
	return result;
}

N_NIMCALL(tpasscontext287005*, myopencached_592720)(tsym226846* module, trodreader277030* rd) {
	tpasscontext287005* result;
	tcgen550035* m;
	NimStringDesc* LOC1;
	result = 0;
	m = newmodule_592438(module);
	LOC1 = 0;
	LOC1 = getcfile_592665(m);
	readmergeinfo_551815(LOC1, m);
	result = &m->Sup;
	return result;
}

static N_INLINE(NIM_BOOL, skipcodegen_287083)(tnode226816* n) {
	NIM_BOOL result;
	result = 0;
	result = (0 < gerrorcounter_197306);
	return result;
}

N_NIMCALL(tnode226816*, myprocess_592808)(tpasscontext287005* b, tnode226816* n) {
	tnode226816* result;
	tcgen550035* m;
	result = 0;
	result = n;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (b == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = skipcodegen_287083(n);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	m = ((tcgen550035*) (b));
	(*(*m).Initproc).Options = initprocoptions_592061(m);
	genstmts_562298((*m).Initproc, n);
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope178009*, getsomeinitname_591213)(tsym226846* m, NimStringDesc* suffix) {
	trope178009* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!((12288 & (*m).Flags) == 0)) goto LA3;
		LOC5 = 0;
		LOC5 = mangle_549763((*(*(*m).Owner).Name).S);
		result = torope_178076(LOC5);
		app_178060(&result, ((NimStringDesc*) &TMP3365));
	}
	LA3: ;
	app_178060(&result, (*(*m).Name).S);
	app_178060(&result, suffix);
	return result;
}

N_NIMCALL(trope178009*, getinitname_591647)(tsym226846* m) {
	trope178009* result;
	result = 0;
	result = getsomeinitname_591213(m, ((NimStringDesc*) &TMP4076));
	return result;
}

N_NIMCALL(trope178009*, getdatinitname_591657)(tsym226846* m) {
	trope178009* result;
	result = 0;
	result = getsomeinitname_591213(m, ((NimStringDesc*) &TMP4077));
	return result;
}

N_NIMCALL(trope178009*, ropeff_553206)(NimStringDesc* cformat, NimStringDesc* llvmformat, trope178009** args, NI argsLen0) {
	trope178009* result;
	result = 0;
	{
		if (!(gcmd_170120 == ((NU8) 5))) goto LA3;
		result = ropef_178107(llvmformat, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		result = ropef_178107(cformat, args, argsLen0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, registermoduletomain_591667)(tsym226846* m) {
	trope178009* init;
	trope178009* datinit;
	TY178515 LOC1;
	TY178515 LOC2;
	init = getinitname_591647(m);
	datinit = getdatinitname_591657(m);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = init;
	appff_553228(&mainmodprocs_550145, ((NimStringDesc*) &TMP4078), ((NimStringDesc*) &TMP4079), LOC1, 1);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = datinit;
	appff_553228(&mainmodprocs_550145, ((NimStringDesc*) &TMP4078), ((NimStringDesc*) &TMP4079), LOC2, 1);
	{
		TY178515 LOC7;
		trope178009* initcall;
		TY178515 LOC8;
		if (!!((((*m).Flags &(1<<((((NU8) 13))&31)))!=0))) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = datinit;
		appff_553228(&maindatinit_550148, ((NimStringDesc*) &TMP4080), ((NimStringDesc*) &TMP4081), LOC7, 1);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = init;
		initcall = ropeff_553206(((NimStringDesc*) &TMP4080), ((NimStringDesc*) &TMP4081), LOC8, 1);
		{
			if (!(((*m).Flags &(1<<((((NU8) 12))&31)))!=0)) goto LA11;
			app_178052(&mainmodinit_550146, initcall);
		}
		goto LA9;
		LA11: ;
		{
			app_178052(&othermodsinit_550147, initcall);
		}
		LA9: ;
	}
	LA5: ;
}

N_NIMCALL(trope178009*, genfilenames_590935)(tcgen550035* m) {
	trope178009* result;
	trope178009* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = cgsym_553608(m, ((NimStringDesc*) &TMP4094));
	result = NIM_NIL;
	{
		NI i_590971;
		NI HEX3Atmp_590978;
		NI res_590981;
		i_590971 = 0;
		HEX3Atmp_590978 = 0;
		HEX3Atmp_590978 = (fileinfos_196642->Sup.len - 1);
		res_590981 = 0;
		{
			while (1) {
				TY178515 LOC5;
				if (!(res_590981 <= HEX3Atmp_590978)) goto LA4;
				i_590971 = res_590981;
				memset((void*)LOC5, 0, sizeof(LOC5));
				LOC5[0] = makecstring_196659(fileinfos_196642->data[i_590971].Projpath);
				appf_178115(&result, ((NimStringDesc*) &TMP4095), LOC5, 1);
				res_590981 += 1;
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(void, genmainproc_590998)(tcgen550035* m) {
	NimStringDesc* nimmain;
	NimStringDesc* othermain;
	trope178009* initstackbottomcall;
	TY558593 LOC36;
	TY555018 LOC45;
	nimmain = 0;
	othermain = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC12;
		LOC3 = 0;
		LOC3 = (targetos_175589 == ((NU8) 2));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((gglobaloptions_170118 & 1280) == 0));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!((gglobaloptions_170118 &(1<<((((NU8) 10))&31)))!=0)) goto LA9;
			nimmain = copyString(((NimStringDesc*) &TMP4084));
			othermain = copyString(((NimStringDesc*) &TMP4085));
		}
		goto LA7;
		LA9: ;
		{
			nimmain = copyString(((NimStringDesc*) &TMP4086));
			othermain = copyString(((NimStringDesc*) &TMP4087));
		}
		LA7: ;
		LOC12 = 0;
		LOC12 = includestr_127297((&(*m).Headerfiles), ((NimStringDesc*) &TMP4088));
	}
	goto LA1;
	LA5: ;
	{
		if (!((gglobaloptions_170118 &(1<<((((NU8) 8))&31)))!=0)) goto LA14;
		nimmain = copyString(((NimStringDesc*) &TMP4086));
		othermain = copyString(((NimStringDesc*) &TMP4089));
	}
	goto LA1;
	LA14: ;
	{
		if (!(targetos_175589 == ((NU8) 23))) goto LA17;
		nimmain = copyString(((NimStringDesc*) &TMP4090));
		othermain = copyString(((NimStringDesc*) &TMP4091));
	}
	goto LA1;
	LA17: ;
	{
		nimmain = copyString(((NimStringDesc*) &TMP4090));
		othermain = copyString(((NimStringDesc*) &TMP4092));
	}
	LA1: ;
	{
		trope178009* LOC24;
		if (!!((gbreakpoints_574072 == NIM_NIL))) goto LA22;
		LOC24 = 0;
		LOC24 = cgsym_553608(m, ((NimStringDesc*) &TMP4093));
	}
	LA22: ;
	{
		trope178009* LOC29;
		if (!((goptions_170116 &(1<<((((NU8) 17))&31)))!=0)) goto LA27;
		LOC29 = 0;
		LOC29 = genfilenames_590935(m);
		app_178052(&gbreakpoints_574072, LOC29);
	}
	LA27: ;
	{
		if (!(targetos_175589 == ((NU8) 23))) goto LA32;
		initstackbottomcall = torope_178076(((NimStringDesc*) &TMP3812));
	}
	goto LA30;
	LA32: ;
	{
		TY554703 LOC35;
		memset((void*)LOC35, 0, sizeof(LOC35));
		initstackbottomcall = ropecg_553615(m, ((NimStringDesc*) &TMP4096), LOC35, 0);
	}
	LA30: ;
	(*m).Labels += 1;
	memset((void*)LOC36, 0, sizeof(LOC36));
	LOC36[0] = maindatinit_550148;
	LOC36[1] = gbreakpoints_574072;
	LOC36[2] = othermodsinit_550147;
	{
		NIM_BOOL LOC39;
		TY554703 LOC43;
		LOC39 = 0;
		LOC39 = emulatedthreadvars_554624();
		if (!(LOC39)) goto LA40;
		LOC39 = !((targetos_175589 == ((NU8) 23)));
		LA40: ;
		if (!LOC39) goto LA41;
		memset((void*)LOC43, 0, sizeof(LOC43));
		LOC36[3] = ropecg_553615(m, ((NimStringDesc*) &TMP4098), LOC43, 0);
	}
	goto LA37;
	LA41: ;
	{
		LOC36[3] = torope_178076(((NimStringDesc*) &TMP3812));
	}
	LA37: ;
	LOC36[4] = initstackbottomcall;
	appcg_554004(m, &(*m).S[(((NU8) 10))- 0], ((NimStringDesc*) &TMP4097), LOC36, 5);
	memset((void*)LOC45, 0, sizeof(LOC45));
	LOC45[0] = mainmodinit_550146;
	LOC45[1] = initstackbottomcall;
	LOC45[2] = torope_178082(((NI64) ((*m).Labels)));
	appcg_554004(m, &(*m).S[(((NU8) 10))- 0], nimmain, LOC45, 3);
	{
		TY554703 LOC50;
		if (!!(((gglobaloptions_170118 &(1<<((((NU8) 20))&31)))!=0))) goto LA48;
		memset((void*)LOC50, 0, sizeof(LOC50));
		appcg_554004(m, &(*m).S[(((NU8) 10))- 0], othermain, LOC50, 0);
	}
	LA48: ;
}

N_NIMCALL(tnode226816*, myclose_593246)(tpasscontext287005* b, tnode226816* n) {
	tnode226816* result;
	tcgen550035* m;
	result = 0;
	result = n;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (b == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = skipcodegen_287083(n);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	m = ((tcgen550035*) (b));
	{
		if (!!((n == NIM_NIL))) goto LA9;
		(*(*m).Initproc).Options = initprocoptions_592061(m);
		genstmts_562298((*m).Initproc, n);
	}
	LA9: ;
	registermoduletomain_591667((*m).Module);
	{
		tnode226816* disp;
		if (!(((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0)) goto LA13;
		(*m).Objhaskidsvalid = NIM_TRUE;
		disp = generatemethoddispatchers_424508();
		{
			NI i_593310;
			NI HEX3Atmp_593340;
			NI LOC16;
			NI res_593343;
			i_593310 = 0;
			HEX3Atmp_593340 = 0;
			LOC16 = 0;
			LOC16 = sonslen_227249(disp);
			HEX3Atmp_593340 = (NI32)(LOC16 - 1);
			res_593343 = 0;
			{
				while (1) {
					if (!(res_593343 <= HEX3Atmp_593340)) goto LA18;
					i_593310 = res_593343;
					genprocaux_589269(m, (*(*disp).kindU.S6.Sons->data[i_593310]).kindU.S4.Sym);
					res_593343 += 1;
				} LA18: ;
			}
		}
		genmainproc_590998(m);
	}
	LA13: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, finishmodule_592837)(tcgen550035* m) {
	NI i;
	i = 0;
	{
		while (1) {
			tsym226846* 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*) &TMP4142));
appendString(LOC7, (*(*prc).Name).S);
				internalerror_198987((*prc).Info, LOC7);
			}
			LA5: ;
			genprocnoforward_589973(m, prc);
			i += 1;
		} LA2: ;
	}
	gforwardedprocscounter_550172 -= i;
	(*m).Forwardedprocs = (tsymseq226818*) setLengthSeq(&((*m).Forwardedprocs)->Sup, sizeof(tsym226846*), 0);
}

N_NIMCALL(void, geninitcode_591726)(tcgen550035* m) {
	trope178009* initname;
	trope178009* prc;
	TY178515 LOC1;
	trope178009* LOC12;
	trope178009* LOC13;
	trope178009** LOC14;
	trope178009** LOC15;
	trope178009** LOC16;
	trope178009* LOC17;
	trope178009* LOC33;
	trope178009** LOC34;
	trope178009** LOC35;
	trope178009** LOC36;
	trope178009* LOC37;
	trope178009* LOC38;
	trope178009** LOC39;
	trope178009** LOC40;
	trope178009** LOC41;
	trope178009* LOC42;
	trope178009* LOC50;
	TY554703 LOC51;
	TY178515 LOC52;
	TY554703 LOC58;
	initname = getinitname_591647((*m).Module);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = initname;
	prc = ropeff_553206(((NimStringDesc*) &TMP4168), ((NimStringDesc*) &TMP4169), LOC1, 1);
	{
		TY589896 LOC6;
		if (!(0 < (*m).Typenodes)) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = (*m).Typenodesname;
		LOC6[1] = torope_178082(((NI64) ((*m).Typenodes)));
		appcg_554004(m, &(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP4170), LOC6, 2);
	}
	LA4: ;
	{
		TY589896 LOC11;
		if (!(0 < (*m).Nimtypes)) goto LA9;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = (*m).Nimtypesname;
		LOC11[1] = torope_178082(((NI64) ((*m).Nimtypes)));
		appcg_554004(m, &(*m).S[(((NU8) 12))- 0], ((NimStringDesc*) &TMP4171), LOC11, 2);
	}
	LA9: ;
	LOC12 = 0;
	LOC12 = initgcframe_561204((*m).Initproc);
	app_178052(&prc, LOC12);
	LOC13 = 0;
	LOC13 = gensectionstart_551126(((NU8) 0));
	app_178052(&prc, LOC13);
	LOC14 = 0;
	LOC14 = s_550183((*m).Preinitproc, ((NU8) 0));
	app_178052(&prc, (*LOC14));
	LOC15 = 0;
	LOC15 = s_550183((*m).Initproc, ((NU8) 0));
	app_178052(&prc, (*LOC15));
	LOC16 = 0;
	LOC16 = s_550183((*m).Postinitproc, ((NU8) 0));
	app_178052(&prc, (*LOC16));
	LOC17 = 0;
	LOC17 = gensectionend_551177(((NU8) 0));
	app_178052(&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;
		{
			trope178009* procname;
			trope178009* LOC28;
			trope178009* LOC29;
			if (!!((*m).Preventstacktrace)) goto LA26;
			procname = cstringlit_561237((*m).Initproc, &prc, (*(*(*m).Module).Name).S);
			LOC28 = 0;
			LOC28 = quotedfilename_199178((*(*m).Module).Info);
			LOC29 = 0;
			LOC29 = initframe_589179((*m).Initproc, procname, LOC28);
			app_178052(&prc, LOC29);
		}
		goto LA24;
		LA26: ;
		{
			TY554703 LOC31;
			trope178009* LOC32;
			memset((void*)LOC31, 0, sizeof(LOC31));
			LOC32 = 0;
			LOC32 = ropef_178107(((NimStringDesc*) &TMP4174), LOC31, 0);
			app_178052(&prc, LOC32);
		}
		LA24: ;
	}
	LA22: ;
	LOC33 = 0;
	LOC33 = gensectionstart_551126(((NU8) 1));
	app_178052(&prc, LOC33);
	LOC34 = 0;
	LOC34 = s_550183((*m).Preinitproc, ((NU8) 1));
	app_178052(&prc, (*LOC34));
	LOC35 = 0;
	LOC35 = s_550183((*m).Initproc, ((NU8) 1));
	app_178052(&prc, (*LOC35));
	LOC36 = 0;
	LOC36 = s_550183((*m).Postinitproc, ((NU8) 1));
	app_178052(&prc, (*LOC36));
	LOC37 = 0;
	LOC37 = gensectionend_551177(((NU8) 1));
	app_178052(&prc, LOC37);
	LOC38 = 0;
	LOC38 = gensectionstart_551126(((NU8) 2));
	app_178052(&prc, LOC38);
	LOC39 = 0;
	LOC39 = s_550183((*m).Preinitproc, ((NU8) 2));
	app_178052(&prc, (*LOC39));
	LOC40 = 0;
	LOC40 = s_550183((*m).Initproc, ((NU8) 2));
	app_178052(&prc, (*LOC40));
	LOC41 = 0;
	LOC41 = s_550183((*m).Postinitproc, ((NU8) 2));
	app_178052(&prc, (*LOC41));
	LOC42 = 0;
	LOC42 = gensectionend_551177(((NU8) 2));
	app_178052(&prc, LOC42);
	{
		NIM_BOOL LOC45;
		trope178009* 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_589200((*m).Initproc);
		app_178052(&prc, LOC49);
	}
	LA47: ;
	LOC50 = 0;
	LOC50 = deinitgcframe_561219((*m).Initproc);
	app_178052(&prc, LOC50);
	memset((void*)LOC51, 0, sizeof(LOC51));
	appf_178115(&prc, ((NimStringDesc*) &TMP4175), LOC51, 0);
	memset((void*)LOC52, 0, sizeof(LOC52));
	LOC52[0] = getdatinitname_591657((*m).Module);
	appff_553228(&prc, ((NimStringDesc*) &TMP4168), ((NimStringDesc*) &TMP4169), LOC52, 1);
	{
		NU8 i_591825;
		NU8 res_591931;
		i_591825 = 0;
		res_591931 = ((NU8) 12);
		{
			while (1) {
				trope178009* LOC56;
				trope178009* LOC57;
				if (!(res_591931 <= ((NU8) 16))) goto LA55;
				i_591825 = res_591931;
				LOC56 = 0;
				LOC56 = gensectionstart_551028(i_591825);
				app_178052(&prc, LOC56);
				app_178052(&prc, (*m).S[(i_591825)- 0]);
				LOC57 = 0;
				LOC57 = gensectionend_551079(i_591825);
				app_178052(&prc, LOC57);
				res_591931 += 1;
			} LA55: ;
		}
	}
	memset((void*)LOC58, 0, sizeof(LOC58));
	appf_178115(&prc, ((NimStringDesc*) &TMP4175), LOC58, 0);
	app_178052(&(*m).S[(((NU8) 11))- 0], prc);
	{
		NIM_CHAR i_591886;
		trope178009* el_591887;
		TY550138 HEX3Atmp_591934;
		NIM_CHAR i_591937;
		i_591886 = 0;
		el_591887 = 0;
		memset((void*)HEX3Atmp_591934, 0, sizeof(HEX3Atmp_591934));
		memcpy((void*)HEX3Atmp_591934, (NIM_CONST void*)(*m).Extensionloaders, sizeof(HEX3Atmp_591934));
		i_591937 = 48;
		{
			if (!((NU8)(((NIM_CHAR) (((NU8)(i_591937))))) <= (NU8)(57))) goto LA62;
			{
				while (1) {
					i_591886 = i_591937;
					el_591887 = HEX3Atmp_591934[(((NU8)(i_591937)))- 48];
					{
						trope178009* ex;
						TY589896 LOC70;
						if (!!((el_591887 == NIM_NIL))) goto LA68;
						memset((void*)LOC70, 0, sizeof(LOC70));
						LOC70[0] = torope_178082(((NI64) ((NI32)(((NI) (((NU8)(i_591886)))) - 48))));
						LOC70[1] = el_591887;
						ex = ropef_178107(((NimStringDesc*) &TMP4176), LOC70, 2);
						app_178052(&(*m).S[(((NU8) 11))- 0], ex);
					}
					LA68: ;
					{
						if (!((NU8)(57) <= (NU8)(((NIM_CHAR) (((NU8)(i_591937))))))) goto LA73;
						goto LA64;
					}
					LA73: ;
					i_591937 += 1;
				}
			} LA64: ;
		}
		LA62: ;
	}
}

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

N_NIMCALL(trope178009*, getcopyright_590893)(NimStringDesc* cfile) {
	trope178009* result;
	result = 0;
	{
		TY178515 LOC5;
		if (!((gglobaloptions_170118 &(1<<((((NU8) 4))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = torope_178076(((NimStringDesc*) &TMP4179));
		result = ropeff_553206(((NimStringDesc*) &TMP4177), ((NimStringDesc*) &TMP4178), LOC5, 1);
	}
	goto LA1;
	LA3: ;
	{
		TY558593 LOC7;
		NimStringDesc* LOC8;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = torope_178076(((NimStringDesc*) &TMP4179));
		LOC7[1] = torope_178076(os_175069[(targetos_175589)- 1].Field0);
		LOC7[2] = torope_178076(cpu_175480[(targetcpu_175587)- 1].Field0);
		LOC7[3] = torope_178076(cc_203434[(ccompiler_203461)- 1].Field0);
		LOC8 = 0;
		LOC8 = getcompilecfilecmd_204262(cfile, NIM_FALSE);
		LOC7[4] = torope_178076(LOC8);
		result = ropeff_553206(((NimStringDesc*) &TMP4180), ((NimStringDesc*) &TMP4181), LOC7, 5);
	}
	LA1: ;
	return result;
}

static N_INLINE(void, addinttypes_590879)(trope178009** result) {
	TY178515 LOC1;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = torope_178082(((NI64) (cpu_175480[(targetcpu_175587)- 1].Field1)));
	appf_178115(result, ((NimStringDesc*) &TMP4182), LOC1, 1);
}

N_NIMCALL(trope178009*, getfileheader_590924)(NimStringDesc* cfile) {
	trope178009* result;
	result = 0;
	result = getcopyright_590893(cfile);
	addinttypes_590879(&result);
	return result;
}

N_NIMCALL(void, generateheaders_589093)(tcgen550035* m) {
	NimStringDesc* LOC1;
	tstrentry127024* it;
	LOC1 = 0;
	LOC1 = rawNewString(tnl_175613->Sup.len + tnl_175613->Sup.len + 20);
appendString(LOC1, tnl_175613);
appendString(LOC1, ((NimStringDesc*) &TMP4190));
appendString(LOC1, tnl_175613);
	app_178060(&(*m).S[(((NU8) 1))- 0], LOC1);
	it = ((tstrentry127024*) ((*m).Headerfiles.Head));
	{
		while (1) {
			if (!!((it == NIM_NIL))) goto LA3;
			{
				TY178515 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_178076((*it).Data);
				appf_178115(&(*m).S[(((NU8) 1))- 0], ((NimStringDesc*) &TMP4191), LOC8, 1);
			}
			goto LA4;
			LA6: ;
			{
				TY178515 LOC10;
				memset((void*)LOC10, 0, sizeof(LOC10));
				LOC10[0] = torope_178076((*it).Data);
				appf_178115(&(*m).S[(((NU8) 1))- 0], ((NimStringDesc*) &TMP4192), LOC10, 1);
			}
			LA4: ;
			it = ((tstrentry127024*) ((*it).Sup.Next));
		} LA3: ;
	}
}

N_NIMCALL(void, generatethreadlocalstorage_561806)(tcgen550035* m) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		TY178515 LOC13;
		LOC3 = 0;
		LOC3 = !((nimtv_561729 == 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;
		{
			ttype226852* t_561851;
			NI i_561860;
			NI l_561862;
			t_561851 = 0;
			i_561860 = 0;
			l_561862 = nimtvdeps_561751->Sup.len;
			{
				while (1) {
					trope178009* LOC12;
					if (!(i_561860 < l_561862)) goto LA11;
					t_561851 = nimtvdeps_561751->data[i_561860];
					LOC12 = 0;
					LOC12 = gettypedesc_557306(m, t_561851);
					i_561860 += 1;
				} LA11: ;
			}
		}
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = nimtv_561729;
		appf_178115(&(*m).S[(((NU8) 4))- 0], ((NimStringDesc*) &TMP4193), LOC13, 1);
	}
	LA7: ;
}

N_NIMCALL(trope178009*, genmodule_591962)(tcgen550035* m, NimStringDesc* cfile) {
	trope178009* result;
	trope178009* LOC1;
	result = 0;
	result = getfileheader_590924(cfile);
	LOC1 = 0;
	LOC1 = genmergeinfo_551329(m);
	app_178052(&result, LOC1);
	generateheaders_589093(m);
	generatethreadlocalstorage_561806(m);
	{
		NU8 i_592014;
		NU8 res_592022;
		i_592014 = 0;
		res_592022 = ((NU8) 1);
		{
			while (1) {
				trope178009* LOC5;
				trope178009* LOC6;
				if (!(res_592022 <= ((NU8) 10))) goto LA4;
				i_592014 = res_592022;
				LOC5 = 0;
				LOC5 = gensectionstart_551028(i_592014);
				app_178052(&result, LOC5);
				app_178052(&result, (*m).S[(i_592014)- 0]);
				LOC6 = 0;
				LOC6 = gensectionend_551079(i_592014);
				app_178052(&result, LOC6);
				res_592022 += 1;
			} LA4: ;
		}
	}
	app_178052(&result, (*m).S[(((NU8) 11))- 0]);
	return result;
}

N_NIMCALL(void, updatecachedmodule_593221)(tcgen550035* m) {
	NimStringDesc* cfile;
	NimStringDesc* cfilenoext;
	cfile = getcfile_592665(m);
	cfilenoext = noschangeFileExt(cfile, ((NimStringDesc*) &TMP3812));
	{
		NIM_BOOL LOC3;
		trope178009* code;
		LOC3 = 0;
		LOC3 = mergerequired_552137(m);
		if (!(LOC3)) goto LA4;
		LOC3 = !((((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		mergefiles_552303(cfile, m);
		geninitcode_591726(m);
		finishtypedescriptions_557475(m);
		code = genmodule_591962(m, cfile);
		writerope_179423(code, cfile, NIM_FALSE);
		addfiletocompile_203876(cfile);
	}
	LA5: ;
	addfiletolink_203897(cfilenoext);
}

N_NIMCALL(void, generatethreadvarssize_561875)(tcgen550035* m) {
	{
		NimStringDesc* externc;
		TY178515 LOC12;
		if (!!((nimtv_561729 == NIM_NIL))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = !((gcmd_170120 == ((NU8) 2)));
			if (!(LOC7)) goto LA8;
			LOC7 = (((*(*m).Module).Flags &(1<<((((NU8) 27))&31)))!=0);
			LA8: ;
			if (!LOC7) goto LA9;
			externc = copyString(((NimStringDesc*) &TMP4195));
		}
		goto LA5;
		LA9: ;
		{
			externc = copyString(((NimStringDesc*) &TMP3812));
		}
		LA5: ;
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = torope_178076(externc);
		appf_178115(&(*m).S[(((NU8) 10))- 0], ((NimStringDesc*) &TMP4196), LOC12, 1);
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, shouldrecompile_593042)(trope178009* code, NimStringDesc* cfile) {
	NIM_BOOL result;
	result = 0;
	result = NIM_TRUE;
	{
		NimStringDesc* objfile;
		if (!!(((gglobaloptions_170118 &(1<<((((NU8) 1))&31)))!=0))) goto LA3;
		objfile = toobjfile_203866(cfile);
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = writeropeifnotequal_178094(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_179423(code, cfile, NIM_FALSE);
	}
	LA1: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, writemodule_593067)(tcgen550035* m, NIM_BOOL pending) {
	NimStringDesc* cfile;
	NimStringDesc* cfilenoext;
	cfile = getcfile_592665(m);
	cfilenoext = noschangeFileExt(cfile, ((NimStringDesc*) &TMP3812));
	{
		NIM_BOOL LOC3;
		trope178009* code;
		LOC3 = 0;
		LOC3 = !((*m).Sup.Fromcache);
		if (LOC3) goto LA4;
		LOC3 = ((gglobaloptions_170118 &(1<<((((NU8) 1))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		geninitcode_591726(m);
		finishtypedescriptions_557475(m);
		{
			if (!(((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0)) goto LA9;
			app_178052(&(*m).S[(((NU8) 7))- 0], mainmodprocs_550145);
			generatethreadvarssize_561875(m);
		}
		LA9: ;
		code = genmodule_591962(m, cfile);
		{
			NIM_BOOL LOC13;
			LOC13 = 0;
			LOC13 = shouldrecompile_593042(code, cfile);
			if (!LOC13) goto LA14;
			addfiletocompile_203876(cfile);
		}
		LA14: ;
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC17;
		NIM_BOOL LOC18;
		trope178009* code;
		LOC17 = 0;
		LOC18 = 0;
		LOC18 = pending;
		if (!(LOC18)) goto LA19;
		LOC18 = mergerequired_552137(m);
		LA19: ;
		LOC17 = LOC18;
		if (!(LOC17)) goto LA20;
		LOC17 = !((((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0));
		LA20: ;
		if (!LOC17) goto LA21;
		mergefiles_552303(cfile, m);
		geninitcode_591726(m);
		finishtypedescriptions_557475(m);
		code = genmodule_591962(m, cfile);
		writerope_179423(code, cfile, NIM_FALSE);
		addfiletocompile_203876(cfile);
	}
	goto LA1;
	LA21: ;
	{
		NimStringDesc* LOC24;
		NIM_BOOL LOC25;
		LOC24 = 0;
		LOC24 = toobjfile_203866(cfilenoext);
		LOC25 = 0;
		LOC25 = nosexistsFile(LOC24);
		if (!!(LOC25)) goto LA26;
		addfiletocompile_203876(cfile);
	}
	goto LA1;
	LA26: ;
	LA1: ;
	addfiletolink_203897(cfilenoext);
}

N_NIMCALL(void, writeheader_592586)(tcgen550035* m) {
	trope178009* result;
	trope178009* guard;
	TY178515 LOC1;
	TY117604 LOC2;
	TY178515 LOC3;
	TY554703 LOC13;
	TY178515 LOC14;
	result = getcopyright_590893((*m).Filename);
	memset((void*)LOC1, 0, sizeof(LOC1));
	memset((void*)(&LOC2), 0, sizeof(LOC2));
	nossplitFile((*m).Filename, (&LOC2));
	LOC1[0] = torope_178076(LOC2.Field1);
	guard = ropef_178107(((NimStringDesc*) &TMP4206), LOC1, 1);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = guard;
	appf_178115(&result, ((NimStringDesc*) &TMP4207), LOC3, 1);
	addinttypes_590879(&result);
	generateheaders_589093(m);
	generatethreadlocalstorage_561806(m);
	{
		NU8 i_592613;
		NU8 res_592648;
		i_592613 = 0;
		res_592648 = ((NU8) 1);
		{
			while (1) {
				trope178009* LOC7;
				trope178009* LOC8;
				if (!(res_592648 <= ((NU8) 10))) goto LA6;
				i_592613 = res_592648;
				LOC7 = 0;
				LOC7 = gensectionstart_551028(i_592613);
				app_178052(&result, LOC7);
				app_178052(&result, (*m).S[(i_592613)- 0]);
				LOC8 = 0;
				LOC8 = gensectionend_551079(i_592613);
				app_178052(&result, LOC8);
				res_592648 += 1;
			} LA6: ;
		}
	}
	app_178052(&result, (*m).S[(((NU8) 11))- 0]);
	{
		if (!((gglobaloptions_170118 &(1<<((((NU8) 8))&31)))!=0)) goto LA11;
		app_178060(&result, ((NimStringDesc*) &TMP3456));
	}
	LA11: ;
	memset((void*)LOC13, 0, sizeof(LOC13));
	appf_178115(&result, ((NimStringDesc*) &TMP4208), LOC13, 0);
	memset((void*)LOC14, 0, sizeof(LOC14));
	LOC14[0] = guard;
	appf_178115(&result, ((NimStringDesc*) &TMP4209), LOC14, 1);
	writerope_179423(result, (*m).Filename, NIM_FALSE);
}

N_NIMCALL(void, cgenwritemodules_593360)(void) {
	{
		if (!!((generatedheader_553201 == NIM_NIL))) goto LA3;
		finishmodule_592837(generatedheader_553201);
	}
	LA3: ;
	{
		while (1) {
			if (!(0 < gforwardedprocscounter_550172)) goto LA6;
			{
				tcgen550035* m_593380;
				m_593380 = 0;
				{
					NI i_593404;
					NI HEX3Atmp_593406;
					NI res_593408;
					i_593404 = 0;
					HEX3Atmp_593406 = 0;
					HEX3Atmp_593406 = (gmodules_550171->Sup.len-1);
					res_593408 = 0;
					{
						while (1) {
							if (!(res_593408 <= HEX3Atmp_593406)) goto LA10;
							i_593404 = res_593408;
							{
								if (!!((gmodules_550171->data[i_593404] == NIM_NIL))) goto LA13;
								m_593380 = gmodules_550171->data[i_593404];
								{
									if (!!((*m_593380).Sup.Fromcache)) goto LA17;
									finishmodule_592837(m_593380);
								}
								LA17: ;
							}
							LA13: ;
							res_593408 += 1;
						} LA10: ;
					}
				}
			}
		} LA6: ;
	}
	{
		tcgen550035* m_593381;
		m_593381 = 0;
		{
			NI i_593413;
			NI HEX3Atmp_593415;
			NI res_593417;
			i_593413 = 0;
			HEX3Atmp_593415 = 0;
			HEX3Atmp_593415 = (gmodules_550171->Sup.len-1);
			res_593417 = 0;
			{
				while (1) {
					if (!(res_593417 <= HEX3Atmp_593415)) goto LA22;
					i_593413 = res_593417;
					{
						if (!!((gmodules_550171->data[i_593413] == NIM_NIL))) goto LA25;
						m_593381 = gmodules_550171->data[i_593413];
						{
							if (!(*m_593381).Sup.Fromcache) goto LA29;
							updatecachedmodule_593221(m_593381);
						}
						goto LA27;
						LA29: ;
						{
							writemodule_593067(m_593381, NIM_TRUE);
						}
						LA27: ;
					}
					LA25: ;
					res_593417 += 1;
				} LA22: ;
			}
		}
	}
	writemapping_204898(gmapping_550149);
	{
		if (!!((generatedheader_553201 == NIM_NIL))) goto LA34;
		writeheader_592586(generatedheader_553201);
	}
	LA34: ;
}

N_NIMCALL(void, nullify_592290)(trope178009** arr_592296) {
	{
		NU8 i_592308;
		NU8 res_592312;
		i_592308 = 0;
		res_592312 = ((NU8) 0);
		{
			while (1) {
				if (!(res_592312 <= ((NU8) 17))) goto LA3;
				i_592308 = res_592312;
				unsureAsgnRef((void**) (&arr_592296[(i_592308)- 0]), NIM_NIL);
				res_592312 += 1;
			} LA3: ;
		}
	}
}

N_NIMCALL(void, nullify_592329)(trope178009** arr_592335) {
	{
		NIM_CHAR i_592372;
		NIM_CHAR res_592376;
		i_592372 = 0;
		res_592376 = 48;
		{
			while (1) {
				if (!((NU8)(((NIM_CHAR) (((NU8)(res_592376))))) <= (NU8)(57))) goto LA3;
				i_592372 = res_592376;
				unsureAsgnRef((void**) (&arr_592335[(((NU8)(i_592372)))- 48]), NIM_NIL);
				res_592376 += 1;
			} LA3: ;
		}
	}
}

N_NIMCALL(void, resetmodule_592229)(tcgen550035* m) {
	initlinkedlist_127043((&(*m).Headerfiles));
	initintset_223950((&(*m).Declaredprotos));
	initidtable_227167((&(*m).Forwtypecache));
	asgnRef((void**) (&(*m).Initproc), newproc_550230(NIM_NIL, m));
	(*(*m).Initproc).Options = initprocoptions_592061(m);
	asgnRef((void**) (&(*m).Preinitproc), newpreinitproc_592039(m));
	asgnRef((void**) (&(*m).Postinitproc), newpostinitproc_592050(m));
	initnodetable_227188((&(*m).Datacache));
	if ((*m).Typestack) nimGCunrefNoCycle((*m).Typestack);
	(*m).Typestack = (ttypeseq226848*) newSeqRC1((&NTI226848), 0);
	if ((*m).Forwardedprocs) nimGCunrefNoCycle((*m).Forwardedprocs);
	(*m).Forwardedprocs = (tsymseq226818*) newSeqRC1((&NTI226818), 0);
	asgnRefNoCycle((void**) (&(*m).Typenodesname), gettempname_555242());
	asgnRefNoCycle((void**) (&(*m).Nimtypesname), gettempname_555242());
	(*m).Preventstacktrace = (((*(*m).Module).Flags &(1<<((((NU8) 13))&31)))!=0);
	nullify_592290((*m).S);
	(*m).Usesthreadvars = NIM_FALSE;
	(*m).Typenodes = 0;
	(*m).Nimtypes = 0;
	nullify_592329((*m).Extensionloaders);
	(*m).Sup.Fromcache = NIM_TRUE;
}

N_NIMCALL(void, resetcgenmodules_592397)(void) {
	{
		tcgen550035* m_592399;
		m_592399 = 0;
		{
			NI i_592404;
			NI HEX3Atmp_592406;
			NI res_592408;
			i_592404 = 0;
			HEX3Atmp_592406 = 0;
			HEX3Atmp_592406 = (gmodules_550171->Sup.len-1);
			res_592408 = 0;
			{
				while (1) {
					if (!(res_592408 <= HEX3Atmp_592406)) goto LA4;
					i_592404 = res_592408;
					{
						if (!!((gmodules_550171->data[i_592404] == NIM_NIL))) goto LA7;
						m_592399 = gmodules_550171->data[i_592404];
						resetmodule_592229(m_592399);
					}
					LA7: ;
					res_592408 += 1;
				} LA4: ;
			}
		}
	}
}
NIM_EXTERNC N_NOINLINE(void, HEX00_cgenInit)(void) {
	asgnRefNoCycle((void**) (&indent_554045), torope_178076(((NimStringDesc*) &TMP982)));
	if (nimtvdeps_561751) nimGCunrefNoCycle(nimtvdeps_561751);
	nimtvdeps_561751 = (ttypeseq226848*) newSeqRC1((&NTI226848), 0);
	chckNil((void*)(&nimtvdeclared_561752));
	genericReset((void*)(&nimtvdeclared_561752), (&NTI223056));
	initintset_223950((&nimtvdeclared_561752));
	breakpointid_574071 = 0;
}

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

