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

#include <string.h>
typedef struct tglobals507022 tglobals507022;
typedef struct tpasscontext246003 tpasscontext246003;
typedef struct tsym188833 tsym188833;
typedef struct tjsgen507010 tjsgen507010;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tcell41090 tcell41090;
typedef struct tcellseq41106 tcellseq41106;
typedef struct tgcheap43016 tgcheap43016;
typedef struct tcellset41102 tcellset41102;
typedef struct tpagedesc41098 tpagedesc41098;
typedef struct tmemregion23410 tmemregion23410;
typedef struct tsmallchunk22638 tsmallchunk22638;
typedef struct tllchunk23404 tllchunk23404;
typedef struct tbigchunk22640 tbigchunk22640;
typedef struct tintset22615 tintset22615;
typedef struct ttrunk22611 ttrunk22611;
typedef struct tavlnode23408 tavlnode23408;
typedef struct tgcstat43014 tgcstat43014;
typedef struct trope145007 trope145007;
typedef struct tsymseq188805 tsymseq188805;
typedef struct TGenericSeq TGenericSeq;
typedef struct tintset185047 tintset185047;
typedef struct ttrunk185043 ttrunk185043;
typedef struct ttrunkseq185045 ttrunkseq185045;
typedef struct trodreader236024 trodreader236024;
typedef struct NimStringDesc NimStringDesc;
typedef struct tnode188803 tnode188803;
typedef struct tlineinfo163527 tlineinfo163527;
typedef struct ttype188837 ttype188837;
typedef struct tident167019 tident167019;
typedef struct tnodeseq188797 tnodeseq188797;
typedef struct tproc507028 tproc507028;
typedef struct TY507066 TY507066;
typedef struct tblock507020 tblock507020;
typedef struct tidobj167013 tidobj167013;
typedef struct ttypeseq188835 ttypeseq188835;
typedef struct tscope188827 tscope188827;
typedef struct TY188933 TY188933;
typedef struct tinstantiation188823 tinstantiation188823;
typedef struct tstrtable188807 tstrtable188807;
typedef struct tloc188817 tloc188817;
typedef struct tlib188821 tlib188821;
typedef struct tcompres507018 tcompres507018;
typedef struct TY79484 TY79484;
typedef struct tbasechunk22636 tbasechunk22636;
typedef struct tfreecell22628 tfreecell22628;
typedef struct TY188922 TY188922;
typedef struct tindex236022 tindex236022;
typedef struct tiitable197207 tiitable197207;
typedef struct tiipairseq197205 tiipairseq197205;
typedef struct tiipair197203 tiipair197203;
typedef struct tidtable188849 tidtable188849;
typedef struct tidpairseq188847 tidpairseq188847;
typedef struct tidpair188845 tidpair188845;
typedef struct tmemfile234204 tmemfile234204;
typedef struct tlistentry118017 tlistentry118017;
typedef N_NIMCALL_PTR(void, TY2289) (void* p, NI op);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY2289 marker;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tpasscontext246003  {
  TNimObject Sup;
NIM_BOOL Fromcache;
};
struct  tjsgen507010  {
  tpasscontext246003 Sup;
tsym188833* Module;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  tcell41090  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq41106  {
NI Len;
NI Cap;
tcell41090** D;
};
struct  tcellset41102  {
NI Counter;
NI Max;
tpagedesc41098* Head;
tpagedesc41098** Data;
};
typedef tsmallchunk22638* TY23422[512];
typedef ttrunk22611* ttrunkbuckets22613[256];
struct  tintset22615  {
ttrunkbuckets22613 Data;
};
struct  tmemregion23410  {
NI Minlargeobj;
NI Maxlargeobj;
TY23422 Freesmallchunks;
tllchunk23404* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk22640* Freechunkslist;
tintset22615 Chunkstarts;
tavlnode23408* Root;
tavlnode23408* Deleted;
tavlnode23408* Last;
tavlnode23408* Freeavlnodes;
};
struct  tgcstat43014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap43016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq41106 Zct;
tcellseq41106 Decstack;
tcellset41102 Cycleroots;
tcellseq41106 Tempstack;
NI Recgclock;
tmemregion23410 Region;
tgcstat43014 Stat;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  tintset185047  {
NI Counter;
NI Max;
ttrunk185043* Head;
ttrunkseq185045* Data;
};
struct  tglobals507022  {
trope145007* Typeinfo;
trope145007* Code;
tsymseq188805* Forwarded;
tintset185047 Generatedsyms;
tintset185047 Typeinfogenerated;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tlineinfo163527  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  tnode188803  {
ttype188837* Typ;
tlineinfo163527 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym188833* Sym;
} S4;
struct {tident167019* Ident;
} S5;
struct {tnodeseq188797* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
struct  tblock507020  {
NI Id;
NIM_BOOL Isloop;
};
struct  tproc507028  {
tnode188803* Procdef;
tsym188833* Prc;
trope145007* Locals;
trope145007* Body;
NU32 Options;
tjsgen507010* Module;
tglobals507022* G;
NIM_BOOL Beforeretneeded;
NU8 Target;
NI Unique;
TY507066* Blocks;
tproc507028* Up;
};
struct  tidobj167013  {
  TNimObject Sup;
NI Id;
};
struct  tstrtable188807  {
NI Counter;
tsymseq188805* Data;
};
struct  tloc188817  {
NU8 K;
NU8 S;
NU8 Flags;
ttype188837* T;
trope145007* R;
trope145007* Heaproot;
NI A;
};
struct  tsym188833  {
  tidobj167013 Sup;
NU8 Kind;
union {
struct {ttypeseq188835* Typeinstcache;
tscope188827* Typscope;
} S1;
struct {TY188933* Procinstcache;
tscope188827* Scope;
} S2;
struct {TY188933* Usedgenerics;
tstrtable188807 Tab;
} S3;
} kindU;
NU16 Magic;
ttype188837* Typ;
tident167019* Name;
tlineinfo163527 Info;
tsym188833* Owner;
NU32 Flags;
tnode188803* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc188817 Loc;
tlib188821* Annex;
tnode188803* Constraint;
};
typedef trope145007* TY503234[2];
struct  tident167019  {
  tidobj167013 Sup;
NimStringDesc* S;
tident167019* Next;
NI H;
};
struct  tcompres507018  {
NU8 Kind;
NU8 Typ;
trope145007* Res;
trope145007* Address;
};
struct  ttype188837  {
  tidobj167013 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq188835* Sons;
tnode188803* N;
tsym188833* Destructor;
tsym188833* Owner;
tsym188833* Sym;
NI64 Size;
NI Align;
tloc188817 Loc;
};
typedef trope145007* TY145497[1];
struct TY79484 {
NimStringDesc* Field0;
NI Field1;
};
typedef trope145007* TY473698[6];
typedef trope145007* TY470214[3];
typedef trope145007* TY473397[5];
typedef NU8 TY439854[20];
typedef NimStringDesc* tmagicfrmt508653[4];
typedef tmagicfrmt508653 tmagicops508655[96];
typedef trope145007* TY469906[1];
typedef trope145007* TY471942[4];
typedef NI TY22618[16];
struct  tpagedesc41098  {
tpagedesc41098* Next;
NI Key;
TY22618 Bits;
};
struct  tbasechunk22636  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk22638  {
  tbasechunk22636 Sup;
tsmallchunk22638* Next;
tsmallchunk22638* Prev;
tfreecell22628* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk23404  {
NI Size;
NI Acc;
tllchunk23404* Next;
};
struct  tbigchunk22640  {
  tbasechunk22636 Sup;
tbigchunk22640* Next;
tbigchunk22640* Prev;
NI Align;
NF Data;
};
struct  ttrunk22611  {
ttrunk22611* Next;
NI Key;
TY22618 Bits;
};
typedef tavlnode23408* TY23414[2];
struct  tavlnode23408  {
TY23414 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  trope145007  {
  TNimObject Sup;
trope145007* Left;
trope145007* Right;
NI Length;
NimStringDesc* Data;
};
struct  ttrunk185043  {
ttrunk185043* Next;
NI Key;
TY22618 Bits;
};
struct  tiipair197203  {
NI Key;
NI Val;
};
struct  tiitable197207  {
NI Counter;
tiipairseq197205* Data;
};
struct  tindex236022  {
NI Lastidxkey;
NI Lastidxval;
tiitable197207 Tab;
NimStringDesc* R;
NI Offset;
};
struct  tidpair188845  {
tidobj167013* Key;
TNimObject* Val;
};
struct  tidtable188849  {
NI Counter;
tidpairseq188847* Data;
};
struct  tmemfile234204  {
void* Mem;
NI Size;
int Handle;
};
struct  trodreader236024  {
  TNimObject Sup;
NI Pos;
NCSTRING S;
NU32 Options;
NU8 Reason;
TY188922* Moddeps;
TY188922* Files;
NI Dataidx;
NI Convertersidx;
NI Initidx;
NI Interfidx;
NI Compilerprocsidx;
NI Methodsidx;
NimStringDesc* Filename;
tindex236022 Index;
tindex236022 Imports;
NI Readerindex;
NI Line;
NI Moduleid;
tidtable188849 Syms;
tmemfile234204 Memfile;
tsymseq188805* Methods;
NimStringDesc* Origfile;
NIM_BOOL Inviewmode;
};
struct  tscope188827  {
NI Depthlevel;
tstrtable188807 Symbols;
tnodeseq188797* Usingsyms;
tscope188827* Parent;
};
struct  tinstantiation188823  {
tsym188833* Sym;
ttypeseq188835* Concretetypes;
TY188922* Usedby;
};
struct  tlistentry118017  {
  TNimObject Sup;
tlistentry118017* Prev;
tlistentry118017* Next;
};
struct  tlib188821  {
  tlistentry118017 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope145007* Name;
tnode188803* Path;
};
struct  tfreecell22628  {
tfreecell22628* Next;
NI Zerofield;
};
struct tsymseq188805 {
  TGenericSeq Sup;
  tsym188833* data[SEQ_DECL_SIZE];
};
struct ttrunkseq185045 {
  TGenericSeq Sup;
  ttrunk185043* data[SEQ_DECL_SIZE];
};
struct tnodeseq188797 {
  TGenericSeq Sup;
  tnode188803* data[SEQ_DECL_SIZE];
};
struct TY507066 {
  TGenericSeq Sup;
  tblock507020 data[SEQ_DECL_SIZE];
};
struct ttypeseq188835 {
  TGenericSeq Sup;
  ttype188837* data[SEQ_DECL_SIZE];
};
struct TY188933 {
  TGenericSeq Sup;
  tinstantiation188823* data[SEQ_DECL_SIZE];
};
struct TY188922 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct tiipairseq197205 {
  TGenericSeq Sup;
  tiipair197203 data[SEQ_DECL_SIZE];
};
struct tidpairseq188847 {
  TGenericSeq Sup;
  tidpair188845 data[SEQ_DECL_SIZE];
};
N_NIMCALL(tjsgen507010*, newmodule_516991)(tsym188833* module);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP3927)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tcell41090*, usrtocell_44443)(void* usr);
static N_INLINE(void, rtladdzct_46002)(tcell41090* c);
N_NOINLINE(void, addzct_44418)(tcellseq41106* s, tcell41090* c);
N_NIMCALL(tglobals507022*, newglobals_507075)(void);
N_NIMCALL(void, TMP3929)(void* p, NI op);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(void, initintset_185918)(tintset185047* Result);
N_NIMCALL(void, internalerror_165606)(NimStringDesc* errmsg);
static N_INLINE(NIM_BOOL, skipcodegen_246074)(tnode188803* n);
N_NIMCALL(void, internalerror_165591)(tlineinfo163527 info, NimStringDesc* errmsg);
N_NIMCALL(tproc507028*, newproc_507203)(tglobals507022* globals, tjsgen507010* module, tnode188803* procdef, NU32 options);
N_NIMCALL(void, TMP3937)(void* p, NI op);
N_NIMCALL(void, TMP3938)(void* p, NI op);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_46827)(tcell41090* c);
static N_INLINE(NIM_BOOL, canbecycleroot_44462)(tcell41090* c);
static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c);
N_NOINLINE(void, incl_41855)(tcellset41102* s, tcell41090* cell);
static N_INLINE(void, decref_46402)(tcell41090* c);
N_NIMCALL(void, genmodule_517039)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, appf_145085)(trope145007** c, NimStringDesc* frmt, trope145007** args, NI argsLen0);
N_NIMCALL(trope145007*, makejsstring_507386)(NimStringDesc* s);
N_NIMCALL(trope145007*, torope_145058)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, nsuEscape)(NimStringDesc* s, NimStringDesc* prefix, NimStringDesc* suffix);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NimStringDesc*, tofilename_164780)(NI32 fileidx);
N_NIMCALL(void, genstmt_508119)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, gen_508112)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(void, gensym_513137)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(NU8, maptype_507281)(ttype188837* typ);
N_NIMCALL(ttype188837*, skiptypes_192793)(ttype188837* t, NU64 kinds);
static N_INLINE(ttype188837*, lastson_189193)(ttype188837* n);
static N_INLINE(NI, sonslen_189185)(ttype188837* n);
N_NIMCALL(trope145007*, ropef_145079)(NimStringDesc* frmt, trope145007** args, NI argsLen0);
N_NIMCALL(trope145007*, con_145025)(trope145007* a, NimStringDesc* b);
N_NIMCALL(void, genconstant_508129)(tproc507028* p, tsym188833* c);
N_NIMCALL(NIM_BOOL, containsorincl_185888)(tintset185047* s, NI key);
N_NIMCALL(void, genvarinit_514148)(tproc507028* p, tsym188833* v, tnode188803* n);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(trope145007*, manglename_507361)(tsym188833* s);
N_NIMCALL(NimStringDesc*, mangle_507301)(NimStringDesc* name);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, nsuToHex)(NI64 x, NI len);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(void, app_145046)(trope145007** a, NimStringDesc* b);
N_NIMCALL(void, app_145040)(trope145007** a, trope145007* b);
N_NIMCALL(trope145007*, torope_145062)(NI64 i);
N_NIMCALL(trope145007*, createvar_513753)(tproc507028* p, ttype188837* typ, NIM_BOOL indirect);
N_NIMCALL(trope145007*, puttoseq_513742)(NimStringDesc* s, NIM_BOOL indirect);
N_NIMCALL(NI64, lengthord_223010)(ttype188837* t);
N_NIMCALL(ttype188837*, elemtype_223559)(ttype188837* t);
N_NIMCALL(void, usemagic_508134)(tproc507028* p, NimStringDesc* name);
N_NIMCALL(tsym188833*, getcompilerproc_242028)(NimStringDesc* name);
N_NIMCALL(NimStringDesc*, HEX24_165714)(TY79484 x_165718);
N_NIMCALL(trope145007*, genproc_508124)(tproc507028* oldproc, tsym188833* prc);
N_NIMCALL(trope145007*, generateheader_511914)(tproc507028* p, ttype188837* typ);
static N_INLINE(NI, sonslen_189181)(tnode188803* n);
static N_INLINE(NIM_BOOL, iscompiletimeonly_233237)(ttype188837* t);
N_NIMCALL(NIM_BOOL, isindirect_514106)(tsym188833* v);
N_NIMCALL(tnode188803*, getbody_239244)(tsym188833* s);
N_NIMCALL(trope145007*, genprocbody_516265)(tproc507028* p, tsym188833* prc);
N_NIMCALL(void, globalerror_165558)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, rawmessage_165386)(NU16 msg, NimStringDesc* arg);
N_NIMCALL(trope145007*, gentypeinfo_507392)(tproc507028* p, ttype188837* typ);
N_NIMCALL(void, prepend_145052)(trope145007** a, trope145007* b);
N_NIMCALL(void, genenuminfo_507867)(tproc507028* p, ttype188837* typ, trope145007* name);
N_NIMCALL(void, genobjectinfo_507730)(tproc507028* p, ttype188837* typ, trope145007* name);
N_NIMCALL(trope145007*, genobjectfields_507396)(tproc507028* p, ttype188837* typ, tnode188803* n);
N_NIMCALL(NI64, getordvalue_223150)(tnode188803* n);
static N_INLINE(tnode188803*, lastson_189189)(tnode188803* n);
N_NIMCALL(void, gentupleinfo_507837)(tproc507028* p, ttype188837* typ, trope145007* name);
N_NIMCALL(trope145007*, gentuplefields_507791)(tproc507028* p, ttype188837* typ);
N_NIMCALL(NI, len_192569)(ttype188837* n);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_75880, TNimType* typ);
N_NIMCALL(trope145007*, createrecordvaraux_513759)(tproc507028* p, tnode188803* rec, NI* c);
N_NIMCALL(NIM_BOOL, needsnocopy_512056)(tnode188803* y);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
static N_INLINE(NIM_BOOL, isemptytype_195210)(ttype188837* t);
N_NIMCALL(NimStringDesc*, tostrmaxprecision_196017)(NF f);
N_NIMCALL(void, genmagic_515170)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genor_508452)(tproc507028* p, tnode188803* a, tnode188803* b, tcompres507018* r);
N_NIMCALL(NIM_BOOL, issimpleexpr_508212)(tnode188803* n);
static N_INLINE(NI, len_189264)(tnode188803* n);
static N_INLINE(NIM_BOOL, isatom_195186)(tnode188803* n);
static N_INLINE(trope145007*, rdloc_507122)(tcompres507018 a);
N_NIMCALL(trope145007*, gettemp_508257)(tproc507028* p);
N_NIMCALL(void, genand_508297)(tproc507028* p, tnode188803* a, tnode188803* b, tcompres507018* r);
N_NIMCALL(void, arith_509282)(tproc507028* p, tnode188803* n, tcompres507018* r, NU16 op);
N_NIMCALL(void, arithaux_509191)(tproc507028* p, tnode188803* n, tcompres507018* r, NU16 op, tmagicops508655 ops);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(void, genrepr_515008)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, unaryexpr_509163)(tproc507028* p, tnode188803* n, tcompres507018* r, NimStringDesc* magic, NimStringDesc* frmt);
N_NIMCALL(void, genswap_512209)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, binaryexpr_509050)(tproc507028* p, tnode188803* n, tcompres507018* r, NimStringDesc* magic, NimStringDesc* frmt);
N_NIMCALL(void, genconstrstr_514836)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, gennew_514688)(tproc507028* p, tnode188803* n);
N_NIMCALL(NI64, getsize_223158)(ttype188837* typ);
N_NIMCALL(void, genord_514791)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, localerror_165571)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, gennewseq_514731)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, genof_515049)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genreset_515128)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, genecho_513733)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genargs_513557)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genarg_513533)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, ternaryexpr_509098)(tproc507028* p, tnode188803* n, tcompres507018* r, NimStringDesc* magic, NimStringDesc* frmt);
N_NIMCALL(void, gencall_513604)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, geninfixcall_513626)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, globalerror_165565)(tlineinfo163527 info, NimStringDesc* arg);
N_NIMCALL(void, gensetconstr_515464)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genarrayconstr_515558)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, gentupleconstr_515605)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genobjconstr_515689)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genconv_515835)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genaddr_512998)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(NimStringDesc*, ropetostr_145075)(trope145007* p);
N_NIMCALL(void, gencheckedfieldaddr_512738)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genfieldaddr_512394)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(NI, getfieldposition_512360)(tnode188803* f);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(void, genarrayaddr_512782)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(NI64, firstord_223002)(ttype188837* t);
N_NIMCALL(NIM_BOOL, isconstexpr_221843)(tnode188803* n);
N_NIMCALL(void, genderef_513458)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genarrayaccess_512933)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genfieldaccess_512588)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, gencheckedfieldaccess_512760)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, upconv_515904)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genrangechck_515926)(tproc507028* p, tnode188803* n, tcompres507018* r, NimStringDesc* magic);
N_NIMCALL(void, convstrtocstr_516000)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, convcstrtostr_516094)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genblock_510875)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, genif_511707)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, moveinto_509621)(tproc507028* p, tcompres507018* src, tcompres507018 dest);
N_NIMCALL(NimStringDesc*, nsuRepeatChar)(NI count, NIM_CHAR c);
N_NIMCALL(void, genwhilestmt_509474)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, genlinedir_509300)(tproc507028* p, tnode188803* n);
static N_INLINE(NI, tolinenumber_164812)(tlineinfo163527 info);
N_NIMCALL(void, genvarstmt_514289)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, gencasejs_510315)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(tnode188803*, copynode_189233)(tnode188803* src);
N_NIMCALL(void, gencaselua_510620)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genreturnstmt_516188)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, genbreakstmt_511061)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, genasgn_512141)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, genasgnaux_512089)(tproc507028* p, tnode188803* x, tnode188803* y, NIM_BOOL nocopyneeded);
N_NIMCALL(void, genfastasgn_512175)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, genasmstmt_511447)(tproc507028* p, tnode188803* n);
N_NIMCALL(void, gentry_509657)(tproc507028* p, tnode188803* n, tcompres507018* r);
N_NIMCALL(void, genraisestmt_510248)(tproc507028* p, tnode188803* n);
N_NIMCALL(tnode188803*, myprocess_517084)(tpasscontext246003* b, tnode188803* n);
N_NIMCALL(trope145007*, wholecode_517112)(tjsgen507010* m);
N_NIMCALL(tnode188803*, generatemethoddispatchers_365126)(void);
N_NIMCALL(trope145007*, con_145020)(trope145007* a, trope145007* b);
N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path);
N_NIMCALL(NimStringDesc*, HEX2F_108477)(NimStringDesc* head, NimStringDesc* tail);
N_NIMCALL(NimStringDesc*, nosgetCurrentDir)(void);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, completecfilepath_169753)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(NIM_BOOL, writeropeifnotequal_145070)(trope145007* r, NimStringDesc* filename);
N_NIMCALL(trope145007*, genheader_517030)(void);
STRING_LITERAL(TMP3930, "symbol files are not possible with the JS code generator", 56);
STRING_LITERAL(TMP3931, "myProcess", 9);
STRING_LITERAL(TMP3939, "var F = {procname:$1,prev:framePtr,filename:$2,line:0};$nframeP"
"tr = F;$n", 72);
STRING_LITERAL(TMP3940, "\"", 1);
STRING_LITERAL(TMP3941, "module ", 7);
STRING_LITERAL(TMP3942, "symbol has no generated name: ", 30);
STRING_LITERAL(TMP3943, "$1[0]", 5);
STRING_LITERAL(TMP3944, "$1[1]", 5);
STRING_LITERAL(TMP3945, "_Idx", 4);
STRING_LITERAL(TMP3946, "var $1 = $2;$n", 14);
STRING_LITERAL(TMP3947, "local $1 = $2;$n", 16);
STRING_LITERAL(TMP3948, "", 0);
STRING_LITERAL(TMP3949, "_", 1);
STRING_LITERAL(TMP3950, "[$1]", 4);
STRING_LITERAL(TMP3951, "0", 1);
STRING_LITERAL(TMP3952, "0.0", 3);
STRING_LITERAL(TMP3953, "{}", 2);
STRING_LITERAL(TMP3954, "false", 5);
STRING_LITERAL(TMP3956, "compiler/jsgen.nim", 18);
NIM_CONST TY79484 TMP3955 = {((NimStringDesc*) &TMP3956),
172}
;
STRING_LITERAL(TMP3957, ", ", 2);
STRING_LITERAL(TMP3958, "var $# = $#;$n", 14);
STRING_LITERAL(TMP3959, "local $# = $#;$n", 16);
STRING_LITERAL(TMP3960, "return $#;$n", 12);
STRING_LITERAL(TMP3961, "function $#($#) {$n$#$#$#$#}$n", 30);
STRING_LITERAL(TMP3962, "function $#($#) $n$#$#$#$#$nend$n", 33);
STRING_LITERAL(TMP3963, "var F={procname:$1,prev:framePtr,filename:$2,line:0};$n", 55);
STRING_LITERAL(TMP3964, "local F={procname=$#,prev=framePtr,filename=$#,line=0};$n", 57);
STRING_LITERAL(TMP3965, "framePtr = F;$n", 15);
STRING_LITERAL(TMP3966, "BeforeRet: do {$n$1} while (false); $n", 38);
STRING_LITERAL(TMP3967, "$#;::BeforeRet::$n", 18);
STRING_LITERAL(TMP3968, "try {$n$1} catch (e) {$n alert(\"Unhandled exception:\\n\" + e.mes"
"sage + \"\\n\"$n}", 77);
STRING_LITERAL(TMP3969, "framePtr = framePtr.prev;", 25);
STRING_LITERAL(TMP3970, "arrayConstr", 11);
STRING_LITERAL(TMP3971, "nimCopy", 7);
STRING_LITERAL(TMP3972, "arrayConstr($1, $2, $3)", 23);
STRING_LITERAL(TMP3973, "NTI$1", 5);
STRING_LITERAL(TMP3974, "var $1 = {size: 0,kind: $2,base: null,node: null,finalizer: nul"
"l};$n", 68);
STRING_LITERAL(TMP3975, "$1.base = $2;$n", 15);
STRING_LITERAL(TMP3976, "genEnumInfo", 11);
STRING_LITERAL(TMP3977, "{kind: 1, offset: $1, typ: $2, name: $3, len: 0, sons: null}", 60);
STRING_LITERAL(TMP3978, "var NNI$1 = {kind: 2, offset: 0, typ: null, name: null, len: $2"
", sons: [$3]};$n", 79);
STRING_LITERAL(TMP3979, "var $1 = {size: 0, kind: $2, base: null, node: null, finalizer:"
" null};$n", 72);
STRING_LITERAL(TMP3980, "$1.node = NNI$2;$n", 18);
STRING_LITERAL(TMP3981, "var NNI$1 = $2;$n", 17);
STRING_LITERAL(TMP3982, "{kind: 2, len: $1, offset: 0, typ: null, name: null, sons: [$2]"
"}", 64);
STRING_LITERAL(TMP3983, "{kind: 1, offset: \"$1\", len: 0, typ: $2, name: $3, sons: null}", 62);
STRING_LITERAL(TMP3984, "genObjectFields", 15);
STRING_LITERAL(TMP3985, "genObjectFields; nkOfBranch broken", 34);
STRING_LITERAL(TMP3986, "[$1, $2]", 8);
STRING_LITERAL(TMP3987, "genObjectFields(nkRecCase)", 26);
STRING_LITERAL(TMP3988, "[SetConstr($1), $2]", 19);
STRING_LITERAL(TMP3989, "{kind: 3, offset: \"$1\", len: $3, typ: $2, name: $4, sons: [$5]}", 63);
STRING_LITERAL(TMP3990, "{kind: 1, offset: \"Field$1\", len: 0, typ: $2, name: \"Field$1\", "
"sons: null}", 74);
STRING_LITERAL(TMP3991, "genTypeInfo(", 12);
STRING_LITERAL(TMP3992, "[", 1);
STRING_LITERAL(TMP3993, "]", 1);
STRING_LITERAL(TMP3994, "{", 1);
STRING_LITERAL(TMP3995, "Field$1: $2", 11);
STRING_LITERAL(TMP3996, "Field$# = $#", 12);
STRING_LITERAL(TMP3997, "}", 1);
STRING_LITERAL(TMP3998, "m_type: $1", 10);
STRING_LITERAL(TMP3999, "m_type = $#", 11);
STRING_LITERAL(TMP4000, ": ", 2);
STRING_LITERAL(TMP4001, "createRecordVarAux", 18);
STRING_LITERAL(TMP4002, "[null, 0]", 9);
STRING_LITERAL(TMP4003, "{nil, 0}", 8);
STRING_LITERAL(TMP4004, "null", 4);
STRING_LITERAL(TMP4005, "nil", 3);
STRING_LITERAL(TMP4006, "createVar: ", 11);
static NIM_CONST TY439854 TMP4007 = {
0xE0, 0x07, 0x77, 0xFC, 0xE1, 0x00, 0x00, 0x00,
0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP4008, "nimCopy($1, $2)", 15);
STRING_LITERAL(TMP4009, "genVarInit", 10);
STRING_LITERAL(TMP4010, "var $1 = [$2, $3];$n", 20);
STRING_LITERAL(TMP4011, "local $1 = {$2, $3};$n", 22);
STRING_LITERAL(TMP4012, "var $1 = $2; var $1_Idx = $3;$n", 31);
STRING_LITERAL(TMP4013, "local $1 = $2; local $1_Idx = $3;$n", 35);
STRING_LITERAL(TMP4014, "var $1 = [$2];$n", 16);
STRING_LITERAL(TMP4015, "local $1 = {$2};$n", 18);
STRING_LITERAL(TMP4016, "null", 4);
STRING_LITERAL(TMP4017, "nil", 3);
STRING_LITERAL(TMP4018, "0", 1);
STRING_LITERAL(TMP4019, "cstrToNimstr", 12);
STRING_LITERAL(TMP4020, "cstrToNimstr($1)", 16);
STRING_LITERAL(TMP4021, "NaN", 3);
STRING_LITERAL(TMP4022, "0.0", 3);
STRING_LITERAL(TMP4023, "Infinity", 8);
STRING_LITERAL(TMP4024, "-Infinity", 9);
STRING_LITERAL(TMP4025, "($1 || $2)", 10);
STRING_LITERAL(TMP4026, "($1 or $2)", 10);
STRING_LITERAL(TMP4027, "Tmp$1", 5);
STRING_LITERAL(TMP4028, "var $1;$n", 9);
STRING_LITERAL(TMP4029, "local $1;$n", 11);
STRING_LITERAL(TMP4030, "if ($1) $2 = true; else {", 25);
STRING_LITERAL(TMP4031, "if $1 then $2 = true; else", 26);
STRING_LITERAL(TMP4032, "$2 = $1; }", 10);
STRING_LITERAL(TMP4033, "$2 = $1 end", 11);
STRING_LITERAL(TMP4034, "($1 && $2)", 10);
STRING_LITERAL(TMP4035, "($1 and $2)", 11);
STRING_LITERAL(TMP4036, "if (!$1) $2 = false; else {", 27);
STRING_LITERAL(TMP4037, "if not $1 then $2 = false; else", 31);
STRING_LITERAL(TMP4038, "addInt", 6);
STRING_LITERAL(TMP4039, "addInt($1, $2)", 14);
STRING_LITERAL(TMP4040, "($1 + $2)", 9);
STRING_LITERAL(TMP4041, "subInt", 6);
STRING_LITERAL(TMP4042, "subInt($1, $2)", 14);
STRING_LITERAL(TMP4043, "($1 - $2)", 9);
STRING_LITERAL(TMP4044, "mulInt", 6);
STRING_LITERAL(TMP4045, "mulInt($1, $2)", 14);
STRING_LITERAL(TMP4046, "($1 * $2)", 9);
STRING_LITERAL(TMP4047, "divInt", 6);
STRING_LITERAL(TMP4048, "divInt($1, $2)", 14);
STRING_LITERAL(TMP4049, "Math.floor($1 / $2)", 19);
STRING_LITERAL(TMP4050, "modInt", 6);
STRING_LITERAL(TMP4051, "modInt($1, $2)", 14);
STRING_LITERAL(TMP4052, "Math.floor($1 % $2)", 19);
STRING_LITERAL(TMP4053, "addInt64", 8);
STRING_LITERAL(TMP4054, "addInt64($1, $2)", 16);
STRING_LITERAL(TMP4055, "subInt64", 8);
STRING_LITERAL(TMP4056, "subInt64($1, $2)", 16);
STRING_LITERAL(TMP4057, "mulInt64", 8);
STRING_LITERAL(TMP4058, "mulInt64($1, $2)", 16);
STRING_LITERAL(TMP4059, "divInt64", 8);
STRING_LITERAL(TMP4060, "divInt64($1, $2)", 16);
STRING_LITERAL(TMP4061, "modInt64", 8);
STRING_LITERAL(TMP4062, "modInt64($1, $2)", 16);
STRING_LITERAL(TMP4063, "($1 / $2)", 9);
STRING_LITERAL(TMP4064, "($1 >>> $2)", 11);
STRING_LITERAL(TMP4065, "($1 << $2)", 10);
STRING_LITERAL(TMP4066, "($1 & $2)", 9);
STRING_LITERAL(TMP4067, "($1 | $2)", 9);
STRING_LITERAL(TMP4068, "($1 ^ $2)", 9);
STRING_LITERAL(TMP4069, "nimMin", 6);
STRING_LITERAL(TMP4070, "nimMin($1, $2)", 14);
STRING_LITERAL(TMP4071, "nimMax", 6);
STRING_LITERAL(TMP4072, "nimMax($1, $2)", 14);
STRING_LITERAL(TMP4073, "addU", 4);
STRING_LITERAL(TMP4074, "addU($1, $2)", 12);
STRING_LITERAL(TMP4075, "subU", 4);
STRING_LITERAL(TMP4076, "subU($1, $2)", 12);
STRING_LITERAL(TMP4077, "mulU", 4);
STRING_LITERAL(TMP4078, "mulU($1, $2)", 12);
STRING_LITERAL(TMP4079, "divU", 4);
STRING_LITERAL(TMP4080, "divU($1, $2)", 12);
STRING_LITERAL(TMP4081, "modU", 4);
STRING_LITERAL(TMP4082, "modU($1, $2)", 12);
STRING_LITERAL(TMP4083, "($1 == $2)", 10);
STRING_LITERAL(TMP4084, "($1 <= $2)", 10);
STRING_LITERAL(TMP4085, "($1 < $2)", 9);
STRING_LITERAL(TMP4086, "leU", 3);
STRING_LITERAL(TMP4087, "leU($1, $2)", 11);
STRING_LITERAL(TMP4088, "ltU", 3);
STRING_LITERAL(TMP4089, "ltU($1, $2)", 11);
STRING_LITERAL(TMP4090, "leU64", 5);
STRING_LITERAL(TMP4091, "leU64($1, $2)", 13);
STRING_LITERAL(TMP4092, "ltU64", 5);
STRING_LITERAL(TMP4093, "ltU64($1, $2)", 13);
STRING_LITERAL(TMP4094, "($1 != $2)", 10);
STRING_LITERAL(TMP4095, "negInt", 6);
STRING_LITERAL(TMP4096, "negInt($1)", 10);
STRING_LITERAL(TMP4097, "-($1)", 5);
STRING_LITERAL(TMP4098, "negInt64", 8);
STRING_LITERAL(TMP4099, "negInt64($1)", 12);
STRING_LITERAL(TMP4100, "absInt", 6);
STRING_LITERAL(TMP4101, "absInt($1)", 10);
STRING_LITERAL(TMP4102, "Math.abs($1)", 12);
STRING_LITERAL(TMP4103, "absInt64", 8);
STRING_LITERAL(TMP4104, "absInt64($1)", 12);
STRING_LITERAL(TMP4105, "!($1)", 5);
STRING_LITERAL(TMP4106, "+($1)", 5);
STRING_LITERAL(TMP4107, "~($1)", 5);
STRING_LITERAL(TMP4108, "Ze8ToI", 6);
STRING_LITERAL(TMP4109, "Ze8ToI($1)", 10);
STRING_LITERAL(TMP4110, "Ze8ToI64", 8);
STRING_LITERAL(TMP4111, "Ze8ToI64($1)", 12);
STRING_LITERAL(TMP4112, "Ze16ToI", 7);
STRING_LITERAL(TMP4113, "Ze16ToI($1)", 11);
STRING_LITERAL(TMP4114, "Ze16ToI64", 9);
STRING_LITERAL(TMP4115, "Ze16ToI64($1)", 13);
STRING_LITERAL(TMP4116, "Ze32ToI64", 9);
STRING_LITERAL(TMP4117, "Ze32ToI64($1)", 13);
STRING_LITERAL(TMP4118, "ZeIToI64", 8);
STRING_LITERAL(TMP4119, "ZeIToI64($1)", 12);
STRING_LITERAL(TMP4120, "toU8", 4);
STRING_LITERAL(TMP4121, "toU8($1)", 8);
STRING_LITERAL(TMP4122, "toU16", 5);
STRING_LITERAL(TMP4123, "toU16($1)", 9);
STRING_LITERAL(TMP4124, "toU32", 5);
STRING_LITERAL(TMP4125, "toU32($1)", 9);
STRING_LITERAL(TMP4126, "$1", 2);
STRING_LITERAL(TMP4127, "Math.floor($1)", 14);
STRING_LITERAL(TMP4128, "nimCharToStr", 12);
STRING_LITERAL(TMP4129, "nimCharToStr($1)", 16);
STRING_LITERAL(TMP4130, "nimBoolToStr", 12);
STRING_LITERAL(TMP4131, "nimBoolToStr($1)", 16);
STRING_LITERAL(TMP4132, "cstrToNimstr(($1)+\"\")", 21);
NIM_CONST tmagicops508655 jsops_508659 = {{((NimStringDesc*) &TMP4038),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4039),
((NimStringDesc*) &TMP4040)}
,
{((NimStringDesc*) &TMP4041),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4042),
((NimStringDesc*) &TMP4043)}
,
{((NimStringDesc*) &TMP4044),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4045),
((NimStringDesc*) &TMP4046)}
,
{((NimStringDesc*) &TMP4047),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4048),
((NimStringDesc*) &TMP4049)}
,
{((NimStringDesc*) &TMP4050),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4051),
((NimStringDesc*) &TMP4052)}
,
{((NimStringDesc*) &TMP4053),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4054),
((NimStringDesc*) &TMP4040)}
,
{((NimStringDesc*) &TMP4055),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4056),
((NimStringDesc*) &TMP4043)}
,
{((NimStringDesc*) &TMP4057),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4058),
((NimStringDesc*) &TMP4046)}
,
{((NimStringDesc*) &TMP4059),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4060),
((NimStringDesc*) &TMP4049)}
,
{((NimStringDesc*) &TMP4061),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4062),
((NimStringDesc*) &TMP4052)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4040),
((NimStringDesc*) &TMP4040)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4043),
((NimStringDesc*) &TMP4043)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4046),
((NimStringDesc*) &TMP4046)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4063),
((NimStringDesc*) &TMP4063)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4064),
((NimStringDesc*) &TMP4064)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4065),
((NimStringDesc*) &TMP4065)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4066),
((NimStringDesc*) &TMP4066)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4067),
((NimStringDesc*) &TMP4067)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4068),
((NimStringDesc*) &TMP4068)}
,
{((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4070),
((NimStringDesc*) &TMP4070)}
,
{((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4072),
((NimStringDesc*) &TMP4072)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4064),
((NimStringDesc*) &TMP4064)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4065),
((NimStringDesc*) &TMP4065)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4066),
((NimStringDesc*) &TMP4066)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4067),
((NimStringDesc*) &TMP4067)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4068),
((NimStringDesc*) &TMP4068)}
,
{((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4070),
((NimStringDesc*) &TMP4070)}
,
{((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4072),
((NimStringDesc*) &TMP4072)}
,
{((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4070),
((NimStringDesc*) &TMP4070)}
,
{((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4072),
((NimStringDesc*) &TMP4072)}
,
{((NimStringDesc*) &TMP4073),
((NimStringDesc*) &TMP4073),
((NimStringDesc*) &TMP4074),
((NimStringDesc*) &TMP4074)}
,
{((NimStringDesc*) &TMP4075),
((NimStringDesc*) &TMP4075),
((NimStringDesc*) &TMP4076),
((NimStringDesc*) &TMP4076)}
,
{((NimStringDesc*) &TMP4077),
((NimStringDesc*) &TMP4077),
((NimStringDesc*) &TMP4078),
((NimStringDesc*) &TMP4078)}
,
{((NimStringDesc*) &TMP4079),
((NimStringDesc*) &TMP4079),
((NimStringDesc*) &TMP4080),
((NimStringDesc*) &TMP4080)}
,
{((NimStringDesc*) &TMP4081),
((NimStringDesc*) &TMP4081),
((NimStringDesc*) &TMP4082),
((NimStringDesc*) &TMP4082)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP4086),
((NimStringDesc*) &TMP4086),
((NimStringDesc*) &TMP4087),
((NimStringDesc*) &TMP4087)}
,
{((NimStringDesc*) &TMP4088),
((NimStringDesc*) &TMP4088),
((NimStringDesc*) &TMP4089),
((NimStringDesc*) &TMP4089)}
,
{((NimStringDesc*) &TMP4090),
((NimStringDesc*) &TMP4090),
((NimStringDesc*) &TMP4091),
((NimStringDesc*) &TMP4091)}
,
{((NimStringDesc*) &TMP4092),
((NimStringDesc*) &TMP4092),
((NimStringDesc*) &TMP4093),
((NimStringDesc*) &TMP4093)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4094),
((NimStringDesc*) &TMP4094)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP4095),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4096),
((NimStringDesc*) &TMP4097)}
,
{((NimStringDesc*) &TMP4098),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4099),
((NimStringDesc*) &TMP4097)}
,
{((NimStringDesc*) &TMP4100),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4101),
((NimStringDesc*) &TMP4102)}
,
{((NimStringDesc*) &TMP4103),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4104),
((NimStringDesc*) &TMP4102)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4105),
((NimStringDesc*) &TMP4105)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4106),
((NimStringDesc*) &TMP4106)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4107),
((NimStringDesc*) &TMP4107)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4106),
((NimStringDesc*) &TMP4106)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4107),
((NimStringDesc*) &TMP4107)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4106),
((NimStringDesc*) &TMP4106)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4097),
((NimStringDesc*) &TMP4097)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4102),
((NimStringDesc*) &TMP4102)}
,
{((NimStringDesc*) &TMP4108),
((NimStringDesc*) &TMP4108),
((NimStringDesc*) &TMP4109),
((NimStringDesc*) &TMP4109)}
,
{((NimStringDesc*) &TMP4110),
((NimStringDesc*) &TMP4110),
((NimStringDesc*) &TMP4111),
((NimStringDesc*) &TMP4111)}
,
{((NimStringDesc*) &TMP4112),
((NimStringDesc*) &TMP4112),
((NimStringDesc*) &TMP4113),
((NimStringDesc*) &TMP4113)}
,
{((NimStringDesc*) &TMP4114),
((NimStringDesc*) &TMP4114),
((NimStringDesc*) &TMP4115),
((NimStringDesc*) &TMP4115)}
,
{((NimStringDesc*) &TMP4116),
((NimStringDesc*) &TMP4116),
((NimStringDesc*) &TMP4117),
((NimStringDesc*) &TMP4117)}
,
{((NimStringDesc*) &TMP4118),
((NimStringDesc*) &TMP4118),
((NimStringDesc*) &TMP4119),
((NimStringDesc*) &TMP4119)}
,
{((NimStringDesc*) &TMP4120),
((NimStringDesc*) &TMP4120),
((NimStringDesc*) &TMP4121),
((NimStringDesc*) &TMP4121)}
,
{((NimStringDesc*) &TMP4122),
((NimStringDesc*) &TMP4122),
((NimStringDesc*) &TMP4123),
((NimStringDesc*) &TMP4123)}
,
{((NimStringDesc*) &TMP4124),
((NimStringDesc*) &TMP4124),
((NimStringDesc*) &TMP4125),
((NimStringDesc*) &TMP4125)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4126),
((NimStringDesc*) &TMP4126)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4126),
((NimStringDesc*) &TMP4126)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4127),
((NimStringDesc*) &TMP4127)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4127),
((NimStringDesc*) &TMP4127)}
,
{((NimStringDesc*) &TMP4128),
((NimStringDesc*) &TMP4128),
((NimStringDesc*) &TMP4129),
((NimStringDesc*) &TMP4129)}
,
{((NimStringDesc*) &TMP4130),
((NimStringDesc*) &TMP4130),
((NimStringDesc*) &TMP4131),
((NimStringDesc*) &TMP4131)}
,
{((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4132),
((NimStringDesc*) &TMP4132)}
,
{((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4132),
((NimStringDesc*) &TMP4132)}
,
{((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4132),
((NimStringDesc*) &TMP4132)}
,
{((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4020),
((NimStringDesc*) &TMP4020)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4126),
((NimStringDesc*) &TMP4126)}
}
;
STRING_LITERAL(TMP4133, "not ($1)", 8);
NIM_CONST tmagicops508655 luaops_508854 = {{((NimStringDesc*) &TMP4038),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4039),
((NimStringDesc*) &TMP4040)}
,
{((NimStringDesc*) &TMP4041),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4042),
((NimStringDesc*) &TMP4043)}
,
{((NimStringDesc*) &TMP4044),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4045),
((NimStringDesc*) &TMP4046)}
,
{((NimStringDesc*) &TMP4047),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4048),
((NimStringDesc*) &TMP4049)}
,
{((NimStringDesc*) &TMP4050),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4051),
((NimStringDesc*) &TMP4052)}
,
{((NimStringDesc*) &TMP4053),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4054),
((NimStringDesc*) &TMP4040)}
,
{((NimStringDesc*) &TMP4055),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4056),
((NimStringDesc*) &TMP4043)}
,
{((NimStringDesc*) &TMP4057),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4058),
((NimStringDesc*) &TMP4046)}
,
{((NimStringDesc*) &TMP4059),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4060),
((NimStringDesc*) &TMP4049)}
,
{((NimStringDesc*) &TMP4061),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4062),
((NimStringDesc*) &TMP4052)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4040),
((NimStringDesc*) &TMP4040)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4043),
((NimStringDesc*) &TMP4043)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4046),
((NimStringDesc*) &TMP4046)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4063),
((NimStringDesc*) &TMP4063)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4064),
((NimStringDesc*) &TMP4064)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4065),
((NimStringDesc*) &TMP4065)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4066),
((NimStringDesc*) &TMP4066)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4067),
((NimStringDesc*) &TMP4067)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4068),
((NimStringDesc*) &TMP4068)}
,
{((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4070),
((NimStringDesc*) &TMP4070)}
,
{((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4072),
((NimStringDesc*) &TMP4072)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4064),
((NimStringDesc*) &TMP4064)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4065),
((NimStringDesc*) &TMP4065)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4066),
((NimStringDesc*) &TMP4066)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4067),
((NimStringDesc*) &TMP4067)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4068),
((NimStringDesc*) &TMP4068)}
,
{((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4070),
((NimStringDesc*) &TMP4070)}
,
{((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4072),
((NimStringDesc*) &TMP4072)}
,
{((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4069),
((NimStringDesc*) &TMP4070),
((NimStringDesc*) &TMP4070)}
,
{((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4071),
((NimStringDesc*) &TMP4072),
((NimStringDesc*) &TMP4072)}
,
{((NimStringDesc*) &TMP4073),
((NimStringDesc*) &TMP4073),
((NimStringDesc*) &TMP4074),
((NimStringDesc*) &TMP4074)}
,
{((NimStringDesc*) &TMP4075),
((NimStringDesc*) &TMP4075),
((NimStringDesc*) &TMP4076),
((NimStringDesc*) &TMP4076)}
,
{((NimStringDesc*) &TMP4077),
((NimStringDesc*) &TMP4077),
((NimStringDesc*) &TMP4078),
((NimStringDesc*) &TMP4078)}
,
{((NimStringDesc*) &TMP4079),
((NimStringDesc*) &TMP4079),
((NimStringDesc*) &TMP4080),
((NimStringDesc*) &TMP4080)}
,
{((NimStringDesc*) &TMP4081),
((NimStringDesc*) &TMP4081),
((NimStringDesc*) &TMP4082),
((NimStringDesc*) &TMP4082)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP4086),
((NimStringDesc*) &TMP4086),
((NimStringDesc*) &TMP4087),
((NimStringDesc*) &TMP4087)}
,
{((NimStringDesc*) &TMP4088),
((NimStringDesc*) &TMP4088),
((NimStringDesc*) &TMP4089),
((NimStringDesc*) &TMP4089)}
,
{((NimStringDesc*) &TMP4090),
((NimStringDesc*) &TMP4090),
((NimStringDesc*) &TMP4091),
((NimStringDesc*) &TMP4091)}
,
{((NimStringDesc*) &TMP4092),
((NimStringDesc*) &TMP4092),
((NimStringDesc*) &TMP4093),
((NimStringDesc*) &TMP4093)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4084),
((NimStringDesc*) &TMP4084)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4085),
((NimStringDesc*) &TMP4085)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4094),
((NimStringDesc*) &TMP4094)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4083),
((NimStringDesc*) &TMP4083)}
,
{((NimStringDesc*) &TMP4095),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4096),
((NimStringDesc*) &TMP4097)}
,
{((NimStringDesc*) &TMP4098),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4099),
((NimStringDesc*) &TMP4097)}
,
{((NimStringDesc*) &TMP4100),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4101),
((NimStringDesc*) &TMP4102)}
,
{((NimStringDesc*) &TMP4103),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4104),
((NimStringDesc*) &TMP4102)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4133),
((NimStringDesc*) &TMP4133)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4106),
((NimStringDesc*) &TMP4106)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4107),
((NimStringDesc*) &TMP4107)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4106),
((NimStringDesc*) &TMP4106)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4107),
((NimStringDesc*) &TMP4107)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4106),
((NimStringDesc*) &TMP4106)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4097),
((NimStringDesc*) &TMP4097)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4102),
((NimStringDesc*) &TMP4102)}
,
{((NimStringDesc*) &TMP4108),
((NimStringDesc*) &TMP4108),
((NimStringDesc*) &TMP4109),
((NimStringDesc*) &TMP4109)}
,
{((NimStringDesc*) &TMP4110),
((NimStringDesc*) &TMP4110),
((NimStringDesc*) &TMP4111),
((NimStringDesc*) &TMP4111)}
,
{((NimStringDesc*) &TMP4112),
((NimStringDesc*) &TMP4112),
((NimStringDesc*) &TMP4113),
((NimStringDesc*) &TMP4113)}
,
{((NimStringDesc*) &TMP4114),
((NimStringDesc*) &TMP4114),
((NimStringDesc*) &TMP4115),
((NimStringDesc*) &TMP4115)}
,
{((NimStringDesc*) &TMP4116),
((NimStringDesc*) &TMP4116),
((NimStringDesc*) &TMP4117),
((NimStringDesc*) &TMP4117)}
,
{((NimStringDesc*) &TMP4118),
((NimStringDesc*) &TMP4118),
((NimStringDesc*) &TMP4119),
((NimStringDesc*) &TMP4119)}
,
{((NimStringDesc*) &TMP4120),
((NimStringDesc*) &TMP4120),
((NimStringDesc*) &TMP4121),
((NimStringDesc*) &TMP4121)}
,
{((NimStringDesc*) &TMP4122),
((NimStringDesc*) &TMP4122),
((NimStringDesc*) &TMP4123),
((NimStringDesc*) &TMP4123)}
,
{((NimStringDesc*) &TMP4124),
((NimStringDesc*) &TMP4124),
((NimStringDesc*) &TMP4125),
((NimStringDesc*) &TMP4125)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4126),
((NimStringDesc*) &TMP4126)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4126),
((NimStringDesc*) &TMP4126)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4127),
((NimStringDesc*) &TMP4127)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4127),
((NimStringDesc*) &TMP4127)}
,
{((NimStringDesc*) &TMP4128),
((NimStringDesc*) &TMP4128),
((NimStringDesc*) &TMP4129),
((NimStringDesc*) &TMP4129)}
,
{((NimStringDesc*) &TMP4130),
((NimStringDesc*) &TMP4130),
((NimStringDesc*) &TMP4131),
((NimStringDesc*) &TMP4131)}
,
{((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4132),
((NimStringDesc*) &TMP4132)}
,
{((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4132),
((NimStringDesc*) &TMP4132)}
,
{((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4132),
((NimStringDesc*) &TMP4132)}
,
{((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4019),
((NimStringDesc*) &TMP4020),
((NimStringDesc*) &TMP4020)}
,
{((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP3948),
((NimStringDesc*) &TMP4126),
((NimStringDesc*) &TMP4126)}
}
;
STRING_LITERAL(TMP4134, "(\"\"+ ($1))", 10);
STRING_LITERAL(TMP4135, "cstrToNimstr($1.node.sons[$2].name)", 35);
STRING_LITERAL(TMP4136, "genRepr: Not implemented", 24);
STRING_LITERAL(TMP4137, "genSwap", 7);
STRING_LITERAL(TMP4138, "var $1 = $2; $2 = $3; $3 = $1;$n", 32);
STRING_LITERAL(TMP4139, "local $1 = $2; $2 = $3; $3 = $1;$n", 34);
STRING_LITERAL(TMP4140, "var $1 = $2; $2 = $3; $3 = $1", 29);
STRING_LITERAL(TMP4141, "local $1 = $2; $2 = $3; $3 = $1", 31);
STRING_LITERAL(TMP4142, "$1 - 1", 6);
STRING_LITERAL(TMP4143, "subInt($1, 1)", 13);
STRING_LITERAL(TMP4144, "$1 - $2", 7);
STRING_LITERAL(TMP4145, "addChar", 7);
STRING_LITERAL(TMP4146, "addChar($1, $2)", 15);
STRING_LITERAL(TMP4147, "$1 += $2", 8);
STRING_LITERAL(TMP4148, "$1 = ($1.slice(0, -1)).concat($2)", 33);
STRING_LITERAL(TMP4149, "$1.push($2)", 11);
STRING_LITERAL(TMP4150, "[$1].concat(", 12);
STRING_LITERAL(TMP4151, "($1.slice(0,-1)).concat(", 24);
STRING_LITERAL(TMP4152, "[$1],", 5);
STRING_LITERAL(TMP4153, "$1.slice(0,-1),", 15);
STRING_LITERAL(TMP4154, "[$1, 0])", 8);
STRING_LITERAL(TMP4155, "$1)", 3);
STRING_LITERAL(TMP4156, "eqStrings", 9);
STRING_LITERAL(TMP4157, "eqStrings($1, $2)", 17);
STRING_LITERAL(TMP4158, "cmpStrings", 10);
STRING_LITERAL(TMP4159, "(cmpStrings($1, $2) <= 0)", 25);
STRING_LITERAL(TMP4160, "(cmpStrings($1, $2) < 0)", 24);
STRING_LITERAL(TMP4161, "$1 == null", 10);
STRING_LITERAL(TMP4162, "$1 = $2;$n", 10);
STRING_LITERAL(TMP4163, "($1 ? 1:0)", 10);
STRING_LITERAL(TMP4164, "toBool($#)", 10);
STRING_LITERAL(TMP4165, "genOrd", 6);
STRING_LITERAL(TMP4166, "($1.length-1)", 13);
STRING_LITERAL(TMP4167, "$1.length", 9);
STRING_LITERAL(TMP4168, "($1.length-2)", 13);
STRING_LITERAL(TMP4169, "$1 = addInt($1, $2)", 19);
STRING_LITERAL(TMP4170, "$1 -= $2", 8);
STRING_LITERAL(TMP4171, "$1 = subInt($1, $2)", 19);
STRING_LITERAL(TMP4172, "$1.length = $2+1; $1[$1.length-1] = 0", 37);
STRING_LITERAL(TMP4173, "$1.length = $2", 14);
STRING_LITERAL(TMP4174, "SetCard", 7);
STRING_LITERAL(TMP4175, "SetCard($1)", 11);
STRING_LITERAL(TMP4176, "SetLt", 5);
STRING_LITERAL(TMP4177, "SetLt($1, $2)", 13);
STRING_LITERAL(TMP4178, "SetLe", 5);
STRING_LITERAL(TMP4179, "SetLe($1, $2)", 13);
STRING_LITERAL(TMP4180, "SetEq", 5);
STRING_LITERAL(TMP4181, "SetEq($1, $2)", 13);
STRING_LITERAL(TMP4182, "SetMul", 6);
STRING_LITERAL(TMP4183, "SetMul($1, $2)", 14);
STRING_LITERAL(TMP4184, "SetPlus", 7);
STRING_LITERAL(TMP4185, "SetPlus($1, $2)", 15);
STRING_LITERAL(TMP4186, "SetMinus", 8);
STRING_LITERAL(TMP4187, "SetMinus($1, $2)", 16);
STRING_LITERAL(TMP4188, "$1[$2] = true", 13);
STRING_LITERAL(TMP4189, "delete $1[$2]", 13);
STRING_LITERAL(TMP4190, "($1[$2] != undefined)", 21);
STRING_LITERAL(TMP4191, "$1 = new Array($2); for (var i=0;i<$2;++i) {$1[i]=$3;}", 54);
STRING_LITERAL(TMP4192, "($1.m_type == $2)", 17);
STRING_LITERAL(TMP4193, "isObj", 5);
STRING_LITERAL(TMP4194, "isObj($1.m_type, $2)", 20);
STRING_LITERAL(TMP4195, "genericReset", 12);
STRING_LITERAL(TMP4196, "$1 = genericReset($1, $2);$n", 28);
STRING_LITERAL(TMP4197, "rawEcho", 7);
STRING_LITERAL(TMP4198, "(", 1);
STRING_LITERAL(TMP4199, ")", 1);
STRING_LITERAL(TMP4200, "($1.slice($2,-1))", 17);
STRING_LITERAL(TMP4201, "($1.slice($2, ($3)+1).concat(0))", 32);
STRING_LITERAL(TMP4202, "mnewString", 10);
STRING_LITERAL(TMP4203, "mnewString($1)", 14);
STRING_LITERAL(TMP4204, "mnewString(0)", 13);
STRING_LITERAL(TMP4205, "cannot invoke with infix syntax", 31);
STRING_LITERAL(TMP4206, "$1[$2]", 6);
STRING_LITERAL(TMP4207, ".", 1);
STRING_LITERAL(TMP4208, "SetConstr", 9);
STRING_LITERAL(TMP4209, "SetConstr(", 10);
STRING_LITERAL(TMP4210, "Field$#: $#", 11);
NIM_CONST TY79484 TMP4211 = {((NimStringDesc*) &TMP3956),
1422}
;
STRING_LITERAL(TMP4212, "$#: $#", 6);
STRING_LITERAL(TMP4213, "$# = $#", 7);
STRING_LITERAL(TMP4214, "(($1)? 1:0)", 11);
STRING_LITERAL(TMP4215, "genAddr: 3", 10);
STRING_LITERAL(TMP4216, "Globals", 7);
STRING_LITERAL(TMP4217, "genAddr: 4", 10);
STRING_LITERAL(TMP4218, "genAddr: 2", 10);
STRING_LITERAL(TMP4219, "Field", 5);
STRING_LITERAL(TMP4220, "genFieldPosition", 16);
STRING_LITERAL(TMP4221, "genFieldAddr", 12);
NIM_CONST TY79484 TMP4222 = {((NimStringDesc*) &TMP3956),
869}
;
NIM_CONST TY79484 TMP4223 = {((NimStringDesc*) &TMP3956),
898}
;
STRING_LITERAL(TMP4224, "chckIndx", 8);
STRING_LITERAL(TMP4225, "chckIndx($1, $2, $3.length)-$2", 30);
STRING_LITERAL(TMP4226, "($1)-$2", 7);
STRING_LITERAL(TMP4227, "expr(nkBracketExpr, ", 20);
STRING_LITERAL(TMP4228, "genAddr", 7);
STRING_LITERAL(TMP4229, "genDeref", 8);
STRING_LITERAL(TMP4230, "genArrayAccess", 14);
STRING_LITERAL(TMP4231, "$1.Field$2", 10);
STRING_LITERAL(TMP4232, "$1.$2", 5);
STRING_LITERAL(TMP4233, "chckRange", 9);
STRING_LITERAL(TMP4234, "chckRange($1, $2, $3)", 21);
STRING_LITERAL(TMP4235, "chckRangeF", 10);
STRING_LITERAL(TMP4236, "chckRange64", 11);
STRING_LITERAL(TMP4237, "convStrToCStr", 13);
STRING_LITERAL(TMP4238, "toJSStr", 7);
STRING_LITERAL(TMP4239, "toJSStr($1)", 11);
STRING_LITERAL(TMP4240, "convCStrToStr", 13);
STRING_LITERAL(TMP4241, "genBlock", 8);
STRING_LITERAL(TMP4242, "L$1: do {$n", 11);
STRING_LITERAL(TMP4243, "} while(false);$n", 17);
STRING_LITERAL(TMP4244, "$n::L$#::$n", 11);
STRING_LITERAL(TMP4245, "else {$n", 8);
STRING_LITERAL(TMP4246, "else$n", 6);
STRING_LITERAL(TMP4247, "if ($1) {$n", 11);
STRING_LITERAL(TMP4248, "if $# then$n", 12);
STRING_LITERAL(TMP4249, "$1;$n", 5);
STRING_LITERAL(TMP4250, "}$n", 3);
STRING_LITERAL(TMP4251, "end$n", 5);
NIM_CONST TY79484 TMP4252 = {((NimStringDesc*) &TMP3956),
504}
;
STRING_LITERAL(TMP4253, "// line $2 \"$1\"$n", 17);
STRING_LITERAL(TMP4254, "-- line $2 \"$1\"$n", 17);
STRING_LITERAL(TMP4255, "endb", 4);
STRING_LITERAL(TMP4256, "endb($1);$n", 11);
STRING_LITERAL(TMP4257, "F.line = $1;$n", 14);
STRING_LITERAL(TMP4258, "L$1: while (true) {$n", 21);
STRING_LITERAL(TMP4259, "while true do$n", 15);
STRING_LITERAL(TMP4260, "if (!$1) break L$2;$n", 21);
STRING_LITERAL(TMP4261, "if not $1 then goto ::L$2:: end;$n", 34);
STRING_LITERAL(TMP4262, "end ::L$#::$n", 13);
STRING_LITERAL(TMP4263, "for statement not eliminated", 28);
STRING_LITERAL(TMP4264, "switch (toJSStr($1)) {$n", 24);
STRING_LITERAL(TMP4265, "switch ($1) {$n", 15);
STRING_LITERAL(TMP4266, "case $1: ", 9);
STRING_LITERAL(TMP4267, "jsgen.genCaseStmt: 2", 20);
STRING_LITERAL(TMP4268, "$nbreak;$n", 10);
STRING_LITERAL(TMP4269, "default: $n", 11);
STRING_LITERAL(TMP4270, "break;$n", 8);
STRING_LITERAL(TMP4271, "jsgen.genCaseStmt", 17);
STRING_LITERAL(TMP4272, "eqStr", 5);
STRING_LITERAL(TMP4273, "$nelsif ", 8);
STRING_LITERAL(TMP4274, "if ", 3);
STRING_LITERAL(TMP4275, " or ", 4);
STRING_LITERAL(TMP4276, "$1 >= $2 and $1 <= $3", 21);
STRING_LITERAL(TMP4277, "eqStr($1, $2)", 13);
STRING_LITERAL(TMP4278, "$1 == $2", 8);
STRING_LITERAL(TMP4279, " then$n", 7);
STRING_LITERAL(TMP4280, "$nend$n", 7);
STRING_LITERAL(TMP4281, "genReturnStmt", 13);
STRING_LITERAL(TMP4282, "break BeforeRet;$n", 18);
STRING_LITERAL(TMP4283, "goto ::BeforeRet::;$n", 21);
STRING_LITERAL(TMP4284, "no loop to break", 16);
STRING_LITERAL(TMP4285, "break L$1;$n", 12);
STRING_LITERAL(TMP4286, "goto ::L$1::;$n", 15);
STRING_LITERAL(TMP4287, "$1 = nimCopy($2, $3);$n", 23);
STRING_LITERAL(TMP4288, "genAsgn", 7);
STRING_LITERAL(TMP4289, "$1 = $2; $3 = $4;$n", 19);
STRING_LITERAL(TMP4290, "jsgen: genAsmStmt()", 19);
STRING_LITERAL(TMP4291, "var $1 = {prev: excHandler, exc: null};$nexcHandler = $1;$n", 59);
STRING_LITERAL(TMP4292, "local $1 = pcall(", 17);
STRING_LITERAL(TMP4293, "framePtr = F;", 13);
STRING_LITERAL(TMP4294, "try {$n", 7);
STRING_LITERAL(TMP4295, "function()$n", 12);
STRING_LITERAL(TMP4296, "} catch (EXC) {$n  lastJSError = EXC;$n", 39);
STRING_LITERAL(TMP4297, "end)$n", 6);
STRING_LITERAL(TMP4298, "genTryStmt", 10);
STRING_LITERAL(TMP4299, "||", 2);
STRING_LITERAL(TMP4300, "isObj($1.exc.m_type, $2)", 24);
STRING_LITERAL(TMP4301, "else ", 5);
STRING_LITERAL(TMP4302, "if ($1.exc && ($2)) {$n", 23);
STRING_LITERAL(TMP4303, "if $1.exc and ($2) then$n", 25);
STRING_LITERAL(TMP4304, "} finally {", 11);
STRING_LITERAL(TMP4305, "excHandler = excHandler.prev;", 29);
STRING_LITERAL(TMP4306, "raiseException", 14);
STRING_LITERAL(TMP4307, "raiseException($1, $2);$n", 25);
STRING_LITERAL(TMP4308, "reraiseException", 16);
STRING_LITERAL(TMP4309, "reraiseException();", 19);
STRING_LITERAL(TMP4310, "first class iterators not implemented", 37);
STRING_LITERAL(TMP4311, "gen: unknown node type: ", 24);
STRING_LITERAL(TMP4312, "$#;$n", 5);
STRING_LITERAL(TMP4313, "framePtr = framePtr.prev;$n", 27);
STRING_LITERAL(TMP4314, "js", 2);
STRING_LITERAL(TMP4315, "/* Generated by the Nimrod Compiler v$1 */$n/*   (c) 2014 Andre"
"as Rumpf */$n$n$nvar Globals = this;$nvar framePtr = null;$nvar "
"excHandler = null;$n", 147);
STRING_LITERAL(TMP4316, "0.9.5", 5);
tglobals507022* globals_516988;
extern TNimType NTI246003; /* TPassContext */
TNimType NTI507010; /* TJSGen */
extern TNimType NTI188801; /* PSym */
TNimType NTI507012; /* BModule */
extern tgcheap43016 gch_43044;
TNimType NTI507022; /* TGlobals */
extern TNimType NTI145005; /* PRope */
extern TNimType NTI188805; /* TSymSeq */
extern TNimType NTI185047; /* TIntSet */
TNimType NTI507024; /* PGlobals */
extern NI gerrorcounter_164182;
TNimType NTI507028; /* TProc */
extern TNimType NTI188795; /* PNode */
extern TNimType NTI137012; /* TOptions */
extern TNimType NTI134; /* bool */
TNimType NTI507008; /* TTarget */
extern TNimType NTI106; /* int */
TNimType NTI507020; /* TBlock */
TNimType NTI507066; /* seq[TBlock] */
TNimType NTI507026; /* PProc */
extern NimStringDesc* tnl_142593;
extern TNimType NTI188240; /* TTypeKind */
extern TNimType NTI143; /* string */
TNimType NTI508653; /* TMagicFrmt */
TNimType NTI508655; /* TMagicOps */
extern TNimType NTI188023; /* TNodeKind */
extern NimStringDesc* outfile_137117;
N_NIMCALL(void, TMP3927)(void* p, NI op) {
	tjsgen507010* a;
	a = (tjsgen507010*)p;
	nimGCvisit((void*)(*a).Module, op);
}

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

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

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tcell41090* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_44443(src);
		(*c).Refcount += 8;
	}
	LA3: ;
	{
		tcell41090* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_44443((*dest));
		{
			(*c).Refcount -= 8;
			if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA11;
			rtladdzct_46002(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}
N_NIMCALL(void, TMP3929)(void* p, NI op) {
	tglobals507022* a;
	a = (tglobals507022*)p;
	nimGCvisit((void*)(*a).Typeinfo, op);
	nimGCvisit((void*)(*a).Code, op);
	nimGCvisit((void*)(*a).Forwarded, op);
	nimGCvisit((void*)(*a).Generatedsyms.Head, op);
	nimGCvisit((void*)(*a).Generatedsyms.Data, op);
	nimGCvisit((void*)(*a).Typeinfogenerated.Head, op);
	nimGCvisit((void*)(*a).Typeinfogenerated.Data, op);
}

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

N_NIMCALL(tglobals507022*, newglobals_507075)(void) {
	tglobals507022* result;
	result = 0;
	result = (tglobals507022*) newObj((&NTI507024), sizeof(tglobals507022));
	if ((*result).Forwarded) nimGCunrefNoCycle((*result).Forwarded);
	(*result).Forwarded = (tsymseq188805*) newSeqRC1((&NTI188805), 0);
	initintset_185918(&(*result).Generatedsyms);
	initintset_185918(&(*result).Typeinfogenerated);
	return result;
}

N_NIMCALL(tjsgen507010*, newmodule_516991)(tsym188833* module) {
	tjsgen507010* result;
	result = 0;
	result = (tjsgen507010*) newObj((&NTI507012), sizeof(tjsgen507010));
	(*result).Sup.Sup.m_type = (&NTI507010);
	asgnRefNoCycle((void**) &(*result).Module, module);
	{
		if (!(globals_516988 == NIM_NIL)) goto LA3;
		asgnRefNoCycle((void**) &globals_516988, newglobals_507075());
	}
	LA3: ;
	return result;
}

N_NIMCALL(tpasscontext246003*, myopen_517225)(tsym188833* s) {
	tpasscontext246003* result;
	tjsgen507010* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = newmodule_516991(s);
	result = &LOC1->Sup;
	return result;
}

N_NIMCALL(tpasscontext246003*, myopencached_517218)(tsym188833* s, trodreader236024* rd) {
	tpasscontext246003* result;
	result = 0;
	internalerror_165606(((NimStringDesc*) &TMP3930));
	result = NIM_NIL;
	return result;
}

static N_INLINE(NIM_BOOL, skipcodegen_246074)(tnode188803* n) {
	NIM_BOOL result;
	result = 0;
	result = (0 < gerrorcounter_164182);
	return result;
}
N_NIMCALL(void, TMP3937)(void* p, NI op) {
	TY507066* a;
	NI LOC1;
	a = (TY507066*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	}
}
N_NIMCALL(void, TMP3938)(void* p, NI op) {
	tproc507028* a;
	a = (tproc507028*)p;
	nimGCvisit((void*)(*a).Procdef, op);
	nimGCvisit((void*)(*a).Prc, op);
	nimGCvisit((void*)(*a).Locals, op);
	nimGCvisit((void*)(*a).Body, op);
	nimGCvisit((void*)(*a).Module, op);
	nimGCvisit((void*)(*a).G, op);
	nimGCvisit((void*)(*a).Blocks, op);
	nimGCvisit((void*)(*a).Up, op);
}

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

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

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

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

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

N_NIMCALL(tproc507028*, newproc_507203)(tglobals507022* globals, tjsgen507010* module, tnode188803* procdef, NU32 options) {
	tproc507028* result;
	tproc507028* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = (tproc507028*) newObj((&NTI507026), sizeof(tproc507028));
	if ((*LOC1).Blocks) nimGCunrefNoCycle((*LOC1).Blocks);
	(*LOC1).Blocks = (TY507066*) newSeqRC1((&NTI507066), 0);
	(*LOC1).Options = options;
	asgnRef((void**) &(*LOC1).Module, module);
	asgnRefNoCycle((void**) &(*LOC1).Procdef, procdef);
	asgnRefNoCycle((void**) &(*LOC1).G, globals);
	result = LOC1;
	{
		if (!!((procdef == NIM_NIL))) goto LA4;
		asgnRefNoCycle((void**) &(*result).Prc, (*(*procdef).kindU.S6.Sons->data[0]).kindU.S4.Sym);
	}
	LA4: ;
	return result;
}

N_NIMCALL(trope145007*, makejsstring_507386)(NimStringDesc* s) {
	trope145007* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = nsuEscape(s, ((NimStringDesc*) &TMP3940), ((NimStringDesc*) &TMP3940));
	result = torope_145058(LOC1);
	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(NI, sonslen_189185)(ttype188837* n) {
	NI result;
	result = 0;
	{
		if (!(*n).Sons == 0) goto LA3;
		result = 0;
	}
	goto LA1;
	LA3: ;
	{
		result = (*n).Sons->Sup.len;
	}
	LA1: ;
	return result;
}

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

N_NIMCALL(NU8, maptype_507281)(ttype188837* typ) {
	NU8 result;
	ttype188837* t;
	result = 0;
	t = skiptypes_192793(typ, IL64(211106232576256));
	switch ((*t).Kind) {
	case ((NU8) 23):
	case ((NU8) 22):
	case ((NU8) 21):
	{
		{
			ttype188837* LOC4;
			ttype188837* LOC5;
			LOC4 = 0;
			LOC4 = lastson_189193(t);
			LOC5 = 0;
			LOC5 = skiptypes_192793(LOC4, IL64(211106232576256));
			if (!((IL64(316659498680336) &(IL64(1)<<(((*LOC5).Kind)&IL64(63))))!=0)) goto LA6;
			result = ((NU8) 7);
		}
		goto LA2;
		LA6: ;
		{
			result = ((NU8) 8);
		}
		LA2: ;
	}
	break;
	case ((NU8) 26):
	{
		result = ((NU8) 4);
	}
	break;
	case ((NU8) 20):
	case ((NU8) 13):
	case ((NU8) 15):
	case ((NU8) 46):
	case ((NU8) 47):
	case ((NU8) 49):
	case ((NU8) 50):
	{
		result = maptype_507281((*t).Sons->data[0]);
	}
	break;
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 40) ... ((NU8) 44):
	case ((NU8) 14):
	case ((NU8) 2):
	{
		result = ((NU8) 4);
	}
	break;
	case ((NU8) 1):
	{
		result = ((NU8) 3);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		result = ((NU8) 5);
	}
	break;
	case ((NU8) 19):
	{
		result = ((NU8) 7);
	}
	break;
	case ((NU8) 28):
	case ((NU8) 24):
	{
		result = ((NU8) 4);
	}
	break;
	case ((NU8) 17):
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 18):
	case ((NU8) 27):
	case ((NU8) 45):
	case ((NU8) 48):
	{
		result = ((NU8) 7);
	}
	break;
	case ((NU8) 5):
	{
		result = ((NU8) 1);
	}
	break;
	case ((NU8) 11):
	case ((NU8) 12):
	case ((NU8) 10):
	case ((NU8) 9):
	case ((NU8) 0):
	case ((NU8) 60):
	case ((NU8) 30):
	case ((NU8) 3):
	case ((NU8) 61):
	case ((NU8) 6):
	case ((NU8) 7):
	case ((NU8) 59):
	case ((NU8) 8):
	case ((NU8) 51):
	case ((NU8) 54):
	case ((NU8) 52):
	case ((NU8) 53):
	case ((NU8) 55):
	case ((NU8) 56):
	case ((NU8) 57):
	case ((NU8) 58):
	{
		result = ((NU8) 0);
	}
	break;
	case ((NU8) 25):
	{
		result = ((NU8) 2);
	}
	break;
	case ((NU8) 29):
	{
		result = ((NU8) 6);
	}
	break;
	}
	return result;
}

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(NimStringDesc*, mangle_507301)(NimStringDesc* name) {
	NimStringDesc* result;
	NI i_507317;
	NI HEX3Atmp_507354;
	NI res_507356;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP3948));
	i_507317 = 0;
	HEX3Atmp_507354 = 0;
	HEX3Atmp_507354 = (NI32)(name->Sup.len - 1);
	res_507356 = 0;
	while (1) {
		if (!(res_507356 <= HEX3Atmp_507354)) goto LA1;
		i_507317 = res_507356;
		switch (((NU8)(name->data[i_507317]))) {
		case 65 ... 90:
		{
			result = addChar(result, ((NIM_CHAR) (((NI) ((NI32)(((NI) ((NI32)(((NI) (((NU8)(name->data[i_507317])))) - 65))) + 97))))));
		}
		break;
		case 95:
		{
		}
		break;
		case 97 ... 122:
		case 48 ... 57:
		{
			result = addChar(result, name->data[i_507317]);
		}
		break;
		default:
		{
			NimStringDesc* LOC6;
			NimStringDesc* LOC7;
			LOC6 = 0;
			LOC7 = 0;
			LOC7 = nsuToHex(((NI64) (((NU8)(name->data[i_507317])))), 2);
			LOC6 = rawNewString(LOC7->Sup.len + 1);
appendChar(LOC6, 88);
appendString(LOC6, LOC7);
			result = resizeString(result, LOC6->Sup.len + 0);
appendString(result, LOC6);
		}
		break;
		}
		res_507356 += 1;
	} LA1: ;
	return result;
}

N_NIMCALL(trope145007*, manglename_507361)(tsym188833* s) {
	trope145007* result;
	result = 0;
	result = (*s).Loc.R;
	{
		NimStringDesc* LOC5;
		trope145007* LOC6;
		if (!(result == NIM_NIL)) goto LA3;
		LOC5 = 0;
		LOC5 = mangle_507301((*(*s).Name).S);
		result = torope_145058(LOC5);
		app_145046(&result, ((NimStringDesc*) &TMP3949));
		LOC6 = 0;
		LOC6 = torope_145062(((NI64) ((*s).Sup.Id)));
		app_145040(&result, LOC6);
		asgnRefNoCycle((void**) &(*s).Loc.R, result);
	}
	LA3: ;
	return result;
}

N_NIMCALL(trope145007*, puttoseq_513742)(NimStringDesc* s, NIM_BOOL indirect) {
	trope145007* result;
	result = 0;
	result = torope_145058(s);
	{
		TY145497 LOC5;
		if (!indirect) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = result;
		result = ropef_145079(((NimStringDesc*) &TMP3950), LOC5, 1);
	}
	LA3: ;
	return result;
}

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

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

N_NIMCALL(trope145007*, generateheader_511914)(tproc507028* p, ttype188837* typ) {
	trope145007* result;
	NI i_511931;
	NI HEX3Atmp_512045;
	NI LOC1;
	NI res_512047;
	result = 0;
	result = NIM_NIL;
	i_511931 = 0;
	HEX3Atmp_512045 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181((*typ).N);
	HEX3Atmp_512045 = (NI32)(LOC1 - 1);
	res_512047 = 1;
	while (1) {
		if (!(res_512047 <= HEX3Atmp_512045)) goto LA2;
		i_511931 = res_512047;
		{
			tsym188833* param;
			trope145007* name;
			{
				if (!!((result == NIM_NIL))) goto LA6;
				app_145046(&result, ((NimStringDesc*) &TMP3957));
			}
			LA6: ;
			param = (*(*(*typ).N).kindU.S6.Sons->data[i_511931]).kindU.S4.Sym;
			{
				NIM_BOOL LOC10;
				LOC10 = 0;
				LOC10 = iscompiletimeonly_233237((*param).Typ);
				if (!LOC10) goto LA11;
				goto LA3;
			}
			LA11: ;
			name = manglename_507361(param);
			app_145040(&result, name);
			{
				NU8 LOC15;
				LOC15 = 0;
				LOC15 = maptype_507281((*param).Typ);
				if (!(LOC15 == ((NU8) 8))) goto LA16;
				app_145046(&result, ((NimStringDesc*) &TMP3957));
				app_145040(&result, name);
				app_145046(&result, ((NimStringDesc*) &TMP3945));
			}
			LA16: ;
		} LA3: ;
		res_512047 += 1;
	} LA2: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isindirect_514106)(tsym188833* v) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	NU8 LOC4;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = (((*v).Flags &(1<<((((NU8) 15))&31)))!=0);
	if (!(LOC2)) goto LA3;
	LOC4 = 0;
	LOC4 = maptype_507281((*v).Typ);
	LOC2 = !((LOC4 == ((NU8) 7)));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA5;
	LOC1 = !(((126976 &(1<<(((*v).Kind)&31)))!=0));
	LA5: ;
	result = LOC1;
	return result;
}

N_NIMCALL(trope145007*, genprocbody_516265)(tproc507028* p, tsym188833* prc) {
	trope145007* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		NimStringDesc* LOC6;
		TY503234 LOC12;
		NimStringDesc* LOC13;
		NimStringDesc* LOC14;
		if (!(((*prc).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA3;
		LOC5 = 0;
		LOC6 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA9;
			LOC6 = copyString(((NimStringDesc*) &TMP3963));
		}
		goto LA7;
		LA9: ;
		{
			LOC6 = copyString(((NimStringDesc*) &TMP3964));
		}
		LA7: ;
		LOC5 = rawNewString(LOC6->Sup.len + 15);
appendString(LOC5, LOC6);
appendString(LOC5, ((NimStringDesc*) &TMP3965));
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC13 = 0;
		LOC13 = rawNewString((*(*(*prc).Owner).Name).S->Sup.len + (*(*prc).Name).S->Sup.len + 1);
appendString(LOC13, (*(*(*prc).Owner).Name).S);
appendChar(LOC13, 46);
appendString(LOC13, (*(*prc).Name).S);
		LOC12[0] = makejsstring_507386(LOC13);
		LOC14 = 0;
		LOC14 = tofilename_164780((*prc).Info.Fileindex);
		LOC12[1] = makejsstring_507386(LOC14);
		result = ropef_145079(LOC5, LOC12, 2);
	}
	goto LA1;
	LA3: ;
	{
		result = NIM_NIL;
	}
	LA1: ;
	{
		NimStringDesc* LOC20;
		TY145497 LOC26;
		if (!(*p).Beforeretneeded) goto LA18;
		LOC20 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA23;
			LOC20 = copyString(((NimStringDesc*) &TMP3966));
		}
		goto LA21;
		LA23: ;
		{
			LOC20 = copyString(((NimStringDesc*) &TMP3967));
		}
		LA21: ;
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = (*p).Body;
		appf_145085(&result, LOC20, LOC26, 1);
	}
	goto LA16;
	LA18: ;
	{
		app_145040(&result, (*p).Body);
	}
	LA16: ;
	{
		NIM_BOOL LOC30;
		TY145497 LOC34;
		LOC30 = 0;
		LOC30 = ((*(*prc).Typ).Callconv == ((NU8) 4));
		if (!(LOC30)) goto LA31;
		LOC30 = ((*p).Target == ((NU8) 0));
		LA31: ;
		if (!LOC30) goto LA32;
		memset((void*)LOC34, 0, sizeof(LOC34));
		LOC34[0] = result;
		result = ropef_145079(((NimStringDesc*) &TMP3968), LOC34, 1);
	}
	LA32: ;
	{
		NimStringDesc* LOC39;
		if (!(((*prc).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA37;
		LOC39 = 0;
		LOC39 = rawNewString(tnl_142593->Sup.len + 25);
appendString(LOC39, ((NimStringDesc*) &TMP3969));
appendString(LOC39, tnl_142593);
		app_145046(&result, LOC39);
	}
	LA37: ;
	return result;
}

N_NIMCALL(trope145007*, genproc_508124)(tproc507028* oldproc, tsym188833* prc) {
	trope145007* result;
	tsym188833* resultsym;
	trope145007* name;
	trope145007* returnstmt;
	trope145007* resultasgn;
	trope145007* header;
	tcompres507018 a;
	tproc507028* p;
	tnode188803* LOC16;
	NimStringDesc* LOC17;
	TY473698 LOC23;
	result = 0;
	resultsym = 0;
	name = 0;
	returnstmt = 0;
	resultasgn = 0;
	header = 0;
	memset((void*)&a, 0, sizeof(a));
	p = newproc_507203((*oldproc).G, (*oldproc).Module, (*prc).Ast, (*prc).Options);
	(*p).Target = (*oldproc).Target;
	asgnRef((void**) &(*p).Up, oldproc);
	returnstmt = NIM_NIL;
	resultasgn = NIM_NIL;
	name = manglename_507361(prc);
	header = generateheader_511914(p, (*prc).Typ);
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		TY503234 LOC13;
		NIM_BOOL LOC14;
		TY145497 LOC15;
		LOC3 = 0;
		LOC3 = !(((*(*prc).Typ).Sons->data[0] == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = !((((*prc).Flags &(1<<((((NU8) 9))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		resultsym = (*(*(*prc).Ast).kindU.S6.Sons->data[7]).kindU.S4.Sym;
		LOC7 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA10;
			LOC7 = copyString(((NimStringDesc*) &TMP3958));
		}
		goto LA8;
		LA10: ;
		{
			LOC7 = copyString(((NimStringDesc*) &TMP3959));
		}
		LA8: ;
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = manglename_507361(resultsym);
		LOC14 = 0;
		LOC14 = isindirect_514106(resultsym);
		LOC13[1] = createvar_513753(p, (*resultsym).Typ, LOC14);
		resultasgn = ropef_145079(LOC7, LOC13, 2);
		gen_508112(p, (*(*prc).Ast).kindU.S6.Sons->data[7], &a);
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = a.Res;
		returnstmt = ropef_145079(((NimStringDesc*) &TMP3960), LOC15, 1);
	}
	LA5: ;
	LOC16 = 0;
	LOC16 = getbody_239244(prc);
	genstmt_508119(p, LOC16);
	LOC17 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA20;
		LOC17 = copyString(((NimStringDesc*) &TMP3961));
	}
	goto LA18;
	LA20: ;
	{
		LOC17 = copyString(((NimStringDesc*) &TMP3962));
	}
	LA18: ;
	memset((void*)LOC23, 0, sizeof(LOC23));
	LOC23[0] = name;
	LOC23[1] = header;
	LOC23[2] = (*p).Locals;
	LOC23[3] = resultasgn;
	LOC23[4] = genprocbody_516265(p, prc);
	LOC23[5] = returnstmt;
	result = ropef_145079(LOC17, LOC23, 6);
	return result;
}

N_NIMCALL(void, usemagic_508134)(tproc507028* p, NimStringDesc* name) {
	tsym188833* s;
	{
		if (!(name->Sup.len == 0)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	s = getcompilerproc_242028(name);
	{
		if (!!((s == NIM_NIL))) goto LA7;
		{
			NimStringDesc* LOC13;
			if (!!(((77824 &(1<<(((*s).Kind)&31)))!=0))) goto LA11;
			LOC13 = 0;
			LOC13 = HEX24_165714(TMP3955);
			internalerror_165606(LOC13);
		}
		LA11: ;
		{
			NIM_BOOL LOC16;
			trope145007* LOC19;
			LOC16 = 0;
			LOC16 = containsorincl_185888(&(*(*p).G).Generatedsyms, (*s).Sup.Id);
			if (!!(LOC16)) goto LA17;
			LOC19 = 0;
			LOC19 = genproc_508124(p, s);
			app_145040(&(*(*p).G).Code, LOC19);
		}
		LA17: ;
	}
	goto LA5;
	LA7: ;
	{
		{
			if (!!(((*p).Prc == NIM_NIL))) goto LA23;
			globalerror_165558((*(*p).Prc).Info, ((NU16) 64), name);
		}
		goto LA21;
		LA23: ;
		{
			rawmessage_165386(((NU16) 64), name);
		}
		LA21: ;
	}
	LA5: ;
	BeforeRet: ;
}

N_NIMCALL(void, genenuminfo_507867)(tproc507028* p, ttype188837* typ, trope145007* name) {
	NI length;
	trope145007* s;
	NI i_507886;
	NI HEX3Atmp_508025;
	NI res_508027;
	trope145007* n;
	TY470214 LOC17;
	TY503234 LOC18;
	TY503234 LOC19;
	length = sonslen_189181((*typ).N);
	s = NIM_NIL;
	i_507886 = 0;
	HEX3Atmp_508025 = 0;
	HEX3Atmp_508025 = (NI32)(length - 1);
	res_508027 = 0;
	while (1) {
		tsym188833* field;
		NimStringDesc* extname;
		TY470214 LOC16;
		if (!(res_508027 <= HEX3Atmp_508025)) goto LA1;
		i_507886 = res_508027;
		{
			if (!!(((*(*(*typ).N).kindU.S6.Sons->data[i_507886]).Kind == ((NU8) 3)))) goto LA4;
			internalerror_165591((*(*typ).N).Info, ((NimStringDesc*) &TMP3976));
		}
		LA4: ;
		field = (*(*(*typ).N).kindU.S6.Sons->data[i_507886]).kindU.S4.Sym;
		{
			NimStringDesc* LOC10;
			if (!(0 < i_507886)) goto LA8;
			LOC10 = 0;
			LOC10 = rawNewString(tnl_142593->Sup.len + 2);
appendString(LOC10, ((NimStringDesc*) &TMP3957));
appendString(LOC10, tnl_142593);
			app_145046(&s, LOC10);
		}
		LA8: ;
		{
			if (!((*field).Ast == NIM_NIL)) goto LA13;
			extname = (*(*field).Name).S;
		}
		goto LA11;
		LA13: ;
		{
			extname = (*(*field).Ast).kindU.S3.Strval;
		}
		LA11: ;
		memset((void*)LOC16, 0, sizeof(LOC16));
		LOC16[0] = torope_145062(((NI64) ((*field).Position)));
		LOC16[1] = name;
		LOC16[2] = makejsstring_507386(extname);
		appf_145085(&s, ((NimStringDesc*) &TMP3977), LOC16, 3);
		res_508027 += 1;
	} LA1: ;
	memset((void*)LOC17, 0, sizeof(LOC17));
	LOC17[0] = torope_145062(((NI64) ((*typ).Sup.Id)));
	LOC17[1] = torope_145062(((NI64) (length)));
	LOC17[2] = s;
	n = ropef_145079(((NimStringDesc*) &TMP3978), LOC17, 3);
	memset((void*)LOC18, 0, sizeof(LOC18));
	LOC18[0] = name;
	LOC18[1] = torope_145062(((NI64) ((*typ).Kind)));
	s = ropef_145079(((NimStringDesc*) &TMP3979), LOC18, 2);
	prepend_145052(&(*(*p).G).Typeinfo, s);
	app_145040(&(*(*p).G).Typeinfo, n);
	memset((void*)LOC19, 0, sizeof(LOC19));
	LOC19[0] = name;
	LOC19[1] = torope_145062(((NI64) ((*typ).Sup.Id)));
	appf_145085(&(*(*p).G).Typeinfo, ((NimStringDesc*) &TMP3980), LOC19, 2);
	{
		TY503234 LOC24;
		if (!!(((*typ).Sons->data[0] == NIM_NIL))) goto LA22;
		memset((void*)LOC24, 0, sizeof(LOC24));
		LOC24[0] = name;
		LOC24[1] = gentypeinfo_507392(p, (*typ).Sons->data[0]);
		appf_145085(&(*(*p).G).Typeinfo, ((NimStringDesc*) &TMP3975), LOC24, 2);
	}
	LA22: ;
}

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

N_NIMCALL(trope145007*, genobjectfields_507396)(tproc507028* p, ttype188837* typ, tnode188803* n) {
	trope145007* result;
	trope145007* s;
	trope145007* u;
	NI length;
	tsym188833* field;
	tnode188803* b;
	result = 0;
	s = 0;
	u = 0;
	length = 0;
	field = 0;
	b = 0;
	result = NIM_NIL;
	switch ((*n).Kind) {
	case ((NU8) 136):
	{
		length = sonslen_189181(n);
		{
			if (!(length == 1)) goto LA4;
			result = genobjectfields_507396(p, typ, (*n).kindU.S6.Sons->data[0]);
		}
		goto LA2;
		LA4: ;
		{
			NI i_507433;
			NI HEX3Atmp_507714;
			NI res_507716;
			TY503234 LOC14;
			s = NIM_NIL;
			i_507433 = 0;
			HEX3Atmp_507714 = 0;
			HEX3Atmp_507714 = (NI32)(length - 1);
			res_507716 = 0;
			while (1) {
				trope145007* LOC13;
				if (!(res_507716 <= HEX3Atmp_507714)) goto LA7;
				i_507433 = res_507716;
				{
					NimStringDesc* LOC12;
					if (!(0 < i_507433)) goto LA10;
					LOC12 = 0;
					LOC12 = rawNewString(tnl_142593->Sup.len + 2);
appendString(LOC12, ((NimStringDesc*) &TMP3957));
appendString(LOC12, tnl_142593);
					app_145046(&s, LOC12);
				}
				LA10: ;
				LOC13 = 0;
				LOC13 = genobjectfields_507396(p, typ, (*n).kindU.S6.Sons->data[i_507433]);
				app_145040(&s, LOC13);
				res_507716 += 1;
			} LA7: ;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = torope_145062(((NI64) (length)));
			LOC14[1] = s;
			result = ropef_145079(((NimStringDesc*) &TMP3982), LOC14, 2);
		}
		LA2: ;
	}
	break;
	case ((NU8) 3):
	{
		TY470214 LOC16;
		field = (*n).kindU.S4.Sym;
		s = gentypeinfo_507392(p, (*field).Typ);
		memset((void*)LOC16, 0, sizeof(LOC16));
		LOC16[0] = manglename_507361(field);
		LOC16[1] = s;
		LOC16[2] = makejsstring_507386((*(*field).Name).S);
		result = ropef_145079(((NimStringDesc*) &TMP3983), LOC16, 3);
	}
	break;
	case ((NU8) 137):
	{
		NI i_507536;
		NI HEX3Atmp_507722;
		NI res_507724;
		TY473397 LOC55;
		NI64 LOC56;
		length = sonslen_189181(n);
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA20;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3984));
		}
		LA20: ;
		field = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		s = gentypeinfo_507392(p, (*field).Typ);
		i_507536 = 0;
		HEX3Atmp_507722 = 0;
		HEX3Atmp_507722 = (NI32)(length - 1);
		res_507724 = 1;
		while (1) {
			TY503234 LOC53;
			tnode188803* LOC54;
			if (!(res_507724 <= HEX3Atmp_507722)) goto LA22;
			i_507536 = res_507724;
			b = (*n).kindU.S6.Sons->data[i_507536];
			u = NIM_NIL;
			switch ((*b).Kind) {
			case ((NU8) 85):
			{
				NI j_507564;
				NI HEX3Atmp_507718;
				NI LOC29;
				NI res_507720;
				{
					NI LOC26;
					LOC26 = 0;
					LOC26 = sonslen_189181(b);
					if (!(LOC26 < 2)) goto LA27;
					internalerror_165591((*b).Info, ((NimStringDesc*) &TMP3985));
				}
				LA27: ;
				j_507564 = 0;
				HEX3Atmp_507718 = 0;
				LOC29 = 0;
				LOC29 = sonslen_189181(b);
				HEX3Atmp_507718 = (NI32)(LOC29 - 2);
				res_507720 = 0;
				while (1) {
					if (!(res_507720 <= HEX3Atmp_507718)) goto LA30;
					j_507564 = res_507720;
					{
						if (!!((u == NIM_NIL))) goto LA33;
						app_145046(&u, ((NimStringDesc*) &TMP3957));
					}
					LA33: ;
					{
						TY503234 LOC39;
						NI64 LOC40;
						NI64 LOC41;
						if (!((*(*b).kindU.S6.Sons->data[j_507564]).Kind == ((NU8) 44))) goto LA37;
						memset((void*)LOC39, 0, sizeof(LOC39));
						LOC40 = 0;
						LOC40 = getordvalue_223150((*(*b).kindU.S6.Sons->data[j_507564]).kindU.S6.Sons->data[0]);
						LOC39[0] = torope_145062(LOC40);
						LOC41 = 0;
						LOC41 = getordvalue_223150((*(*b).kindU.S6.Sons->data[j_507564]).kindU.S6.Sons->data[1]);
						LOC39[1] = torope_145062(LOC41);
						appf_145085(&u, ((NimStringDesc*) &TMP3986), LOC39, 2);
					}
					goto LA35;
					LA37: ;
					{
						NI64 LOC43;
						trope145007* LOC44;
						LOC43 = 0;
						LOC43 = getordvalue_223150((*b).kindU.S6.Sons->data[j_507564]);
						LOC44 = 0;
						LOC44 = torope_145062(LOC43);
						app_145040(&u, LOC44);
					}
					LA35: ;
					res_507720 += 1;
				} LA30: ;
			}
			break;
			case ((NU8) 88):
			{
				NI64 LOC46;
				LOC46 = 0;
				LOC46 = lengthord_223010((*field).Typ);
				u = torope_145062(LOC46);
			}
			break;
			default:
			{
				internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3987));
			}
			break;
			}
			{
				NimStringDesc* LOC52;
				if (!!((result == NIM_NIL))) goto LA50;
				LOC52 = 0;
				LOC52 = rawNewString(tnl_142593->Sup.len + 2);
appendString(LOC52, ((NimStringDesc*) &TMP3957));
appendString(LOC52, tnl_142593);
				app_145046(&result, LOC52);
			}
			LA50: ;
			memset((void*)LOC53, 0, sizeof(LOC53));
			LOC53[0] = u;
			LOC54 = 0;
			LOC54 = lastson_189189(b);
			LOC53[1] = genobjectfields_507396(p, typ, LOC54);
			appf_145085(&result, ((NimStringDesc*) &TMP3988), LOC53, 2);
			res_507724 += 1;
		} LA22: ;
		memset((void*)LOC55, 0, sizeof(LOC55));
		LOC55[0] = manglename_507361(field);
		LOC55[1] = s;
		LOC56 = 0;
		LOC56 = lengthord_223010((*field).Typ);
		LOC55[2] = torope_145062(LOC56);
		LOC55[3] = makejsstring_507386((*(*field).Name).S);
		LOC55[4] = result;
		result = ropef_145079(((NimStringDesc*) &TMP3989), LOC55, 5);
	}
	break;
	default:
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3984));
	}
	break;
	}
	return result;
}

N_NIMCALL(void, genobjectinfo_507730)(tproc507028* p, ttype188837* typ, trope145007* name) {
	trope145007* s;
	TY503234 LOC1;
	TY503234 LOC2;
	TY503234 LOC3;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = name;
	LOC1[1] = torope_145062(((NI64) ((*typ).Kind)));
	s = ropef_145079(((NimStringDesc*) &TMP3979), LOC1, 2);
	prepend_145052(&(*(*p).G).Typeinfo, s);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = torope_145062(((NI64) ((*typ).Sup.Id)));
	LOC2[1] = genobjectfields_507396(p, typ, (*typ).N);
	appf_145085(&(*(*p).G).Typeinfo, ((NimStringDesc*) &TMP3981), LOC2, 2);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = name;
	LOC3[1] = torope_145062(((NI64) ((*typ).Sup.Id)));
	appf_145085(&(*(*p).G).Typeinfo, ((NimStringDesc*) &TMP3980), LOC3, 2);
	{
		NIM_BOOL LOC6;
		TY503234 LOC10;
		LOC6 = 0;
		LOC6 = ((*typ).Kind == ((NU8) 17));
		if (!(LOC6)) goto LA7;
		LOC6 = !(((*typ).Sons->data[0] == NIM_NIL));
		LA7: ;
		if (!LOC6) goto LA8;
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC10[0] = name;
		LOC10[1] = gentypeinfo_507392(p, (*typ).Sons->data[0]);
		appf_145085(&(*(*p).G).Typeinfo, ((NimStringDesc*) &TMP3975), LOC10, 2);
	}
	LA8: ;
}

N_NIMCALL(trope145007*, gentuplefields_507791)(tproc507028* p, ttype188837* typ) {
	trope145007* result;
	trope145007* s;
	NI i_507818;
	NI HEX3Atmp_507831;
	NI LOC1;
	NI res_507833;
	TY503234 LOC9;
	NI LOC10;
	result = 0;
	s = NIM_NIL;
	i_507818 = 0;
	HEX3Atmp_507831 = 0;
	LOC1 = 0;
	LOC1 = len_192569(typ);
	HEX3Atmp_507831 = LOC1 - 1;
	res_507833 = 0;
	while (1) {
		TY503234 LOC8;
		if (!(res_507833 <= HEX3Atmp_507831)) goto LA2;
		i_507818 = res_507833;
		{
			NimStringDesc* LOC7;
			if (!(0 < i_507818)) goto LA5;
			LOC7 = 0;
			LOC7 = rawNewString(tnl_142593->Sup.len + 2);
appendString(LOC7, ((NimStringDesc*) &TMP3957));
appendString(LOC7, tnl_142593);
			app_145046(&s, LOC7);
		}
		LA5: ;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = torope_145062(((NI64) (i_507818)));
		LOC8[1] = gentypeinfo_507392(p, (*typ).Sons->data[i_507818]);
		appf_145085(&s, ((NimStringDesc*) &TMP3990), LOC8, 2);
		res_507833 += 1;
	} LA2: ;
	memset((void*)LOC9, 0, sizeof(LOC9));
	LOC10 = 0;
	LOC10 = len_192569(typ);
	LOC9[0] = torope_145062(((NI64) (LOC10)));
	LOC9[1] = s;
	result = ropef_145079(((NimStringDesc*) &TMP3982), LOC9, 2);
	return result;
}

N_NIMCALL(void, gentupleinfo_507837)(tproc507028* p, ttype188837* typ, trope145007* name) {
	trope145007* s;
	TY503234 LOC1;
	TY503234 LOC2;
	TY503234 LOC3;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = name;
	LOC1[1] = torope_145062(((NI64) ((*typ).Kind)));
	s = ropef_145079(((NimStringDesc*) &TMP3979), LOC1, 2);
	prepend_145052(&(*(*p).G).Typeinfo, s);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = torope_145062(((NI64) ((*typ).Sup.Id)));
	LOC2[1] = gentuplefields_507791(p, typ);
	appf_145085(&(*(*p).G).Typeinfo, ((NimStringDesc*) &TMP3981), LOC2, 2);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = name;
	LOC3[1] = torope_145062(((NI64) ((*typ).Sup.Id)));
	appf_145085(&(*(*p).G).Typeinfo, ((NimStringDesc*) &TMP3980), LOC3, 2);
}

N_NIMCALL(trope145007*, gentypeinfo_507392)(tproc507028* p, ttype188837* typ) {
	trope145007* result;
	ttype188837* t;
	TY145497 LOC5;
	result = 0;
	t = typ;
	{
		if (!((*t).Kind == ((NU8) 11))) goto LA3;
		t = lastson_189193(t);
	}
	LA3: ;
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = torope_145062(((NI64) ((*t).Sup.Id)));
	result = ropef_145079(((NimStringDesc*) &TMP3973), LOC5, 1);
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = containsorincl_185888(&(*(*p).G).Typeinfogenerated, (*t).Sup.Id);
		if (!LOC8) goto LA9;
		goto BeforeRet;
	}
	LA9: ;
	switch ((*t).Kind) {
	case ((NU8) 13):
	{
		result = gentypeinfo_507392(p, (*typ).Sons->data[0]);
	}
	break;
	case ((NU8) 26):
	case ((NU8) 25):
	case ((NU8) 1):
	case ((NU8) 2):
	case ((NU8) 29):
	case ((NU8) 28):
	case ((NU8) 31) ... ((NU8) 39):
	{
		trope145007* s;
		TY503234 LOC13;
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = result;
		LOC13[1] = torope_145062(((NI64) ((*t).Kind)));
		s = ropef_145079(((NimStringDesc*) &TMP3974), LOC13, 2);
		prepend_145052(&(*(*p).G).Typeinfo, s);
	}
	break;
	case ((NU8) 23):
	case ((NU8) 22):
	case ((NU8) 21):
	case ((NU8) 24):
	case ((NU8) 20):
	case ((NU8) 19):
	{
		trope145007* s;
		TY503234 LOC15;
		TY503234 LOC16;
		ttype188837* LOC17;
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = result;
		LOC15[1] = torope_145062(((NI64) ((*t).Kind)));
		s = ropef_145079(((NimStringDesc*) &TMP3974), LOC15, 2);
		prepend_145052(&(*(*p).G).Typeinfo, s);
		memset((void*)LOC16, 0, sizeof(LOC16));
		LOC16[0] = result;
		LOC17 = 0;
		LOC17 = lastson_189193(typ);
		LOC16[1] = gentypeinfo_507392(p, LOC17);
		appf_145085(&(*(*p).G).Typeinfo, ((NimStringDesc*) &TMP3975), LOC16, 2);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		trope145007* s;
		TY503234 LOC19;
		TY503234 LOC20;
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = result;
		LOC19[1] = torope_145062(((NI64) ((*t).Kind)));
		s = ropef_145079(((NimStringDesc*) &TMP3974), LOC19, 2);
		prepend_145052(&(*(*p).G).Typeinfo, s);
		memset((void*)LOC20, 0, sizeof(LOC20));
		LOC20[0] = result;
		LOC20[1] = gentypeinfo_507392(p, (*typ).Sons->data[1]);
		appf_145085(&(*(*p).G).Typeinfo, ((NimStringDesc*) &TMP3975), LOC20, 2);
	}
	break;
	case ((NU8) 14):
	{
		genenuminfo_507867(p, t, result);
	}
	break;
	case ((NU8) 17):
	{
		genobjectinfo_507730(p, t, result);
	}
	break;
	case ((NU8) 18):
	{
		gentupleinfo_507837(p, t, result);
	}
	break;
	default:
	{
		NimStringDesc* LOC25;
		LOC25 = 0;
		LOC25 = rawNewString(reprEnum((*t).Kind, (&NTI188240))->Sup.len + 13);
appendString(LOC25, ((NimStringDesc*) &TMP3991));
appendString(LOC25, reprEnum((*t).Kind, (&NTI188240)));
appendChar(LOC25, 41);
		internalerror_165606(LOC25);
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope145007*, createrecordvaraux_513759)(tproc507028* p, tnode188803* rec, NI* c) {
	trope145007* result;
	result = 0;
	result = NIM_NIL;
	switch ((*rec).Kind) {
	case ((NU8) 136):
	{
		NI i_513778;
		NI HEX3Atmp_513886;
		NI LOC2;
		NI res_513888;
		i_513778 = 0;
		HEX3Atmp_513886 = 0;
		LOC2 = 0;
		LOC2 = sonslen_189181(rec);
		HEX3Atmp_513886 = (NI32)(LOC2 - 1);
		res_513888 = 0;
		while (1) {
			trope145007* LOC4;
			if (!(res_513888 <= HEX3Atmp_513886)) goto LA3;
			i_513778 = res_513888;
			LOC4 = 0;
			LOC4 = createrecordvaraux_513759(p, (*rec).kindU.S6.Sons->data[i_513778], c);
			app_145040(&result, LOC4);
			res_513888 += 1;
		} LA3: ;
	}
	break;
	case ((NU8) 137):
	{
		trope145007* LOC6;
		NI i_513821;
		NI HEX3Atmp_513890;
		NI LOC7;
		NI res_513892;
		LOC6 = 0;
		LOC6 = createrecordvaraux_513759(p, (*rec).kindU.S6.Sons->data[0], c);
		app_145040(&result, LOC6);
		i_513821 = 0;
		HEX3Atmp_513890 = 0;
		LOC7 = 0;
		LOC7 = sonslen_189181(rec);
		HEX3Atmp_513890 = (NI32)(LOC7 - 1);
		res_513892 = 1;
		while (1) {
			tnode188803* LOC9;
			trope145007* LOC10;
			if (!(res_513892 <= HEX3Atmp_513890)) goto LA8;
			i_513821 = res_513892;
			LOC9 = 0;
			LOC9 = lastson_189189((*rec).kindU.S6.Sons->data[i_513821]);
			LOC10 = 0;
			LOC10 = createrecordvaraux_513759(p, LOC9, c);
			app_145040(&result, LOC10);
			res_513892 += 1;
		} LA8: ;
	}
	break;
	case ((NU8) 3):
	{
		trope145007* LOC16;
		trope145007* LOC17;
		{
			if (!(0 < (*c))) goto LA14;
			app_145046(&result, ((NimStringDesc*) &TMP3957));
		}
		LA14: ;
		LOC16 = 0;
		LOC16 = manglename_507361((*rec).kindU.S4.Sym);
		app_145040(&result, LOC16);
		app_145046(&result, ((NimStringDesc*) &TMP4000));
		LOC17 = 0;
		LOC17 = createvar_513753(p, (*(*rec).kindU.S4.Sym).Typ, NIM_FALSE);
		app_145040(&result, LOC17);
		(*c) += 1;
	}
	break;
	default:
	{
		internalerror_165591((*rec).Info, ((NimStringDesc*) &TMP4001));
	}
	break;
	}
	return result;
}

N_NIMCALL(trope145007*, createvar_513753)(tproc507028* p, ttype188837* typ, NIM_BOOL indirect) {
	trope145007* result;
	ttype188837* t;
	result = 0;
	t = skiptypes_192793(typ, IL64(211106232576256));
	switch ((*t).Kind) {
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 14):
	case ((NU8) 2):
	{
		result = puttoseq_513742(((NimStringDesc*) &TMP3951), indirect);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		result = puttoseq_513742(((NimStringDesc*) &TMP3952), indirect);
	}
	break;
	case ((NU8) 20):
	case ((NU8) 11):
	{
		ttype188837* LOC4;
		LOC4 = 0;
		LOC4 = lastson_189193(typ);
		result = createvar_513753(p, LOC4, indirect);
	}
	break;
	case ((NU8) 19):
	{
		result = torope_145058(((NimStringDesc*) &TMP3953));
	}
	break;
	case ((NU8) 1):
	{
		result = puttoseq_513742(((NimStringDesc*) &TMP3954), indirect);
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		NI length;
		NI64 LOC8;
		ttype188837* e;
		LOC8 = 0;
		LOC8 = lengthord_223010(t);
		length = ((NI) (LOC8));
		e = elemtype_223559(t);
		{
			TY470214 LOC13;
			if (!(32 < length)) goto LA11;
			usemagic_508134(p, ((NimStringDesc*) &TMP3970));
			usemagic_508134(p, ((NimStringDesc*) &TMP3971));
			memset((void*)LOC13, 0, sizeof(LOC13));
			LOC13[0] = torope_145062(((NI64) (length)));
			LOC13[1] = createvar_513753(p, e, NIM_FALSE);
			LOC13[2] = gentypeinfo_507392(p, e);
			result = ropef_145079(((NimStringDesc*) &TMP3972), LOC13, 3);
		}
		goto LA9;
		LA11: ;
		{
			NI i;
			result = torope_145058(((NimStringDesc*) &TMP3992));
			i = 0;
			while (1) {
				trope145007* LOC20;
				if (!(i < length)) goto LA15;
				{
					if (!(0 < i)) goto LA18;
					app_145046(&result, ((NimStringDesc*) &TMP3957));
				}
				LA18: ;
				LOC20 = 0;
				LOC20 = createvar_513753(p, e, NIM_FALSE);
				app_145040(&result, LOC20);
				i += 1;
			} LA15: ;
			app_145046(&result, ((NimStringDesc*) &TMP3993));
		}
		LA9: ;
	}
	break;
	case ((NU8) 18):
	{
		NI i_513955;
		NI HEX3Atmp_514097;
		NI LOC22;
		NI res_514099;
		result = torope_145058(((NimStringDesc*) &TMP3994));
		i_513955 = 0;
		HEX3Atmp_514097 = 0;
		LOC22 = 0;
		LOC22 = sonslen_189185(t);
		HEX3Atmp_514097 = LOC22 - 1;
		res_514099 = 0;
		while (1) {
			NimStringDesc* LOC28;
			TY503234 LOC34;
			if (!(res_514099 <= HEX3Atmp_514097)) goto LA23;
			i_513955 = res_514099;
			{
				if (!(0 < i_513955)) goto LA26;
				app_145046(&result, ((NimStringDesc*) &TMP3957));
			}
			LA26: ;
			LOC28 = 0;
			{
				if (!((*p).Target == ((NU8) 0))) goto LA31;
				LOC28 = copyString(((NimStringDesc*) &TMP3995));
			}
			goto LA29;
			LA31: ;
			{
				LOC28 = copyString(((NimStringDesc*) &TMP3996));
			}
			LA29: ;
			memset((void*)LOC34, 0, sizeof(LOC34));
			LOC34[0] = torope_145062(((NI64) (i_513955)));
			LOC34[1] = createvar_513753(p, (*t).Sons->data[i_513955], NIM_FALSE);
			appf_145085(&result, LOC28, LOC34, 2);
			res_514099 += 1;
		} LA23: ;
		app_145046(&result, ((NimStringDesc*) &TMP3997));
	}
	break;
	case ((NU8) 17):
	{
		NI c;
		result = torope_145058(((NimStringDesc*) &TMP3994));
		c = 0;
		{
			NIM_BOOL LOC38;
			NimStringDesc* LOC42;
			TY145497 LOC48;
			LOC38 = 0;
			LOC38 = !((((*t).Flags &(1<<((((NU8) 2))&31)))!=0));
			if (LOC38) goto LA39;
			LOC38 = !(((*t).Sons->data[0] == NIM_NIL));
			LA39: ;
			if (!LOC38) goto LA40;
			c += 1;
			LOC42 = 0;
			{
				if (!((*p).Target == ((NU8) 0))) goto LA45;
				LOC42 = copyString(((NimStringDesc*) &TMP3998));
			}
			goto LA43;
			LA45: ;
			{
				LOC42 = copyString(((NimStringDesc*) &TMP3999));
			}
			LA43: ;
			memset((void*)LOC48, 0, sizeof(LOC48));
			LOC48[0] = gentypeinfo_507392(p, t);
			appf_145085(&result, LOC42, LOC48, 1);
		}
		LA40: ;
		while (1) {
			trope145007* LOC50;
			if (!!((t == NIM_NIL))) goto LA49;
			LOC50 = 0;
			LOC50 = createrecordvaraux_513759(p, (*t).N, &c);
			app_145040(&result, LOC50);
			t = (*t).Sons->data[0];
		} LA49: ;
		app_145046(&result, ((NimStringDesc*) &TMP3997));
	}
	break;
	case ((NU8) 23):
	case ((NU8) 21):
	case ((NU8) 22):
	{
		{
			NU8 LOC54;
			NimStringDesc* LOC57;
			LOC54 = 0;
			LOC54 = maptype_507281(t);
			if (!(LOC54 == ((NU8) 8))) goto LA55;
			LOC57 = 0;
			{
				if (!((*p).Target == ((NU8) 0))) goto LA60;
				LOC57 = copyString(((NimStringDesc*) &TMP4002));
			}
			goto LA58;
			LA60: ;
			{
				LOC57 = copyString(((NimStringDesc*) &TMP4003));
			}
			LA58: ;
			result = puttoseq_513742(LOC57, indirect);
		}
		goto LA52;
		LA55: ;
		{
			NimStringDesc* LOC64;
			LOC64 = 0;
			{
				if (!((*p).Target == ((NU8) 0))) goto LA67;
				LOC64 = copyString(((NimStringDesc*) &TMP4004));
			}
			goto LA65;
			LA67: ;
			{
				LOC64 = copyString(((NimStringDesc*) &TMP4005));
			}
			LA65: ;
			result = puttoseq_513742(LOC64, indirect);
		}
		LA52: ;
	}
	break;
	case ((NU8) 24):
	case ((NU8) 28):
	case ((NU8) 29):
	case ((NU8) 26):
	case ((NU8) 25):
	{
		NimStringDesc* LOC71;
		LOC71 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA74;
			LOC71 = copyString(((NimStringDesc*) &TMP4004));
		}
		goto LA72;
		LA74: ;
		{
			LOC71 = copyString(((NimStringDesc*) &TMP4005));
		}
		LA72: ;
		result = puttoseq_513742(LOC71, indirect);
	}
	break;
	default:
	{
		NimStringDesc* LOC78;
		LOC78 = 0;
		LOC78 = rawNewString(reprEnum((*t).Kind, (&NTI188240))->Sup.len + 11);
appendString(LOC78, ((NimStringDesc*) &TMP4006));
appendString(LOC78, reprEnum((*t).Kind, (&NTI188240)));
		internalerror_165606(LOC78);
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(NIM_BOOL, needsnocopy_512056)(tnode188803* y) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	ttype188837* LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((TMP4007[(*y).Kind/8] &(1<<((*y).Kind%8)))!=0);
	if (LOC1) goto LA2;
	LOC3 = 0;
	LOC3 = skiptypes_192793((*y).Typ, IL64(211106232576256));
	LOC1 = ((*LOC3).Kind == ((NU8) 22) || (*LOC3).Kind == ((NU8) 21) || (*LOC3).Kind == ((NU8) 23));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genvarinit_514148)(tproc507028* p, tsym188833* v, tnode188803* n) {
	tcompres507018 a;
	trope145007* s;
	memset((void*)&a, 0, sizeof(a));
	s = 0;
	{
		NimStringDesc* LOC5;
		TY503234 LOC11;
		NIM_BOOL LOC12;
		if (!((*n).Kind == ((NU8) 1))) goto LA3;
		LOC5 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA8;
			LOC5 = copyString(((NimStringDesc*) &TMP3946));
		}
		goto LA6;
		LA8: ;
		{
			LOC5 = copyString(((NimStringDesc*) &TMP3947));
		}
		LA6: ;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = manglename_507361(v);
		LOC12 = 0;
		LOC12 = isindirect_514106(v);
		LOC11[1] = createvar_513753(p, (*v).Typ, LOC12);
		appf_145085(&(*p).Body, LOC5, LOC11, 2);
	}
	goto LA1;
	LA3: ;
	{
		trope145007* LOC14;
		NU8 LOC15;
		LOC14 = 0;
		LOC14 = manglename_507361(v);
		gen_508112(p, n, &a);
		LOC15 = 0;
		LOC15 = maptype_507281((*v).Typ);
		switch (LOC15) {
		case ((NU8) 7):
		{
			{
				NIM_BOOL LOC19;
				LOC19 = 0;
				LOC19 = needsnocopy_512056(n);
				if (!LOC19) goto LA20;
				s = a.Res;
			}
			goto LA17;
			LA20: ;
			{
				TY503234 LOC23;
				usemagic_508134(p, ((NimStringDesc*) &TMP3971));
				memset((void*)LOC23, 0, sizeof(LOC23));
				LOC23[0] = a.Res;
				LOC23[1] = gentypeinfo_507392(p, (*n).Typ);
				s = ropef_145079(((NimStringDesc*) &TMP4008), LOC23, 2);
			}
			LA17: ;
		}
		break;
		case ((NU8) 8):
		{
			{
				if (!!((a.Typ == ((NU8) 8)))) goto LA27;
				internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4009));
			}
			LA27: ;
			{
				NimStringDesc* LOC33;
				TY470214 LOC39;
				if (!!(((32776 & (*v).Flags) == 0))) goto LA31;
				LOC33 = 0;
				{
					if (!((*p).Target == ((NU8) 0))) goto LA36;
					LOC33 = copyString(((NimStringDesc*) &TMP4010));
				}
				goto LA34;
				LA36: ;
				{
					LOC33 = copyString(((NimStringDesc*) &TMP4011));
				}
				LA34: ;
				memset((void*)LOC39, 0, sizeof(LOC39));
				LOC39[0] = (*v).Loc.R;
				LOC39[1] = a.Address;
				LOC39[2] = a.Res;
				appf_145085(&(*p).Body, LOC33, LOC39, 3);
			}
			goto LA29;
			LA31: ;
			{
				NimStringDesc* LOC41;
				TY470214 LOC47;
				LOC41 = 0;
				{
					if (!((*p).Target == ((NU8) 0))) goto LA44;
					LOC41 = copyString(((NimStringDesc*) &TMP4012));
				}
				goto LA42;
				LA44: ;
				{
					LOC41 = copyString(((NimStringDesc*) &TMP4013));
				}
				LA42: ;
				memset((void*)LOC47, 0, sizeof(LOC47));
				LOC47[0] = (*v).Loc.R;
				LOC47[1] = a.Address;
				LOC47[2] = a.Res;
				appf_145085(&(*p).Body, LOC41, LOC47, 3);
			}
			LA29: ;
			goto BeforeRet;
		}
		break;
		default:
		{
			s = a.Res;
		}
		break;
		}
		{
			NIM_BOOL LOC51;
			NimStringDesc* LOC54;
			TY503234 LOC60;
			LOC51 = 0;
			LOC51 = isindirect_514106(v);
			if (!LOC51) goto LA52;
			LOC54 = 0;
			{
				if (!((*p).Target == ((NU8) 0))) goto LA57;
				LOC54 = copyString(((NimStringDesc*) &TMP4014));
			}
			goto LA55;
			LA57: ;
			{
				LOC54 = copyString(((NimStringDesc*) &TMP4015));
			}
			LA55: ;
			memset((void*)LOC60, 0, sizeof(LOC60));
			LOC60[0] = (*v).Loc.R;
			LOC60[1] = s;
			appf_145085(&(*p).Body, LOC54, LOC60, 2);
		}
		goto LA49;
		LA52: ;
		{
			NimStringDesc* LOC62;
			TY503234 LOC68;
			LOC62 = 0;
			{
				if (!((*p).Target == ((NU8) 0))) goto LA65;
				LOC62 = copyString(((NimStringDesc*) &TMP3946));
			}
			goto LA63;
			LA65: ;
			{
				LOC62 = copyString(((NimStringDesc*) &TMP3947));
			}
			LA63: ;
			memset((void*)LOC68, 0, sizeof(LOC68));
			LOC68[0] = (*v).Loc.R;
			LOC68[1] = s;
			appf_145085(&(*p).Body, LOC62, LOC68, 2);
		}
		LA49: ;
	}
	LA1: ;
	BeforeRet: ;
}

N_NIMCALL(void, genconstant_508129)(tproc507028* p, tsym188833* c) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		trope145007* oldbody;
		LOC3 = 0;
		LOC3 = !((((*c).Loc.Flags &(1<<((((NU8) 3))&7)))!=0));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = containsorincl_185888(&(*(*p).G).Generatedsyms, (*c).Sup.Id);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		oldbody = (*p).Body;
		asgnRefNoCycle((void**) &(*p).Body, NIM_NIL);
		genvarinit_514148(p, c, (*c).Ast);
		app_145040(&(*(*p).G).Code, (*p).Body);
		asgnRefNoCycle((void**) &(*p).Body, oldbody);
	}
	LA6: ;
}

N_NIMCALL(void, gensym_513137)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tsym188833* s;
	s = (*n).kindU.S4.Sym;
	switch ((*s).Kind) {
	case ((NU8) 8):
	case ((NU8) 9):
	case ((NU8) 3):
	case ((NU8) 5):
	case ((NU8) 11):
	{
		NU8 k;
		{
			NimStringDesc* LOC6;
			if (!((*s).Loc.R == NIM_NIL)) goto LA4;
			LOC6 = 0;
			LOC6 = rawNewString((*(*s).Name).S->Sup.len + 30);
appendString(LOC6, ((NimStringDesc*) &TMP3942));
appendString(LOC6, (*(*s).Name).S);
			internalerror_165591((*n).Info, LOC6);
		}
		LA4: ;
		k = maptype_507281((*s).Typ);
		{
			if (!(k == ((NU8) 8))) goto LA9;
			(*r).Typ = ((NU8) 8);
			{
				TY145497 LOC15;
				TY145497 LOC16;
				if (!!(((32776 & (*s).Flags) == 0))) goto LA13;
				memset((void*)LOC15, 0, sizeof(LOC15));
				LOC15[0] = (*s).Loc.R;
				unsureAsgnRef((void**) &(*r).Address, ropef_145079(((NimStringDesc*) &TMP3943), LOC15, 1));
				memset((void*)LOC16, 0, sizeof(LOC16));
				LOC16[0] = (*s).Loc.R;
				unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP3944), LOC16, 1));
			}
			goto LA11;
			LA13: ;
			{
				unsureAsgnRef((void**) &(*r).Address, (*s).Loc.R);
				unsureAsgnRef((void**) &(*r).Res, con_145025((*s).Loc.R, ((NimStringDesc*) &TMP3945)));
			}
			LA11: ;
		}
		goto LA7;
		LA9: ;
		{
			NIM_BOOL LOC19;
			TY145497 LOC23;
			LOC19 = 0;
			LOC19 = !((k == ((NU8) 7)));
			if (!(LOC19)) goto LA20;
			LOC19 = (((*s).Flags &(1<<((((NU8) 15))&31)))!=0);
			LA20: ;
			if (!LOC19) goto LA21;
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = (*s).Loc.R;
			unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP3943), LOC23, 1));
		}
		goto LA7;
		LA21: ;
		{
			unsureAsgnRef((void**) &(*r).Res, (*s).Loc.R);
		}
		LA7: ;
	}
	break;
	case ((NU8) 10):
	{
		genconstant_508129(p, s);
		{
			NimStringDesc* LOC30;
			if (!((*s).Loc.R == NIM_NIL)) goto LA28;
			LOC30 = 0;
			LOC30 = rawNewString((*(*s).Name).S->Sup.len + 30);
appendString(LOC30, ((NimStringDesc*) &TMP3942));
appendString(LOC30, (*(*s).Name).S);
			internalerror_165591((*n).Info, LOC30);
		}
		LA28: ;
		unsureAsgnRef((void**) &(*r).Res, (*s).Loc.R);
	}
	break;
	case ((NU8) 12):
	case ((NU8) 16):
	case ((NU8) 13):
	{
		trope145007* LOC32;
		LOC32 = 0;
		LOC32 = manglename_507361(s);
		unsureAsgnRef((void**) &(*r).Res, (*s).Loc.R);
		{
			NIM_BOOL LOC35;
			NIM_BOOL LOC36;
			LOC35 = 0;
			LOC36 = 0;
			LOC36 = (((*s).Loc.Flags &(1<<((((NU8) 3))&7)))!=0);
			if (LOC36) goto LA37;
			LOC36 = !(((*s).Magic == ((NU16) 0)));
			LA37: ;
			LOC35 = LOC36;
			if (LOC35) goto LA38;
			LOC35 = !(((134217760 & (*s).Flags) == 0));
			LA38: ;
			if (!LOC35) goto LA39;
		}
		goto LA33;
		LA39: ;
		{
			NIM_BOOL LOC42;
			tnode188803* LOC44;
			LOC42 = 0;
			LOC42 = ((*s).Kind == ((NU8) 13));
			if (!(LOC42)) goto LA43;
			LOC44 = 0;
			LOC44 = getbody_239244(s);
			LOC42 = ((*LOC44).Kind == ((NU8) 1));
			LA43: ;
			if (!LOC42) goto LA45;
		}
		goto LA33;
		LA45: ;
		{
			if (!(((*s).Flags &(1<<((((NU8) 4))&31)))!=0)) goto LA48;
			(*(*p).G).Forwarded = (tsymseq188805*) incrSeq(&((*(*p).G).Forwarded)->Sup, sizeof(tsym188833*));
			asgnRefNoCycle((void**) &(*(*p).G).Forwarded->data[(*(*p).G).Forwarded->Sup.len-1], s);
		}
		goto LA33;
		LA48: ;
		{
			NIM_BOOL LOC51;
			trope145007* newp;
			tproc507028* owner;
			LOC51 = 0;
			LOC51 = containsorincl_185888(&(*(*p).G).Generatedsyms, (*s).Sup.Id);
			if (!!(LOC51)) goto LA52;
			newp = genproc_508124(p, s);
			owner = p;
			while (1) {
				NIM_BOOL LOC55;
				LOC55 = 0;
				LOC55 = !((owner == NIM_NIL));
				if (!(LOC55)) goto LA56;
				LOC55 = !(((*owner).Prc == (*s).Owner));
				LA56: ;
				if (!LOC55) goto LA54;
				owner = (*owner).Up;
			} LA54: ;
			{
				if (!!((owner == NIM_NIL))) goto LA59;
				app_145040(&(*owner).Locals, newp);
			}
			goto LA57;
			LA59: ;
			{
				app_145040(&(*(*p).G).Code, newp);
			}
			LA57: ;
		}
		goto LA33;
		LA52: ;
		LA33: ;
	}
	break;
	default:
	{
		{
			NimStringDesc* LOC67;
			if (!((*s).Loc.R == NIM_NIL)) goto LA65;
			LOC67 = 0;
			LOC67 = rawNewString((*(*s).Name).S->Sup.len + 30);
appendString(LOC67, ((NimStringDesc*) &TMP3942));
appendString(LOC67, (*(*s).Name).S);
			internalerror_165591((*n).Info, LOC67);
		}
		LA65: ;
		unsureAsgnRef((void**) &(*r).Res, (*s).Loc.R);
	}
	break;
	}
	(*r).Kind = ((NU8) 2);
}

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

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

static N_INLINE(NIM_BOOL, isatom_195186)(tnode188803* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = (((NU8) 0) <= (*n).Kind);
	if (!(LOC1)) goto LA2;
	LOC1 = ((*n).Kind <= ((NU8) 23));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NIM_BOOL, issimpleexpr_508212)(tnode188803* n) {
	NIM_BOOL result;
	result = 0;
	{
		tnode188803* c_508247;
		NI i_508249;
		NI HEX3Atmp_508251;
		NI LOC5;
		NI res_508253;
		if (!((*n).Kind >= ((NU8) 26) && (*n).Kind <= ((NU8) 32) || (*n).Kind >= ((NU8) 37) && (*n).Kind <= ((NU8) 39) || (*n).Kind >= ((NU8) 41) && (*n).Kind <= ((NU8) 42) || (*n).Kind == ((NU8) 45))) goto LA3;
		c_508247 = 0;
		i_508249 = 0;
		HEX3Atmp_508251 = 0;
		LOC5 = 0;
		LOC5 = len_189264(n);
		HEX3Atmp_508251 = LOC5 - 1;
		res_508253 = 0;
		while (1) {
			if (!(res_508253 <= HEX3Atmp_508251)) goto LA6;
			i_508249 = res_508253;
			c_508247 = (*n).kindU.S6.Sons->data[i_508249];
			{
				NIM_BOOL LOC9;
				LOC9 = 0;
				LOC9 = issimpleexpr_508212(c_508247);
				if (!!(LOC9)) goto LA10;
				result = NIM_FALSE;
				goto BeforeRet;
			}
			LA10: ;
			res_508253 += 1;
		} LA6: ;
		result = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC13;
		LOC13 = 0;
		LOC13 = isatom_195186(n);
		if (!LOC13) goto LA14;
		result = NIM_TRUE;
	}
	goto LA1;
	LA14: ;
	LA1: ;
	BeforeRet: ;
	return result;
}

static N_INLINE(trope145007*, rdloc_507122)(tcompres507018 a) {
	trope145007* result;
	result = 0;
	result = a.Res;
	return result;
}

N_NIMCALL(trope145007*, gettemp_508257)(tproc507028* p) {
	trope145007* result;
	TY145497 LOC1;
	NimStringDesc* LOC2;
	TY145497 LOC8;
	result = 0;
	(*p).Unique += 1;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = torope_145062(((NI64) ((*p).Unique)));
	result = ropef_145079(((NimStringDesc*) &TMP4027), LOC1, 1);
	LOC2 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA5;
		LOC2 = copyString(((NimStringDesc*) &TMP4028));
	}
	goto LA3;
	LA5: ;
	{
		LOC2 = copyString(((NimStringDesc*) &TMP4029));
	}
	LA3: ;
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = result;
	appf_145085(&(*p).Locals, LOC2, LOC8, 1);
	return result;
}

N_NIMCALL(void, genor_508452)(tproc507028* p, tnode188803* a, tnode188803* b, tcompres507018* r) {
	tcompres507018 x;
	tcompres507018 y;
	memset((void*)&x, 0, sizeof(x));
	memset((void*)&y, 0, sizeof(y));
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		TY503234 LOC13;
		LOC3 = 0;
		LOC3 = issimpleexpr_508212(a);
		if (!(LOC3)) goto LA4;
		LOC3 = issimpleexpr_508212(b);
		LA4: ;
		if (!LOC3) goto LA5;
		gen_508112(p, a, &x);
		gen_508112(p, b, &y);
		(*r).Kind = ((NU8) 1);
		LOC7 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA10;
			LOC7 = copyString(((NimStringDesc*) &TMP4025));
		}
		goto LA8;
		LA10: ;
		{
			LOC7 = copyString(((NimStringDesc*) &TMP4026));
		}
		LA8: ;
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = rdloc_507122(x);
		LOC13[1] = rdloc_507122(y);
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(LOC7, LOC13, 2));
	}
	goto LA1;
	LA5: ;
	{
		NimStringDesc* LOC15;
		TY503234 LOC21;
		NimStringDesc* LOC22;
		TY503234 LOC28;
		unsureAsgnRef((void**) &(*r).Res, gettemp_508257(p));
		(*r).Kind = ((NU8) 2);
		gen_508112(p, a, &x);
		LOC15 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA18;
			LOC15 = copyString(((NimStringDesc*) &TMP4030));
		}
		goto LA16;
		LA18: ;
		{
			LOC15 = copyString(((NimStringDesc*) &TMP4031));
		}
		LA16: ;
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = rdloc_507122(x);
		LOC21[1] = rdloc_507122((*r));
		appf_145085(&(*p).Body, LOC15, LOC21, 2);
		gen_508112(p, b, &y);
		LOC22 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA25;
			LOC22 = copyString(((NimStringDesc*) &TMP4032));
		}
		goto LA23;
		LA25: ;
		{
			LOC22 = copyString(((NimStringDesc*) &TMP4033));
		}
		LA23: ;
		memset((void*)LOC28, 0, sizeof(LOC28));
		LOC28[0] = rdloc_507122(y);
		LOC28[1] = rdloc_507122((*r));
		appf_145085(&(*p).Body, LOC22, LOC28, 2);
	}
	LA1: ;
}

N_NIMCALL(void, genand_508297)(tproc507028* p, tnode188803* a, tnode188803* b, tcompres507018* r) {
	tcompres507018 x;
	tcompres507018 y;
	memset((void*)&x, 0, sizeof(x));
	memset((void*)&y, 0, sizeof(y));
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		TY503234 LOC13;
		LOC3 = 0;
		LOC3 = issimpleexpr_508212(a);
		if (!(LOC3)) goto LA4;
		LOC3 = issimpleexpr_508212(b);
		LA4: ;
		if (!LOC3) goto LA5;
		gen_508112(p, a, &x);
		gen_508112(p, b, &y);
		(*r).Kind = ((NU8) 1);
		LOC7 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA10;
			LOC7 = copyString(((NimStringDesc*) &TMP4034));
		}
		goto LA8;
		LA10: ;
		{
			LOC7 = copyString(((NimStringDesc*) &TMP4035));
		}
		LA8: ;
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = rdloc_507122(x);
		LOC13[1] = rdloc_507122(y);
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(LOC7, LOC13, 2));
	}
	goto LA1;
	LA5: ;
	{
		NimStringDesc* LOC15;
		TY503234 LOC21;
		NimStringDesc* LOC22;
		TY503234 LOC28;
		unsureAsgnRef((void**) &(*r).Res, gettemp_508257(p));
		(*r).Kind = ((NU8) 2);
		gen_508112(p, a, &x);
		LOC15 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA18;
			LOC15 = copyString(((NimStringDesc*) &TMP4036));
		}
		goto LA16;
		LA18: ;
		{
			LOC15 = copyString(((NimStringDesc*) &TMP4037));
		}
		LA16: ;
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = rdloc_507122(x);
		LOC21[1] = rdloc_507122((*r));
		appf_145085(&(*p).Body, LOC15, LOC21, 2);
		gen_508112(p, b, &y);
		LOC22 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA25;
			LOC22 = copyString(((NimStringDesc*) &TMP4032));
		}
		goto LA23;
		LA25: ;
		{
			LOC22 = copyString(((NimStringDesc*) &TMP4033));
		}
		LA23: ;
		memset((void*)LOC28, 0, sizeof(LOC28));
		LOC28[0] = rdloc_507122(y);
		LOC28[1] = rdloc_507122((*r));
		appf_145085(&(*p).Body, LOC22, LOC28, 2);
	}
	LA1: ;
}

N_NIMCALL(void, arithaux_509191)(tproc507028* p, tnode188803* n, tcompres507018* r, NU16 op, tmagicops508655 ops) {
	tcompres507018 x;
	tcompres507018 y;
	NI i;
	memset((void*)&x, 0, sizeof(x));
	memset((void*)&y, 0, sizeof(y));
	i = !((((*p).Options &(1<<((((NU8) 5))&31)))!=0));
	usemagic_508134(p, ops[(op)- 37][(i)- 0]);
	{
		NI LOC3;
		TY503234 LOC6;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(2 < LOC3)) goto LA4;
		gen_508112(p, (*n).kindU.S6.Sons->data[1], &x);
		gen_508112(p, (*n).kindU.S6.Sons->data[2], &y);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = rdloc_507122(x);
		LOC6[1] = rdloc_507122(y);
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(ops[(op)- 37][((NI32)(((NI) (i)) + 2))- 0], LOC6, 2));
	}
	goto LA1;
	LA4: ;
	{
		TY145497 LOC8;
		gen_508112(p, (*n).kindU.S6.Sons->data[1], r);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_507122((*r));
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(ops[(op)- 37][((NI32)(((NI) (i)) + 2))- 0], LOC8, 1));
	}
	LA1: ;
	(*r).Kind = ((NU8) 1);
}

N_NIMCALL(void, arith_509282)(tproc507028* p, tnode188803* n, tcompres507018* r, NU16 op) {
	tmagicops508655 LOC1;
	memset((void*)LOC1, 0, sizeof(LOC1));
	{
		if (!((*p).Target == ((NU8) 0))) goto LA4;
		genericAssign((void*)LOC1, (void*)jsops_508659, (&NTI508655));
	}
	goto LA2;
	LA4: ;
	{
		genericAssign((void*)LOC1, (void*)luaops_508854, (&NTI508655));
	}
	LA2: ;
	arithaux_509191(p, n, r, op, LOC1);
}

N_NIMCALL(void, unaryexpr_509163)(tproc507028* p, tnode188803* n, tcompres507018* r, NimStringDesc* magic, NimStringDesc* frmt) {
	TY145497 LOC1;
	usemagic_508134(p, magic);
	gen_508112(p, (*n).kindU.S6.Sons->data[1], r);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_507122((*r));
	unsureAsgnRef((void**) &(*r).Res, ropef_145079(frmt, LOC1, 1));
	(*r).Kind = ((NU8) 1);
}

N_NIMCALL(void, genrepr_515008)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	ttype188837* t;
	t = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	switch ((*t).Kind) {
	case ((NU8) 31) ... ((NU8) 44):
	{
		unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4134));
	}
	break;
	case ((NU8) 14):
	case ((NU8) 15):
	{
		TY503234 LOC3;
		gen_508112(p, (*n).kindU.S6.Sons->data[1], r);
		usemagic_508134(p, ((NimStringDesc*) &TMP4019));
		(*r).Kind = ((NU8) 1);
		memset((void*)LOC3, 0, sizeof(LOC3));
		LOC3[0] = gentypeinfo_507392(p, t);
		LOC3[1] = (*r).Res;
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4135), LOC3, 2));
	}
	break;
	default:
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4136));
	}
	break;
	}
}

N_NIMCALL(void, genswap_512209)(tproc507028* p, tnode188803* n) {
	tcompres507018 a;
	tcompres507018 b;
	trope145007* tmp;
	TY145497 LOC1;
	NimStringDesc* LOC22;
	TY470214 LOC28;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	gen_508112(p, (*n).kindU.S6.Sons->data[1], &a);
	gen_508112(p, (*n).kindU.S6.Sons->data[2], &b);
	(*p).Unique += 1;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = torope_145062(((NI64) ((*p).Unique)));
	tmp = ropef_145079(((NimStringDesc*) &TMP4027), LOC1, 1);
	{
		ttype188837* LOC4;
		NU8 LOC5;
		trope145007* tmp2;
		TY145497 LOC8;
		NimStringDesc* LOC15;
		TY470214 LOC21;
		LOC4 = 0;
		LOC4 = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
		LOC5 = 0;
		LOC5 = maptype_507281(LOC4);
		if (!(LOC5 == ((NU8) 8))) goto LA6;
		(*p).Unique += 1;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = torope_145062(((NI64) ((*p).Unique)));
		tmp2 = ropef_145079(((NimStringDesc*) &TMP4027), LOC8, 1);
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = !((a.Typ == ((NU8) 8)));
			if (LOC11) goto LA12;
			LOC11 = !((b.Typ == ((NU8) 8)));
			LA12: ;
			if (!LOC11) goto LA13;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4137));
		}
		LA13: ;
		LOC15 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA18;
			LOC15 = copyString(((NimStringDesc*) &TMP4138));
		}
		goto LA16;
		LA18: ;
		{
			LOC15 = copyString(((NimStringDesc*) &TMP4139));
		}
		LA16: ;
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = tmp;
		LOC21[1] = a.Address;
		LOC21[2] = b.Address;
		appf_145085(&(*p).Body, LOC15, LOC21, 3);
		tmp = tmp2;
	}
	LA6: ;
	LOC22 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA25;
		LOC22 = copyString(((NimStringDesc*) &TMP4140));
	}
	goto LA23;
	LA25: ;
	{
		LOC22 = copyString(((NimStringDesc*) &TMP4141));
	}
	LA23: ;
	memset((void*)LOC28, 0, sizeof(LOC28));
	LOC28[0] = tmp;
	LOC28[1] = a.Res;
	LOC28[2] = b.Res;
	appf_145085(&(*p).Body, LOC22, LOC28, 3);
}

N_NIMCALL(void, binaryexpr_509050)(tproc507028* p, tnode188803* n, tcompres507018* r, NimStringDesc* magic, NimStringDesc* frmt) {
	tcompres507018 x;
	tcompres507018 y;
	TY503234 LOC1;
	memset((void*)&x, 0, sizeof(x));
	memset((void*)&y, 0, sizeof(y));
	usemagic_508134(p, magic);
	gen_508112(p, (*n).kindU.S6.Sons->data[1], &x);
	gen_508112(p, (*n).kindU.S6.Sons->data[2], &y);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_507122(x);
	LOC1[1] = rdloc_507122(y);
	unsureAsgnRef((void**) &(*r).Res, ropef_145079(frmt, LOC1, 2));
	(*r).Kind = ((NU8) 1);
}

N_NIMCALL(void, genconstrstr_514836)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 a;
	NI i_514903;
	NI HEX3Atmp_515001;
	NI LOC11;
	NI res_515003;
	NI LOC23;
	memset((void*)&a, 0, sizeof(a));
	gen_508112(p, (*n).kindU.S6.Sons->data[1], &a);
	(*r).Kind = ((NU8) 1);
	{
		ttype188837* LOC3;
		TY145497 LOC6;
		trope145007* LOC7;
		LOC3 = 0;
		LOC3 = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
		if (!((*LOC3).Kind == ((NU8) 2))) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = a.Res;
		LOC7 = 0;
		LOC7 = ropef_145079(((NimStringDesc*) &TMP4150), LOC6, 1);
		app_145040(&(*r).Res, LOC7);
	}
	goto LA1;
	LA4: ;
	{
		TY145497 LOC9;
		trope145007* LOC10;
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = a.Res;
		LOC10 = 0;
		LOC10 = ropef_145079(((NimStringDesc*) &TMP4151), LOC9, 1);
		app_145040(&(*r).Res, LOC10);
	}
	LA1: ;
	i_514903 = 0;
	HEX3Atmp_515001 = 0;
	LOC11 = 0;
	LOC11 = sonslen_189181(n);
	HEX3Atmp_515001 = (NI32)(LOC11 - 2);
	res_515003 = 2;
	while (1) {
		if (!(res_515003 <= HEX3Atmp_515001)) goto LA12;
		i_514903 = res_515003;
		gen_508112(p, (*n).kindU.S6.Sons->data[i_514903], &a);
		{
			ttype188837* LOC15;
			TY145497 LOC18;
			trope145007* LOC19;
			LOC15 = 0;
			LOC15 = skiptypes_192793((*(*n).kindU.S6.Sons->data[i_514903]).Typ, IL64(211106242013440));
			if (!((*LOC15).Kind == ((NU8) 2))) goto LA16;
			memset((void*)LOC18, 0, sizeof(LOC18));
			LOC18[0] = a.Res;
			LOC19 = 0;
			LOC19 = ropef_145079(((NimStringDesc*) &TMP4152), LOC18, 1);
			app_145040(&(*r).Res, LOC19);
		}
		goto LA13;
		LA16: ;
		{
			TY145497 LOC21;
			trope145007* LOC22;
			memset((void*)LOC21, 0, sizeof(LOC21));
			LOC21[0] = a.Res;
			LOC22 = 0;
			LOC22 = ropef_145079(((NimStringDesc*) &TMP4153), LOC21, 1);
			app_145040(&(*r).Res, LOC22);
		}
		LA13: ;
		res_515003 += 1;
	} LA12: ;
	LOC23 = 0;
	LOC23 = sonslen_189181(n);
	gen_508112(p, (*n).kindU.S6.Sons->data[(NI32)(LOC23 - 1)], &a);
	{
		NI LOC26;
		ttype188837* LOC27;
		TY145497 LOC30;
		trope145007* LOC31;
		LOC26 = 0;
		LOC26 = sonslen_189181(n);
		LOC27 = 0;
		LOC27 = skiptypes_192793((*(*n).kindU.S6.Sons->data[(NI32)(LOC26 - 1)]).Typ, IL64(211106242013440));
		if (!((*LOC27).Kind == ((NU8) 2))) goto LA28;
		memset((void*)LOC30, 0, sizeof(LOC30));
		LOC30[0] = a.Res;
		LOC31 = 0;
		LOC31 = ropef_145079(((NimStringDesc*) &TMP4154), LOC30, 1);
		app_145040(&(*r).Res, LOC31);
	}
	goto LA24;
	LA28: ;
	{
		TY145497 LOC33;
		trope145007* LOC34;
		memset((void*)LOC33, 0, sizeof(LOC33));
		LOC33[0] = a.Res;
		LOC34 = 0;
		LOC34 = ropef_145079(((NimStringDesc*) &TMP4155), LOC33, 1);
		app_145040(&(*r).Res, LOC34);
	}
	LA24: ;
}

N_NIMCALL(void, gennew_514688)(tproc507028* p, tnode188803* n) {
	tcompres507018 a;
	ttype188837* t;
	ttype188837* LOC1;
	TY503234 LOC2;
	memset((void*)&a, 0, sizeof(a));
	gen_508112(p, (*n).kindU.S6.Sons->data[1], &a);
	LOC1 = 0;
	LOC1 = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	t = (*LOC1).Sons->data[0];
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = a.Res;
	LOC2[1] = createvar_513753(p, t, NIM_TRUE);
	appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4162), LOC2, 2);
}

N_NIMCALL(void, genord_514791)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	ttype188837* LOC1;
	LOC1 = 0;
	LOC1 = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	switch ((*LOC1).Kind) {
	case ((NU8) 14):
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 2):
	{
		gen_508112(p, (*n).kindU.S6.Sons->data[1], r);
	}
	break;
	case ((NU8) 1):
	{
		NimStringDesc* LOC4;
		LOC4 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA7;
			LOC4 = copyString(((NimStringDesc*) &TMP4163));
		}
		goto LA5;
		LA7: ;
		{
			LOC4 = copyString(((NimStringDesc*) &TMP4164));
		}
		LA5: ;
		unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP3948), LOC4);
	}
	break;
	default:
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4165));
	}
	break;
	}
}

N_NIMCALL(void, gennewseq_514731)(tproc507028* p, tnode188803* n) {
	tcompres507018 x;
	tcompres507018 y;
	ttype188837* t;
	ttype188837* LOC1;
	TY470214 LOC2;
	memset((void*)&x, 0, sizeof(x));
	memset((void*)&y, 0, sizeof(y));
	gen_508112(p, (*n).kindU.S6.Sons->data[1], &x);
	gen_508112(p, (*n).kindU.S6.Sons->data[2], &y);
	LOC1 = 0;
	LOC1 = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
	t = (*LOC1).Sons->data[0];
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = rdloc_507122(x);
	LOC2[1] = rdloc_507122(y);
	LOC2[2] = createvar_513753(p, t, NIM_FALSE);
	appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4191), LOC2, 3);
}

N_NIMCALL(void, genof_515049)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 x;
	ttype188837* t;
	memset((void*)&x, 0, sizeof(x));
	t = skiptypes_192793((*(*n).kindU.S6.Sons->data[2]).Typ, IL64(211106248304896));
	gen_508112(p, (*n).kindU.S6.Sons->data[1], &x);
	{
		TY503234 LOC5;
		if (!(((*t).Flags &(1<<((((NU8) 2))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = x.Res;
		LOC5[1] = gentypeinfo_507392(p, t);
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4192), LOC5, 2));
	}
	goto LA1;
	LA3: ;
	{
		TY503234 LOC7;
		usemagic_508134(p, ((NimStringDesc*) &TMP4193));
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = x.Res;
		LOC7[1] = gentypeinfo_507392(p, t);
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4194), LOC7, 2));
	}
	LA1: ;
	(*r).Kind = ((NU8) 1);
}

N_NIMCALL(void, genreset_515128)(tproc507028* p, tnode188803* n) {
	tcompres507018 x;
	TY503234 LOC1;
	memset((void*)&x, 0, sizeof(x));
	usemagic_508134(p, ((NimStringDesc*) &TMP4195));
	gen_508112(p, (*n).kindU.S6.Sons->data[1], &x);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = x.Res;
	LOC1[1] = gentypeinfo_507392(p, (*(*n).kindU.S6.Sons->data[1]).Typ);
	appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4196), LOC1, 2);
}

N_NIMCALL(void, genarg_513533)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 a;
	memset((void*)&a, 0, sizeof(a));
	gen_508112(p, n, &a);
	{
		if (!(a.Typ == ((NU8) 8))) goto LA3;
		app_145040(&(*r).Res, a.Address);
		app_145046(&(*r).Res, ((NimStringDesc*) &TMP3957));
		app_145040(&(*r).Res, a.Res);
	}
	goto LA1;
	LA3: ;
	{
		app_145040(&(*r).Res, a.Res);
	}
	LA1: ;
}

N_NIMCALL(void, genargs_513557)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	NI i_513576;
	NI HEX3Atmp_513596;
	NI LOC1;
	NI res_513598;
	app_145046(&(*r).Res, ((NimStringDesc*) &TMP4198));
	i_513576 = 0;
	HEX3Atmp_513596 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_513596 = (NI32)(LOC1 - 1);
	res_513598 = 1;
	while (1) {
		if (!(res_513598 <= HEX3Atmp_513596)) goto LA2;
		i_513576 = res_513598;
		{
			tnode188803* it;
			it = (*n).kindU.S6.Sons->data[i_513576];
			{
				NIM_BOOL LOC6;
				LOC6 = 0;
				LOC6 = iscompiletimeonly_233237((*it).Typ);
				if (!LOC6) goto LA7;
				goto LA3;
			}
			LA7: ;
			{
				if (!(1 < i_513576)) goto LA11;
				app_145046(&(*r).Res, ((NimStringDesc*) &TMP3957));
			}
			LA11: ;
			genarg_513533(p, it, r);
		} LA3: ;
		res_513598 += 1;
	} LA2: ;
	app_145046(&(*r).Res, ((NimStringDesc*) &TMP4199));
	(*r).Kind = ((NU8) 1);
}

N_NIMCALL(void, genecho_513733)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	usemagic_508134(p, ((NimStringDesc*) &TMP4197));
	app_145046(&(*r).Res, ((NimStringDesc*) &TMP4197));
	genargs_513557(p, n, r);
}

N_NIMCALL(void, ternaryexpr_509098)(tproc507028* p, tnode188803* n, tcompres507018* r, NimStringDesc* magic, NimStringDesc* frmt) {
	tcompres507018 x;
	tcompres507018 y;
	tcompres507018 z;
	TY470214 LOC1;
	memset((void*)&x, 0, sizeof(x));
	memset((void*)&y, 0, sizeof(y));
	memset((void*)&z, 0, sizeof(z));
	usemagic_508134(p, magic);
	gen_508112(p, (*n).kindU.S6.Sons->data[1], &x);
	gen_508112(p, (*n).kindU.S6.Sons->data[2], &y);
	gen_508112(p, (*n).kindU.S6.Sons->data[3], &z);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = rdloc_507122(x);
	LOC1[1] = rdloc_507122(y);
	LOC1[2] = rdloc_507122(z);
	unsureAsgnRef((void**) &(*r).Res, ropef_145079(frmt, LOC1, 3));
	(*r).Kind = ((NU8) 1);
}

N_NIMCALL(void, gencall_513604)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	gen_508112(p, (*n).kindU.S6.Sons->data[0], r);
	genargs_513557(p, n, r);
}

N_NIMCALL(void, genmagic_515170)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 a;
	trope145007* line;
	trope145007* filen;
	NU16 op;
	memset((void*)&a, 0, sizeof(a));
	line = 0;
	filen = 0;
	op = (*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Magic;
	switch (op) {
	case ((NU16) 135):
	{
		genor_508452(p, (*n).kindU.S6.Sons->data[1], (*n).kindU.S6.Sons->data[2], r);
	}
	break;
	case ((NU16) 134):
	{
		genand_508297(p, (*n).kindU.S6.Sons->data[1], (*n).kindU.S6.Sons->data[2], r);
	}
	break;
	case ((NU16) 37) ... ((NU16) 132):
	{
		arith_509282(p, n, r, op);
	}
	break;
	case ((NU16) 160):
	{
		genrepr_515008(p, n, r);
	}
	break;
	case ((NU16) 167):
	{
		genswap_512209(p, n);
	}
	break;
	case ((NU16) 18):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA9;
			unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4142));
		}
		goto LA7;
		LA9: ;
		{
			unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP4041), ((NimStringDesc*) &TMP4143));
		}
		LA7: ;
	}
	break;
	case ((NU16) 20):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA15;
			binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4144));
		}
		goto LA13;
		LA15: ;
		{
			binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4041), ((NimStringDesc*) &TMP4042));
		}
		LA13: ;
	}
	break;
	case ((NU16) 19):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA21;
			binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4144));
		}
		goto LA19;
		LA21: ;
		{
			binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4038), ((NimStringDesc*) &TMP4039));
		}
		LA19: ;
	}
	break;
	case ((NU16) 155):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4145), ((NimStringDesc*) &TMP4146));
	}
	break;
	case ((NU16) 156):
	{
		{
			ttype188837* LOC28;
			LOC28 = 0;
			LOC28 = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
			if (!((*LOC28).Kind == ((NU8) 29))) goto LA29;
			binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4147));
		}
		goto LA26;
		LA29: ;
		{
			binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4148));
		}
		LA26: ;
	}
	break;
	case ((NU16) 157):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4149));
	}
	break;
	case ((NU16) 146):
	{
		genconstrstr_514836(p, n, r);
	}
	break;
	case ((NU16) 136):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4156), ((NimStringDesc*) &TMP4157));
	}
	break;
	case ((NU16) 137):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4158), ((NimStringDesc*) &TMP4159));
	}
	break;
	case ((NU16) 138):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4158), ((NimStringDesc*) &TMP4160));
	}
	break;
	case ((NU16) 168):
	{
		unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4161));
	}
	break;
	case ((NU16) 133):
	{
		genrepr_515008(p, n, r);
	}
	break;
	case ((NU16) 24):
	case ((NU16) 25):
	{
		gennew_514688(p, n);
	}
	break;
	case ((NU16) 6):
	{
		NI64 LOC41;
		LOC41 = 0;
		LOC41 = getsize_223158((*(*n).kindU.S6.Sons->data[1]).Typ);
		unsureAsgnRef((void**) &(*r).Res, torope_145062(LOC41));
	}
	break;
	case ((NU16) 34):
	case ((NU16) 169):
	{
		gen_508112(p, (*n).kindU.S6.Sons->data[1], r);
	}
	break;
	case ((NU16) 23):
	{
		genord_514791(p, n, r);
	}
	break;
	case ((NU16) 28):
	{
		unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4166));
	}
	break;
	case ((NU16) 30):
	case ((NU16) 27):
	case ((NU16) 29):
	{
		unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4167));
	}
	break;
	case ((NU16) 5):
	{
		{
			ttype188837* LOC49;
			LOC49 = 0;
			LOC49 = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106240964864));
			if (!((*LOC49).Kind == ((NU8) 28))) goto LA50;
			unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4168));
		}
		goto LA47;
		LA50: ;
		{
			unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4166));
		}
		LA47: ;
	}
	break;
	case ((NU16) 21):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA56;
			binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4147));
		}
		goto LA54;
		LA56: ;
		{
			binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4038), ((NimStringDesc*) &TMP4169));
		}
		LA54: ;
	}
	break;
	case ((NU16) 22):
	{
		{
			if (!!((((*p).Options &(1<<((((NU8) 5))&31)))!=0))) goto LA62;
			binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4170));
		}
		goto LA60;
		LA62: ;
		{
			binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4041), ((NimStringDesc*) &TMP4171));
		}
		LA60: ;
	}
	break;
	case ((NU16) 162):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4172));
	}
	break;
	case ((NU16) 163):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4173));
	}
	break;
	case ((NU16) 33):
	{
		unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP4174), ((NimStringDesc*) &TMP4175));
	}
	break;
	case ((NU16) 141):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4176), ((NimStringDesc*) &TMP4177));
	}
	break;
	case ((NU16) 140):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4178), ((NimStringDesc*) &TMP4179));
	}
	break;
	case ((NU16) 139):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4180), ((NimStringDesc*) &TMP4181));
	}
	break;
	case ((NU16) 142):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4182), ((NimStringDesc*) &TMP4183));
	}
	break;
	case ((NU16) 143):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4184), ((NimStringDesc*) &TMP4185));
	}
	break;
	case ((NU16) 144):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP4186), ((NimStringDesc*) &TMP4187));
	}
	break;
	case ((NU16) 31):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4188));
	}
	break;
	case ((NU16) 32):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4189));
	}
	break;
	case ((NU16) 159):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4190));
	}
	break;
	case ((NU16) 229) ... ((NU16) 261):
	{
		localerror_165571((*n).Info, ((NU16) 212), (*(*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
	}
	break;
	case ((NU16) 26):
	{
		gennewseq_514731(p, n);
	}
	break;
	case ((NU16) 9):
	{
		genof_515049(p, n, r);
	}
	break;
	case ((NU16) 174):
	{
		genreset_515128(p, n);
	}
	break;
	case ((NU16) 10):
	{
		genecho_513733(p, n, r);
	}
	break;
	case ((NU16) 12):
	case ((NU16) 13):
	{
		localerror_165571((*n).Info, ((NU16) 224), (*(*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
	}
	break;
	case ((NU16) 170):
	{
		binaryexpr_509050(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4200));
	}
	break;
	case ((NU16) 171):
	{
		ternaryexpr_509098(p, n, r, ((NimStringDesc*) &TMP3948), ((NimStringDesc*) &TMP4201));
	}
	break;
	case ((NU16) 172):
	{
		unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP4202), ((NimStringDesc*) &TMP4203));
	}
	break;
	case ((NU16) 173):
	{
		unaryexpr_509163(p, n, r, ((NimStringDesc*) &TMP4202), ((NimStringDesc*) &TMP4204));
	}
	break;
	default:
	{
		gencall_513604(p, n, r);
	}
	break;
	}
}

N_NIMCALL(void, geninfixcall_513626)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 op;
	NI i_513707;
	NI HEX3Atmp_513726;
	NI LOC10;
	NI res_513728;
	gen_508112(p, (*n).kindU.S6.Sons->data[1], r);
	{
		TY503234 LOC9;
		if (!((*r).Typ == ((NU8) 8))) goto LA3;
		{
			if (!((*r).Address == NIM_NIL)) goto LA7;
			globalerror_165565((*n).Info, ((NimStringDesc*) &TMP4205));
		}
		LA7: ;
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = (*r).Address;
		LOC9[1] = (*r).Res;
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4206), LOC9, 2));
		unsureAsgnRef((void**) &(*r).Address, NIM_NIL);
		(*r).Typ = ((NU8) 0);
	}
	LA3: ;
	app_145046(&(*r).Res, ((NimStringDesc*) &TMP4207));
	memset((void*)&op, 0, sizeof(op));
	gen_508112(p, (*n).kindU.S6.Sons->data[0], &op);
	app_145040(&(*r).Res, op.Res);
	app_145046(&(*r).Res, ((NimStringDesc*) &TMP4198));
	i_513707 = 0;
	HEX3Atmp_513726 = 0;
	LOC10 = 0;
	LOC10 = sonslen_189181(n);
	HEX3Atmp_513726 = (NI32)(LOC10 - 1);
	res_513728 = 2;
	while (1) {
		if (!(res_513728 <= HEX3Atmp_513726)) goto LA11;
		i_513707 = res_513728;
		{
			if (!(2 < i_513707)) goto LA14;
			app_145046(&(*r).Res, ((NimStringDesc*) &TMP3957));
		}
		LA14: ;
		genarg_513533(p, (*n).kindU.S6.Sons->data[i_513707], r);
		res_513728 += 1;
	} LA11: ;
	app_145046(&(*r).Res, ((NimStringDesc*) &TMP4199));
	(*r).Kind = ((NU8) 1);
}

N_NIMCALL(void, gensetconstr_515464)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 a;
	tcompres507018 b;
	NI i_515484;
	NI HEX3Atmp_515551;
	NI LOC1;
	NI res_515553;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	usemagic_508134(p, ((NimStringDesc*) &TMP4208));
	unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP4209)));
	(*r).Kind = ((NU8) 1);
	i_515484 = 0;
	HEX3Atmp_515551 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_515551 = (NI32)(LOC1 - 1);
	res_515553 = 0;
	while (1) {
		tnode188803* it;
		if (!(res_515553 <= HEX3Atmp_515551)) goto LA2;
		i_515484 = res_515553;
		{
			if (!(0 < i_515484)) goto LA5;
			app_145046(&(*r).Res, ((NimStringDesc*) &TMP3957));
		}
		LA5: ;
		it = (*n).kindU.S6.Sons->data[i_515484];
		{
			TY503234 LOC11;
			if (!((*it).Kind == ((NU8) 44))) goto LA9;
			gen_508112(p, (*it).kindU.S6.Sons->data[0], &a);
			gen_508112(p, (*it).kindU.S6.Sons->data[1], &b);
			memset((void*)LOC11, 0, sizeof(LOC11));
			LOC11[0] = a.Res;
			LOC11[1] = b.Res;
			appf_145085(&(*r).Res, ((NimStringDesc*) &TMP3986), LOC11, 2);
		}
		goto LA7;
		LA9: ;
		{
			gen_508112(p, it, &a);
			app_145040(&(*r).Res, a.Res);
		}
		LA7: ;
		res_515553 += 1;
	} LA2: ;
	app_145046(&(*r).Res, ((NimStringDesc*) &TMP4199));
}

N_NIMCALL(void, genarrayconstr_515558)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 a;
	NI i_515577;
	NI HEX3Atmp_515598;
	NI LOC1;
	NI res_515600;
	memset((void*)&a, 0, sizeof(a));
	unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP3992)));
	(*r).Kind = ((NU8) 1);
	i_515577 = 0;
	HEX3Atmp_515598 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_515598 = (NI32)(LOC1 - 1);
	res_515600 = 0;
	while (1) {
		if (!(res_515600 <= HEX3Atmp_515598)) goto LA2;
		i_515577 = res_515600;
		{
			if (!(0 < i_515577)) goto LA5;
			app_145046(&(*r).Res, ((NimStringDesc*) &TMP3957));
		}
		LA5: ;
		gen_508112(p, (*n).kindU.S6.Sons->data[i_515577], &a);
		app_145040(&(*r).Res, a.Res);
		res_515600 += 1;
	} LA2: ;
	app_145046(&(*r).Res, ((NimStringDesc*) &TMP3993));
}

N_NIMCALL(void, gentupleconstr_515605)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 a;
	NI i_515624;
	NI HEX3Atmp_515682;
	NI LOC1;
	NI res_515684;
	memset((void*)&a, 0, sizeof(a));
	unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP3994)));
	(*r).Kind = ((NU8) 1);
	i_515624 = 0;
	HEX3Atmp_515682 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_515682 = (NI32)(LOC1 - 1);
	res_515684 = 0;
	while (1) {
		tnode188803* it;
		NimStringDesc* LOC11;
		TY503234 LOC17;
		if (!(res_515684 <= HEX3Atmp_515682)) goto LA2;
		i_515624 = res_515684;
		{
			if (!(0 < i_515624)) goto LA5;
			app_145046(&(*r).Res, ((NimStringDesc*) &TMP3957));
		}
		LA5: ;
		it = (*n).kindU.S6.Sons->data[i_515624];
		{
			if (!((*it).Kind == ((NU8) 34))) goto LA9;
			it = (*it).kindU.S6.Sons->data[1];
		}
		LA9: ;
		gen_508112(p, it, &a);
		LOC11 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA14;
			LOC11 = copyString(((NimStringDesc*) &TMP4210));
		}
		goto LA12;
		LA14: ;
		{
			LOC11 = copyString(((NimStringDesc*) &TMP3996));
		}
		LA12: ;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = torope_145062(((NI64) (i_515624)));
		LOC17[1] = a.Res;
		appf_145085(&(*r).Res, LOC11, LOC17, 2);
		res_515684 += 1;
	} LA2: ;
	app_145046(&(*r).Res, ((NimStringDesc*) &TMP3997));
}

N_NIMCALL(void, genobjconstr_515689)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 a;
	NI i_515708;
	NI HEX3Atmp_515828;
	NI LOC1;
	NI res_515830;
	memset((void*)&a, 0, sizeof(a));
	unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP3994)));
	(*r).Kind = ((NU8) 1);
	i_515708 = 0;
	HEX3Atmp_515828 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_515828 = (NI32)(LOC1 - 1);
	res_515830 = 1;
	while (1) {
		tnode188803* it;
		tsym188833* f;
		NimStringDesc* LOC16;
		TY503234 LOC22;
		if (!(res_515830 <= HEX3Atmp_515828)) goto LA2;
		i_515708 = res_515830;
		{
			if (!(0 < i_515708)) goto LA5;
			app_145046(&(*r).Res, ((NimStringDesc*) &TMP3957));
		}
		LA5: ;
		it = (*n).kindU.S6.Sons->data[i_515708];
		{
			NimStringDesc* LOC11;
			if (!!(((*it).Kind == ((NU8) 34)))) goto LA9;
			LOC11 = 0;
			LOC11 = HEX24_165714(TMP4211);
			internalerror_165606(LOC11);
		}
		LA9: ;
		gen_508112(p, (*it).kindU.S6.Sons->data[1], &a);
		f = (*(*it).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		{
			if (!((*f).Loc.R == NIM_NIL)) goto LA14;
			asgnRefNoCycle((void**) &(*f).Loc.R, manglename_507361(f));
		}
		LA14: ;
		LOC16 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA19;
			LOC16 = copyString(((NimStringDesc*) &TMP4212));
		}
		goto LA17;
		LA19: ;
		{
			LOC16 = copyString(((NimStringDesc*) &TMP4213));
		}
		LA17: ;
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = (*f).Loc.R;
		LOC22[1] = a.Res;
		appf_145085(&(*r).Res, LOC16, LOC22, 2);
		res_515830 += 1;
	} LA2: ;
	app_145046(&(*r).Res, ((NimStringDesc*) &TMP3997));
}

N_NIMCALL(void, genconv_515835)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	ttype188837* dest;
	ttype188837* src;
	dest = skiptypes_192793((*n).Typ, IL64(211106242013440));
	src = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	gen_508112(p, (*n).kindU.S6.Sons->data[1], r);
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		TY145497 LOC13;
		LOC3 = 0;
		LOC3 = !(((*dest).Kind == (*src).Kind));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*src).Kind == ((NU8) 1));
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA10;
			LOC7 = copyString(((NimStringDesc*) &TMP4214));
		}
		goto LA8;
		LA10: ;
		{
			LOC7 = copyString(((NimStringDesc*) &TMP4164));
		}
		LA8: ;
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = (*r).Res;
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(LOC7, LOC13, 1));
		(*r).Kind = ((NU8) 1);
	}
	LA5: ;
}

N_NIMCALL(NI, getfieldposition_512360)(tnode188803* f) {
	NI result;
	result = 0;
	switch ((*f).Kind) {
	case ((NU8) 6) ... ((NU8) 15):
	{
		result = ((NI) ((*f).kindU.S1.Intval));
	}
	break;
	case ((NU8) 3):
	{
		result = (*(*f).kindU.S4.Sym).Position;
	}
	break;
	default:
	{
		internalerror_165591((*f).Info, ((NimStringDesc*) &TMP4220));
	}
	break;
	}
	return result;
}

N_NIMCALL(void, genfieldaddr_512394)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 a;
	tnode188803* b;
	memset((void*)&a, 0, sizeof(a));
	(*r).Typ = ((NU8) 8);
	{
		if (!((*n).Kind == ((NU8) 64))) goto LA3;
		b = (*n).kindU.S6.Sons->data[0];
	}
	goto LA1;
	LA3: ;
	{
		b = n;
	}
	LA1: ;
	gen_508112(p, (*b).kindU.S6.Sons->data[0], &a);
	{
		ttype188837* LOC8;
		NimStringDesc* LOC11;
		NI LOC12;
		NimStringDesc* LOC13;
		LOC8 = 0;
		LOC8 = skiptypes_192793((*(*b).kindU.S6.Sons->data[0]).Typ, IL64(211106242013440));
		if (!((*LOC8).Kind == ((NU8) 18))) goto LA9;
		LOC11 = 0;
		LOC12 = 0;
		LOC12 = getfieldposition_512360((*b).kindU.S6.Sons->data[1]);
		LOC13 = 0;
		LOC13 = nimIntToStr(LOC12);
		LOC11 = rawNewString(LOC13->Sup.len + 5);
appendString(LOC11, ((NimStringDesc*) &TMP4219));
appendString(LOC11, LOC13);
		unsureAsgnRef((void**) &(*r).Res, makejsstring_507386(LOC11));
	}
	goto LA6;
	LA9: ;
	{
		tsym188833* f;
		NimStringDesc* LOC23;
		{
			if (!!(((*(*b).kindU.S6.Sons->data[1]).Kind == ((NU8) 3)))) goto LA17;
			internalerror_165591((*(*b).kindU.S6.Sons->data[1]).Info, ((NimStringDesc*) &TMP4221));
		}
		LA17: ;
		f = (*(*b).kindU.S6.Sons->data[1]).kindU.S4.Sym;
		{
			if (!((*f).Loc.R == NIM_NIL)) goto LA21;
			asgnRefNoCycle((void**) &(*f).Loc.R, manglename_507361(f));
		}
		LA21: ;
		LOC23 = 0;
		LOC23 = ropetostr_145075((*f).Loc.R);
		unsureAsgnRef((void**) &(*r).Res, makejsstring_507386(LOC23));
	}
	LA6: ;
	{
		NimStringDesc* LOC28;
		if (!!(!((a.Typ == ((NU8) 8))))) goto LA26;
		LOC28 = 0;
		LOC28 = HEX24_165714(TMP4222);
		internalerror_165606(LOC28);
	}
	LA26: ;
	unsureAsgnRef((void**) &(*r).Address, a.Res);
	(*r).Kind = ((NU8) 1);
}

N_NIMCALL(void, gencheckedfieldaddr_512738)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	genfieldaddr_512394(p, (*n).kindU.S6.Sons->data[0], r);
}

N_NIMCALL(void, genarrayaddr_512782)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 a;
	tcompres507018 b;
	NI64 first;
	ttype188837* typ;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	first = 0;
	(*r).Typ = ((NU8) 8);
	gen_508112(p, (*n).kindU.S6.Sons->data[0], &a);
	gen_508112(p, (*n).kindU.S6.Sons->data[1], &b);
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		LOC3 = 0;
		LOC3 = !((a.Typ == ((NU8) 8)));
		if (!(LOC3)) goto LA4;
		LOC3 = !((b.Typ == ((NU8) 8)));
		LA4: ;
		if (!!(LOC3)) goto LA5;
		LOC7 = 0;
		LOC7 = HEX24_165714(TMP4223);
		internalerror_165606(LOC7);
	}
	LA5: ;
	unsureAsgnRef((void**) &(*r).Address, a.Res);
	typ = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106247256320));
	{
		if (!((*typ).Kind == ((NU8) 16) || (*typ).Kind == ((NU8) 4))) goto LA10;
		first = firstord_223002((*typ).Sons->data[0]);
	}
	goto LA8;
	LA10: ;
	{
		first = 0;
	}
	LA8: ;
	{
		NIM_BOOL LOC15;
		NIM_BOOL LOC17;
		TY470214 LOC20;
		LOC15 = 0;
		LOC15 = (((*p).Options &(1<<((((NU8) 4))&31)))!=0);
		if (!(LOC15)) goto LA16;
		LOC17 = 0;
		LOC17 = isconstexpr_221843((*n).kindU.S6.Sons->data[1]);
		LOC15 = !(LOC17);
		LA16: ;
		if (!LOC15) goto LA18;
		usemagic_508134(p, ((NimStringDesc*) &TMP4224));
		memset((void*)LOC20, 0, sizeof(LOC20));
		LOC20[0] = b.Res;
		LOC20[1] = torope_145062(first);
		LOC20[2] = a.Res;
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4225), LOC20, 3));
	}
	goto LA13;
	LA18: ;
	{
		TY503234 LOC24;
		if (!!((first == 0))) goto LA22;
		memset((void*)LOC24, 0, sizeof(LOC24));
		LOC24[0] = b.Res;
		LOC24[1] = torope_145062(first);
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4226), LOC24, 2));
	}
	goto LA13;
	LA22: ;
	{
		unsureAsgnRef((void**) &(*r).Res, b.Res);
	}
	LA13: ;
	(*r).Kind = ((NU8) 1);
}

N_NIMCALL(void, genaddr_512998)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	switch ((*(*n).kindU.S6.Sons->data[0]).Kind) {
	case ((NU8) 3):
	{
		tsym188833* s;
		s = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		{
			if (!((*s).Loc.R == NIM_NIL)) goto LA4;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4215));
		}
		LA4: ;
		switch ((*s).Kind) {
		case ((NU8) 8):
		case ((NU8) 9):
		case ((NU8) 11):
		{
			(*r).Kind = ((NU8) 1);
			{
				NU8 LOC9;
				LOC9 = 0;
				LOC9 = maptype_507281((*n).Typ);
				if (!(LOC9 == ((NU8) 7))) goto LA10;
				(*r).Typ = ((NU8) 0);
				unsureAsgnRef((void**) &(*r).Res, (*s).Loc.R);
				unsureAsgnRef((void**) &(*r).Address, NIM_NIL);
			}
			goto LA7;
			LA10: ;
			{
				NimStringDesc* LOC15;
				if (!(((*s).Flags &(1<<((((NU8) 3))&31)))!=0)) goto LA13;
				(*r).Typ = ((NU8) 8);
				unsureAsgnRef((void**) &(*r).Address, torope_145058(((NimStringDesc*) &TMP4216)));
				LOC15 = 0;
				LOC15 = ropetostr_145075((*s).Loc.R);
				unsureAsgnRef((void**) &(*r).Res, makejsstring_507386(LOC15));
			}
			goto LA7;
			LA13: ;
			{
				if (!(((*s).Flags &(1<<((((NU8) 15))&31)))!=0)) goto LA17;
				(*r).Typ = ((NU8) 8);
				unsureAsgnRef((void**) &(*r).Address, (*s).Loc.R);
				unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP3951)));
			}
			goto LA7;
			LA17: ;
			{
				internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4217));
			}
			LA7: ;
		}
		break;
		default:
		{
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4218));
		}
		break;
		}
	}
	break;
	case ((NU8) 46):
	{
		gencheckedfieldaddr_512738(p, n, r);
	}
	break;
	case ((NU8) 45):
	{
		genfieldaddr_512394(p, n, r);
	}
	break;
	case ((NU8) 42):
	{
		ttype188837* ty;
		ty = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106242013440));
		{
			ttype188837* LOC28;
			if (!((*ty).Kind == ((NU8) 22) || (*ty).Kind == ((NU8) 21))) goto LA26;
			LOC28 = 0;
			LOC28 = lastson_189193(ty);
			ty = skiptypes_192793(LOC28, IL64(211106242013440));
		}
		LA26: ;
		switch ((*ty).Kind) {
		case ((NU8) 16):
		case ((NU8) 4):
		case ((NU8) 27):
		case ((NU8) 24):
		case ((NU8) 28):
		case ((NU8) 29):
		case ((NU8) 48):
		{
			genarrayaddr_512782(p, n, r);
		}
		break;
		case ((NU8) 18):
		{
			genfieldaddr_512394(p, n, r);
		}
		break;
		default:
		{
			NimStringDesc* LOC32;
			LOC32 = 0;
			LOC32 = rawNewString(reprEnum((*ty).Kind, (&NTI188240))->Sup.len + 21);
appendString(LOC32, ((NimStringDesc*) &TMP4227));
appendString(LOC32, reprEnum((*ty).Kind, (&NTI188240)));
appendChar(LOC32, 41);
			internalerror_165591((*n).Info, LOC32);
		}
		break;
		}
	}
	break;
	default:
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4228));
	}
	break;
	}
}

N_NIMCALL(void, genderef_513458)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	{
		NU8 LOC3;
		LOC3 = 0;
		LOC3 = maptype_507281((*(*n).kindU.S6.Sons->data[0]).Typ);
		if (!(LOC3 == ((NU8) 7))) goto LA4;
		gen_508112(p, (*n).kindU.S6.Sons->data[0], r);
	}
	goto LA1;
	LA4: ;
	{
		tcompres507018 a;
		TY503234 LOC11;
		memset((void*)&a, 0, sizeof(a));
		gen_508112(p, (*n).kindU.S6.Sons->data[0], &a);
		{
			if (!!((a.Typ == ((NU8) 8)))) goto LA9;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4229));
		}
		LA9: ;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = a.Address;
		LOC11[1] = a.Res;
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4206), LOC11, 2));
	}
	LA1: ;
}

N_NIMCALL(void, genarrayaccess_512933)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	ttype188837* ty;
	TY503234 LOC14;
	ty = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106242013440));
	{
		ttype188837* LOC5;
		if (!((*ty).Kind == ((NU8) 22) || (*ty).Kind == ((NU8) 21))) goto LA3;
		LOC5 = 0;
		LOC5 = lastson_189193(ty);
		ty = skiptypes_192793(LOC5, IL64(211106242013440));
	}
	LA3: ;
	switch ((*ty).Kind) {
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 27):
	case ((NU8) 24):
	case ((NU8) 28):
	case ((NU8) 29):
	case ((NU8) 48):
	{
		genarrayaddr_512782(p, n, r);
	}
	break;
	case ((NU8) 18):
	{
		genfieldaddr_512394(p, n, r);
	}
	break;
	default:
	{
		NimStringDesc* LOC9;
		LOC9 = 0;
		LOC9 = rawNewString(reprEnum((*ty).Kind, (&NTI188240))->Sup.len + 21);
appendString(LOC9, ((NimStringDesc*) &TMP4227));
appendString(LOC9, reprEnum((*ty).Kind, (&NTI188240)));
appendChar(LOC9, 41);
		internalerror_165591((*n).Info, LOC9);
	}
	break;
	}
	(*r).Typ = ((NU8) 0);
	{
		if (!((*r).Res == NIM_NIL)) goto LA12;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4230));
	}
	LA12: ;
	memset((void*)LOC14, 0, sizeof(LOC14));
	LOC14[0] = (*r).Address;
	LOC14[1] = (*r).Res;
	unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4206), LOC14, 2));
	unsureAsgnRef((void**) &(*r).Address, NIM_NIL);
	(*r).Kind = ((NU8) 1);
}

N_NIMCALL(void, genfieldaccess_512588)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	(*r).Typ = ((NU8) 0);
	gen_508112(p, (*n).kindU.S6.Sons->data[0], r);
	{
		ttype188837* LOC3;
		TY503234 LOC6;
		NI LOC7;
		LOC3 = 0;
		LOC3 = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106242013440));
		if (!((*LOC3).Kind == ((NU8) 18))) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = (*r).Res;
		LOC7 = 0;
		LOC7 = getfieldposition_512360((*n).kindU.S6.Sons->data[1]);
		LOC6[1] = torope_145062(((NI64) (LOC7)));
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4231), LOC6, 2));
	}
	goto LA1;
	LA4: ;
	{
		tsym188833* f;
		TY503234 LOC17;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 3)))) goto LA11;
			internalerror_165591((*(*n).kindU.S6.Sons->data[1]).Info, ((NimStringDesc*) &TMP4221));
		}
		LA11: ;
		f = (*(*n).kindU.S6.Sons->data[1]).kindU.S4.Sym;
		{
			if (!((*f).Loc.R == NIM_NIL)) goto LA15;
			asgnRefNoCycle((void**) &(*f).Loc.R, manglename_507361(f));
		}
		LA15: ;
		memset((void*)LOC17, 0, sizeof(LOC17));
		LOC17[0] = (*r).Res;
		LOC17[1] = (*f).Loc.R;
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4232), LOC17, 2));
	}
	LA1: ;
	(*r).Kind = ((NU8) 1);
}

N_NIMCALL(void, gencheckedfieldaccess_512760)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	genfieldaccess_512588(p, (*n).kindU.S6.Sons->data[0], r);
}

N_NIMCALL(void, upconv_515904)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	gen_508112(p, (*n).kindU.S6.Sons->data[0], r);
}

N_NIMCALL(void, genrangechck_515926)(tproc507028* p, tnode188803* n, tcompres507018* r, NimStringDesc* magic) {
	tcompres507018 a;
	tcompres507018 b;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	gen_508112(p, (*n).kindU.S6.Sons->data[0], r);
	{
		TY470214 LOC5;
		if (!(((*p).Options &(1<<((((NU8) 3))&31)))!=0)) goto LA3;
		gen_508112(p, (*n).kindU.S6.Sons->data[1], &a);
		gen_508112(p, (*n).kindU.S6.Sons->data[2], &b);
		usemagic_508134(p, ((NimStringDesc*) &TMP4233));
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = (*r).Res;
		LOC5[1] = a.Res;
		LOC5[2] = b.Res;
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4234), LOC5, 3));
		(*r).Kind = ((NU8) 1);
	}
	LA3: ;
}

N_NIMCALL(void, convstrtocstr_516000)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	{
		if (!((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 72))) goto LA3;
		gen_508112(p, (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[0], r);
	}
	goto LA1;
	LA3: ;
	{
		TY145497 LOC10;
		gen_508112(p, (*n).kindU.S6.Sons->data[0], r);
		{
			if (!((*r).Res == NIM_NIL)) goto LA8;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4237));
		}
		LA8: ;
		usemagic_508134(p, ((NimStringDesc*) &TMP4238));
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC10[0] = (*r).Res;
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4239), LOC10, 1));
		(*r).Kind = ((NU8) 1);
	}
	LA1: ;
}

N_NIMCALL(void, convcstrtostr_516094)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	{
		if (!((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 71))) goto LA3;
		gen_508112(p, (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[0], r);
	}
	goto LA1;
	LA3: ;
	{
		TY145497 LOC10;
		gen_508112(p, (*n).kindU.S6.Sons->data[0], r);
		{
			if (!((*r).Res == NIM_NIL)) goto LA8;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4240));
		}
		LA8: ;
		usemagic_508134(p, ((NimStringDesc*) &TMP4019));
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC10[0] = (*r).Res;
		unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4020), LOC10, 1));
		(*r).Kind = ((NU8) 1);
	}
	LA1: ;
}

N_NIMCALL(void, genblock_510875)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	NI idx;
	NI labl;
	NimStringDesc* LOC9;
	TY145497 LOC15;
	NimStringDesc* LOC16;
	TY145497 LOC22;
	(*p).Unique += 1;
	idx = (*p).Blocks->Sup.len;
	{
		tsym188833* sym;
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA7;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4241));
		}
		LA7: ;
		sym = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		(*sym).Loc.K = ((NU8) 11);
		(*sym).Loc.A = idx;
	}
	LA3: ;
	(*p).Blocks = (TY507066*) setLengthSeq(&((*p).Blocks)->Sup, sizeof(tblock507020), (NI32)(idx + 1));
	(*p).Blocks->data[idx].Id = ((NI32)-((*p).Unique));
	labl = (*p).Unique;
	LOC9 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA12;
		LOC9 = copyString(((NimStringDesc*) &TMP4242));
	}
	goto LA10;
	LA12: ;
	{
		LOC9 = copyString(((NimStringDesc*) &TMP3948));
	}
	LA10: ;
	memset((void*)LOC15, 0, sizeof(LOC15));
	LOC15[0] = torope_145062(((NI64) (labl)));
	appf_145085(&(*p).Body, LOC9, LOC15, 1);
	gen_508112(p, (*n).kindU.S6.Sons->data[1], r);
	LOC16 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA19;
		LOC16 = copyString(((NimStringDesc*) &TMP4243));
	}
	goto LA17;
	LA19: ;
	{
		LOC16 = copyString(((NimStringDesc*) &TMP4244));
	}
	LA17: ;
	memset((void*)LOC22, 0, sizeof(LOC22));
	LOC22[0] = torope_145062(((NI64) (labl)));
	appf_145085(&(*p).Body, LOC16, LOC22, 1);
	(*p).Blocks = (TY507066*) setLengthSeq(&((*p).Blocks)->Sup, sizeof(tblock507020), idx);
}

N_NIMCALL(void, moveinto_509621)(tproc507028* p, tcompres507018* src, tcompres507018 dest) {
	{
		if (!!(((*src).Kind == ((NU8) 0)))) goto LA3;
		{
			TY503234 LOC9;
			if (!!((dest.Kind == ((NU8) 0)))) goto LA7;
			memset((void*)LOC9, 0, sizeof(LOC9));
			LOC9[0] = rdloc_507122(dest);
			LOC9[1] = rdloc_507122((*src));
			appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4162), LOC9, 2);
		}
		goto LA5;
		LA7: ;
		{
			TY145497 LOC11;
			memset((void*)LOC11, 0, sizeof(LOC11));
			LOC11[0] = rdloc_507122((*src));
			appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4249), LOC11, 1);
		}
		LA5: ;
		(*src).Kind = ((NU8) 0);
		unsureAsgnRef((void**) &(*src).Res, NIM_NIL);
	}
	LA3: ;
}

N_NIMCALL(void, genif_511707)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 cond;
	tcompres507018 stmt;
	NI toclose;
	NI i_511728;
	NI HEX3Atmp_511903;
	NI LOC6;
	NI res_511905;
	memset((void*)&cond, 0, sizeof(cond));
	memset((void*)&stmt, 0, sizeof(stmt));
	toclose = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isemptytype_195210((*n).Typ);
		if (!!(LOC3)) goto LA4;
		(*r).Kind = ((NU8) 2);
		unsureAsgnRef((void**) &(*r).Res, gettemp_508257(p));
	}
	LA4: ;
	i_511728 = 0;
	HEX3Atmp_511903 = 0;
	LOC6 = 0;
	LOC6 = sonslen_189181(n);
	HEX3Atmp_511903 = (NI32)(LOC6 - 1);
	res_511905 = 0;
	while (1) {
		tnode188803* it;
		NimStringDesc* LOC39;
		TY469906 LOC45;
		if (!(res_511905 <= HEX3Atmp_511903)) goto LA7;
		i_511728 = res_511905;
		it = (*n).kindU.S6.Sons->data[i_511728];
		{
			NI LOC10;
			NimStringDesc* LOC24;
			TY145497 LOC30;
			LOC10 = 0;
			LOC10 = sonslen_189181(it);
			if (!!((LOC10 == 1))) goto LA11;
			{
				NimStringDesc* LOC17;
				TY469906 LOC23;
				if (!(0 < i_511728)) goto LA15;
				LOC17 = 0;
				{
					if (!((*p).Target == ((NU8) 0))) goto LA20;
					LOC17 = copyString(((NimStringDesc*) &TMP4245));
				}
				goto LA18;
				LA20: ;
				{
					LOC17 = copyString(((NimStringDesc*) &TMP4246));
				}
				LA18: ;
				memset((void*)LOC23, 0, sizeof(LOC23));
				appf_145085(&(*p).Body, LOC17, LOC23, 0);
				toclose += 1;
			}
			LA15: ;
			gen_508112(p, (*it).kindU.S6.Sons->data[0], &cond);
			LOC24 = 0;
			{
				if (!((*p).Target == ((NU8) 0))) goto LA27;
				LOC24 = copyString(((NimStringDesc*) &TMP4247));
			}
			goto LA25;
			LA27: ;
			{
				LOC24 = copyString(((NimStringDesc*) &TMP4248));
			}
			LA25: ;
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = rdloc_507122(cond);
			appf_145085(&(*p).Body, LOC24, LOC30, 1);
			gen_508112(p, (*it).kindU.S6.Sons->data[1], &stmt);
		}
		goto LA8;
		LA11: ;
		{
			NimStringDesc* LOC32;
			TY469906 LOC38;
			LOC32 = 0;
			{
				if (!((*p).Target == ((NU8) 0))) goto LA35;
				LOC32 = copyString(((NimStringDesc*) &TMP4245));
			}
			goto LA33;
			LA35: ;
			{
				LOC32 = copyString(((NimStringDesc*) &TMP4246));
			}
			LA33: ;
			memset((void*)LOC38, 0, sizeof(LOC38));
			appf_145085(&(*p).Body, LOC32, LOC38, 0);
			gen_508112(p, (*it).kindU.S6.Sons->data[0], &stmt);
		}
		LA8: ;
		moveinto_509621(p, &stmt, (*r));
		LOC39 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA42;
			LOC39 = copyString(((NimStringDesc*) &TMP4250));
		}
		goto LA40;
		LA42: ;
		{
			LOC39 = copyString(((NimStringDesc*) &TMP4251));
		}
		LA40: ;
		memset((void*)LOC45, 0, sizeof(LOC45));
		appf_145085(&(*p).Body, LOC39, LOC45, 0);
		res_511905 += 1;
	} LA7: ;
	{
		NimStringDesc* LOC50;
		NimStringDesc* LOC51;
		if (!((*p).Target == ((NU8) 0))) goto LA48;
		LOC50 = 0;
		LOC51 = 0;
		LOC51 = nsuRepeatChar(toclose, 125);
		LOC50 = rawNewString(LOC51->Sup.len + tnl_142593->Sup.len + 0);
appendString(LOC50, LOC51);
appendString(LOC50, tnl_142593);
		app_145046(&(*p).Body, LOC50);
	}
	goto LA46;
	LA48: ;
	{
		NI i_511892;
		NI res_511908;
		i_511892 = 0;
		res_511908 = 1;
		while (1) {
			TY469906 LOC54;
			if (!(res_511908 <= toclose)) goto LA53;
			i_511892 = res_511908;
			memset((void*)LOC54, 0, sizeof(LOC54));
			appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4251), LOC54, 0);
			res_511908 += 1;
		} LA53: ;
	}
	LA46: ;
}

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

N_NIMCALL(void, genlinedir_509300)(tproc507028* p, tnode188803* n) {
	NI line;
	line = tolinenumber_164812((*n).Info);
	{
		NimStringDesc* LOC5;
		TY503234 LOC11;
		NimStringDesc* LOC12;
		if (!(((*p).Options &(1<<((((NU8) 10))&31)))!=0)) goto LA3;
		LOC5 = 0;
		{
			if (!((*p).Target == ((NU8) 0))) goto LA8;
			LOC5 = copyString(((NimStringDesc*) &TMP4253));
		}
		goto LA6;
		LA8: ;
		{
			LOC5 = copyString(((NimStringDesc*) &TMP4254));
		}
		LA6: ;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC12 = 0;
		LOC12 = tofilename_164780((*n).Info.Fileindex);
		LOC11[0] = torope_145058(LOC12);
		LOC11[1] = torope_145062(((NI64) (line)));
		appf_145085(&(*p).Body, LOC5, LOC11, 2);
	}
	LA3: ;
	{
		NIM_BOOL LOC15;
		NIM_BOOL LOC17;
		TY145497 LOC21;
		LOC15 = 0;
		LOC15 = ((163840 & (*p).Options) == 163840);
		if (!(LOC15)) goto LA16;
		LOC17 = 0;
		LOC17 = ((*p).Prc == NIM_NIL);
		if (LOC17) goto LA18;
		LOC17 = !((((*(*p).Prc).Flags &(1<<((((NU8) 9))&31)))!=0));
		LA18: ;
		LOC15 = LOC17;
		LA16: ;
		if (!LOC15) goto LA19;
		usemagic_508134(p, ((NimStringDesc*) &TMP4255));
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = torope_145062(((NI64) (line)));
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4256), LOC21, 1);
	}
	goto LA13;
	LA19: ;
	{
		NIM_BOOL LOC23;
		NIM_BOOL LOC25;
		TY145497 LOC29;
		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: ;
		if (!LOC23) goto LA27;
		memset((void*)LOC29, 0, sizeof(LOC29));
		LOC29[0] = torope_145062(((NI64) (line)));
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4257), LOC29, 1);
	}
	goto LA13;
	LA27: ;
	LA13: ;
}

N_NIMCALL(void, genwhilestmt_509474)(tproc507028* p, tnode188803* n) {
	tcompres507018 cond;
	NI length;
	trope145007* labl;
	NimStringDesc* LOC7;
	TY145497 LOC13;
	NimStringDesc* LOC14;
	TY503234 LOC20;
	NimStringDesc* LOC21;
	TY145497 LOC27;
	memset((void*)&cond, 0, sizeof(cond));
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = isemptytype_195210((*n).Typ);
		if (!!(LOC3)) goto LA4;
		LOC6 = 0;
		LOC6 = HEX24_165714(TMP4252);
		internalerror_165606(LOC6);
	}
	LA4: ;
	genlinedir_509300(p, n);
	(*p).Unique += 1;
	length = (*p).Blocks->Sup.len;
	(*p).Blocks = (TY507066*) setLengthSeq(&((*p).Blocks)->Sup, sizeof(tblock507020), (NI32)(length + 1));
	(*p).Blocks->data[length].Id = ((NI32)-((*p).Unique));
	(*p).Blocks->data[length].Isloop = NIM_TRUE;
	labl = torope_145062(((NI64) ((*p).Unique)));
	LOC7 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA10;
		LOC7 = copyString(((NimStringDesc*) &TMP4258));
	}
	goto LA8;
	LA10: ;
	{
		LOC7 = copyString(((NimStringDesc*) &TMP4259));
	}
	LA8: ;
	memset((void*)LOC13, 0, sizeof(LOC13));
	LOC13[0] = labl;
	appf_145085(&(*p).Body, LOC7, LOC13, 1);
	gen_508112(p, (*n).kindU.S6.Sons->data[0], &cond);
	LOC14 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA17;
		LOC14 = copyString(((NimStringDesc*) &TMP4260));
	}
	goto LA15;
	LA17: ;
	{
		LOC14 = copyString(((NimStringDesc*) &TMP4261));
	}
	LA15: ;
	memset((void*)LOC20, 0, sizeof(LOC20));
	LOC20[0] = cond.Res;
	LOC20[1] = labl;
	appf_145085(&(*p).Body, LOC14, LOC20, 2);
	genstmt_508119(p, (*n).kindU.S6.Sons->data[1]);
	LOC21 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA24;
		LOC21 = copyString(((NimStringDesc*) &TMP4250));
	}
	goto LA22;
	LA24: ;
	{
		LOC21 = copyString(((NimStringDesc*) &TMP4262));
	}
	LA22: ;
	memset((void*)LOC27, 0, sizeof(LOC27));
	LOC27[0] = labl;
	appf_145085(&(*p).Body, LOC21, LOC27, 1);
	(*p).Blocks = (TY507066*) setLengthSeq(&((*p).Blocks)->Sup, sizeof(tblock507020), length);
}

N_NIMCALL(void, genvarstmt_514289)(tproc507028* p, tnode188803* n) {
	NI i_514305;
	NI HEX3Atmp_514658;
	NI LOC1;
	NI res_514660;
	i_514305 = 0;
	HEX3Atmp_514658 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_514658 = (NI32)(LOC1 - 1);
	res_514660 = 0;
	while (1) {
		if (!(res_514660 <= HEX3Atmp_514658)) goto LA2;
		i_514305 = res_514660;
		{
			tnode188803* a;
			tsym188833* v;
			a = (*n).kindU.S6.Sons->data[i_514305];
			{
				if (!((*a).Kind == ((NU8) 124))) goto LA6;
				goto LA3;
			}
			LA6: ;
			v = (*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym;
			{
				if (!(((*v).Loc.Flags &(1<<((((NU8) 3))&7)))!=0)) goto LA10;
				goto LA3;
			}
			LA10: ;
			genlinedir_509300(p, a);
			genvarinit_514148(p, v, (*a).kindU.S6.Sons->data[2]);
		} LA3: ;
		res_514660 += 1;
	} LA2: ;
}

N_NIMCALL(void, gencasejs_510315)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 cond;
	tcompres507018 stmt;
	NIM_BOOL stringswitch;
	ttype188837* LOC1;
	NI i_510384;
	NI HEX3Atmp_510611;
	NI LOC14;
	NI res_510613;
	TY469906 LOC41;
	memset((void*)&cond, 0, sizeof(cond));
	memset((void*)&stmt, 0, sizeof(stmt));
	genlinedir_509300(p, n);
	gen_508112(p, (*n).kindU.S6.Sons->data[0], &cond);
	LOC1 = 0;
	LOC1 = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106240964864));
	stringswitch = ((*LOC1).Kind == ((NU8) 28));
	{
		TY145497 LOC6;
		if (!stringswitch) goto LA4;
		usemagic_508134(p, ((NimStringDesc*) &TMP4238));
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = rdloc_507122(cond);
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4264), LOC6, 1);
	}
	goto LA2;
	LA4: ;
	{
		TY145497 LOC8;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = rdloc_507122(cond);
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4265), LOC8, 1);
	}
	LA2: ;
	{
		NIM_BOOL LOC11;
		LOC11 = 0;
		LOC11 = isemptytype_195210((*n).Typ);
		if (!!(LOC11)) goto LA12;
		(*r).Kind = ((NU8) 2);
		unsureAsgnRef((void**) &(*r).Res, gettemp_508257(p));
	}
	LA12: ;
	i_510384 = 0;
	HEX3Atmp_510611 = 0;
	LOC14 = 0;
	LOC14 = sonslen_189181(n);
	HEX3Atmp_510611 = (NI32)(LOC14 - 1);
	res_510613 = 1;
	while (1) {
		tnode188803* it;
		if (!(res_510613 <= HEX3Atmp_510611)) goto LA15;
		i_510384 = res_510613;
		it = (*n).kindU.S6.Sons->data[i_510384];
		switch ((*it).Kind) {
		case ((NU8) 85):
		{
			NI j_510412;
			NI HEX3Atmp_510607;
			NI LOC17;
			NI res_510609;
			tnode188803* LOC35;
			TY469906 LOC36;
			j_510412 = 0;
			HEX3Atmp_510607 = 0;
			LOC17 = 0;
			LOC17 = sonslen_189181(it);
			HEX3Atmp_510607 = (NI32)(LOC17 - 2);
			res_510609 = 0;
			while (1) {
				tnode188803* e;
				if (!(res_510609 <= HEX3Atmp_510607)) goto LA18;
				j_510412 = res_510609;
				e = (*it).kindU.S6.Sons->data[j_510412];
				{
					tnode188803* v;
					if (!((*e).Kind == ((NU8) 44))) goto LA21;
					v = copynode_189233((*e).kindU.S6.Sons->data[0]);
					while (1) {
						TY145497 LOC24;
						if (!((*v).kindU.S1.Intval <= (*(*e).kindU.S6.Sons->data[1]).kindU.S1.Intval)) goto LA23;
						gen_508112(p, v, &cond);
						memset((void*)LOC24, 0, sizeof(LOC24));
						LOC24[0] = rdloc_507122(cond);
						appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4266), LOC24, 1);
						(*v).kindU.S1.Intval += 1;
					} LA23: ;
				}
				goto LA19;
				LA21: ;
				{
					{
						if (!stringswitch) goto LA28;
						switch ((*e).Kind) {
						case ((NU8) 20) ... ((NU8) 22):
						{
							TY145497 LOC31;
							memset((void*)LOC31, 0, sizeof(LOC31));
							LOC31[0] = makejsstring_507386((*e).kindU.S3.Strval);
							appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4266), LOC31, 1);
						}
						break;
						default:
						{
							internalerror_165591((*e).Info, ((NimStringDesc*) &TMP4267));
						}
						break;
						}
					}
					goto LA26;
					LA28: ;
					{
						TY145497 LOC34;
						gen_508112(p, e, &cond);
						memset((void*)LOC34, 0, sizeof(LOC34));
						LOC34[0] = rdloc_507122(cond);
						appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4266), LOC34, 1);
					}
					LA26: ;
				}
				LA19: ;
				res_510609 += 1;
			} LA18: ;
			LOC35 = 0;
			LOC35 = lastson_189189(it);
			gen_508112(p, LOC35, &stmt);
			moveinto_509621(p, &stmt, (*r));
			memset((void*)LOC36, 0, sizeof(LOC36));
			appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4268), LOC36, 0);
		}
		break;
		case ((NU8) 88):
		{
			TY469906 LOC38;
			TY469906 LOC39;
			memset((void*)LOC38, 0, sizeof(LOC38));
			appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4269), LOC38, 0);
			gen_508112(p, (*it).kindU.S6.Sons->data[0], &stmt);
			moveinto_509621(p, &stmt, (*r));
			memset((void*)LOC39, 0, sizeof(LOC39));
			appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4270), LOC39, 0);
		}
		break;
		default:
		{
			internalerror_165591((*it).Info, ((NimStringDesc*) &TMP4271));
		}
		break;
		}
		res_510613 += 1;
	} LA15: ;
	memset((void*)LOC41, 0, sizeof(LOC41));
	appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4250), LOC41, 0);
}

N_NIMCALL(void, gencaselua_510620)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	tcompres507018 cond;
	tcompres507018 stmt;
	NIM_BOOL stringswitch;
	ttype188837* LOC1;
	trope145007* tmp;
	TY503234 LOC6;
	NI i_510685;
	NI HEX3Atmp_510867;
	NI LOC12;
	NI res_510869;
	TY469906 LOC48;
	memset((void*)&cond, 0, sizeof(cond));
	memset((void*)&stmt, 0, sizeof(stmt));
	genlinedir_509300(p, n);
	gen_508112(p, (*n).kindU.S6.Sons->data[0], &cond);
	LOC1 = 0;
	LOC1 = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106240964864));
	stringswitch = ((*LOC1).Kind == ((NU8) 28));
	{
		if (!stringswitch) goto LA4;
		usemagic_508134(p, ((NimStringDesc*) &TMP4272));
	}
	LA4: ;
	tmp = gettemp_508257(p);
	memset((void*)LOC6, 0, sizeof(LOC6));
	LOC6[0] = tmp;
	LOC6[1] = rdloc_507122(cond);
	appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4162), LOC6, 2);
	{
		NIM_BOOL LOC9;
		LOC9 = 0;
		LOC9 = isemptytype_195210((*n).Typ);
		if (!!(LOC9)) goto LA10;
		(*r).Kind = ((NU8) 2);
		unsureAsgnRef((void**) &(*r).Res, gettemp_508257(p));
	}
	LA10: ;
	i_510685 = 0;
	HEX3Atmp_510867 = 0;
	LOC12 = 0;
	LOC12 = sonslen_189181(n);
	HEX3Atmp_510867 = (NI32)(LOC12 - 1);
	res_510869 = 1;
	while (1) {
		tnode188803* it;
		if (!(res_510869 <= HEX3Atmp_510867)) goto LA13;
		i_510685 = res_510869;
		it = (*n).kindU.S6.Sons->data[i_510685];
		switch ((*it).Kind) {
		case ((NU8) 85):
		{
			NI j_510729;
			NI HEX3Atmp_510863;
			NI LOC22;
			NI res_510865;
			TY469906 LOC43;
			tnode188803* LOC44;
			{
				TY469906 LOC19;
				if (!!((i_510685 == 1))) goto LA17;
				memset((void*)LOC19, 0, sizeof(LOC19));
				appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4273), LOC19, 0);
			}
			goto LA15;
			LA17: ;
			{
				TY469906 LOC21;
				memset((void*)LOC21, 0, sizeof(LOC21));
				appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4274), LOC21, 0);
			}
			LA15: ;
			j_510729 = 0;
			HEX3Atmp_510863 = 0;
			LOC22 = 0;
			LOC22 = sonslen_189181(it);
			HEX3Atmp_510863 = (NI32)(LOC22 - 2);
			res_510865 = 0;
			while (1) {
				tnode188803* e;
				if (!(res_510865 <= HEX3Atmp_510863)) goto LA23;
				j_510729 = res_510865;
				{
					if (!!((j_510729 == 0))) goto LA26;
					app_145046(&(*p).Body, ((NimStringDesc*) &TMP4275));
				}
				LA26: ;
				e = (*it).kindU.S6.Sons->data[j_510729];
				{
					tcompres507018 ia;
					tcompres507018 ib;
					TY470214 LOC32;
					if (!((*e).Kind == ((NU8) 44))) goto LA30;
					memset((void*)&ia, 0, sizeof(ia));
					memset((void*)&ib, 0, sizeof(ib));
					gen_508112(p, (*e).kindU.S6.Sons->data[0], &ia);
					gen_508112(p, (*e).kindU.S6.Sons->data[1], &ib);
					memset((void*)LOC32, 0, sizeof(LOC32));
					LOC32[0] = tmp;
					LOC32[1] = rdloc_507122(ia);
					LOC32[2] = rdloc_507122(ib);
					appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4276), LOC32, 3);
				}
				goto LA28;
				LA30: ;
				{
					{
						if (!stringswitch) goto LA36;
						switch ((*e).Kind) {
						case ((NU8) 20) ... ((NU8) 22):
						{
							TY503234 LOC39;
							memset((void*)LOC39, 0, sizeof(LOC39));
							LOC39[0] = tmp;
							LOC39[1] = makejsstring_507386((*e).kindU.S3.Strval);
							appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4277), LOC39, 2);
						}
						break;
						default:
						{
							internalerror_165591((*e).Info, ((NimStringDesc*) &TMP4267));
						}
						break;
						}
					}
					goto LA34;
					LA36: ;
					{
						TY503234 LOC42;
						gen_508112(p, e, &cond);
						memset((void*)LOC42, 0, sizeof(LOC42));
						LOC42[0] = tmp;
						LOC42[1] = rdloc_507122(cond);
						appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4278), LOC42, 2);
					}
					LA34: ;
				}
				LA28: ;
				res_510865 += 1;
			} LA23: ;
			memset((void*)LOC43, 0, sizeof(LOC43));
			appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4279), LOC43, 0);
			LOC44 = 0;
			LOC44 = lastson_189189(it);
			gen_508112(p, LOC44, &stmt);
			moveinto_509621(p, &stmt, (*r));
		}
		break;
		case ((NU8) 88):
		{
			TY469906 LOC46;
			memset((void*)LOC46, 0, sizeof(LOC46));
			appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4246), LOC46, 0);
			gen_508112(p, (*it).kindU.S6.Sons->data[0], &stmt);
			moveinto_509621(p, &stmt, (*r));
		}
		break;
		default:
		{
			internalerror_165591((*it).Info, ((NimStringDesc*) &TMP4271));
		}
		break;
		}
		res_510869 += 1;
	} LA13: ;
	memset((void*)LOC48, 0, sizeof(LOC48));
	appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4280), LOC48, 0);
}

N_NIMCALL(void, genreturnstmt_516188)(tproc507028* p, tnode188803* n) {
	NimStringDesc* LOC10;
	TY469906 LOC16;
	{
		if (!((*p).Procdef == NIM_NIL)) goto LA3;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4281));
	}
	LA3: ;
	(*p).Beforeretneeded = NIM_TRUE;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA7;
		genstmt_508119(p, (*n).kindU.S6.Sons->data[0]);
	}
	goto LA5;
	LA7: ;
	{
		genlinedir_509300(p, n);
	}
	LA5: ;
	LOC10 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA13;
		LOC10 = copyString(((NimStringDesc*) &TMP4282));
	}
	goto LA11;
	LA13: ;
	{
		LOC10 = copyString(((NimStringDesc*) &TMP4283));
	}
	LA11: ;
	memset((void*)LOC16, 0, sizeof(LOC16));
	appf_145085(&(*p).Body, LOC10, LOC16, 0);
}

N_NIMCALL(void, genbreakstmt_511061)(tproc507028* p, tnode188803* n) {
	NI idx;
	NimStringDesc* LOC15;
	TY145497 LOC21;
	idx = 0;
	genlinedir_509300(p, n);
	{
		tsym188833* sym;
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		sym = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		idx = (*sym).Loc.A;
	}
	goto LA1;
	LA3: ;
	{
		idx = (NI32)((*p).Blocks->Sup.len - 1);
		while (1) {
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = (0 <= idx);
			if (!(LOC7)) goto LA8;
			LOC7 = !((*p).Blocks->data[idx].Isloop);
			LA8: ;
			if (!LOC7) goto LA6;
			idx -= 1;
		} LA6: ;
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = (idx < 0);
			if (LOC11) goto LA12;
			LOC11 = !((*p).Blocks->data[idx].Isloop);
			LA12: ;
			if (!LOC11) goto LA13;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4284));
		}
		LA13: ;
	}
	LA1: ;
	(*p).Blocks->data[idx].Id = (NI32)abs((*p).Blocks->data[idx].Id);
	LOC15 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA18;
		LOC15 = copyString(((NimStringDesc*) &TMP4285));
	}
	goto LA16;
	LA18: ;
	{
		LOC15 = copyString(((NimStringDesc*) &TMP4286));
	}
	LA16: ;
	memset((void*)LOC21, 0, sizeof(LOC21));
	LOC21[0] = torope_145062(((NI64) ((*p).Blocks->data[idx].Id)));
	appf_145085(&(*p).Body, LOC15, LOC21, 1);
}

N_NIMCALL(void, genasgnaux_512089)(tproc507028* p, tnode188803* x, tnode188803* y, NIM_BOOL nocopyneeded) {
	tcompres507018 a;
	tcompres507018 b;
	NU8 LOC1;
	memset((void*)&a, 0, sizeof(a));
	memset((void*)&b, 0, sizeof(b));
	gen_508112(p, x, &a);
	gen_508112(p, y, &b);
	LOC1 = 0;
	LOC1 = maptype_507281((*x).Typ);
	switch (LOC1) {
	case ((NU8) 7):
	{
		{
			NIM_BOOL LOC5;
			TY503234 LOC9;
			LOC5 = 0;
			LOC5 = needsnocopy_512056(y);
			if (LOC5) goto LA6;
			LOC5 = nocopyneeded;
			LA6: ;
			if (!LOC5) goto LA7;
			memset((void*)LOC9, 0, sizeof(LOC9));
			LOC9[0] = rdloc_507122(a);
			LOC9[1] = rdloc_507122(b);
			appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4162), LOC9, 2);
		}
		goto LA3;
		LA7: ;
		{
			TY470214 LOC11;
			usemagic_508134(p, ((NimStringDesc*) &TMP3971));
			memset((void*)LOC11, 0, sizeof(LOC11));
			LOC11[0] = a.Res;
			LOC11[1] = b.Res;
			LOC11[2] = gentypeinfo_507392(p, (*y).Typ);
			appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4287), LOC11, 3);
		}
		LA3: ;
	}
	break;
	case ((NU8) 8):
	{
		TY471942 LOC19;
		{
			NIM_BOOL LOC15;
			LOC15 = 0;
			LOC15 = !((a.Typ == ((NU8) 8)));
			if (LOC15) goto LA16;
			LOC15 = !((b.Typ == ((NU8) 8)));
			LA16: ;
			if (!LOC15) goto LA17;
			internalerror_165591((*x).Info, ((NimStringDesc*) &TMP4288));
		}
		LA17: ;
		memset((void*)LOC19, 0, sizeof(LOC19));
		LOC19[0] = a.Address;
		LOC19[1] = b.Address;
		LOC19[2] = a.Res;
		LOC19[3] = b.Res;
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4289), LOC19, 4);
	}
	break;
	default:
	{
		TY503234 LOC21;
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = a.Res;
		LOC21[1] = b.Res;
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4162), LOC21, 2);
	}
	break;
	}
}

N_NIMCALL(void, genasgn_512141)(tproc507028* p, tnode188803* n) {
	genlinedir_509300(p, n);
	genasgnaux_512089(p, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1], NIM_FALSE);
}

N_NIMCALL(void, genfastasgn_512175)(tproc507028* p, tnode188803* n) {
	genlinedir_509300(p, n);
	genasgnaux_512089(p, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1], NIM_TRUE);
}

N_NIMCALL(void, genasmstmt_511447)(tproc507028* p, tnode188803* n) {
	NI i_511613;
	NI HEX3Atmp_511700;
	NI LOC1;
	NI res_511702;
	genlinedir_509300(p, n);
	i_511613 = 0;
	HEX3Atmp_511700 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_511700 = (NI32)(LOC1 - 1);
	res_511702 = 0;
	while (1) {
		if (!(res_511702 <= HEX3Atmp_511700)) goto LA2;
		i_511613 = res_511702;
		switch ((*(*n).kindU.S6.Sons->data[i_511613]).Kind) {
		case ((NU8) 20) ... ((NU8) 22):
		{
			app_145046(&(*p).Body, (*(*n).kindU.S6.Sons->data[i_511613]).kindU.S3.Strval);
		}
		break;
		case ((NU8) 3):
		{
			trope145007* LOC5;
			LOC5 = 0;
			LOC5 = manglename_507361((*(*n).kindU.S6.Sons->data[i_511613]).kindU.S4.Sym);
			app_145040(&(*p).Body, LOC5);
		}
		break;
		default:
		{
			internalerror_165591((*(*n).kindU.S6.Sons->data[i_511613]).Info, ((NimStringDesc*) &TMP4290));
		}
		break;
		}
		res_511702 += 1;
	} LA2: ;
}

N_NIMCALL(void, gentry_509657)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	trope145007* safepoint;
	TY145497 LOC6;
	NimStringDesc* LOC7;
	TY145497 LOC13;
	NimStringDesc* LOC19;
	TY469906 LOC25;
	NI length;
	tcompres507018 a;
	NI i;
	genlinedir_509300(p, n);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isemptytype_195210((*n).Typ);
		if (!!(LOC3)) goto LA4;
		(*r).Kind = ((NU8) 2);
		unsureAsgnRef((void**) &(*r).Res, gettemp_508257(p));
	}
	LA4: ;
	(*p).Unique += 1;
	memset((void*)LOC6, 0, sizeof(LOC6));
	LOC6[0] = torope_145062(((NI64) ((*p).Unique)));
	safepoint = ropef_145079(((NimStringDesc*) &TMP4027), LOC6, 1);
	LOC7 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA10;
		LOC7 = copyString(((NimStringDesc*) &TMP4291));
	}
	goto LA8;
	LA10: ;
	{
		LOC7 = copyString(((NimStringDesc*) &TMP4292));
	}
	LA8: ;
	memset((void*)LOC13, 0, sizeof(LOC13));
	LOC13[0] = safepoint;
	appf_145085(&(*p).Body, LOC7, LOC13, 1);
	{
		NimStringDesc* LOC18;
		if (!(((*p).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA16;
		LOC18 = 0;
		LOC18 = rawNewString(tnl_142593->Sup.len + 13);
appendString(LOC18, ((NimStringDesc*) &TMP4293));
appendString(LOC18, tnl_142593);
		app_145046(&(*p).Body, LOC18);
	}
	LA16: ;
	LOC19 = 0;
	{
		if (!((*p).Target == ((NU8) 0))) goto LA22;
		LOC19 = copyString(((NimStringDesc*) &TMP4294));
	}
	goto LA20;
	LA22: ;
	{
		LOC19 = copyString(((NimStringDesc*) &TMP4295));
	}
	LA20: ;
	memset((void*)LOC25, 0, sizeof(LOC25));
	appf_145085(&(*p).Body, LOC19, LOC25, 0);
	length = sonslen_189181(n);
	memset((void*)&a, 0, sizeof(a));
	gen_508112(p, (*n).kindU.S6.Sons->data[0], &a);
	moveinto_509621(p, &a, (*r));
	i = 1;
	{
		NIM_BOOL LOC28;
		NIM_BOOL LOC29;
		TY469906 LOC34;
		LOC28 = 0;
		LOC29 = 0;
		LOC29 = ((*p).Target == ((NU8) 0));
		if (!(LOC29)) goto LA30;
		LOC29 = (1 < length);
		LA30: ;
		LOC28 = LOC29;
		if (!(LOC28)) goto LA31;
		LOC28 = ((*(*n).kindU.S6.Sons->data[i]).Kind == ((NU8) 87));
		LA31: ;
		if (!LOC28) goto LA32;
		memset((void*)LOC34, 0, sizeof(LOC34));
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4296), LOC34, 0);
	}
	goto LA26;
	LA32: ;
	{
		TY469906 LOC38;
		if (!((*p).Target == ((NU8) 1))) goto LA36;
		memset((void*)LOC38, 0, sizeof(LOC38));
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4297), LOC38, 0);
	}
	goto LA26;
	LA36: ;
	LA26: ;
	while (1) {
		NIM_BOOL LOC40;
		NI blen;
		LOC40 = 0;
		LOC40 = (i < length);
		if (!(LOC40)) goto LA41;
		LOC40 = ((*(*n).kindU.S6.Sons->data[i]).Kind == ((NU8) 87));
		LA41: ;
		if (!LOC40) goto LA39;
		blen = sonslen_189181((*n).kindU.S6.Sons->data[i]);
		{
			if (!(blen == 1)) goto LA44;
			{
				NimStringDesc* LOC50;
				TY469906 LOC56;
				if (!(1 < i)) goto LA48;
				LOC50 = 0;
				{
					if (!((*p).Target == ((NU8) 0))) goto LA53;
					LOC50 = copyString(((NimStringDesc*) &TMP4245));
				}
				goto LA51;
				LA53: ;
				{
					LOC50 = copyString(((NimStringDesc*) &TMP4246));
				}
				LA51: ;
				memset((void*)LOC56, 0, sizeof(LOC56));
				appf_145085(&(*p).Body, LOC50, LOC56, 0);
			}
			LA48: ;
			gen_508112(p, (*(*n).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0], &a);
			moveinto_509621(p, &a, (*r));
			{
				NimStringDesc* LOC61;
				TY469906 LOC67;
				if (!(1 < i)) goto LA59;
				LOC61 = 0;
				{
					if (!((*p).Target == ((NU8) 0))) goto LA64;
					LOC61 = copyString(((NimStringDesc*) &TMP4250));
				}
				goto LA62;
				LA64: ;
				{
					LOC61 = copyString(((NimStringDesc*) &TMP4251));
				}
				LA62: ;
				memset((void*)LOC67, 0, sizeof(LOC67));
				appf_145085(&(*p).Body, LOC61, LOC67, 0);
			}
			LA59: ;
		}
		goto LA42;
		LA44: ;
		{
			trope145007* orexpr;
			NI j_509924;
			NI HEX3Atmp_510240;
			NI res_510242;
			NimStringDesc* LOC89;
			TY503234 LOC95;
			NimStringDesc* LOC96;
			TY469906 LOC102;
			orexpr = NIM_NIL;
			usemagic_508134(p, ((NimStringDesc*) &TMP4193));
			j_509924 = 0;
			HEX3Atmp_510240 = 0;
			HEX3Atmp_510240 = (NI32)(blen - 2);
			res_510242 = 0;
			while (1) {
				TY503234 LOC84;
				if (!(res_510242 <= HEX3Atmp_510240)) goto LA69;
				j_509924 = res_510242;
				{
					if (!!(((*(*(*n).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[j_509924]).Kind == ((NU8) 4)))) goto LA72;
					internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4298));
				}
				LA72: ;
				{
					NimStringDesc* LOC78;
					if (!!((orexpr == NIM_NIL))) goto LA76;
					LOC78 = 0;
					{
						if (!((*p).Target == ((NU8) 0))) goto LA81;
						LOC78 = copyString(((NimStringDesc*) &TMP4299));
					}
					goto LA79;
					LA81: ;
					{
						LOC78 = copyString(((NimStringDesc*) &TMP4275));
					}
					LA79: ;
					app_145046(&orexpr, LOC78);
				}
				LA76: ;
				memset((void*)LOC84, 0, sizeof(LOC84));
				LOC84[0] = safepoint;
				LOC84[1] = gentypeinfo_507392(p, (*(*(*n).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[j_509924]).Typ);
				appf_145085(&orexpr, ((NimStringDesc*) &TMP4300), LOC84, 2);
				res_510242 += 1;
			} LA69: ;
			{
				if (!(1 < i)) goto LA87;
				app_145046(&(*p).Body, ((NimStringDesc*) &TMP4301));
			}
			LA87: ;
			LOC89 = 0;
			{
				if (!((*p).Target == ((NU8) 0))) goto LA92;
				LOC89 = copyString(((NimStringDesc*) &TMP4302));
			}
			goto LA90;
			LA92: ;
			{
				LOC89 = copyString(((NimStringDesc*) &TMP4303));
			}
			LA90: ;
			memset((void*)LOC95, 0, sizeof(LOC95));
			LOC95[0] = safepoint;
			LOC95[1] = orexpr;
			appf_145085(&(*p).Body, LOC89, LOC95, 2);
			gen_508112(p, (*(*n).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[(NI32)(blen - 1)], &a);
			moveinto_509621(p, &a, (*r));
			LOC96 = 0;
			{
				if (!((*p).Target == ((NU8) 0))) goto LA99;
				LOC96 = copyString(((NimStringDesc*) &TMP4250));
			}
			goto LA97;
			LA99: ;
			{
				LOC96 = copyString(((NimStringDesc*) &TMP4251));
			}
			LA97: ;
			memset((void*)LOC102, 0, sizeof(LOC102));
			appf_145085(&(*p).Body, LOC96, LOC102, 0);
		}
		LA42: ;
		i += 1;
	} LA39: ;
	{
		NimStringDesc* LOC107;
		if (!((*p).Target == ((NU8) 0))) goto LA105;
		LOC107 = 0;
		LOC107 = rawNewString(tnl_142593->Sup.len + tnl_142593->Sup.len + 40);
appendString(LOC107, ((NimStringDesc*) &TMP4304));
appendString(LOC107, tnl_142593);
appendString(LOC107, ((NimStringDesc*) &TMP4305));
appendString(LOC107, tnl_142593);
		app_145046(&(*p).Body, LOC107);
	}
	LA105: ;
	{
		NIM_BOOL LOC110;
		LOC110 = 0;
		LOC110 = (i < length);
		if (!(LOC110)) goto LA111;
		LOC110 = ((*(*n).kindU.S6.Sons->data[i]).Kind == ((NU8) 106));
		LA111: ;
		if (!LOC110) goto LA112;
		gen_508112(p, (*(*n).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0], &a);
		moveinto_509621(p, &a, (*r));
	}
	LA112: ;
	{
		NimStringDesc* LOC118;
		if (!((*p).Target == ((NU8) 0))) goto LA116;
		LOC118 = 0;
		LOC118 = rawNewString(tnl_142593->Sup.len + 1);
appendString(LOC118, ((NimStringDesc*) &TMP3997));
appendString(LOC118, tnl_142593);
		app_145046(&(*p).Body, LOC118);
	}
	LA116: ;
	{
		if (!((*p).Target == ((NU8) 1))) goto LA121;
		{
			NIM_BOOL LOC125;
			LOC125 = 0;
			LOC125 = (i < length);
			if (!(LOC125)) goto LA126;
			LOC125 = ((*(*n).kindU.S6.Sons->data[i]).Kind == ((NU8) 106));
			LA126: ;
			if (!LOC125) goto LA127;
			gen_508112(p, (*(*n).kindU.S6.Sons->data[i]).kindU.S6.Sons->data[0], &a);
			moveinto_509621(p, &a, (*r));
		}
		LA127: ;
	}
	LA121: ;
}

N_NIMCALL(void, genraisestmt_510248)(tproc507028* p, tnode188803* n) {
	genlinedir_509300(p, n);
	{
		tcompres507018 a;
		ttype188837* typ;
		TY503234 LOC5;
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		memset((void*)&a, 0, sizeof(a));
		gen_508112(p, (*n).kindU.S6.Sons->data[0], &a);
		typ = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106247256320));
		usemagic_508134(p, ((NimStringDesc*) &TMP4306));
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = rdloc_507122(a);
		LOC5[1] = makejsstring_507386((*(*(*typ).Sym).Name).S);
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4307), LOC5, 2);
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC7;
		usemagic_508134(p, ((NimStringDesc*) &TMP4308));
		LOC7 = 0;
		LOC7 = rawNewString(tnl_142593->Sup.len + 19);
appendString(LOC7, ((NimStringDesc*) &TMP4309));
appendString(LOC7, tnl_142593);
		app_145046(&(*p).Body, LOC7);
	}
	LA1: ;
}

N_NIMCALL(void, gen_508112)(tproc507028* p, tnode188803* n, tcompres507018* r) {
	(*r).Typ = ((NU8) 0);
	(*r).Kind = ((NU8) 0);
	unsureAsgnRef((void**) &(*r).Res, NIM_NIL);
	switch ((*n).Kind) {
	case ((NU8) 3):
	{
		gensym_513137(p, n, r);
	}
	break;
	case ((NU8) 5) ... ((NU8) 10):
	{
		unsureAsgnRef((void**) &(*r).Res, torope_145062((*n).kindU.S1.Intval));
	}
	break;
	case ((NU8) 23):
	{
		{
			NIM_BOOL LOC6;
			LOC6 = 0;
			LOC6 = isemptytype_195210((*n).Typ);
			if (!LOC6) goto LA7;
		}
		goto LA4;
		LA7: ;
		{
			NU8 LOC10;
			LOC10 = 0;
			LOC10 = maptype_507281((*n).Typ);
			if (!(LOC10 == ((NU8) 8))) goto LA11;
			(*r).Typ = ((NU8) 8);
			{
				if (!((*p).Target == ((NU8) 0))) goto LA15;
				unsureAsgnRef((void**) &(*r).Address, torope_145058(((NimStringDesc*) &TMP4016)));
			}
			goto LA13;
			LA15: ;
			{
				unsureAsgnRef((void**) &(*r).Address, torope_145058(((NimStringDesc*) &TMP4017)));
			}
			LA13: ;
			unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP4018)));
		}
		goto LA4;
		LA11: ;
		{
			{
				if (!((*p).Target == ((NU8) 0))) goto LA21;
				unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP4016)));
			}
			goto LA19;
			LA21: ;
			{
				unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP4017)));
			}
			LA19: ;
		}
		LA4: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		{
			ttype188837* LOC27;
			TY145497 LOC30;
			LOC27 = 0;
			LOC27 = skiptypes_192793((*n).Typ, IL64(211106242013440));
			if (!((*LOC27).Kind == ((NU8) 28))) goto LA28;
			usemagic_508134(p, ((NimStringDesc*) &TMP4019));
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = makejsstring_507386((*n).kindU.S3.Strval);
			unsureAsgnRef((void**) &(*r).Res, ropef_145079(((NimStringDesc*) &TMP4020), LOC30, 1));
		}
		goto LA25;
		LA28: ;
		{
			unsureAsgnRef((void**) &(*r).Res, makejsstring_507386((*n).kindU.S3.Strval));
		}
		LA25: ;
		(*r).Kind = ((NU8) 1);
	}
	break;
	case ((NU8) 16) ... ((NU8) 18):
	{
		NF f;
		f = (*n).kindU.S2.Floatval;
		{
			if (!!((f == f))) goto LA35;
			unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP4021)));
		}
		goto LA33;
		LA35: ;
		{
			if (!(f == 0.0)) goto LA38;
			unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP4022)));
		}
		goto LA33;
		LA38: ;
		{
			if (!(f == ((NF)(5.0000000000000000e-01) * (NF)(f)))) goto LA41;
			{
				if (!(0.0 < f)) goto LA45;
				unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP4023)));
			}
			goto LA43;
			LA45: ;
			{
				unsureAsgnRef((void**) &(*r).Res, torope_145058(((NimStringDesc*) &TMP4024)));
			}
			LA43: ;
		}
		goto LA33;
		LA41: ;
		{
			NimStringDesc* LOC49;
			LOC49 = 0;
			LOC49 = tostrmaxprecision_196017(f);
			unsureAsgnRef((void**) &(*r).Res, torope_145058(LOC49));
		}
		LA33: ;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	case ((NU8) 32):
	{
		{
			NIM_BOOL LOC53;
			LOC53 = 0;
			LOC53 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
			if (!(LOC53)) goto LA54;
			LOC53 = !(((*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Magic == ((NU16) 0)));
			LA54: ;
			if (!LOC53) goto LA55;
			genmagic_515170(p, n, r);
		}
		goto LA51;
		LA55: ;
		{
			NIM_BOOL LOC58;
			NIM_BOOL LOC59;
			NI LOC62;
			LOC58 = 0;
			LOC59 = 0;
			LOC59 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
			if (!(LOC59)) goto LA60;
			LOC59 = (((*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Flags &(1<<((((NU8) 27))&31)))!=0);
			LA60: ;
			LOC58 = LOC59;
			if (!(LOC58)) goto LA61;
			LOC62 = 0;
			LOC62 = len_189264(n);
			LOC58 = (2 <= LOC62);
			LA61: ;
			if (!LOC58) goto LA63;
			geninfixcall_513626(p, n, r);
		}
		goto LA51;
		LA63: ;
		{
			gencall_513604(p, n, r);
		}
		LA51: ;
	}
	break;
	case ((NU8) 39):
	{
		gensetconstr_515464(p, n, r);
	}
	break;
	case ((NU8) 41):
	{
		genarrayconstr_515558(p, n, r);
	}
	break;
	case ((NU8) 37):
	{
		gentupleconstr_515605(p, n, r);
	}
	break;
	case ((NU8) 38):
	{
		genobjconstr_515689(p, n, r);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	{
		genconv_515835(p, n, r);
	}
	break;
	case ((NU8) 63):
	case ((NU8) 64):
	{
		genaddr_512998(p, n, r);
	}
	break;
	case ((NU8) 47):
	case ((NU8) 65):
	{
		genderef_513458(p, n, r);
	}
	break;
	case ((NU8) 42):
	{
		genarrayaccess_512933(p, n, r);
	}
	break;
	case ((NU8) 45):
	{
		genfieldaccess_512588(p, n, r);
	}
	break;
	case ((NU8) 46):
	{
		gencheckedfieldaccess_512760(p, n, r);
	}
	break;
	case ((NU8) 66):
	{
		gen_508112(p, (*n).kindU.S6.Sons->data[0], r);
	}
	break;
	case ((NU8) 67):
	{
		upconv_515904(p, n, r);
	}
	break;
	case ((NU8) 61):
	{
		gen_508112(p, (*n).kindU.S6.Sons->data[1], r);
	}
	break;
	case ((NU8) 68):
	{
		genrangechck_515926(p, n, r, ((NimStringDesc*) &TMP4235));
	}
	break;
	case ((NU8) 69):
	{
		genrangechck_515926(p, n, r, ((NimStringDesc*) &TMP4236));
	}
	break;
	case ((NU8) 70):
	{
		genrangechck_515926(p, n, r, ((NimStringDesc*) &TMP4233));
	}
	break;
	case ((NU8) 71):
	{
		convstrtocstr_516000(p, n, r);
	}
	break;
	case ((NU8) 72):
	{
		convcstrtostr_516094(p, n, r);
	}
	break;
	case ((NU8) 1):
	{
	}
	break;
	case ((NU8) 51):
	case ((NU8) 52):
	{
		tsym188833* s;
		trope145007* LOC86;
		s = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		LOC86 = 0;
		LOC86 = manglename_507361(s);
		unsureAsgnRef((void**) &(*r).Res, (*s).Loc.R);
		{
			NIM_BOOL LOC89;
			LOC89 = 0;
			LOC89 = (((*s).Loc.Flags &(1<<((((NU8) 3))&7)))!=0);
			if (LOC89) goto LA90;
			LOC89 = !(((*s).Magic == ((NU16) 0)));
			LA90: ;
			if (!LOC89) goto LA91;
		}
		goto LA87;
		LA91: ;
		{
			NIM_BOOL LOC94;
			trope145007* LOC97;
			LOC94 = 0;
			LOC94 = containsorincl_185888(&(*(*p).G).Generatedsyms, (*s).Sup.Id);
			if (!!(LOC94)) goto LA95;
			LOC97 = 0;
			LOC97 = genproc_508124(p, s);
			app_145040(&(*p).Locals, LOC97);
		}
		goto LA87;
		LA95: ;
		LA87: ;
	}
	break;
	case ((NU8) 4):
	{
		unsureAsgnRef((void**) &(*r).Res, gentypeinfo_507392(p, (*n).Typ));
	}
	break;
	case ((NU8) 114):
	case ((NU8) 125):
	{
		NIM_BOOL isexpr;
		NIM_BOOL LOC100;
		NI i_516835;
		NI HEX3Atmp_516981;
		NI LOC101;
		NI res_516983;
		LOC100 = 0;
		LOC100 = isemptytype_195210((*n).Typ);
		isexpr = !(LOC100);
		i_516835 = 0;
		HEX3Atmp_516981 = 0;
		LOC101 = 0;
		LOC101 = sonslen_189181(n);
		HEX3Atmp_516981 = (NI32)((NI32)(LOC101 - 1) - ((NI) (isexpr)));
		res_516983 = 0;
		while (1) {
			if (!(res_516983 <= HEX3Atmp_516981)) goto LA102;
			i_516835 = res_516983;
			genstmt_508119(p, (*n).kindU.S6.Sons->data[i_516835]);
			res_516983 += 1;
		} LA102: ;
		{
			tnode188803* LOC107;
			if (!isexpr) goto LA105;
			LOC107 = 0;
			LOC107 = lastson_189189(n);
			gen_508112(p, LOC107, r);
		}
		LA105: ;
	}
	break;
	case ((NU8) 111):
	case ((NU8) 126):
	{
		genblock_510875(p, n, r);
	}
	break;
	case ((NU8) 92):
	case ((NU8) 48):
	{
		genif_511707(p, n, r);
	}
	break;
	case ((NU8) 96):
	{
		genwhilestmt_509474(p, n);
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		genvarstmt_514289(p, n);
	}
	break;
	case ((NU8) 101):
	{
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4263));
	}
	break;
	case ((NU8) 97):
	{
		{
			if (!((*p).Target == ((NU8) 0))) goto LA117;
			gencasejs_510315(p, n, r);
		}
		goto LA115;
		LA117: ;
		{
			gencaselua_510620(p, n, r);
		}
		LA115: ;
	}
	break;
	case ((NU8) 108):
	{
		genreturnstmt_516188(p, n);
	}
	break;
	case ((NU8) 109):
	{
		genbreakstmt_511061(p, n);
	}
	break;
	case ((NU8) 73):
	{
		genasgn_512141(p, n);
	}
	break;
	case ((NU8) 74):
	{
		genfastasgn_512175(p, n);
	}
	break;
	case ((NU8) 113):
	{
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA127;
			genlinedir_509300(p, n);
			gen_508112(p, (*n).kindU.S6.Sons->data[0], r);
		}
		LA127: ;
	}
	break;
	case ((NU8) 89):
	{
		genasmstmt_511447(p, n);
	}
	break;
	case ((NU8) 105):
	{
		gentry_509657(p, n, r);
	}
	break;
	case ((NU8) 107):
	{
		genraisestmt_510248(p, n);
	}
	break;
	case ((NU8) 98):
	case ((NU8) 124):
	case ((NU8) 84):
	case ((NU8) 120):
	case ((NU8) 115):
	case ((NU8) 116):
	case ((NU8) 117):
	case ((NU8) 118):
	case ((NU8) 119):
	case ((NU8) 83):
	case ((NU8) 82):
	case ((NU8) 90):
	{
	}
	break;
	case ((NU8) 79):
	case ((NU8) 80):
	case ((NU8) 81):
	{
		tsym188833* s;
		s = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		{
			if (!((65600 & (*s).Flags) == 64)) goto LA136;
			gensym_513137(p, (*n).kindU.S6.Sons->data[0], r);
			unsureAsgnRef((void**) &(*r).Res, NIM_NIL);
		}
		LA136: ;
	}
	break;
	case ((NU8) 154):
	case ((NU8) 155):
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4310));
	}
	break;
	default:
	{
		NimStringDesc* LOC140;
		LOC140 = 0;
		LOC140 = rawNewString(reprEnum((*n).Kind, (&NTI188023))->Sup.len + 24);
appendString(LOC140, ((NimStringDesc*) &TMP4311));
appendString(LOC140, reprEnum((*n).Kind, (&NTI188023)));
		internalerror_165591((*n).Info, LOC140);
	}
	break;
	}
}

N_NIMCALL(void, genstmt_508119)(tproc507028* p, tnode188803* n) {
	tcompres507018 r;
	memset((void*)&r, 0, sizeof(r));
	gen_508112(p, n, &r);
	{
		TY145497 LOC5;
		if (!!((r.Res == NIM_NIL))) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = r.Res;
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4312), LOC5, 1);
	}
	LA3: ;
}

N_NIMCALL(void, genmodule_517039)(tproc507028* p, tnode188803* n) {
	{
		TY503234 LOC5;
		NimStringDesc* LOC6;
		NimStringDesc* LOC7;
		if (!(((*p).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA3;
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC6 = 0;
		LOC6 = rawNewString((*(*(*(*p).Module).Module).Name).S->Sup.len + 7);
appendString(LOC6, ((NimStringDesc*) &TMP3941));
appendString(LOC6, (*(*(*(*p).Module).Module).Name).S);
		LOC5[0] = makejsstring_507386(LOC6);
		LOC7 = 0;
		LOC7 = tofilename_164780((*(*(*p).Module).Module).Info.Fileindex);
		LOC5[1] = makejsstring_507386(LOC7);
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP3939), LOC5, 2);
	}
	LA3: ;
	genstmt_508119(p, n);
	{
		TY469906 LOC12;
		if (!(((*p).Options &(1<<((((NU8) 15))&31)))!=0)) goto LA10;
		memset((void*)LOC12, 0, sizeof(LOC12));
		appf_145085(&(*p).Body, ((NimStringDesc*) &TMP4313), LOC12, 0);
	}
	LA10: ;
}

N_NIMCALL(tnode188803*, myprocess_517084)(tpasscontext246003* b, tnode188803* n) {
	tnode188803* result;
	tjsgen507010* m;
	tproc507028* p;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = skipcodegen_246074(n);
		if (!LOC3) goto LA4;
		result = n;
		goto BeforeRet;
	}
	LA4: ;
	result = n;
	m = ((tjsgen507010*) (b));
	{
		if (!((*m).Module == NIM_NIL)) goto LA8;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3931));
	}
	LA8: ;
	p = newproc_507203(globals_516988, m, NIM_NIL, (*(*m).Module).Options);
	genmodule_517039(p, n);
	app_145040(&(*(*p).G).Code, (*p).Locals);
	app_145040(&(*(*p).G).Code, (*p).Body);
	BeforeRet: ;
	return result;
}

N_NIMCALL(trope145007*, wholecode_517112)(tjsgen507010* m) {
	trope145007* result;
	tsym188833* prc_517128;
	tsymseq188805* HEX3Atmp_517178;
	NI i_517180;
	NI l_517182;
	tnode188803* disp;
	NI i_517143;
	NI HEX3Atmp_517183;
	NI LOC8;
	NI res_517185;
	result = 0;
	prc_517128 = 0;
	HEX3Atmp_517178 = 0;
	HEX3Atmp_517178 = (*globals_516988).Forwarded;
	i_517180 = 0;
	l_517182 = HEX3Atmp_517178->Sup.len;
	while (1) {
		if (!(i_517180 < l_517182)) goto LA1;
		prc_517128 = HEX3Atmp_517178->data[i_517180];
		{
			NIM_BOOL LOC4;
			tproc507028* p;
			trope145007* LOC7;
			LOC4 = 0;
			LOC4 = containsorincl_185888(&(*globals_516988).Generatedsyms, (*prc_517128).Sup.Id);
			if (!!(LOC4)) goto LA5;
			p = newproc_507203(globals_516988, m, NIM_NIL, (*(*m).Module).Options);
			LOC7 = 0;
			LOC7 = genproc_508124(p, prc_517128);
			app_145040(&(*(*p).G).Code, LOC7);
		}
		LA5: ;
		i_517180 += 1;
	} LA1: ;
	disp = generatemethoddispatchers_365126();
	i_517143 = 0;
	HEX3Atmp_517183 = 0;
	LOC8 = 0;
	LOC8 = sonslen_189181(disp);
	HEX3Atmp_517183 = (NI32)(LOC8 - 1);
	res_517185 = 0;
	while (1) {
		tsym188833* prc;
		if (!(res_517185 <= HEX3Atmp_517183)) goto LA9;
		i_517143 = res_517185;
		prc = (*(*disp).kindU.S6.Sons->data[i_517143]).kindU.S4.Sym;
		{
			NIM_BOOL LOC12;
			tproc507028* p;
			trope145007* LOC15;
			LOC12 = 0;
			LOC12 = containsorincl_185888(&(*globals_516988).Generatedsyms, (*prc).Sup.Id);
			if (!!(LOC12)) goto LA13;
			p = newproc_507203(globals_516988, m, NIM_NIL, (*(*m).Module).Options);
			LOC15 = 0;
			LOC15 = genproc_508124(p, prc);
			app_145040(&(*(*p).G).Code, LOC15);
		}
		LA13: ;
		res_517185 += 1;
	} LA9: ;
	result = con_145020((*globals_516988).Typeinfo, (*globals_516988).Code);
	return result;
}

N_NIMCALL(trope145007*, genheader_517030)(void) {
	trope145007* result;
	TY145497 LOC1;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = torope_145058(((NimStringDesc*) &TMP4316));
	result = ropef_145079(((NimStringDesc*) &TMP4315), LOC1, 1);
	return result;
}

N_NIMCALL(tnode188803*, myclose_517191)(tpasscontext246003* b, tnode188803* n) {
	tnode188803* result;
	tjsgen507010* m;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = skipcodegen_246074(n);
		if (!LOC3) goto LA4;
		result = n;
		goto BeforeRet;
	}
	LA4: ;
	result = myprocess_517084(b, n);
	m = ((tjsgen507010*) (b));
	{
		trope145007* code;
		NimStringDesc* outfile;
		trope145007* LOC24;
		trope145007* LOC25;
		NIM_BOOL LOC26;
		if (!(((*(*m).Module).Flags &(1<<((((NU8) 12))&31)))!=0)) goto LA8;
		code = wholecode_517112(m);
		{
			if (!(0 < outfile_137117->Sup.len)) goto LA12;
			{
				NIM_BOOL LOC16;
				LOC16 = 0;
				LOC16 = nosisAbsolute(outfile_137117);
				if (!LOC16) goto LA17;
				outfile = outfile_137117;
			}
			goto LA14;
			LA17: ;
			{
				NimStringDesc* LOC20;
				LOC20 = 0;
				LOC20 = nosgetCurrentDir();
				outfile = HEX2F_108477(LOC20, outfile_137117);
			}
			LA14: ;
		}
		goto LA10;
		LA12: ;
		{
			NimStringDesc* LOC22;
			NimStringDesc* LOC23;
			LOC22 = 0;
			LOC22 = tofilename_164780(((NI32) ((*(*m).Module).Position)));
			LOC23 = 0;
			LOC23 = completecfilepath_169753(LOC22, NIM_TRUE);
			outfile = noschangeFileExt(LOC23, ((NimStringDesc*) &TMP4314));
		}
		LA10: ;
		LOC24 = 0;
		LOC24 = genheader_517030();
		LOC25 = 0;
		LOC25 = con_145020(LOC24, code);
		LOC26 = 0;
		LOC26 = writeropeifnotequal_145070(LOC25, outfile);
	}
	LA8: ;
	BeforeRet: ;
	return result;
}
N_NOINLINE(void, jsgenInit)(void) {
}

N_NOINLINE(void, jsgenDatInit)(void) {
static TNimNode* TMP3928[5];
static TNimNode* TMP3932[12];
static TNimNode* TMP3933[2];
NI TMP3935;
static char* NIM_CONST TMP3934[2] = {
"targetJS", 
"targetLua"};
static TNimNode* TMP3936[2];
static TNimNode TMP962[26];
NTI507010.size = sizeof(tjsgen507010);
NTI507010.kind = 17;
NTI507010.base = (&NTI246003);
TMP962[0].kind = 1;
TMP962[0].offset = offsetof(tjsgen507010, Module);
TMP962[0].typ = (&NTI188801);
TMP962[0].name = "module";
NTI507010.node = &TMP962[0];
NTI507012.size = sizeof(tjsgen507010*);
NTI507012.kind = 22;
NTI507012.base = (&NTI507010);
NTI507012.marker = TMP3927;
NTI507022.size = sizeof(tglobals507022);
NTI507022.kind = 18;
NTI507022.base = 0;
NTI507022.flags = 2;
TMP3928[0] = &TMP962[2];
TMP962[2].kind = 1;
TMP962[2].offset = offsetof(tglobals507022, Typeinfo);
TMP962[2].typ = (&NTI145005);
TMP962[2].name = "typeInfo";
TMP3928[1] = &TMP962[3];
TMP962[3].kind = 1;
TMP962[3].offset = offsetof(tglobals507022, Code);
TMP962[3].typ = (&NTI145005);
TMP962[3].name = "code";
TMP3928[2] = &TMP962[4];
TMP962[4].kind = 1;
TMP962[4].offset = offsetof(tglobals507022, Forwarded);
TMP962[4].typ = (&NTI188805);
TMP962[4].name = "forwarded";
TMP3928[3] = &TMP962[5];
TMP962[5].kind = 1;
TMP962[5].offset = offsetof(tglobals507022, Generatedsyms);
TMP962[5].typ = (&NTI185047);
TMP962[5].name = "generatedSyms";
TMP3928[4] = &TMP962[6];
TMP962[6].kind = 1;
TMP962[6].offset = offsetof(tglobals507022, Typeinfogenerated);
TMP962[6].typ = (&NTI185047);
TMP962[6].name = "typeInfoGenerated";
TMP962[1].len = 5; TMP962[1].kind = 2; TMP962[1].sons = &TMP3928[0];
NTI507022.node = &TMP962[1];
NTI507024.size = sizeof(tglobals507022*);
NTI507024.kind = 22;
NTI507024.base = (&NTI507022);
NTI507024.flags = 2;
NTI507024.marker = TMP3929;
NTI507028.size = sizeof(tproc507028);
NTI507028.kind = 18;
NTI507028.base = 0;
TMP3932[0] = &TMP962[8];
TMP962[8].kind = 1;
TMP962[8].offset = offsetof(tproc507028, Procdef);
TMP962[8].typ = (&NTI188795);
TMP962[8].name = "procDef";
TMP3932[1] = &TMP962[9];
TMP962[9].kind = 1;
TMP962[9].offset = offsetof(tproc507028, Prc);
TMP962[9].typ = (&NTI188801);
TMP962[9].name = "prc";
TMP3932[2] = &TMP962[10];
TMP962[10].kind = 1;
TMP962[10].offset = offsetof(tproc507028, Locals);
TMP962[10].typ = (&NTI145005);
TMP962[10].name = "locals";
TMP3932[3] = &TMP962[11];
TMP962[11].kind = 1;
TMP962[11].offset = offsetof(tproc507028, Body);
TMP962[11].typ = (&NTI145005);
TMP962[11].name = "body";
TMP3932[4] = &TMP962[12];
TMP962[12].kind = 1;
TMP962[12].offset = offsetof(tproc507028, Options);
TMP962[12].typ = (&NTI137012);
TMP962[12].name = "options";
TMP3932[5] = &TMP962[13];
TMP962[13].kind = 1;
TMP962[13].offset = offsetof(tproc507028, Module);
TMP962[13].typ = (&NTI507012);
TMP962[13].name = "module";
TMP3932[6] = &TMP962[14];
TMP962[14].kind = 1;
TMP962[14].offset = offsetof(tproc507028, G);
TMP962[14].typ = (&NTI507024);
TMP962[14].name = "g";
TMP3932[7] = &TMP962[15];
TMP962[15].kind = 1;
TMP962[15].offset = offsetof(tproc507028, Beforeretneeded);
TMP962[15].typ = (&NTI134);
TMP962[15].name = "beforeRetNeeded";
TMP3932[8] = &TMP962[16];
NTI507008.size = sizeof(NU8);
NTI507008.kind = 14;
NTI507008.base = 0;
NTI507008.flags = 3;
for (TMP3935 = 0; TMP3935 < 2; TMP3935++) {
TMP962[TMP3935+17].kind = 1;
TMP962[TMP3935+17].offset = TMP3935;
TMP962[TMP3935+17].name = TMP3934[TMP3935];
TMP3933[TMP3935] = &TMP962[TMP3935+17];
}
TMP962[19].len = 2; TMP962[19].kind = 2; TMP962[19].sons = &TMP3933[0];
NTI507008.node = &TMP962[19];
TMP962[16].kind = 1;
TMP962[16].offset = offsetof(tproc507028, Target);
TMP962[16].typ = (&NTI507008);
TMP962[16].name = "target";
TMP3932[9] = &TMP962[20];
TMP962[20].kind = 1;
TMP962[20].offset = offsetof(tproc507028, Unique);
TMP962[20].typ = (&NTI106);
TMP962[20].name = "unique";
TMP3932[10] = &TMP962[21];
NTI507020.size = sizeof(tblock507020);
NTI507020.kind = 18;
NTI507020.base = 0;
NTI507020.flags = 3;
TMP3936[0] = &TMP962[23];
TMP962[23].kind = 1;
TMP962[23].offset = offsetof(tblock507020, Id);
TMP962[23].typ = (&NTI106);
TMP962[23].name = "id";
TMP3936[1] = &TMP962[24];
TMP962[24].kind = 1;
TMP962[24].offset = offsetof(tblock507020, Isloop);
TMP962[24].typ = (&NTI134);
TMP962[24].name = "isLoop";
TMP962[22].len = 2; TMP962[22].kind = 2; TMP962[22].sons = &TMP3936[0];
NTI507020.node = &TMP962[22];
NTI507066.size = sizeof(TY507066*);
NTI507066.kind = 24;
NTI507066.base = (&NTI507020);
NTI507066.flags = 2;
NTI507066.marker = TMP3937;
TMP962[21].kind = 1;
TMP962[21].offset = offsetof(tproc507028, Blocks);
TMP962[21].typ = (&NTI507066);
TMP962[21].name = "blocks";
TMP3932[11] = &TMP962[25];
TMP962[25].kind = 1;
TMP962[25].offset = offsetof(tproc507028, Up);
TMP962[25].typ = (&NTI507026);
TMP962[25].name = "up";
TMP962[7].len = 12; TMP962[7].kind = 2; TMP962[7].sons = &TMP3932[0];
NTI507028.node = &TMP962[7];
NTI507026.size = sizeof(tproc507028*);
NTI507026.kind = 22;
NTI507026.base = (&NTI507028);
NTI507026.marker = TMP3938;
NTI508653.size = sizeof(tmagicfrmt508653);
NTI508653.kind = 16;
NTI508653.base = (&NTI143);
NTI508653.flags = 2;
NTI508655.size = sizeof(tmagicops508655);
NTI508655.kind = 16;
NTI508655.base = (&NTI508653);
NTI508655.flags = 2;
}

