/* 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/vmgen.o compiler/nimcache/vmgen.c */
#define NIM_INTBITS 32
#include "nimbase.h"

#include <string.h>
typedef struct tctx249037 tctx249037;
typedef struct tsym188833 tsym188833;
typedef struct tnode188803 tnode188803;
typedef struct tidobj167013 tidobj167013;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct ttypeseq188835 ttypeseq188835;
typedef struct ttype188837 ttype188837;
typedef struct TGenericSeq TGenericSeq;
typedef struct tscope188827 tscope188827;
typedef struct TY188933 TY188933;
typedef struct tinstantiation188823 tinstantiation188823;
typedef struct tstrtable188807 tstrtable188807;
typedef struct tsymseq188805 tsymseq188805;
typedef struct tident167019 tident167019;
typedef struct tlineinfo163527 tlineinfo163527;
typedef struct tloc188817 tloc188817;
typedef struct trope145007 trope145007;
typedef struct tlib188821 tlib188821;
typedef struct NimStringDesc NimStringDesc;
typedef struct tnodeseq188797 tnodeseq188797;
typedef struct tpasscontext246003 tpasscontext246003;
typedef struct TY249229 TY249229;
typedef struct TY164208 TY164208;
typedef struct pprocHEX3Aobjecttype249216 pprocHEX3Aobjecttype249216;
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 TY249217 TY249217;
typedef struct tblock249023 tblock249023;
typedef struct TY249198 TY249198;
typedef struct TY249223 TY249223;
typedef struct TY79484 TY79484;
typedef struct TY188922 TY188922;
typedef struct tlistentry118017 tlistentry118017;
typedef struct tbasechunk22636 tbasechunk22636;
typedef struct tfreecell22628 tfreecell22628;
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  tidobj167013  {
  TNimObject Sup;
NI Id;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  tstrtable188807  {
NI Counter;
tsymseq188805* Data;
};
struct  tlineinfo163527  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  tloc188817  {
NU8 K;
NU8 S;
NU8 Flags;
ttype188837* T;
trope145007* R;
trope145007* Heaproot;
NI A;
};
struct  tsym188833  {
  tidobj167013 Sup;
NU8 Kind;
union {
struct {ttypeseq188835* Typeinstcache;
tscope188827* Typscope;
} S1;
struct {TY188933* Procinstcache;
tscope188827* Scope;
} S2;
struct {TY188933* Usedgenerics;
tstrtable188807 Tab;
} S3;
} kindU;
NU16 Magic;
ttype188837* Typ;
tident167019* Name;
tlineinfo163527 Info;
tsym188833* Owner;
NU32 Flags;
tnode188803* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc188817 Loc;
tlib188821* Annex;
tnode188803* Constraint;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
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  tpasscontext246003  {
  TNimObject Sup;
NIM_BOOL Fromcache;
};
struct  tctx249037  {
  tpasscontext246003 Sup;
TY249229* Code;
TY164208* Debug;
tnode188803* Globals;
tnode188803* Constants;
ttypeseq188835* Types;
tnode188803* Currentexceptiona;
tnode188803* Currentexceptionb;
NI Exceptioninstr;
pprocHEX3Aobjecttype249216* Prc;
tsym188833* Module;
tnode188803* Callsite;
NU8 Mode;
NU8 Features;
NIM_BOOL Traceactive;
NI Loopiterations;
};
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  tblock249023  {
tsym188833* Label;
TY249198* Fixups;
};
struct TY249223 {
NIM_BOOL Field0;
NU8 Field1;
};
typedef TY249223 TY249220[256];
struct  pprocHEX3Aobjecttype249216  {
TY249217* Blocks;
tsym188833* Sym;
TY249220 Slots;
NI Maxslots;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
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;
};
struct TY79484 {
NimStringDesc* Field0;
NI Field1;
};
struct  tident167019  {
  tidobj167013 Sup;
NimStringDesc* S;
tident167019* Next;
NI H;
};
struct  tscope188827  {
NI Depthlevel;
tstrtable188807 Symbols;
tnodeseq188797* Usingsyms;
tscope188827* Parent;
};
struct  tinstantiation188823  {
tsym188833* Sym;
ttypeseq188835* Concretetypes;
TY188922* Usedby;
};
struct  trope145007  {
  TNimObject Sup;
trope145007* Left;
trope145007* Right;
NI Length;
NimStringDesc* Data;
};
struct  tlistentry118017  {
  TNimObject Sup;
tlistentry118017* Prev;
tlistentry118017* Next;
};
struct  tlib188821  {
  tlistentry118017 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope145007* Name;
tnode188803* Path;
};
typedef 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  tfreecell22628  {
tfreecell22628* Next;
NI Zerofield;
};
struct ttypeseq188835 {
  TGenericSeq Sup;
  ttype188837* data[SEQ_DECL_SIZE];
};
struct TY188933 {
  TGenericSeq Sup;
  tinstantiation188823* data[SEQ_DECL_SIZE];
};
struct tsymseq188805 {
  TGenericSeq Sup;
  tsym188833* data[SEQ_DECL_SIZE];
};
struct tnodeseq188797 {
  TGenericSeq Sup;
  tnode188803* data[SEQ_DECL_SIZE];
};
struct TY249229 {
  TGenericSeq Sup;
  NU32 data[SEQ_DECL_SIZE];
};
struct TY164208 {
  TGenericSeq Sup;
  tlineinfo163527 data[SEQ_DECL_SIZE];
};
struct TY249198 {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
struct TY249217 {
  TGenericSeq Sup;
  tblock249023 data[SEQ_DECL_SIZE];
};
struct TY188922 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(tnode188803*, newintnode_189069)(NU8 kind, NI64 intval);
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(tnode188803*, getbody_239244)(tsym188833* s);
N_NIMCALL(NI, xjmp_380279)(tctx249037* c, tnode188803* n, NU8 opc, NI a);
N_NIMCALL(void, gabx_380098)(tctx249037* c, tnode188803* n, NU8 opc, NI a, NI bx);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(void, genparams_388080)(tctx249037* c, tnode188803* params);
static N_INLINE(NI, len_189264)(tnode188803* n);
N_NIMCALL(void, gen_380864)(tctx249037* c, tnode188803* n, NU8 flags);
N_NIMCALL(void, gen_380834)(tctx249037* c, tnode188803* n, NI* dest, NU8 flags);
N_NIMCALL(void, checkcaneval_385510)(tctx249037* c, tnode188803* n);
N_NIMCALL(NIM_BOOL, isownedby_385442)(tsym188833* a_385444, tsym188833* b);
N_NOINLINE(void, cannoteval_385437)(tnode188803* n);
N_NIMCALL(void, globalerror_165558)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, rendertree_211051)(tnode188803* n, NU8 renderflags);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(void, genrdvar_386017)(tctx249037* c, tnode188803* n, NI* dest, NU8 flags);
N_NIMCALL(void, importcsym_385856)(tctx249037* c, tlineinfo163527 info, tsym188833* s);
N_NIMCALL(void, localerror_165571)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, genglobalinit_386008)(tctx249037* c, tnode188803* n, tsym188833* s);
N_NIMCALL(void, add_189390)(tnode188803* father, tnode188803* son);
N_NIMCALL(tnode188803*, getnullvalue_386003)(ttype188837* typ, tlineinfo163527 info);
N_NIMCALL(ttype188837*, skiptypes_192793)(ttype188837* t, NU64 kinds);
N_NIMCALL(tnode188803*, newnodeit_189104)(NU8 kind, tlineinfo163527 info, ttype188837* typ);
N_NIMCALL(void, getnullvalueaux_386392)(tnode188803* obj, tnode188803* result);
static N_INLINE(NI, sonslen_189181)(tnode188803* n);
static N_INLINE(tnode188803*, lastson_189189)(tnode188803* n);
N_NIMCALL(void, addson_189207)(tnode188803* father, tnode188803* son);
N_NIMCALL(void, internalerror_165591)(tlineinfo163527 info, NimStringDesc* errmsg);
N_NIMCALL(NI64, lengthord_223010)(ttype188837* t);
N_NIMCALL(ttype188837*, elemtype_223559)(ttype188837* t);
static N_INLINE(NI, sonslen_189185)(ttype188837* n);
N_NIMCALL(void, internalerror_165606)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_75880, TNimType* typ);
N_NIMCALL(NI, gettemp_380451)(tctx249037* c_380453, ttype188837* typ);
N_NIMCALL(NU8, getslotkind_380425)(ttype188837* t);
N_NIMCALL(NI, genx_380876)(tctx249037* c, tnode188803* n, NU8 flags);
N_NIMCALL(NimStringDesc*, HEX24_165714)(TY79484 x_165718);
N_NIMCALL(void, gabc_379683)(tctx249037* ctx, tnode188803* n, NU8 opc, NI a, NI b, NI c);
N_NIMCALL(void, freetemp_380538)(tctx249037* c_380540, NI r);
N_NIMCALL(NIM_BOOL, fitsregister_385046)(ttype188837* t);
N_NIMCALL(void, setslot_385403)(tctx249037* c, tsym188833* v);
N_NIMCALL(void, genasgn_385359)(tctx249037* c, NI dest, tnode188803* ri, NIM_BOOL requirescopy);
N_NIMCALL(NU8, whichasgnopc_385295)(tnode188803* n);
N_NIMCALL(void, genlit_385827)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(NI, genliteral_382298)(tctx249037* c, tnode188803* n);
N_NIMCALL(NIM_BOOL, sameconstant_382014)(tnode188803* a, tnode188803* b);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(tnode188803*, HEX5BHEX5D_189694)(tnode188803* n, NI i);
N_NIMCALL(NI, rawgenliteral_381794)(tctx249037* c, tnode188803* n);
N_NIMCALL(tnode188803*, canonvalue_381788)(tnode188803* n);
N_NIMCALL(void, gentypelit_385847)(tctx249037* c, ttype188837* t, NI* dest);
N_NIMCALL(tnode188803*, newnode_189065)(NU8 kind);
N_NIMCALL(void, genmagic_384245)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(void, genandor_381749)(tctx249037* c, tnode188803* n, NU8 opc, NI* dest);
N_NIMCALL(void, patch_380355)(tctx249037* c, NI p_380358);
N_NIMCALL(void, gabi_379899)(tctx249037* c, tnode188803* n, NU8 opc, NI a, NI b, NI64 imm);
N_NIMCALL(void, genaddsubint_384115)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc);
N_NIMCALL(NIM_BOOL, isint8lit_384011)(tnode188803* n);
N_NIMCALL(void, genbinaryabc_383616)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc);
N_NIMCALL(void, gennarrow_383656)(tctx249037* c, tnode188803* n, NI dest);
static N_INLINE(void, unused_382332)(tnode188803* n, NI x);
N_NIMCALL(void, genasgnpatch_383214)(tctx249037* c, tnode188803* le, NI value);
N_NIMCALL(NI, genfield_383158)(tnode188803* n);
N_NIMCALL(void, gennew_383361)(tctx249037* c, tnode188803* n);
N_NIMCALL(NIM_BOOL, needsasgnpatch_383093)(tnode188803* n);
N_NIMCALL(NI, gentype_382494)(tctx249037* c, ttype188837* typ);
N_NIMCALL(NIM_BOOL, sametype_228116)(ttype188837* a, ttype188837* b, NU8 flags);
N_NIMCALL(void, gennewseq_383456)(tctx249037* c, tnode188803* n);
N_NIMCALL(void, genunaryabc_383566)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc);
N_NIMCALL(void, genunaryabi_383591)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc);
N_NIMCALL(void, gensettype_383768)(tctx249037* c, tnode188803* n, NI dest);
N_NIMCALL(void, gencard_384207)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(void, genbinaryabcnarrow_383750)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc);
N_NIMCALL(void, genbinaryabcnarrowu_383759)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc);
N_NIMCALL(void, gennarrowu_383710)(tctx249037* c, tnode188803* n, NI dest);
N_NIMCALL(void, genconv_384195)(tctx249037* c, tnode188803* n, tnode188803* arg, NI* dest, NU8 opc);
N_NIMCALL(void, genbinaryset_383803)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc);
N_NIMCALL(void, genvarargsabc_383968)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc);
N_NIMCALL(NI, gettemprange_380554)(tctx249037* c_380556, NI n, NU8 kind);
N_NIMCALL(void, gen_380844)(tctx249037* c, tnode188803* n, NI dest, NU8 flags);
N_NIMCALL(void, freetemprange_380682)(tctx249037* c, NI start, NI n);
N_NIMCALL(ttype188837*, getsystype_242024)(NU8 kind);
N_NIMCALL(void, genbinarystmtvar_383908)(tctx249037* c, tnode188803* n, NU8 opc);
N_NIMCALL(void, genbinarystmt_383871)(tctx249037* c, tnode188803* n, NU8 opc);
N_NIMCALL(void, genunarystmt_383946)(tctx249037* c, tnode188803* n, NU8 opc);
N_NIMCALL(void, gencall_382972)(tctx249037* c, tnode188803* n, NI* dest);
static N_INLINE(NIM_BOOL, isemptytype_195210)(ttype188837* t);
N_NIMCALL(NI, len_192569)(ttype188837* n);
N_NIMCALL(void, globalerror_165565)(tlineinfo163527 info, NimStringDesc* arg);
static N_INLINE(void, cleardest_380896)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(NIM_BOOL, isint16lit_384063)(tnode188803* n);
N_NIMCALL(void, genasgn_385561)(tctx249037* c, tnode188803* le, tnode188803* ri, NIM_BOOL requirescopy);
N_NIMCALL(void, genobjaccess_386257)(tctx249037* c, tnode188803* n, NI* dest, NU8 flags);
N_NIMCALL(void, gencheckedobjaccess_386312)(tctx249037* c, tnode188803* n, NI* dest, NU8 flags);
N_NIMCALL(void, genarraccess_386335)(tctx249037* c, tnode188803* n, NI* dest, NU8 flags);
N_NIMCALL(void, genarraccess2_386200)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc, NU8 flags);
N_NIMCALL(void, genaddrderef_385185)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc, NU8 flags);
N_NIMCALL(NIM_BOOL, unneededindirection_385152)(tnode188803* n);
N_NIMCALL(void, genif_381490)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(NIM_BOOL, isnotopr_380924)(tnode188803* n);
N_NIMCALL(void, gencase_382338)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(void, genwhile_381078)(tctx249037* c, tnode188803* n);
N_NIMCALL(NI, genlabel_380300)(tctx249037* c);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src_74604, TNimType* mt);
N_NIMCALL(NIM_BOOL, istrue_381003)(tnode188803* n);
N_NIMCALL(void, jmpback_380318)(tctx249037* c, tnode188803* n, NI p);
N_NIMCALL(void, popblock_380712)(tctx249037* c, NI oldlen);
N_NIMCALL(void, genblock_381252)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(void, genreturn_382929)(tctx249037* c, tnode188803* n);
N_NIMCALL(void, genraise_382908)(tctx249037* c, tnode188803* n);
N_NIMCALL(void, genbreak_381353)(tctx249037* c, tnode188803* n);
N_NIMCALL(void, gentry_382594)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(void, genvarsection_386593)(tctx249037* c, tnode188803* n);
N_NIMCALL(tnode188803*, lowertupleunpacking_366155)(tnode188803* n, tsym188833* owner);
N_NIMCALL(tsym188833*, getowner_385493)(tctx249037* c);
N_NIMCALL(NU8, ldnullopcode_386587)(ttype188837* t);
N_NIMCALL(NI, genproc_387355)(tctx249037* c, tsym188833* s);
N_NIMCALL(void, genarrayconstr_386988)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(NU8, whichasgnopc_385352)(tnode188803* n, NU8 opc);
N_NIMCALL(void, gensetconstr_387038)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(void, genobjconstr_387095)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(void, gentupleconstr_387250)(tctx249037* c, tnode188803* n, NI* dest);
N_NIMCALL(void, optimizejumps_388208)(tctx249037* c, NI start);
N_NIMCALL(void, finaljumptarget_388151)(tctx249037* c, NI pc, NI diff);
N_NIMCALL(void, removelasteof_387751)(tctx249037* c);
NIM_CONST TY249223 TMP2572 = {NIM_TRUE,
((NU8) 1)}
;
NIM_CONST TY249223 TMP2573 = {NIM_TRUE,
((NU8) 2)}
;
NIM_CONST TY249223 TMP2574 = {NIM_TRUE,
((NU8) 2)}
;
STRING_LITERAL(TMP2575, "cannot evaluate at compile time: ", 33);
STRING_LITERAL(TMP2576, "cannot \'importc\' variable at compile time", 41);
STRING_LITERAL(TMP2577, "getNullValueAux", 15);
STRING_LITERAL(TMP2578, "getNullValue: ", 14);
STRING_LITERAL(TMP2579, "cannot generate code; too many registers required", 49);
STRING_LITERAL(TMP2581, "compiler/vmgen.nim", 18);
NIM_CONST TY79484 TMP2580 = {((NimStringDesc*) &TMP2581),
220}
;
NIM_CONST TY79484 TMP2582 = {((NimStringDesc*) &TMP2581),
1174}
;
NIM_CONST TY79484 TMP2583 = {((NimStringDesc*) &TMP2581),
335}
;
STRING_LITERAL(TMP2584, "cannot generate code for: ", 26);
NIM_CONST TY79484 TMP2585 = {((NimStringDesc*) &TMP2581),
122}
;
STRING_LITERAL(TMP2586, "not unused", 10);
STRING_LITERAL(TMP2587, "no field symbol", 15);
STRING_LITERAL(TMP2588, "too large offset! cannot generate code for: ", 44);
NIM_CONST TY79484 TMP2589 = {((NimStringDesc*) &TMP2581),
408}
;
NIM_CONST TY79484 TMP2590 = {((NimStringDesc*) &TMP2581),
210}
;
STRING_LITERAL(TMP2591, "invalid bindSym usage", 21);
NIM_CONST TY79484 TMP2592 = {((NimStringDesc*) &TMP2581),
464}
;
STRING_LITERAL(TMP2593, "expandToAst requires 1 argument", 31);
STRING_LITERAL(TMP2594, "expandToAst requires a call expression", 38);
NIM_CONST TY79484 TMP2595 = {((NimStringDesc*) &TMP2581),
1104}
;
NIM_CONST TY79484 TMP2596 = {((NimStringDesc*) &TMP2581),
114}
;
STRING_LITERAL(TMP2597, "cannot find \'break\' target", 26);
STRING_LITERAL(TMP2599, "invalid object constructor", 26);
STRING_LITERAL(TMP2600, "VM is not allowed to \'cast\'", 27);
STRING_LITERAL(TMP2601, "cannot generate VM code for ", 28);
NIM_CONST TY79484 TMP2602 = {((NimStringDesc*) &TMP2581),
1543}
;
STRING_LITERAL(TMP2957, "no destination set", 18);
STRING_LITERAL(TMP4521, "some destination set", 20);
extern tgcheap43016 gch_43044;
extern TNimType NTI249033; /* PProc */
extern TNimType NTI249217; /* seq[TBlock] */
extern tnode188803* emptynode_189727;
extern TNimType NTI188240; /* TTypeKind */
extern TNimType NTI188521; /* TMagic */
extern TNimType NTI249198; /* seq[TPosition] */

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, gabx_380098)(tctx249037* c, tnode188803* n, NU8 opc, NI a, NI bx) {
	NU32 ins;
	ins = (NU32)((NU32)(((NU32) (opc)) | (NU32)((NU32)(((NU32) (a))) << (NU32)(((NU32) 8)))) | (NU32)((NU32)(((NU32) ((NI32)(bx + 32768)))) << (NU32)(((NU32) 16))));
	(*c).Code = (TY249229*) incrSeq(&((*c).Code)->Sup, sizeof(NU32));
	(*c).Code->data[(*c).Code->Sup.len-1] = ins;
	(*c).Debug = (TY164208*) incrSeq(&((*c).Debug)->Sup, sizeof(tlineinfo163527));
	(*c).Debug->data[(*c).Debug->Sup.len-1] = (*n).Info;
}

N_NIMCALL(NI, xjmp_380279)(tctx249037* c, tnode188803* n, NU8 opc, NI a) {
	NI result;
	result = 0;
	result = (*c).Code->Sup.len;
	gabx_380098(c, n, opc, a, 0);
	return result;
}

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: ;
}

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;
}

N_NIMCALL(void, genparams_388080)(tctx249037* c, tnode188803* params) {
	NI i_388108;
	NI HEX3Atmp_388144;
	NI LOC1;
	NI res_388146;
	NI LOC3;
	(*(*c).Prc).Slots[(0)- 0] = TMP2572;
	i_388108 = 0;
	HEX3Atmp_388144 = 0;
	LOC1 = 0;
	LOC1 = len_189264(params);
	HEX3Atmp_388144 = LOC1 - 1;
	res_388146 = 1;
	while (1) {
		tsym188833* param;
		if (!(res_388146 <= HEX3Atmp_388144)) goto LA2;
		i_388108 = res_388146;
		param = (*(*params).kindU.S6.Sons->data[i_388108]).kindU.S4.Sym;
		(*(*c).Prc).Slots[(i_388108)- 0] = TMP2573;
		res_388146 += 1;
	} LA2: ;
	LOC3 = 0;
	LOC3 = len_189264(params);
	(*(*c).Prc).Maxslots = ((LOC3 >= 1) ? LOC3 : 1);
}

N_NIMCALL(NIM_BOOL, isownedby_385442)(tsym188833* a_385444, tsym188833* b) {
	NIM_BOOL result;
	tsym188833* a;
	result = 0;
	a = (*a_385444).Owner;
	while (1) {
		NIM_BOOL LOC2;
		LOC2 = 0;
		LOC2 = !((a == NIM_NIL));
		if (!(LOC2)) goto LA3;
		LOC2 = !(((*a).Kind == ((NU8) 6)));
		LA3: ;
		if (!LOC2) goto LA1;
		{
			if (!(a == b)) goto LA6;
			result = NIM_TRUE;
			goto BeforeRet;
		}
		LA6: ;
		a = (*a).Owner;
	} LA1: ;
	BeforeRet: ;
	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;
}

N_NOINLINE(void, cannoteval_385437)(tnode188803* n) {
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = rendertree_211051(n, 0);
	LOC1 = rawNewString(LOC2->Sup.len + 33);
appendString(LOC1, ((NimStringDesc*) &TMP2575));
appendString(LOC1, LOC2);
	globalerror_165558((*n).Info, ((NU16) 4), LOC1);
}

N_NIMCALL(void, checkcaneval_385510)(tctx249037* c, tnode188803* n) {
	tsym188833* s;
	s = (*n).kindU.S4.Sym;
	{
		if (!((*s).Position == 0)) goto LA3;
		{
			NIM_BOOL LOC7;
			NIM_BOOL LOC8;
			NIM_BOOL LOC10;
			LOC7 = 0;
			LOC8 = 0;
			LOC8 = ((2856 &(1<<(((*s).Kind)&31)))!=0);
			if (!(LOC8)) goto LA9;
			LOC10 = 0;
			LOC10 = isownedby_385442(s, (*(*c).Prc).Sym);
			LOC8 = !(LOC10);
			LA9: ;
			LOC7 = LOC8;
			if (!(LOC7)) goto LA11;
			LOC7 = !(((*s).Owner == (*c).Module));
			LA11: ;
			if (!LOC7) goto LA12;
			cannoteval_385437(n);
		}
		LA12: ;
	}
	LA3: ;
}

N_NIMCALL(void, importcsym_385856)(tctx249037* c, tlineinfo163527 info, tsym188833* s) {
	localerror_165571(info, ((NU16) 4), ((NimStringDesc*) &TMP2576));
}

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(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(void, getnullvalueaux_386392)(tnode188803* obj, tnode188803* result) {
	switch ((*obj).Kind) {
	case ((NU8) 136):
	{
		NI i_386408;
		NI HEX3Atmp_386478;
		NI LOC2;
		NI res_386480;
		i_386408 = 0;
		HEX3Atmp_386478 = 0;
		LOC2 = 0;
		LOC2 = sonslen_189181(obj);
		HEX3Atmp_386478 = (NI32)(LOC2 - 1);
		res_386480 = 0;
		while (1) {
			if (!(res_386480 <= HEX3Atmp_386478)) goto LA3;
			i_386408 = res_386480;
			getnullvalueaux_386392((*obj).kindU.S6.Sons->data[i_386408], result);
			res_386480 += 1;
		} LA3: ;
	}
	break;
	case ((NU8) 137):
	{
		NI i_386449;
		NI HEX3Atmp_386482;
		NI LOC5;
		NI res_386484;
		getnullvalueaux_386392((*obj).kindU.S6.Sons->data[0], result);
		i_386449 = 0;
		HEX3Atmp_386482 = 0;
		LOC5 = 0;
		LOC5 = sonslen_189181(obj);
		HEX3Atmp_386482 = (NI32)(LOC5 - 1);
		res_386484 = 1;
		while (1) {
			tnode188803* LOC7;
			if (!(res_386484 <= HEX3Atmp_386482)) goto LA6;
			i_386449 = res_386484;
			LOC7 = 0;
			LOC7 = lastson_189189((*obj).kindU.S6.Sons->data[i_386449]);
			getnullvalueaux_386392(LOC7, result);
			res_386484 += 1;
		} LA6: ;
	}
	break;
	case ((NU8) 3):
	{
		tnode188803* LOC9;
		LOC9 = 0;
		LOC9 = getnullvalue_386003((*(*obj).kindU.S4.Sym).Typ, (*result).Info);
		addson_189207(result, LOC9);
	}
	break;
	default:
	{
		internalerror_165591((*result).Info, ((NimStringDesc*) &TMP2577));
	}
	break;
	}
}

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;
}

N_NIMCALL(tnode188803*, getnullvalue_386003)(ttype188837* typ, tlineinfo163527 info) {
	tnode188803* result;
	ttype188837* t;
	result = 0;
	t = skiptypes_192793(typ, IL64(211106233624576));
	result = emptynode_189727;
	switch ((*t).Kind) {
	case ((NU8) 1):
	case ((NU8) 14):
	case ((NU8) 2):
	case ((NU8) 31) ... ((NU8) 35):
	{
		result = newnodeit_189104(((NU8) 6), info, t);
	}
	break;
	case ((NU8) 40) ... ((NU8) 44):
	{
		result = newnodeit_189104(((NU8) 11), info, t);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		result = newnodeit_189104(((NU8) 16), info, t);
	}
	break;
	case ((NU8) 23):
	case ((NU8) 26):
	case ((NU8) 21):
	case ((NU8) 29):
	case ((NU8) 24):
	case ((NU8) 28):
	case ((NU8) 6):
	case ((NU8) 7):
	case ((NU8) 8):
	case ((NU8) 59):
	case ((NU8) 22):
	{
		result = newnodeit_189104(((NU8) 23), info, t);
	}
	break;
	case ((NU8) 25):
	{
		{
			if (!!(((*t).Callconv == ((NU8) 8)))) goto LA8;
			result = newnodeit_189104(((NU8) 23), info, t);
		}
		goto LA6;
		LA8: ;
		{
			tnode188803* LOC11;
			tnode188803* LOC12;
			result = newnodeit_189104(((NU8) 37), info, t);
			LOC11 = 0;
			LOC11 = newnodeit_189104(((NU8) 23), info, t);
			add_189390(result, LOC11);
			LOC12 = 0;
			LOC12 = newnodeit_189104(((NU8) 23), info, t);
			add_189390(result, LOC12);
		}
		LA6: ;
	}
	break;
	case ((NU8) 17):
	{
		ttype188837* base;
		result = newnodeit_189104(((NU8) 37), info, t);
		getnullvalueaux_386392((*t).N, result);
		base = (*t).Sons->data[0];
		while (1) {
			ttype188837* LOC15;
			if (!!((base == NIM_NIL))) goto LA14;
			LOC15 = 0;
			LOC15 = skiptypes_192793(base, IL64(211106247215360));
			getnullvalueaux_386392((*LOC15).N, result);
			base = (*base).Sons->data[0];
		} LA14: ;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		NI i_386553;
		NI HEX3Atmp_386574;
		NI64 LOC17;
		NI res_386576;
		result = newnodeit_189104(((NU8) 41), info, t);
		i_386553 = 0;
		HEX3Atmp_386574 = 0;
		LOC17 = 0;
		LOC17 = lengthord_223010(t);
		HEX3Atmp_386574 = (NI32)(((NI) (LOC17)) - 1);
		res_386576 = 0;
		while (1) {
			ttype188837* LOC19;
			tnode188803* LOC20;
			if (!(res_386576 <= HEX3Atmp_386574)) goto LA18;
			i_386553 = res_386576;
			LOC19 = 0;
			LOC19 = elemtype_223559(t);
			LOC20 = 0;
			LOC20 = getnullvalue_386003(LOC19, info);
			addson_189207(result, LOC20);
			res_386576 += 1;
		} LA18: ;
	}
	break;
	case ((NU8) 18):
	{
		NI i_386566;
		NI HEX3Atmp_386578;
		NI LOC22;
		NI res_386580;
		result = newnodeit_189104(((NU8) 37), info, t);
		i_386566 = 0;
		HEX3Atmp_386578 = 0;
		LOC22 = 0;
		LOC22 = sonslen_189185(t);
		HEX3Atmp_386578 = (NI32)(LOC22 - 1);
		res_386580 = 0;
		while (1) {
			tnode188803* LOC24;
			if (!(res_386580 <= HEX3Atmp_386578)) goto LA23;
			i_386566 = res_386580;
			LOC24 = 0;
			LOC24 = getnullvalue_386003((*t).Sons->data[i_386566], info);
			addson_189207(result, LOC24);
			res_386580 += 1;
		} LA23: ;
	}
	break;
	case ((NU8) 19):
	{
		result = newnodeit_189104(((NU8) 39), info, t);
	}
	break;
	default:
	{
		NimStringDesc* LOC27;
		LOC27 = 0;
		LOC27 = rawNewString(reprEnum((*t).Kind, (&NTI188240))->Sup.len + 14);
appendString(LOC27, ((NimStringDesc*) &TMP2578));
appendString(LOC27, reprEnum((*t).Kind, (&NTI188240)));
		internalerror_165606(LOC27);
	}
	break;
	}
	return result;
}

N_NIMCALL(NU8, getslotkind_380425)(ttype188837* t) {
	NU8 result;
	ttype188837* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = skiptypes_192793(t, IL64(211106233624576));
	switch ((*LOC1).Kind) {
	case ((NU8) 1):
	case ((NU8) 2):
	case ((NU8) 14):
	case ((NU8) 15):
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 40) ... ((NU8) 44):
	{
		result = ((NU8) 4);
	}
	break;
	case ((NU8) 28):
	case ((NU8) 29):
	{
		result = ((NU8) 6);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		result = ((NU8) 5);
	}
	break;
	default:
	{
		result = ((NU8) 7);
	}
	break;
	}
	return result;
}

N_NIMCALL(NI, gettemp_380451)(tctx249037* c_380453, ttype188837* typ) {
	NI result;
	pprocHEX3Aobjecttype249216* c;
	NU8 k;
	NI i_380479;
	NI HEX3Atmp_380524;
	NI res_380526;
	result = 0;
	c = (*c_380453).Prc;
	{
		if (!typ == 0) goto LA3;
		k = ((NU8) 7);
	}
	goto LA1;
	LA3: ;
	{
		k = getslotkind_380425(typ);
	}
	LA1: ;
	i_380479 = 0;
	HEX3Atmp_380524 = 0;
	HEX3Atmp_380524 = (NI32)((*c).Maxslots - 1);
	res_380526 = 0;
	while (1) {
		if (!(res_380526 <= HEX3Atmp_380524)) goto LA6;
		i_380479 = res_380526;
		{
			NIM_BOOL LOC9;
			LOC9 = 0;
			LOC9 = ((*c).Slots[(i_380479)- 0].Field1 == k);
			if (!(LOC9)) goto LA10;
			LOC9 = !((*c).Slots[(i_380479)- 0].Field0);
			LA10: ;
			if (!LOC9) goto LA11;
			(*c).Slots[(i_380479)- 0].Field0 = NIM_TRUE;
			result = ((NI) (i_380479));
			goto BeforeRet;
		}
		LA11: ;
		res_380526 += 1;
	} LA6: ;
	{
		NI i_380499;
		NI HEX3Atmp_380528;
		NI res_380530;
		if (!(40 <= (*c).Maxslots)) goto LA15;
		i_380499 = 0;
		HEX3Atmp_380528 = 0;
		HEX3Atmp_380528 = (NI32)((*c).Maxslots - 1);
		res_380530 = 0;
		while (1) {
			if (!(res_380530 <= HEX3Atmp_380528)) goto LA17;
			i_380499 = res_380530;
			{
				if (!!((*c).Slots[(i_380499)- 0].Field0)) goto LA20;
				(*c).Slots[(i_380499)- 0].Field0 = NIM_TRUE;
				(*c).Slots[(i_380499)- 0].Field1 = k;
				result = ((NI) (i_380499));
				goto BeforeRet;
			}
			LA20: ;
			res_380530 += 1;
		} LA17: ;
	}
	LA15: ;
	{
		if (!(255 <= (*c).Maxslots)) goto LA24;
		internalerror_165606(((NimStringDesc*) &TMP2579));
	}
	LA24: ;
	result = ((NI) ((*c).Maxslots));
	(*c).Slots[((*c).Maxslots)- 0].Field0 = NIM_TRUE;
	(*c).Slots[((*c).Maxslots)- 0].Field1 = k;
	(*c).Maxslots += 1;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, genx_380876)(tctx249037* c, tnode188803* n, NU8 flags) {
	NI result;
	NI tmp;
	result = 0;
	tmp = -1;
	gen_380834(c, n, &tmp, flags);
	{
		NimStringDesc* LOC5;
		if (!!((0 <= ((NI) (tmp))))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_165714(TMP2580);
		internalerror_165606(LOC5);
	}
	LA3: ;
	result = ((NI) (tmp));
	return result;
}

N_NIMCALL(void, gabc_379683)(tctx249037* ctx, tnode188803* n, NU8 opc, NI a, NI b, NI c) {
	NU32 ins;
	ins = (NU32)((NU32)((NU32)(((NU32) (opc)) | (NU32)((NU32)(((NU32) (a))) << (NU32)(((NU32) 8)))) | (NU32)((NU32)(((NU32) (b))) << (NU32)(((NU32) 16)))) | (NU32)((NU32)(((NU32) (c))) << (NU32)(((NU32) 24))));
	(*ctx).Code = (TY249229*) incrSeq(&((*ctx).Code)->Sup, sizeof(NU32));
	(*ctx).Code->data[(*ctx).Code->Sup.len-1] = ins;
	(*ctx).Debug = (TY164208*) incrSeq(&((*ctx).Debug)->Sup, sizeof(tlineinfo163527));
	(*ctx).Debug->data[(*ctx).Debug->Sup.len-1] = (*n).Info;
}

N_NIMCALL(void, freetemp_380538)(tctx249037* c_380540, NI r) {
	pprocHEX3Aobjecttype249216* c;
	c = (*c_380540).Prc;
	{
		if (!(((NU8) 3) <= (*c).Slots[(r)- 0].Field1)) goto LA3;
		(*c).Slots[(r)- 0].Field0 = NIM_FALSE;
	}
	LA3: ;
}

N_NIMCALL(void, genglobalinit_386008)(tctx249037* c, tnode188803* n, tsym188833* s) {
	tnode188803* LOC1;
	NI dest;
	NI tmp;
	LOC1 = 0;
	LOC1 = getnullvalue_386003((*s).Typ, (*n).Info);
	add_189390((*c).Globals, LOC1);
	(*s).Position = len_189264((*c).Globals);
	dest = gettemp_380451(c, (*s).Typ);
	gabx_380098(c, n, ((NU8) 147), dest, (*s).Position);
	tmp = genx_380876(c, (*s).Ast, 0);
	gabc_379683(c, n, ((NU8) 18), dest, tmp, 0);
	freetemp_380538(c, dest);
	freetemp_380538(c, tmp);
}

N_NIMCALL(NIM_BOOL, fitsregister_385046)(ttype188837* t) {
	NIM_BOOL result;
	ttype188837* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = skiptypes_192793(t, IL64(211106232576000));
	result = ((*LOC1).Kind == ((NU8) 20) || (*LOC1).Kind == ((NU8) 14) || (*LOC1).Kind == ((NU8) 1) || (*LOC1).Kind >= ((NU8) 31) && (*LOC1).Kind <= ((NU8) 44));
	return result;
}

N_NIMCALL(void, setslot_385403)(tctx249037* c, tsym188833* v) {
	{
		if (!((*v).Position == 0)) goto LA3;
		{
			if (!((*(*c).Prc).Maxslots == 0)) goto LA7;
			(*(*c).Prc).Maxslots = 1;
		}
		LA7: ;
		(*v).Position = (*(*c).Prc).Maxslots;
		(*(*c).Prc).Slots[((*v).Position)- 0].Field0 = NIM_TRUE;
		{
			if (!((*v).Kind == ((NU8) 9))) goto LA11;
			(*(*c).Prc).Slots[((*v).Position)- 0].Field1 = ((NU8) 2);
		}
		goto LA9;
		LA11: ;
		{
			(*(*c).Prc).Slots[((*v).Position)- 0].Field1 = ((NU8) 1);
		}
		LA9: ;
		(*(*c).Prc).Maxslots += 1;
	}
	LA3: ;
}

N_NIMCALL(NU8, whichasgnopc_385295)(tnode188803* n) {
	NU8 result;
	ttype188837* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = skiptypes_192793((*n).Typ, IL64(211106233624576));
	switch ((*LOC1).Kind) {
	case ((NU8) 1):
	case ((NU8) 2):
	case ((NU8) 14):
	case ((NU8) 15):
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 40) ... ((NU8) 44):
	{
		result = ((NU8) 4);
	}
	break;
	case ((NU8) 28):
	case ((NU8) 29):
	{
		result = ((NU8) 5);
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		result = ((NU8) 6);
	}
	break;
	case ((NU8) 22):
	case ((NU8) 5):
	case ((NU8) 23):
	{
		result = ((NU8) 7);
	}
	break;
	default:
	{
		result = ((NU8) 8);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, genasgn_385359)(tctx249037* c, NI dest, tnode188803* ri, NIM_BOOL requirescopy) {
	NI tmp;
	NU8 LOC1;
	tmp = genx_380876(c, ri, 0);
	LOC1 = 0;
	LOC1 = whichasgnopc_385295(ri);
	gabc_379683(c, ri, LOC1, ((NI) (dest)), tmp, 0);
	freetemp_380538(c, tmp);
}

N_NIMCALL(void, genrdvar_386017)(tctx249037* c, tnode188803* n, NI* dest, NU8 flags) {
	tsym188833* s;
	s = (*n).kindU.S4.Sym;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*s).Flags &(1<<((((NU8) 3))&31)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*s).Kind == ((NU8) 21)));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NIM_BOOL LOC9;
			LOC9 = 0;
			LOC9 = (((*s).Flags &(1<<((((NU8) 23))&31)))!=0);
			if (LOC9) goto LA10;
			LOC9 = ((*c).Mode == ((NU8) 0));
			LA10: ;
			if (!LOC9) goto LA11;
		}
		goto LA7;
		LA11: ;
		{
			if (!((*s).Position == 0)) goto LA14;
			cannoteval_385437(n);
		}
		goto LA7;
		LA14: ;
		LA7: ;
		{
			if (!((*s).Position == 0)) goto LA18;
			{
				if (!(((*s).Flags &(1<<((((NU8) 5))&31)))!=0)) goto LA22;
				importcsym_385856(c, (*n).Info, s);
			}
			goto LA20;
			LA22: ;
			{
				genglobalinit_386008(c, n, s);
			}
			LA20: ;
		}
		LA18: ;
		{
			NI LOC29;
			if (!(((NI) ((*dest))) < 0)) goto LA27;
			LOC29 = 0;
			LOC29 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC29));
		}
		LA27: ;
		{
			NIM_BOOL LOC32;
			NI cc;
			LOC32 = 0;
			LOC32 = !(((flags &(1<<((((NU8) 1))&7)))!=0));
			if (!(LOC32)) goto LA33;
			LOC32 = fitsregister_385046((*s).Typ);
			LA33: ;
			if (!LOC32) goto LA34;
			cc = gettemp_380451(c, (*n).Typ);
			gabx_380098(c, n, ((NU8) 147), cc, (*s).Position);
			gabc_379683(c, n, ((NU8) 10), ((NI) ((*dest))), cc, 0);
			freetemp_380538(c, cc);
		}
		goto LA30;
		LA34: ;
		{
			gabx_380098(c, n, ((NU8) 147), ((NI) ((*dest))), (*s).Position);
		}
		LA30: ;
	}
	goto LA1;
	LA5: ;
	{
		{
			NIM_BOOL LOC40;
			LOC40 = 0;
			LOC40 = ((*s).Kind == ((NU8) 21));
			if (!(LOC40)) goto LA41;
			LOC40 = ((*c).Mode == ((NU8) 0));
			LA41: ;
			if (!LOC40) goto LA42;
			setslot_385403(c, s);
		}
		LA42: ;
		{
			NIM_BOOL LOC46;
			NIM_BOOL LOC48;
			LOC46 = 0;
			LOC46 = (0 < (*s).Position);
			if (LOC46) goto LA47;
			LOC48 = 0;
			LOC48 = ((*s).Position == 0);
			if (!(LOC48)) goto LA49;
			LOC48 = ((2056 &(1<<(((*s).Kind)&31)))!=0);
			LA49: ;
			LOC46 = LOC48;
			LA47: ;
			if (!LOC46) goto LA50;
			{
				if (!(((NI) ((*dest))) < 0)) goto LA54;
				(*dest) = ((NI) ((NI32)((*s).Position + ((NI) (((*s).Kind == ((NU8) 3)))))));
				{
					NimStringDesc* LOC60;
					if (!!(((*(*c).Prc).Slots[((*dest))- 0].Field1 < ((NU8) 3)))) goto LA58;
					LOC60 = 0;
					LOC60 = HEX24_165714(TMP2582);
					internalerror_165606(LOC60);
				}
				LA58: ;
			}
			goto LA52;
			LA54: ;
			{
				genasgn_385359(c, (*dest), n, (((NU8) 3) <= (*(*c).Prc).Slots[((*dest))- 0].Field1));
			}
			LA52: ;
		}
		goto LA44;
		LA50: ;
		{
			cannoteval_385437(n);
		}
		LA44: ;
	}
	LA1: ;
}

static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
	NIM_BOOL result;
	NIM_BOOL LOC11;
	int LOC13;
	result = 0;
	{
		if (!(a == b)) goto LA3;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = (a == NIM_NIL);
		if (LOC7) goto LA8;
		LOC7 = (b == NIM_NIL);
		LA8: ;
		if (!LOC7) goto LA9;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA9: ;
	LOC11 = 0;
	LOC11 = ((*a).Sup.len == (*b).Sup.len);
	if (!(LOC11)) goto LA12;
	LOC13 = 0;
	LOC13 = memcmp(((NCSTRING) ((*a).data)), ((NCSTRING) ((*b).data)), (NI32)((*a).Sup.len * 1));
	LOC11 = (LOC13 == ((NI32) 0));
	LA12: ;
	result = LOC11;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sameconstant_382014)(tnode188803* a, tnode188803* b) {
	NIM_BOOL result;
	result = 0;
	result = NIM_FALSE;
	{
		if (!(a == b)) goto LA3;
		result = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		NIM_BOOL LOC7;
		LOC6 = 0;
		LOC7 = 0;
		LOC7 = !((a == NIM_NIL));
		if (!(LOC7)) goto LA8;
		LOC7 = !((b == NIM_NIL));
		LA8: ;
		LOC6 = LOC7;
		if (!(LOC6)) goto LA9;
		LOC6 = ((*a).Kind == (*b).Kind);
		LA9: ;
		if (!LOC6) goto LA10;
		switch ((*a).Kind) {
		case ((NU8) 3):
		{
			result = ((*a).kindU.S4.Sym == (*b).kindU.S4.Sym);
		}
		break;
		case ((NU8) 2):
		{
			result = ((*(*a).kindU.S5.Ident).Sup.Id == (*(*b).kindU.S5.Ident).Sup.Id);
		}
		break;
		case ((NU8) 5) ... ((NU8) 10):
		{
			result = ((*a).kindU.S1.Intval == (*b).kindU.S1.Intval);
		}
		break;
		case ((NU8) 16) ... ((NU8) 18):
		{
			result = ((*a).kindU.S2.Floatval == (*b).kindU.S2.Floatval);
		}
		break;
		case ((NU8) 20) ... ((NU8) 22):
		{
			result = eqStrings((*a).kindU.S3.Strval, (*b).kindU.S3.Strval);
		}
		break;
		case ((NU8) 4):
		{
			result = ((*a).Typ == (*b).Typ);
		}
		break;
		case ((NU8) 1):
		case ((NU8) 23):
		{
			result = NIM_TRUE;
		}
		break;
		default:
		{
			{
				NI LOC22;
				NI LOC23;
				NI i_382262;
				NI HEX3Atmp_382291;
				NI LOC26;
				NI res_382293;
				LOC22 = 0;
				LOC22 = sonslen_189181(a);
				LOC23 = 0;
				LOC23 = sonslen_189181(b);
				if (!(LOC22 == LOC23)) goto LA24;
				i_382262 = 0;
				HEX3Atmp_382291 = 0;
				LOC26 = 0;
				LOC26 = sonslen_189181(a);
				HEX3Atmp_382291 = (NI32)(LOC26 - 1);
				res_382293 = 0;
				while (1) {
					if (!(res_382293 <= HEX3Atmp_382291)) goto LA27;
					i_382262 = res_382293;
					{
						NIM_BOOL LOC30;
						LOC30 = 0;
						LOC30 = sameconstant_382014((*a).kindU.S6.Sons->data[i_382262], (*b).kindU.S6.Sons->data[i_382262]);
						if (!!(LOC30)) goto LA31;
						goto BeforeRet;
					}
					LA31: ;
					res_382293 += 1;
				} LA27: ;
				result = NIM_TRUE;
			}
			LA24: ;
		}
		break;
		}
	}
	goto LA1;
	LA10: ;
	LA1: ;
	BeforeRet: ;
	return result;
}

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

N_NIMCALL(tnode188803*, canonvalue_381788)(tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	return result;
}

N_NIMCALL(NI, rawgenliteral_381794)(tctx249037* c, tnode188803* n) {
	NI result;
	tnode188803* LOC1;
	result = 0;
	result = len_189264((*c).Constants);
	LOC1 = 0;
	LOC1 = canonvalue_381788(n);
	add_189390((*c).Constants, LOC1);
	{
		NimStringDesc* LOC6;
		if (!!((result < 32767))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX24_165714(TMP2583);
		internalerror_165606(LOC6);
	}
	LA4: ;
	return result;
}

N_NIMCALL(NI, genliteral_382298)(tctx249037* c, tnode188803* n) {
	NI result;
	NI i_382324;
	NI HEX3Atmp_382325;
	NI LOC1;
	NI res_382327;
	result = 0;
	i_382324 = 0;
	HEX3Atmp_382325 = 0;
	LOC1 = 0;
	LOC1 = len_189264((*c).Constants);
	HEX3Atmp_382325 = LOC1 - 1;
	res_382327 = 0;
	while (1) {
		if (!(res_382327 <= HEX3Atmp_382325)) goto LA2;
		i_382324 = res_382327;
		{
			tnode188803* LOC5;
			NIM_BOOL LOC6;
			LOC5 = 0;
			LOC5 = HEX5BHEX5D_189694((*c).Constants, i_382324);
			LOC6 = 0;
			LOC6 = sameconstant_382014(LOC5, n);
			if (!LOC6) goto LA7;
			result = i_382324;
			goto BeforeRet;
		}
		LA7: ;
		res_382327 += 1;
	} LA2: ;
	result = rawgenliteral_381794(c, n);
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, genlit_385827)(tctx249037* c, tnode188803* n, NI* dest) {
	NU8 opc;
	NI lit;
	opc = ((NU8) 145);
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	goto LA1;
	LA3: ;
	{
		if (!((*(*c).Prc).Slots[((*dest))- 0].Field1 == ((NU8) 1))) goto LA7;
		opc = ((NU8) 146);
	}
	goto LA1;
	LA7: ;
	LA1: ;
	lit = genliteral_382298(c, n);
	gabx_380098(c, n, opc, ((NI) ((*dest))), lit);
}

N_NIMCALL(void, gentypelit_385847)(tctx249037* c, ttype188837* t, NI* dest) {
	tnode188803* n;
	n = newnode_189065(((NU8) 4));
	asgnRefNoCycle((void**) &(*n).Typ, t);
	genlit_385827(c, n, dest);
}

N_NIMCALL(void, patch_380355)(tctx249037* c, NI p_380358) {
	NI p;
	NI diff;
	NU32 oldinstr;
	p = p_380358;
	diff = (NI32)((*c).Code->Sup.len - p);
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		LOC3 = 0;
		LOC3 = (-32767 < diff);
		if (!(LOC3)) goto LA4;
		LOC3 = (diff < 32767);
		LA4: ;
		if (!!(LOC3)) goto LA5;
		LOC7 = 0;
		LOC7 = HEX24_165714(TMP2585);
		internalerror_165606(LOC7);
	}
	LA5: ;
	oldinstr = (*c).Code->data[p];
	(*c).Code->data[p] = (NU32)(((NU32) ((NU32)(oldinstr & ((NU32) 65535)))) | (NU32)((NU32)(((NU32) ((NI32)(diff + 32768)))) << (NU32)(((NU32) 16))));
}

N_NIMCALL(void, genandor_381749)(tctx249037* c, tnode188803* n, NU8 opc, NI* dest) {
	NI l1;
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	gen_380834(c, (*n).kindU.S6.Sons->data[1], dest, 0);
	l1 = xjmp_380279(c, n, opc, ((NI) ((*dest))));
	gen_380834(c, (*n).kindU.S6.Sons->data[2], dest, 0);
	patch_380355(c, l1);
}

N_NIMCALL(void, gabi_379899)(tctx249037* c, tnode188803* n, NU8 opc, NI a, NI b, NI64 imm) {
	NU32 ins;
	ins = (NU32)((NU32)((NU32)(((NU32) (opc)) | (NU32)((NU32)(((NU32) (a))) << (NU32)(((NU32) 8)))) | (NU32)((NU32)(((NU32) (b))) << (NU32)(((NU32) 16)))) | (NU32)((NU32)(((NU32) ((NI64)(imm + 128)))) << (NU32)(((NU32) 24))));
	(*c).Code = (TY249229*) incrSeq(&((*c).Code)->Sup, sizeof(NU32));
	(*c).Code->data[(*c).Code->Sup.len-1] = ins;
	(*c).Debug = (TY164208*) incrSeq(&((*c).Debug)->Sup, sizeof(tlineinfo163527));
	(*c).Debug->data[(*c).Debug->Sup.len-1] = (*n).Info;
}

N_NIMCALL(NIM_BOOL, isint8lit_384011)(tnode188803* n) {
	NIM_BOOL result;
	result = 0;
	{
		NIM_BOOL LOC5;
		if (!((*n).Kind >= ((NU8) 5) && (*n).Kind <= ((NU8) 15))) goto LA3;
		LOC5 = 0;
		LOC5 = (-128 <= (*n).kindU.S1.Intval);
		if (!(LOC5)) goto LA6;
		LOC5 = ((*n).kindU.S1.Intval <= 127);
		LA6: ;
		result = LOC5;
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, genbinaryabc_383616)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc) {
	NI tmp;
	NI tmp2;
	tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
	tmp2 = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	gabc_379683(c, n, opc, ((NI) ((*dest))), tmp, tmp2);
	freetemp_380538(c, tmp);
	freetemp_380538(c, tmp2);
}

N_NIMCALL(void, gennarrow_383656)(tctx249037* c, tnode188803* n, NI dest) {
	ttype188837* t;
	t = skiptypes_192793((*n).Typ, IL64(211106240964608));
	{
		if (!((*t).Kind >= ((NU8) 41) && (*t).Kind <= ((NU8) 43))) goto LA3;
		gabc_379683(c, n, ((NU8) 88), ((NI) (dest)), ((NI) ((NI64)((*t).Size * 8))), 0);
	}
	goto LA1;
	LA3: ;
	{
		if (!((*t).Kind >= ((NU8) 32) && (*t).Kind <= ((NU8) 34))) goto LA6;
		gabc_379683(c, n, ((NU8) 87), ((NI) (dest)), ((NI) ((NI64)((*t).Size * 8))), 0);
	}
	goto LA1;
	LA6: ;
	LA1: ;
}

N_NIMCALL(void, genaddsubint_384115)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc) {
	{
		NIM_BOOL LOC3;
		NI tmp;
		LOC3 = 0;
		LOC3 = isint8lit_384011((*n).kindU.S6.Sons->data[2]);
		if (!LOC3) goto LA4;
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		{
			NI LOC10;
			if (!(((NI) ((*dest))) < 0)) goto LA8;
			LOC10 = 0;
			LOC10 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC10));
		}
		LA8: ;
		gabi_379899(c, n, opc + 1, ((NI) ((*dest))), tmp, (*(*n).kindU.S6.Sons->data[2]).kindU.S1.Intval);
		freetemp_380538(c, tmp);
	}
	goto LA1;
	LA4: ;
	{
		genbinaryabc_383616(c, n, dest, opc);
	}
	LA1: ;
	gennarrow_383656(c, n, (*dest));
}

static N_INLINE(void, unused_382332)(tnode188803* n, NI x) {
	{
		if (!(0 <= ((NI) (x)))) goto LA3;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2586));
	}
	LA3: ;
}

N_NIMCALL(NI, genfield_383158)(tnode188803* n) {
	NI result;
	tsym188833* s;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*n).Kind == ((NU8) 3)));
		if (LOC3) goto LA4;
		LOC3 = !(((*(*n).kindU.S4.Sym).Kind == ((NU8) 19)));
		LA4: ;
		if (!LOC3) goto LA5;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2587));
	}
	LA5: ;
	s = (*n).kindU.S4.Sym;
	{
		NimStringDesc* LOC11;
		if (!(255 < (*s).Position)) goto LA9;
		LOC11 = 0;
		LOC11 = rawNewString((*(*s).Name).S->Sup.len + 44);
appendString(LOC11, ((NimStringDesc*) &TMP2588));
appendString(LOC11, (*(*s).Name).S);
		internalerror_165591((*n).Info, LOC11);
	}
	LA9: ;
	result = ((NI) ((*s).Position));
	return result;
}

N_NIMCALL(void, genasgnpatch_383214)(tctx249037* c, tnode188803* le, NI value) {
	switch ((*le).Kind) {
	case ((NU8) 42):
	{
		NI dest;
		NI idx;
		dest = genx_380876(c, (*le).kindU.S6.Sons->data[0], 2);
		idx = genx_380876(c, (*le).kindU.S6.Sons->data[1], 0);
		gabc_379683(c, le, ((NU8) 12), dest, idx, value);
		freetemp_380538(c, dest);
		freetemp_380538(c, idx);
	}
	break;
	case ((NU8) 45):
	case ((NU8) 46):
	{
		tnode188803* left;
		NI dest;
		NI idx;
		{
			if (!((*le).Kind == ((NU8) 45))) goto LA5;
			left = le;
		}
		goto LA3;
		LA5: ;
		{
			left = (*le).kindU.S6.Sons->data[0];
		}
		LA3: ;
		dest = genx_380876(c, (*left).kindU.S6.Sons->data[0], 2);
		idx = genfield_383158((*left).kindU.S6.Sons->data[1]);
		gabc_379683(c, left, ((NU8) 14), dest, idx, value);
		freetemp_380538(c, dest);
	}
	break;
	case ((NU8) 47):
	case ((NU8) 65):
	{
		NI dest;
		dest = genx_380876(c, (*le).kindU.S6.Sons->data[0], 2);
		gabc_379683(c, le, ((NU8) 18), dest, value, 0);
		freetemp_380538(c, dest);
	}
	break;
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC12;
			NI dest;
			LOC12 = 0;
			LOC12 = (((*(*le).kindU.S4.Sym).Flags &(1<<((((NU8) 3))&31)))!=0);
			if (!(LOC12)) goto LA13;
			LOC12 = !(((*(*le).kindU.S4.Sym).Kind == ((NU8) 21)));
			LA13: ;
			if (!LOC12) goto LA14;
			dest = genx_380876(c, le, 2);
			gabc_379683(c, le, ((NU8) 18), dest, value, 0);
			freetemp_380538(c, dest);
		}
		LA14: ;
	}
	break;
	default:
	{
	}
	break;
	}
}

N_NIMCALL(NIM_BOOL, needsasgnpatch_383093)(tnode188803* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	NIM_BOOL LOC5;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*n).Kind == ((NU8) 42) || (*n).Kind == ((NU8) 45) || (*n).Kind == ((NU8) 46) || (*n).Kind == ((NU8) 47) || (*n).Kind == ((NU8) 65));
	if (LOC1) goto LA2;
	LOC3 = 0;
	LOC3 = ((*n).Kind == ((NU8) 3));
	if (!(LOC3)) goto LA4;
	LOC5 = 0;
	LOC5 = (((*(*n).kindU.S4.Sym).Flags &(1<<((((NU8) 3))&31)))!=0);
	if (!(LOC5)) goto LA6;
	LOC5 = !(((*(*n).kindU.S4.Sym).Kind == ((NU8) 21)));
	LA6: ;
	LOC3 = LOC5;
	LA4: ;
	LOC1 = LOC3;
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NI, gentype_382494)(tctx249037* c, ttype188837* typ) {
	NI result;
	NI i_382548;
	ttype188837* t_382549;
	ttypeseq188835* HEX3Atmp_382588;
	NI i_382590;
	result = 0;
	i_382548 = 0;
	t_382549 = 0;
	HEX3Atmp_382588 = 0;
	HEX3Atmp_382588 = (*c).Types;
	i_382590 = 0;
	while (1) {
		if (!(i_382590 < HEX3Atmp_382588->Sup.len)) goto LA1;
		i_382548 = i_382590;
		t_382549 = HEX3Atmp_382588->data[i_382590];
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = sametype_228116(t_382549, typ, 0);
			if (!LOC4) goto LA5;
			result = i_382548;
			goto BeforeRet;
		}
		LA5: ;
		i_382590 += 1;
	} LA1: ;
	result = (*c).Types->Sup.len;
	(*c).Types = (ttypeseq188835*) incrSeq(&((*c).Types)->Sup, sizeof(ttype188837*));
	asgnRefNoCycle((void**) &(*c).Types->data[(*c).Types->Sup.len-1], typ);
	{
		NimStringDesc* LOC11;
		if (!!((result <= 32767))) goto LA9;
		LOC11 = 0;
		LOC11 = HEX24_165714(TMP2589);
		internalerror_165606(LOC11);
	}
	LA9: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, gennew_383361)(tctx249037* c, tnode188803* n) {
	NI dest;
	ttype188837* LOC7;
	NI LOC8;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = needsasgnpatch_383093((*n).kindU.S6.Sons->data[1]);
		if (!LOC3) goto LA4;
		dest = gettemp_380451(c, (*(*n).kindU.S6.Sons->data[1]).Typ);
	}
	goto LA1;
	LA4: ;
	{
		dest = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
	}
	LA1: ;
	LOC7 = 0;
	LOC7 = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106240964608));
	LOC8 = 0;
	LOC8 = gentype_382494(c, (*LOC7).Sons->data[0]);
	gabx_380098(c, n, ((NU8) 141), dest, LOC8);
	genasgnpatch_383214(c, (*n).kindU.S6.Sons->data[1], dest);
	freetemp_380538(c, dest);
}

N_NIMCALL(void, gennewseq_383456)(tctx249037* c, tnode188803* n) {
	NI dest;
	NI tmp;
	ttype188837* LOC7;
	NI LOC8;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = needsasgnpatch_383093((*n).kindU.S6.Sons->data[1]);
		if (!LOC3) goto LA4;
		dest = gettemp_380451(c, (*(*n).kindU.S6.Sons->data[1]).Typ);
	}
	goto LA1;
	LA4: ;
	{
		dest = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
	}
	LA1: ;
	tmp = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
	LOC7 = 0;
	LOC7 = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106240964608));
	LOC8 = 0;
	LOC8 = gentype_382494(c, LOC7);
	gabx_380098(c, n, ((NU8) 142), dest, LOC8);
	gabx_380098(c, n, ((NU8) 142), tmp, 0);
	freetemp_380538(c, tmp);
	genasgnpatch_383214(c, (*n).kindU.S6.Sons->data[1], dest);
	freetemp_380538(c, dest);
}

N_NIMCALL(void, genunaryabc_383566)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc) {
	NI tmp;
	tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	gabc_379683(c, n, opc, ((NI) ((*dest))), tmp, 0);
	freetemp_380538(c, tmp);
}

N_NIMCALL(void, genunaryabi_383591)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc) {
	NI tmp;
	tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	gabi_379899(c, n, opc, ((NI) ((*dest))), tmp, 0);
	freetemp_380538(c, tmp);
}

N_NIMCALL(void, gensettype_383768)(tctx249037* c, tnode188803* n, NI dest) {
	ttype188837* t;
	t = skiptypes_192793((*n).Typ, IL64(211106232576000));
	{
		NI LOC5;
		if (!((*t).Kind == ((NU8) 19))) goto LA3;
		LOC5 = 0;
		LOC5 = gentype_382494(c, t);
		gabx_380098(c, n, ((NU8) 151), dest, LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, gencard_384207)(tctx249037* c, tnode188803* n, NI* dest) {
	NI tmp;
	tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	gensettype_383768(c, (*n).kindU.S6.Sons->data[1], tmp);
	gabc_379683(c, n, ((NU8) 30), ((NI) ((*dest))), tmp, 0);
	freetemp_380538(c, tmp);
}

N_NIMCALL(void, genbinaryabcnarrow_383750)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc) {
	genbinaryabc_383616(c, n, dest, opc);
	gennarrow_383656(c, n, (*dest));
}

N_NIMCALL(void, gennarrowu_383710)(tctx249037* c, tnode188803* n, NI dest) {
	ttype188837* t;
	t = skiptypes_192793((*n).Typ, IL64(211106240964608));
	{
		if (!((*t).Kind >= ((NU8) 41) && (*t).Kind <= ((NU8) 43) || (*t).Kind >= ((NU8) 32) && (*t).Kind <= ((NU8) 34))) goto LA3;
		gabc_379683(c, n, ((NU8) 88), ((NI) (dest)), ((NI) ((NI64)((*t).Size * 8))), 0);
	}
	LA3: ;
}

N_NIMCALL(void, genbinaryabcnarrowu_383759)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc) {
	genbinaryabc_383616(c, n, dest, opc);
	gennarrowu_383710(c, n, (*dest));
}

N_NIMCALL(void, genconv_384195)(tctx249037* c, tnode188803* n, tnode188803* arg, NI* dest, NU8 opc) {
	NI tmp;
	NI LOC6;
	NI LOC7;
	tmp = genx_380876(c, arg, 0);
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	gabc_379683(c, n, opc, ((NI) ((*dest))), tmp, 0);
	LOC6 = 0;
	LOC6 = gentype_382494(c, (*n).Typ);
	gabx_380098(c, n, opc, 0, LOC6);
	LOC7 = 0;
	LOC7 = gentype_382494(c, (*arg).Typ);
	gabx_380098(c, n, opc, 0, LOC7);
	freetemp_380538(c, tmp);
}

N_NIMCALL(void, genbinaryset_383803)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc) {
	NI tmp;
	NI tmp2;
	tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
	tmp2 = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	gensettype_383768(c, (*n).kindU.S6.Sons->data[1], tmp);
	gensettype_383768(c, (*n).kindU.S6.Sons->data[2], tmp2);
	gabc_379683(c, n, opc, ((NI) ((*dest))), tmp, tmp2);
	freetemp_380538(c, tmp);
	freetemp_380538(c, tmp2);
}

N_NIMCALL(NI, gettemprange_380554)(tctx249037* c_380556, NI n, NU8 kind) {
	NI result;
	pprocHEX3Aobjecttype249216* c;
	NI k_380650;
	NI HEX3Atmp_380671;
	NI res_380673;
	result = 0;
	c = (*c_380556).Prc;
	{
		NIM_BOOL LOC3;
		NI i_380574;
		NI HEX3Atmp_380665;
		NI res_380667;
		LOC3 = 0;
		LOC3 = (40 <= (*c).Maxslots);
		if (LOC3) goto LA4;
		LOC3 = (255 <= (NI32)((*c).Maxslots + n));
		LA4: ;
		if (!LOC3) goto LA5;
		i_380574 = 0;
		HEX3Atmp_380665 = 0;
		HEX3Atmp_380665 = (NI32)((*c).Maxslots - n);
		res_380667 = 0;
		while (1) {
			if (!(res_380667 <= HEX3Atmp_380665)) goto LA7;
			i_380574 = res_380667;
			{
				if (!!((*c).Slots[(i_380574)- 0].Field0)) goto LA10;
				{
					NI j_380586;
					NI HEX3Atmp_380656;
					NI HEX3Atmp_380657;
					NI res_380659;
					NI k_380618;
					NI HEX3Atmp_380661;
					NI res_380663;
					j_380586 = 0;
					HEX3Atmp_380656 = 0;
					HEX3Atmp_380657 = 0;
					HEX3Atmp_380656 = (NI32)(i_380574 + 1);
					HEX3Atmp_380657 = (NI32)((NI32)(i_380574 + n) - 1);
					res_380659 = HEX3Atmp_380656;
					while (1) {
						if (!(res_380659 <= HEX3Atmp_380657)) goto LA13;
						j_380586 = res_380659;
						{
							if (!(*c).Slots[(j_380586)- 0].Field0) goto LA16;
							goto LA12;
						}
						LA16: ;
						res_380659 += 1;
					} LA13: ;
					result = ((NI) (i_380574));
					k_380618 = 0;
					HEX3Atmp_380661 = 0;
					HEX3Atmp_380661 = (NI32)((NI32)(((NI) (result)) + n) - 1);
					res_380663 = ((NI) (result));
					while (1) {
						if (!(res_380663 <= HEX3Atmp_380661)) goto LA18;
						k_380618 = res_380663;
						(*c).Slots[(k_380618)- 0].Field0 = NIM_TRUE;
						(*c).Slots[(k_380618)- 0].Field1 = kind;
						res_380663 += 1;
					} LA18: ;
					goto BeforeRet;
				} LA12: ;
			}
			LA10: ;
			res_380667 += 1;
		} LA7: ;
	}
	LA5: ;
	{
		if (!(255 <= (NI32)((*c).Maxslots + n))) goto LA21;
		internalerror_165606(((NimStringDesc*) &TMP2579));
	}
	LA21: ;
	result = ((NI) ((*c).Maxslots));
	(*c).Maxslots += n;
	k_380650 = 0;
	HEX3Atmp_380671 = 0;
	HEX3Atmp_380671 = (NI32)((NI32)(((NI) (result)) + n) - 1);
	res_380673 = ((NI) (result));
	while (1) {
		if (!(res_380673 <= HEX3Atmp_380671)) goto LA23;
		k_380650 = res_380673;
		(*c).Slots[(k_380650)- 0].Field0 = NIM_TRUE;
		(*c).Slots[(k_380650)- 0].Field1 = kind;
		res_380673 += 1;
	} LA23: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, gen_380844)(tctx249037* c, tnode188803* n, NI dest, NU8 flags) {
	NI d;
	d = ((NI) (dest));
	gen_380834(c, n, &d, flags);
	{
		NimStringDesc* LOC5;
		if (!!((((NI) (d)) == ((NI) (dest))))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_165714(TMP2590);
		internalerror_165606(LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, freetemprange_380682)(tctx249037* c, NI start, NI n) {
	NI i_380697;
	NI HEX3Atmp_380698;
	NI res_380700;
	i_380697 = 0;
	HEX3Atmp_380698 = 0;
	HEX3Atmp_380698 = (NI32)((NI32)(((NI) (start)) + n) - 1);
	res_380700 = ((NI) (start));
	while (1) {
		if (!(res_380700 <= HEX3Atmp_380698)) goto LA1;
		i_380697 = res_380700;
		freetemp_380538(c, ((NI) (i_380697)));
		res_380700 += 1;
	} LA1: ;
}

N_NIMCALL(void, genvarargsabc_383968)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc) {
	NI x;
	NI LOC6;
	NI i_383987;
	NI HEX3Atmp_384004;
	NI LOC7;
	NI res_384006;
	NI LOC9;
	NI LOC10;
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	LOC6 = 0;
	LOC6 = len_189264(n);
	x = gettemprange_380554(c, (NI32)(LOC6 - 1), ((NU8) 6));
	i_383987 = 0;
	HEX3Atmp_384004 = 0;
	LOC7 = 0;
	LOC7 = len_189264(n);
	HEX3Atmp_384004 = (NI32)(LOC7 - 1);
	res_384006 = 1;
	while (1) {
		NI r;
		if (!(res_384006 <= HEX3Atmp_384004)) goto LA8;
		i_383987 = res_384006;
		r = ((NI) ((NI32)((NI32)(((NI) (x)) + i_383987) - 1)));
		gen_380844(c, (*n).kindU.S6.Sons->data[i_383987], r, 0);
		res_384006 += 1;
	} LA8: ;
	LOC9 = 0;
	LOC9 = len_189264(n);
	gabc_379683(c, n, opc, ((NI) ((*dest))), x, ((NI) ((NI32)(LOC9 - 1))));
	LOC10 = 0;
	LOC10 = len_189264(n);
	freetemprange_380682(c, x, LOC10);
}

N_NIMCALL(void, genbinarystmtvar_383908)(tctx249037* c, tnode188803* n, NU8 opc) {
	NI dest;
	NI tmp;
	dest = genx_380876(c, (*n).kindU.S6.Sons->data[1], 2);
	tmp = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
	gabc_379683(c, n, opc, dest, tmp, 0);
	freetemp_380538(c, tmp);
}

N_NIMCALL(void, genbinarystmt_383871)(tctx249037* c, tnode188803* n, NU8 opc) {
	NI dest;
	NI tmp;
	dest = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
	tmp = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
	gabc_379683(c, n, opc, dest, tmp, 0);
	freetemp_380538(c, tmp);
}

N_NIMCALL(void, genunarystmt_383946)(tctx249037* c, tnode188803* n, NU8 opc) {
	NI tmp;
	tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
	gabc_379683(c, n, opc, tmp, 0, 0);
	freetemp_380538(c, tmp);
}

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

N_NIMCALL(void, gencall_382972)(tctx249037* c, tnode188803* n, NI* dest) {
	NI x;
	NI LOC9;
	ttype188837* fntyp;
	NI i_383016;
	NI HEX3Atmp_383081;
	NI LOC10;
	NI res_383083;
	NI LOC30;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		NI LOC8;
		LOC3 = 0;
		LOC3 = (((NI) ((*dest))) < 0);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = isemptytype_195210((*n).Typ);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		LOC8 = 0;
		LOC8 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC8));
	}
	LA6: ;
	LOC9 = 0;
	LOC9 = len_189264(n);
	x = gettemprange_380554(c, LOC9, ((NU8) 3));
	fntyp = (*(*n).kindU.S6.Sons->data[0]).Typ;
	i_383016 = 0;
	HEX3Atmp_383081 = 0;
	LOC10 = 0;
	LOC10 = len_189264(n);
	HEX3Atmp_383081 = LOC10 - 1;
	res_383083 = 0;
	while (1) {
		NI r;
		if (!(res_383083 <= HEX3Atmp_383081)) goto LA11;
		i_383016 = res_383083;
		r = ((NI) ((NI32)(((NI) (x)) + i_383016)));
		gen_380844(c, (*n).kindU.S6.Sons->data[i_383016], r, 0);
		{
			NI LOC14;
			NI LOC22;
			LOC14 = 0;
			LOC14 = len_192569(fntyp);
			if (!(LOC14 <= i_383016)) goto LA15;
			{
				NimStringDesc* LOC21;
				if (!!((((*fntyp).Flags &(1<<((((NU8) 0))&31)))!=0))) goto LA19;
				LOC21 = 0;
				LOC21 = HEX24_165714(TMP2592);
				internalerror_165606(LOC21);
			}
			LA19: ;
			LOC22 = 0;
			LOC22 = gentype_382494(c, (*(*n).kindU.S6.Sons->data[i_383016]).Typ);
			gabx_380098(c, n, ((NU8) 151), r, LOC22);
		}
		LA15: ;
		res_383083 += 1;
	} LA11: ;
	{
		NI LOC27;
		if (!(((NI) ((*dest))) < 0)) goto LA25;
		LOC27 = 0;
		LOC27 = len_189264(n);
		gabc_379683(c, n, ((NU8) 125), 0, x, ((NI) (LOC27)));
	}
	goto LA23;
	LA25: ;
	{
		NI LOC29;
		LOC29 = 0;
		LOC29 = len_189264(n);
		gabc_379683(c, n, ((NU8) 126), ((NI) ((*dest))), x, ((NI) (LOC29)));
	}
	LA23: ;
	LOC30 = 0;
	LOC30 = len_189264(n);
	freetemprange_380682(c, x, LOC30);
}

N_NIMCALL(void, genmagic_384245)(tctx249037* c, tnode188803* n, NI* dest) {
	NU16 m;
	m = (*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Magic;
	switch (m) {
	case ((NU16) 134):
	{
		genandor_381749(c, n, ((NU8) 133), dest);
	}
	break;
	case ((NU16) 135):
	{
		genandor_381749(c, n, ((NU8) 132), dest);
	}
	break;
	case ((NU16) 18):
	{
		NI tmp;
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		{
			NI LOC8;
			if (!(((NI) ((*dest))) < 0)) goto LA6;
			LOC8 = 0;
			LOC8 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC8));
		}
		LA6: ;
		gabi_379899(c, n, ((NU8) 24), ((NI) ((*dest))), tmp, 1);
		freetemp_380538(c, tmp);
	}
	break;
	case ((NU16) 20):
	case ((NU16) 38):
	case ((NU16) 43):
	{
		genaddsubint_384115(c, n, dest, ((NU8) 23));
	}
	break;
	case ((NU16) 19):
	case ((NU16) 37):
	case ((NU16) 42):
	{
		genaddsubint_384115(c, n, dest, ((NU8) 21));
	}
	break;
	case ((NU16) 21):
	case ((NU16) 22):
	{
		NU8 opc;
		NI d;
		unused_382332(n, (*dest));
		{
			if (!(m == ((NU16) 21))) goto LA14;
			opc = ((NU8) 21);
		}
		goto LA12;
		LA14: ;
		{
			opc = ((NU8) 23);
		}
		LA12: ;
		d = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		{
			NIM_BOOL LOC19;
			LOC19 = 0;
			LOC19 = isint8lit_384011((*n).kindU.S6.Sons->data[2]);
			if (!LOC19) goto LA20;
			gabi_379899(c, n, opc + 1, d, d, (*(*n).kindU.S6.Sons->data[2]).kindU.S1.Intval);
		}
		goto LA17;
		LA20: ;
		{
			NI tmp;
			tmp = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
			gabc_379683(c, n, opc, d, d, tmp);
			freetemp_380538(c, tmp);
		}
		LA17: ;
		gennarrow_383656(c, (*n).kindU.S6.Sons->data[1], ((NI) (d)));
		genasgnpatch_383214(c, (*n).kindU.S6.Sons->data[1], d);
		freetemp_380538(c, d);
	}
	break;
	case ((NU16) 23):
	case ((NU16) 34):
	case ((NU16) 169):
	{
		gen_380834(c, (*n).kindU.S6.Sons->data[1], dest, 0);
	}
	break;
	case ((NU16) 24):
	case ((NU16) 25):
	{
		unused_382332(n, (*dest));
		gennew_383361(c, n);
	}
	break;
	case ((NU16) 26):
	{
		unused_382332(n, (*dest));
		gennewseq_383456(c, n);
	}
	break;
	case ((NU16) 172):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 131));
	}
	break;
	case ((NU16) 173):
	{
		NI tmp;
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		gabx_380098(c, n, ((NU8) 149), tmp, 0);
		{
			NI LOC32;
			if (!(((NI) ((*dest))) < 0)) goto LA30;
			LOC32 = 0;
			LOC32 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC32));
		}
		LA30: ;
		gabc_379683(c, n, ((NU8) 131), ((NI) ((*dest))), tmp, 0);
		freetemp_380538(c, tmp);
	}
	break;
	case ((NU16) 27):
	case ((NU16) 29):
	case ((NU16) 30):
	{
		genunaryabi_383591(c, n, dest, ((NU8) 25));
	}
	break;
	case ((NU16) 28):
	{
		genunaryabi_383591(c, n, dest, ((NU8) 26));
	}
	break;
	case ((NU16) 31):
	case ((NU16) 32):
	{
		NI d;
		NI tmp;
		NU8 LOC36;
		unused_382332(n, (*dest));
		d = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
		gensettype_383768(c, (*n).kindU.S6.Sons->data[1], d);
		LOC36 = 0;
		{
			if (!(m == ((NU16) 31))) goto LA39;
			LOC36 = ((NU8) 27);
		}
		goto LA37;
		LA39: ;
		{
			LOC36 = ((NU8) 29);
		}
		LA37: ;
		gabc_379683(c, n, LOC36, d, tmp, 0);
		freetemp_380538(c, d);
		freetemp_380538(c, tmp);
	}
	break;
	case ((NU16) 33):
	{
		gencard_384207(c, n, dest);
	}
	break;
	case ((NU16) 39):
	case ((NU16) 44):
	{
		genbinaryabcnarrow_383750(c, n, dest, ((NU8) 31));
	}
	break;
	case ((NU16) 40):
	case ((NU16) 45):
	{
		genbinaryabcnarrow_383750(c, n, dest, ((NU8) 32));
	}
	break;
	case ((NU16) 41):
	case ((NU16) 46):
	{
		genbinaryabcnarrow_383750(c, n, dest, ((NU8) 33));
	}
	break;
	case ((NU16) 47):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 34));
	}
	break;
	case ((NU16) 48):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 35));
	}
	break;
	case ((NU16) 49):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 36));
	}
	break;
	case ((NU16) 50):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 37));
	}
	break;
	case ((NU16) 51):
	case ((NU16) 58):
	{
		genbinaryabcnarrowu_383759(c, n, dest, ((NU8) 38));
	}
	break;
	case ((NU16) 52):
	case ((NU16) 59):
	{
		genbinaryabcnarrowu_383759(c, n, dest, ((NU8) 39));
	}
	break;
	case ((NU16) 53):
	case ((NU16) 60):
	{
		genbinaryabcnarrowu_383759(c, n, dest, ((NU8) 40));
	}
	break;
	case ((NU16) 54):
	case ((NU16) 61):
	{
		genbinaryabcnarrowu_383759(c, n, dest, ((NU8) 41));
	}
	break;
	case ((NU16) 55):
	case ((NU16) 62):
	{
		genbinaryabcnarrowu_383759(c, n, dest, ((NU8) 42));
	}
	break;
	case ((NU16) 67):
	{
		genbinaryabcnarrowu_383759(c, n, dest, ((NU8) 43));
	}
	break;
	case ((NU16) 68):
	{
		genbinaryabcnarrowu_383759(c, n, dest, ((NU8) 44));
	}
	break;
	case ((NU16) 69):
	{
		genbinaryabcnarrowu_383759(c, n, dest, ((NU8) 45));
	}
	break;
	case ((NU16) 70):
	{
		genbinaryabcnarrowu_383759(c, n, dest, ((NU8) 46));
	}
	break;
	case ((NU16) 71):
	{
		genbinaryabcnarrowu_383759(c, n, dest, ((NU8) 47));
	}
	break;
	case ((NU16) 72):
	case ((NU16) 75):
	case ((NU16) 91):
	case ((NU16) 85):
	case ((NU16) 88):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 48));
	}
	break;
	case ((NU16) 73):
	case ((NU16) 76):
	case ((NU16) 86):
	case ((NU16) 89):
	case ((NU16) 92):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 49));
	}
	break;
	case ((NU16) 74):
	case ((NU16) 77):
	case ((NU16) 87):
	case ((NU16) 90):
	case ((NU16) 93):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 50));
	}
	break;
	case ((NU16) 78):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 51));
	}
	break;
	case ((NU16) 79):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 52));
	}
	break;
	case ((NU16) 80):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 53));
	}
	break;
	case ((NU16) 96):
	case ((NU16) 81):
	case ((NU16) 83):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 54));
	}
	break;
	case ((NU16) 97):
	case ((NU16) 82):
	case ((NU16) 84):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 55));
	}
	break;
	case ((NU16) 100):
	case ((NU16) 94):
	case ((NU16) 95):
	case ((NU16) 98):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 56));
	}
	break;
	case ((NU16) 99):
	{
		genbinaryabcnarrowu_383759(c, n, dest, ((NU8) 58));
	}
	break;
	case ((NU16) 105):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 59));
	}
	break;
	case ((NU16) 101):
	case ((NU16) 102):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 60));
		gennarrow_383656(c, n, (*dest));
	}
	break;
	case ((NU16) 111):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 61));
	}
	break;
	case ((NU16) 106):
	case ((NU16) 108):
	case ((NU16) 110):
	{
		gen_380834(c, (*n).kindU.S6.Sons->data[1], dest, 0);
	}
	break;
	case ((NU16) 107):
	case ((NU16) 109):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 62));
		gennarrowu_383710(c, n, (*dest));
	}
	break;
	case ((NU16) 113):
	case ((NU16) 114):
	case ((NU16) 115):
	case ((NU16) 116):
	case ((NU16) 117):
	case ((NU16) 118):
	case ((NU16) 119):
	case ((NU16) 120):
	case ((NU16) 121):
	case ((NU16) 122):
	case ((NU16) 123):
	case ((NU16) 124):
	case ((NU16) 125):
	case ((NU16) 126):
	case ((NU16) 127):
	case ((NU16) 128):
	case ((NU16) 129):
	case ((NU16) 130):
	case ((NU16) 131):
	case ((NU16) 132):
	case ((NU16) 133):
	{
		genconv_384195(c, n, (*n).kindU.S6.Sons->data[1], dest, ((NU8) 83));
	}
	break;
	case ((NU16) 136):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 63));
	}
	break;
	case ((NU16) 137):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 64));
	}
	break;
	case ((NU16) 138):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 65));
	}
	break;
	case ((NU16) 139):
	{
		genbinaryset_383803(c, n, dest, ((NU8) 66));
	}
	break;
	case ((NU16) 140):
	{
		genbinaryset_383803(c, n, dest, ((NU8) 67));
	}
	break;
	case ((NU16) 141):
	{
		genbinaryset_383803(c, n, dest, ((NU8) 68));
	}
	break;
	case ((NU16) 142):
	{
		genbinaryset_383803(c, n, dest, ((NU8) 69));
	}
	break;
	case ((NU16) 143):
	{
		genbinaryset_383803(c, n, dest, ((NU8) 70));
	}
	break;
	case ((NU16) 144):
	{
		genbinaryset_383803(c, n, dest, ((NU8) 71));
	}
	break;
	case ((NU16) 145):
	{
		genbinaryset_383803(c, n, dest, ((NU8) 72));
	}
	break;
	case ((NU16) 146):
	{
		genvarargsabc_383968(c, n, dest, ((NU8) 73));
	}
	break;
	case ((NU16) 159):
	{
		genbinaryset_383803(c, n, dest, ((NU8) 74));
	}
	break;
	case ((NU16) 160):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 75));
	}
	break;
	case ((NU16) 161):
	{
		NI tmp;
		unused_382332(n, (*dest));
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		gabc_379683(c, n, ((NU8) 85), tmp, 0, 0);
		freetemp_380538(c, tmp);
	}
	break;
	case ((NU16) 162):
	case ((NU16) 163):
	{
		NI d;
		NI tmp;
		NU8 LOC91;
		unused_382332(n, (*dest));
		d = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
		LOC91 = 0;
		{
			if (!(m == ((NU16) 162))) goto LA94;
			LOC91 = ((NU8) 76);
		}
		goto LA92;
		LA94: ;
		{
			LOC91 = ((NU8) 77);
		}
		LA92: ;
		gabc_379683(c, n, LOC91, d, tmp, 0);
		genasgnpatch_383214(c, (*n).kindU.S6.Sons->data[1], d);
		freetemp_380538(c, tmp);
	}
	break;
	case ((NU16) 167):
	{
		NI d;
		NI tmp;
		unused_382332(n, (*dest));
		d = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
		gabc_379683(c, n, ((NU8) 78), d, tmp, 0);
		freetemp_380538(c, tmp);
	}
	break;
	case ((NU16) 168):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 79));
	}
	break;
	case ((NU16) 170):
	{
		NI tmp1;
		NI tmp2;
		NI tmp3;
		{
			NI LOC104;
			if (!(((NI) ((*dest))) < 0)) goto LA102;
			LOC104 = 0;
			LOC104 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC104));
		}
		LA102: ;
		tmp1 = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		tmp2 = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
		tmp3 = gettemp_380451(c, (*(*n).kindU.S6.Sons->data[2]).Typ);
		gabc_379683(c, n, ((NU8) 26), tmp3, tmp1, 0);
		gabc_379683(c, n, ((NU8) 82), ((NI) ((*dest))), tmp1, tmp2);
		gabc_379683(c, n, ((NU8) 82), tmp3, 0, 0);
		freetemp_380538(c, tmp1);
		freetemp_380538(c, tmp2);
		freetemp_380538(c, tmp3);
	}
	break;
	case ((NU16) 171):
	{
		NI tmp1;
		NI tmp2;
		NI tmp3;
		{
			NI LOC110;
			if (!(((NI) ((*dest))) < 0)) goto LA108;
			LOC110 = 0;
			LOC110 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC110));
		}
		LA108: ;
		tmp1 = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		tmp2 = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
		tmp3 = genx_380876(c, (*n).kindU.S6.Sons->data[3], 0);
		gabc_379683(c, n, ((NU8) 82), ((NI) ((*dest))), tmp1, tmp2);
		gabc_379683(c, n, ((NU8) 82), tmp3, 0, 0);
		freetemp_380538(c, tmp1);
		freetemp_380538(c, tmp2);
		freetemp_380538(c, tmp3);
	}
	break;
	case ((NU16) 174):
	{
		NI d;
		unused_382332(n, (*dest));
		d = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		gabc_379683(c, n, ((NU8) 86), d, 0, 0);
	}
	break;
	case ((NU16) 9):
	case ((NU16) 8):
	{
		NI tmp;
		NI idx;
		ttype188837* LOC118;
		ttype188837* typ;
		NI LOC123;
		NU8 LOC124;
		{
			NI LOC117;
			if (!(((NI) ((*dest))) < 0)) goto LA115;
			LOC117 = 0;
			LOC117 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC117));
		}
		LA115: ;
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		LOC118 = 0;
		LOC118 = getsystype_242024(((NU8) 31));
		idx = gettemp_380451(c, LOC118);
		typ = (*(*n).kindU.S6.Sons->data[2]).Typ;
		{
			if (!(m == ((NU16) 9))) goto LA121;
			typ = skiptypes_192793(typ, IL64(211106247256064));
		}
		LA121: ;
		LOC123 = 0;
		LOC123 = gentype_382494(c, typ);
		gabx_380098(c, n, ((NU8) 149), idx, LOC123);
		LOC124 = 0;
		{
			if (!(m == ((NU16) 9))) goto LA127;
			LOC124 = ((NU8) 80);
		}
		goto LA125;
		LA127: ;
		{
			LOC124 = ((NU8) 81);
		}
		LA125: ;
		gabc_379683(c, n, LOC124, ((NI) ((*dest))), tmp, idx);
		freetemp_380538(c, tmp);
		freetemp_380538(c, idx);
	}
	break;
	case ((NU16) 6):
	{
		NimStringDesc* LOC131;
		LOC131 = 0;
		LOC131 = rendertree_211051(n, 0);
		globalerror_165558((*n).Info, ((NU16) 208), LOC131);
	}
	break;
	case ((NU16) 5):
	{
		NI tmp;
		{
			NI LOC137;
			if (!(((NI) ((*dest))) < 0)) goto LA135;
			LOC137 = 0;
			LOC137 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC137));
		}
		LA135: ;
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		{
			ttype188837* LOC140;
			LOC140 = 0;
			LOC140 = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106240964608));
			if (!((*LOC140).Kind == ((NU8) 28))) goto LA141;
			gabi_379899(c, n, ((NU8) 26), ((NI) ((*dest))), tmp, 1);
		}
		goto LA138;
		LA141: ;
		{
			gabi_379899(c, n, ((NU8) 25), ((NI) ((*dest))), tmp, 1);
		}
		LA138: ;
		freetemp_380538(c, tmp);
	}
	break;
	case ((NU16) 10):
	{
		NI x;
		NI LOC145;
		NI i_384882;
		NI HEX3Atmp_385036;
		NI LOC146;
		NI res_385038;
		NI LOC148;
		NI LOC149;
		unused_382332(n, (*dest));
		LOC145 = 0;
		LOC145 = len_189264(n);
		x = gettemprange_380554(c, (NI32)(LOC145 - 1), ((NU8) 3));
		i_384882 = 0;
		HEX3Atmp_385036 = 0;
		LOC146 = 0;
		LOC146 = len_189264(n);
		HEX3Atmp_385036 = LOC146 - 1;
		res_385038 = 1;
		while (1) {
			NI r;
			if (!(res_385038 <= HEX3Atmp_385036)) goto LA147;
			i_384882 = res_385038;
			r = ((NI) ((NI32)((NI32)(((NI) (x)) + i_384882) - 1)));
			gen_380844(c, (*n).kindU.S6.Sons->data[i_384882], r, 0);
			res_385038 += 1;
		} LA147: ;
		LOC148 = 0;
		LOC148 = len_189264(n);
		gabc_379683(c, n, ((NU8) 124), x, ((NI) ((NI32)(LOC148 - 1))), 0);
		LOC149 = 0;
		LOC149 = len_189264(n);
		freetemprange_380682(c, x, (NI32)(LOC149 - 1));
	}
	break;
	case ((NU16) 155):
	{
		unused_382332(n, (*dest));
		genbinarystmtvar_383908(c, n, ((NU8) 89));
	}
	break;
	case ((NU16) 156):
	{
		unused_382332(n, (*dest));
		genbinarystmtvar_383908(c, n, ((NU8) 90));
	}
	break;
	case ((NU16) 157):
	{
		unused_382332(n, (*dest));
		genbinarystmtvar_383908(c, n, ((NU8) 91));
	}
	break;
	case ((NU16) 14):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 115));
	}
	break;
	case ((NU16) 15):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 116));
	}
	break;
	case ((NU16) 7):
	{
		NI tmp;
		NI LOC161;
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		{
			NI LOC160;
			if (!(((NI) ((*dest))) < 0)) goto LA158;
			LOC160 = 0;
			LOC160 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC160));
		}
		LA158: ;
		LOC161 = 0;
		LOC161 = gentype_382494(c, (*(*n).kindU.S6.Sons->data[1]).Typ);
		gabx_380098(c, n, ((NU8) 151), tmp, LOC161);
		gabc_379683(c, n, ((NU8) 152), ((NI) ((*dest))), tmp, 0);
		freetemp_380538(c, tmp);
	}
	break;
	case ((NU16) 12):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 113));
	}
	break;
	case ((NU16) 13):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 114));
	}
	break;
	case ((NU16) 229):
	{
		genunaryabi_383591(c, n, dest, ((NU8) 25));
	}
	break;
	case ((NU16) 230):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 128));
	}
	break;
	case ((NU16) 231):
	case ((NU16) 234):
	{
		NI tmp1;
		NI tmp2;
		NI tmp3;
		NU8 LOC167;
		unused_382332(n, (*dest));
		tmp1 = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		tmp2 = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
		tmp3 = genx_380876(c, (*n).kindU.S6.Sons->data[3], 0);
		LOC167 = 0;
		{
			if (!(m == ((NU16) 231))) goto LA170;
			LOC167 = ((NU8) 129);
		}
		goto LA168;
		LA170: ;
		{
			LOC167 = ((NU8) 111);
		}
		LA168: ;
		gabc_379683(c, n, LOC167, tmp1, tmp2, tmp3);
		freetemp_380538(c, tmp1);
		freetemp_380538(c, tmp2);
		freetemp_380538(c, tmp3);
	}
	break;
	case ((NU16) 232):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 93));
	}
	break;
	case ((NU16) 233):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 94));
	}
	break;
	case ((NU16) 235):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 95));
	}
	break;
	case ((NU16) 236):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 96));
	}
	break;
	case ((NU16) 237):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 97));
	}
	break;
	case ((NU16) 238):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 98));
	}
	break;
	case ((NU16) 239):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 99));
	}
	break;
	case ((NU16) 240):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 100));
	}
	break;
	case ((NU16) 241):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 101));
	}
	break;
	case ((NU16) 242):
	{
		unused_382332(n, (*dest));
		genbinarystmt_383871(c, n, ((NU8) 102));
	}
	break;
	case ((NU16) 243):
	{
		unused_382332(n, (*dest));
		genbinarystmt_383871(c, n, ((NU8) 103));
	}
	break;
	case ((NU16) 244):
	{
		unused_382332(n, (*dest));
		genbinarystmt_383871(c, n, ((NU8) 104));
	}
	break;
	case ((NU16) 245):
	{
		unused_382332(n, (*dest));
		genbinarystmt_383871(c, n, ((NU8) 105));
	}
	break;
	case ((NU16) 246):
	{
		unused_382332(n, (*dest));
		genbinarystmt_383871(c, n, ((NU8) 106));
	}
	break;
	case ((NU16) 247):
	{
		unused_382332(n, (*dest));
		genbinarystmt_383871(c, n, ((NU8) 107));
	}
	break;
	case ((NU16) 249):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 108));
	}
	break;
	case ((NU16) 250):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 109));
	}
	break;
	case ((NU16) 251):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 110));
	}
	break;
	case ((NU16) 254):
	{
		{
			tnode188803* LOC194;
			NI idx;
			tnode188803* LOC197;
			LOC194 = 0;
			LOC194 = HEX5BHEX5D_189694(n, 1);
			if (!((*LOC194).Kind == ((NU8) 56) || (*LOC194).Kind == ((NU8) 57) || (*LOC194).Kind == ((NU8) 3))) goto LA195;
			LOC197 = 0;
			LOC197 = HEX5BHEX5D_189694(n, 1);
			idx = genliteral_382298(c, LOC197);
			{
				NI LOC202;
				if (!(((NI) ((*dest))) < 0)) goto LA200;
				LOC202 = 0;
				LOC202 = gettemp_380451(c, (*n).Typ);
				(*dest) = ((NI) (LOC202));
			}
			LA200: ;
			gabx_380098(c, n, ((NU8) 150), ((NI) ((*dest))), idx);
		}
		goto LA192;
		LA195: ;
		{
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2591));
		}
		LA192: ;
	}
	break;
	case ((NU16) 252):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 122));
	}
	break;
	case ((NU16) 253):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 123));
	}
	break;
	case ((NU16) 257):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 121));
	}
	break;
	case ((NU16) 258):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 57));
	}
	break;
	case ((NU16) 248):
	{
		genunaryabc_383566(c, n, dest, ((NU8) 120));
	}
	break;
	case ((NU16) 259):
	{
		unused_382332(n, (*dest));
		genunarystmt_383946(c, n, ((NU8) 119));
	}
	break;
	case ((NU16) 260):
	{
		unused_382332(n, (*dest));
		genunarystmt_383946(c, n, ((NU8) 118));
	}
	break;
	case ((NU16) 261):
	{
		unused_382332(n, (*dest));
		genunarystmt_383946(c, n, ((NU8) 117));
	}
	break;
	case ((NU16) 256):
	{
		{
			NI LOC217;
			if (!(((NI) ((*dest))) < 0)) goto LA215;
			LOC217 = 0;
			LOC217 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC217));
		}
		LA215: ;
		gabc_379683(c, n, ((NU8) 130), ((NI) ((*dest))), 0, 0);
	}
	break;
	case ((NU16) 264):
	{
		genbinaryabc_383616(c, n, dest, ((NU8) 112));
	}
	break;
	case ((NU16) 56):
	case ((NU16) 57):
	case ((NU16) 63):
	case ((NU16) 64):
	case ((NU16) 112):
	case ((NU16) 65):
	case ((NU16) 66):
	case ((NU16) 103):
	case ((NU16) 104):
	{
		gencall_382972(c, n, dest);
	}
	break;
	case ((NU16) 16):
	{
		tnode188803* arg;
		{
			NI LOC223;
			LOC223 = 0;
			LOC223 = len_189264(n);
			if (!!((LOC223 == 2))) goto LA224;
			globalerror_165558((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP2593));
		}
		LA224: ;
		arg = (*n).kindU.S6.Sons->data[1];
		{
			if (!((*arg).Kind == ((NU8) 27) || (*arg).Kind == ((NU8) 29) || (*arg).Kind == ((NU8) 30) || (*arg).Kind == ((NU8) 31) || (*arg).Kind == ((NU8) 26) || (*arg).Kind == ((NU8) 28) || (*arg).Kind == ((NU8) 32))) goto LA228;
			{
				NI LOC234;
				if (!(((NI) ((*dest))) < 0)) goto LA232;
				LOC234 = 0;
				LOC234 = gettemp_380451(c, (*n).Typ);
				(*dest) = ((NI) (LOC234));
			}
			LA232: ;
			gencall_382972(c, arg, dest);
		}
		goto LA226;
		LA228: ;
		{
			globalerror_165565((*n).Info, ((NimStringDesc*) &TMP2594));
		}
		LA226: ;
	}
	break;
	default:
	{
		NimStringDesc* LOC237;
		LOC237 = 0;
		LOC237 = rawNewString(reprEnum(m, (&NTI188521))->Sup.len + 26);
appendString(LOC237, ((NimStringDesc*) &TMP2584));
appendString(LOC237, reprEnum(m, (&NTI188521)));
		internalerror_165591((*n).Info, LOC237);
	}
	break;
	}
}

static N_INLINE(void, cleardest_380896)(tctx249037* c, tnode188803* n, NI* dest) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = 0;
		LOC3 = (0 <= ((NI) ((*dest))));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = (*n).Typ == 0;
		if (LOC5) goto LA6;
		LOC5 = ((*(*n).Typ).Kind == ((NU8) 3));
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA7;
		freetemp_380538(c, ((NI) ((*dest))));
		(*dest) = -1;
	}
	LA7: ;
}

N_NIMCALL(NIM_BOOL, isint16lit_384063)(tnode188803* n) {
	NIM_BOOL result;
	result = 0;
	{
		NIM_BOOL LOC5;
		if (!((*n).Kind >= ((NU8) 5) && (*n).Kind <= ((NU8) 15))) goto LA3;
		LOC5 = 0;
		LOC5 = (-32768 <= (*n).kindU.S1.Intval);
		if (!(LOC5)) goto LA6;
		LOC5 = ((*n).kindU.S1.Intval <= 32767);
		LA6: ;
		result = LOC5;
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, genasgn_385561)(tctx249037* c, tnode188803* le, tnode188803* ri, NIM_BOOL requirescopy) {
	switch ((*le).Kind) {
	case ((NU8) 42):
	{
		NI dest;
		NI idx;
		NI tmp;
		dest = genx_380876(c, (*le).kindU.S6.Sons->data[0], 2);
		idx = genx_380876(c, (*le).kindU.S6.Sons->data[1], 0);
		tmp = genx_380876(c, ri, 0);
		{
			ttype188837* LOC4;
			LOC4 = 0;
			LOC4 = skiptypes_192793((*(*le).kindU.S6.Sons->data[0]).Typ, IL64(211106242013184));
			if (!((*LOC4).Kind == ((NU8) 28) || (*LOC4).Kind == ((NU8) 29))) goto LA5;
			gabc_379683(c, le, ((NU8) 19), dest, idx, tmp);
		}
		goto LA2;
		LA5: ;
		{
			gabc_379683(c, le, ((NU8) 12), dest, idx, tmp);
		}
		LA2: ;
		freetemp_380538(c, tmp);
	}
	break;
	case ((NU8) 45):
	case ((NU8) 46):
	{
		tnode188803* left;
		NI dest;
		NI idx;
		NI tmp;
		{
			if (!((*le).Kind == ((NU8) 45))) goto LA11;
			left = le;
		}
		goto LA9;
		LA11: ;
		{
			left = (*le).kindU.S6.Sons->data[0];
		}
		LA9: ;
		dest = genx_380876(c, (*left).kindU.S6.Sons->data[0], 2);
		idx = genfield_383158((*left).kindU.S6.Sons->data[1]);
		tmp = genx_380876(c, ri, 0);
		gabc_379683(c, left, ((NU8) 14), dest, idx, tmp);
		freetemp_380538(c, tmp);
	}
	break;
	case ((NU8) 47):
	case ((NU8) 65):
	{
		NI dest;
		NI tmp;
		dest = genx_380876(c, (*le).kindU.S6.Sons->data[0], 2);
		tmp = genx_380876(c, ri, 0);
		gabc_379683(c, le, ((NU8) 18), dest, tmp, 0);
		freetemp_380538(c, tmp);
	}
	break;
	case ((NU8) 3):
	{
		tsym188833* s;
		s = (*le).kindU.S4.Sym;
		checkcaneval_385510(c, le);
		{
			NIM_BOOL LOC18;
			NI tmp;
			NI val;
			LOC18 = 0;
			LOC18 = (((*s).Flags &(1<<((((NU8) 3))&31)))!=0);
			if (!(LOC18)) goto LA19;
			LOC18 = !(((*s).Kind == ((NU8) 21)));
			LA19: ;
			if (!LOC18) goto LA20;
			tmp = gettemp_380451(c, (*le).Typ);
			gen_380844(c, le, tmp, 2);
			val = genx_380876(c, ri, 0);
			gabc_379683(c, le, ((NU8) 18), tmp, val, 0);
			freetemp_380538(c, val);
			freetemp_380538(c, tmp);
		}
		goto LA16;
		LA20: ;
		{
			NI dest;
			{
				if (!((*s).Kind == ((NU8) 21))) goto LA25;
				setslot_385403(c, s);
			}
			LA25: ;
			{
				NIM_BOOL LOC29;
				NIM_BOOL LOC31;
				NimStringDesc* LOC35;
				LOC29 = 0;
				LOC29 = (0 < (*s).Position);
				if (LOC29) goto LA30;
				LOC31 = 0;
				LOC31 = ((*s).Position == 0);
				if (!(LOC31)) goto LA32;
				LOC31 = ((2056 &(1<<(((*s).Kind)&31)))!=0);
				LA32: ;
				LOC29 = LOC31;
				LA30: ;
				if (!!(LOC29)) goto LA33;
				LOC35 = 0;
				LOC35 = HEX24_165714(TMP2595);
				internalerror_165606(LOC35);
			}
			LA33: ;
			dest = ((NI) ((NI32)((*s).Position + ((NI) (((*s).Kind == ((NU8) 3)))))));
			gen_380844(c, ri, dest, 0);
		}
		LA16: ;
	}
	break;
	default:
	{
		NI dest;
		dest = genx_380876(c, le, 2);
		genasgn_385359(c, ((NI) (dest)), ri, requirescopy);
	}
	break;
	}
}

N_NIMCALL(void, genobjaccess_386257)(tctx249037* c, tnode188803* n, NI* dest, NU8 flags) {
	NI a;
	NI b;
	a = genx_380876(c, (*n).kindU.S6.Sons->data[0], flags);
	b = genfield_383158((*n).kindU.S6.Sons->data[1]);
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	{
		NIM_BOOL LOC8;
		ttype188837* LOC10;
		NI cc;
		LOC8 = 0;
		LOC8 = !(((flags &(1<<((((NU8) 1))&7)))!=0));
		if (!(LOC8)) goto LA9;
		LOC10 = 0;
		LOC10 = skiptypes_192793((*n).Typ, 8388608);
		LOC8 = fitsregister_385046(LOC10);
		LA9: ;
		if (!LOC8) goto LA11;
		cc = gettemp_380451(c, (*n).Typ);
		gabc_379683(c, n, ((NU8) 13), cc, a, b);
		gabc_379683(c, n, ((NU8) 10), ((NI) ((*dest))), cc, 0);
		freetemp_380538(c, cc);
	}
	goto LA6;
	LA11: ;
	{
		gabc_379683(c, n, ((NU8) 13), ((NI) ((*dest))), a, b);
	}
	LA6: ;
	freetemp_380538(c, a);
}

N_NIMCALL(void, gencheckedobjaccess_386312)(tctx249037* c, tnode188803* n, NI* dest, NU8 flags) {
	genobjaccess_386257(c, (*n).kindU.S6.Sons->data[0], dest, flags);
}

N_NIMCALL(void, genarraccess2_386200)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc, NU8 flags) {
	NI a;
	NI b;
	a = genx_380876(c, (*n).kindU.S6.Sons->data[0], flags);
	b = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	{
		NIM_BOOL LOC8;
		NI cc;
		LOC8 = 0;
		LOC8 = !(((flags &(1<<((((NU8) 1))&7)))!=0));
		if (!(LOC8)) goto LA9;
		LOC8 = fitsregister_385046((*n).Typ);
		LA9: ;
		if (!LOC8) goto LA10;
		cc = gettemp_380451(c, (*n).Typ);
		gabc_379683(c, n, opc, cc, a, b);
		gabc_379683(c, n, ((NU8) 10), ((NI) ((*dest))), cc, 0);
		freetemp_380538(c, cc);
	}
	goto LA6;
	LA10: ;
	{
		gabc_379683(c, n, opc, ((NI) ((*dest))), a, b);
	}
	LA6: ;
	freetemp_380538(c, a);
	freetemp_380538(c, b);
}

N_NIMCALL(void, genarraccess_386335)(tctx249037* c, tnode188803* n, NI* dest, NU8 flags) {
	{
		ttype188837* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106242013184));
		if (!((*LOC3).Kind == ((NU8) 28) || (*LOC3).Kind == ((NU8) 29))) goto LA4;
		genarraccess2_386200(c, n, dest, ((NU8) 20), 0);
	}
	goto LA1;
	LA4: ;
	{
		genarraccess2_386200(c, n, dest, ((NU8) 11), flags);
	}
	LA1: ;
}

N_NIMCALL(NIM_BOOL, unneededindirection_385152)(tnode188803* n) {
	NIM_BOOL result;
	ttype188837* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = skiptypes_192793((*n).Typ, IL64(211106232576000));
	result = ((*LOC1).Kind == ((NU8) 22));
	return result;
}

N_NIMCALL(void, genaddrderef_385185)(tctx249037* c, tnode188803* n, NI* dest, NU8 opc, NU8 flags) {
	NIM_BOOL isaddr;
	NU8 newflags;
	isaddr = (opc == ((NU8) 16) || opc == ((NU8) 15));
	{
		if (!isaddr) goto LA3;
		newflags = (flags | 2);
	}
	goto LA1;
	LA3: ;
	{
		newflags = flags;
	}
	LA1: ;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = !(isaddr);
		if (!(LOC8)) goto LA9;
		LOC8 = unneededindirection_385152((*n).kindU.S6.Sons->data[0]);
		LA9: ;
		if (!LOC8) goto LA10;
		gen_380834(c, (*n).kindU.S6.Sons->data[0], dest, newflags);
	}
	goto LA6;
	LA10: ;
	{
		NI tmp;
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[0], newflags);
		{
			NI LOC17;
			if (!(((NI) ((*dest))) < 0)) goto LA15;
			LOC17 = 0;
			LOC17 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC17));
		}
		LA15: ;
		{
			if (!!(isaddr)) goto LA20;
			gabc_379683(c, n, opc, ((NI) ((*dest))), tmp, 0);
			{
				NIM_BOOL LOC24;
				LOC24 = 0;
				LOC24 = !(((flags &(1<<((((NU8) 1))&7)))!=0));
				if (!(LOC24)) goto LA25;
				LOC24 = fitsregister_385046((*n).Typ);
				LA25: ;
				if (!LOC24) goto LA26;
				gabc_379683(c, n, ((NU8) 10), ((NI) ((*dest))), ((NI) ((*dest))), 0);
			}
			LA26: ;
		}
		goto LA18;
		LA20: ;
		{
			if (!(((NU8) 3) <= (*(*c).Prc).Slots[(tmp)- 0].Field1)) goto LA29;
			gabc_379683(c, n, ((NU8) 16), ((NI) ((*dest))), tmp, 0);
		}
		goto LA18;
		LA29: ;
		{
			gabc_379683(c, n, ((NU8) 15), ((NI) ((*dest))), tmp, 0);
		}
		LA18: ;
		freetemp_380538(c, tmp);
	}
	LA6: ;
}

N_NIMCALL(NIM_BOOL, isnotopr_380924)(tnode188803* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*n).Kind == ((NU8) 27) || (*n).Kind == ((NU8) 29) || (*n).Kind == ((NU8) 30) || (*n).Kind == ((NU8) 31) || (*n).Kind == ((NU8) 26) || (*n).Kind == ((NU8) 28) || (*n).Kind == ((NU8) 32));
	if (!(LOC2)) goto LA3;
	LOC2 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = ((*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Magic == ((NU16) 105));
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, genif_381490)(tctx249037* c, tnode188803* n, NI* dest) {
	TY249198* endings;
	NI i_381531;
	NI HEX3Atmp_381737;
	NI LOC9;
	NI res_381739;
	NI endpos_381734;
	NI i_381742;
	NI l_381744;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		NI LOC8;
		LOC3 = 0;
		LOC3 = (((NI) ((*dest))) < 0);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = isemptytype_195210((*n).Typ);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		LOC8 = 0;
		LOC8 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC8));
	}
	LA6: ;
	endings = (TY249198*) newSeq((&NTI249198), 0);
	i_381531 = 0;
	HEX3Atmp_381737 = 0;
	LOC9 = 0;
	LOC9 = len_189264(n);
	HEX3Atmp_381737 = (NI32)(LOC9 - 1);
	res_381739 = 0;
	while (1) {
		tnode188803* it;
		if (!(res_381739 <= HEX3Atmp_381737)) goto LA10;
		i_381531 = res_381739;
		it = (*n).kindU.S6.Sons->data[i_381531];
		{
			NI LOC13;
			NI tmp;
			NI elsepos;
			LOC13 = 0;
			LOC13 = len_189264(it);
			if (!(LOC13 == 2)) goto LA14;
			tmp = gettemp_380451(c, (*(*it).kindU.S6.Sons->data[0]).Typ);
			elsepos = 0;
			{
				NIM_BOOL LOC18;
				LOC18 = 0;
				LOC18 = isnotopr_380924((*it).kindU.S6.Sons->data[0]);
				if (!LOC18) goto LA19;
				gen_380844(c, (*(*it).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1], tmp, 0);
				elsepos = xjmp_380279(c, (*(*it).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1], ((NU8) 132), tmp);
			}
			goto LA16;
			LA19: ;
			{
				gen_380844(c, (*it).kindU.S6.Sons->data[0], tmp, 0);
				elsepos = xjmp_380279(c, (*it).kindU.S6.Sons->data[0], ((NU8) 133), tmp);
			}
			LA16: ;
			freetemp_380538(c, tmp);
			cleardest_380896(c, n, dest);
			gen_380834(c, (*it).kindU.S6.Sons->data[1], dest, 0);
			{
				NI LOC24;
				NI LOC27;
				LOC24 = 0;
				LOC24 = sonslen_189181(n);
				if (!(i_381531 < (NI32)(LOC24 - 1))) goto LA25;
				LOC27 = 0;
				LOC27 = xjmp_380279(c, (*it).kindU.S6.Sons->data[1], ((NU8) 134), 0);
				endings = (TY249198*) incrSeq(&(endings)->Sup, sizeof(NI));
				endings->data[endings->Sup.len-1] = LOC27;
			}
			LA25: ;
			patch_380355(c, elsepos);
		}
		goto LA11;
		LA14: ;
		{
			cleardest_380896(c, n, dest);
			gen_380834(c, (*it).kindU.S6.Sons->data[0], dest, 0);
		}
		LA11: ;
		res_381739 += 1;
	} LA10: ;
	endpos_381734 = 0;
	i_381742 = 0;
	l_381744 = endings->Sup.len;
	while (1) {
		if (!(i_381742 < l_381744)) goto LA29;
		endpos_381734 = endings->data[i_381742];
		patch_380355(c, endpos_381734);
		i_381742 += 1;
	} LA29: ;
	cleardest_380896(c, n, dest);
}

N_NIMCALL(void, gencase_382338)(tctx249037* c, tnode188803* n, NI* dest) {
	TY249198* endings;
	NI tmp;
	NI i_382417;
	NI HEX3Atmp_382482;
	NI LOC12;
	NI res_382484;
	NI endpos_382480;
	NI i_382487;
	NI l_382489;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isemptytype_195210((*n).Typ);
		if (!!(LOC3)) goto LA4;
		{
			NI LOC10;
			if (!(((NI) ((*dest))) < 0)) goto LA8;
			LOC10 = 0;
			LOC10 = gettemp_380451(c, (*n).Typ);
			(*dest) = ((NI) (LOC10));
		}
		LA8: ;
	}
	goto LA1;
	LA4: ;
	{
		unused_382332(n, (*dest));
	}
	LA1: ;
	endings = (TY249198*) newSeq((&NTI249198), 0);
	tmp = gettemp_380451(c, (*(*n).kindU.S6.Sons->data[0]).Typ);
	gen_380844(c, (*n).kindU.S6.Sons->data[0], tmp, 0);
	i_382417 = 0;
	HEX3Atmp_382482 = 0;
	LOC12 = 0;
	LOC12 = len_189264(n);
	HEX3Atmp_382482 = LOC12 - 1;
	res_382484 = 1;
	while (1) {
		tnode188803* it;
		if (!(res_382484 <= HEX3Atmp_382482)) goto LA13;
		i_382417 = res_382484;
		it = (*n).kindU.S6.Sons->data[i_382417];
		{
			NI LOC16;
			LOC16 = 0;
			LOC16 = len_189264(it);
			if (!(LOC16 == 1)) goto LA17;
			gen_380834(c, (*it).kindU.S6.Sons->data[0], dest, 0);
		}
		goto LA14;
		LA17: ;
		{
			NI b;
			NI elsepos;
			tnode188803* LOC20;
			tnode188803* LOC21;
			b = rawgenliteral_381794(c, it);
			gabx_380098(c, it, ((NU8) 136), tmp, b);
			LOC20 = 0;
			LOC20 = lastson_189189(it);
			elsepos = xjmp_380279(c, LOC20, ((NU8) 133), tmp);
			LOC21 = 0;
			LOC21 = lastson_189189(it);
			gen_380834(c, LOC21, dest, 0);
			{
				NI LOC24;
				tnode188803* LOC27;
				NI LOC28;
				LOC24 = 0;
				LOC24 = sonslen_189181(n);
				if (!(i_382417 < (NI32)(LOC24 - 1))) goto LA25;
				LOC27 = 0;
				LOC27 = lastson_189189(it);
				LOC28 = 0;
				LOC28 = xjmp_380279(c, LOC27, ((NU8) 134), 0);
				endings = (TY249198*) incrSeq(&(endings)->Sup, sizeof(NI));
				endings->data[endings->Sup.len-1] = LOC28;
			}
			LA25: ;
			patch_380355(c, elsepos);
		}
		LA14: ;
		cleardest_380896(c, n, dest);
		res_382484 += 1;
	} LA13: ;
	freetemp_380538(c, tmp);
	endpos_382480 = 0;
	i_382487 = 0;
	l_382489 = endings->Sup.len;
	while (1) {
		if (!(i_382487 < l_382489)) goto LA29;
		endpos_382480 = endings->data[i_382487];
		patch_380355(c, endpos_382480);
		i_382487 += 1;
	} LA29: ;
}

N_NIMCALL(NI, genlabel_380300)(tctx249037* c) {
	NI result;
	result = 0;
	result = (*c).Code->Sup.len;
	return result;
}

N_NIMCALL(NIM_BOOL, istrue_381003)(tnode188803* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	NIM_BOOL LOC3;
	NIM_BOOL LOC7;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC3 = 0;
	LOC3 = ((*n).Kind == ((NU8) 3));
	if (!(LOC3)) goto LA4;
	LOC3 = ((*(*n).kindU.S4.Sym).Kind == ((NU8) 20));
	LA4: ;
	LOC2 = LOC3;
	if (!(LOC2)) goto LA5;
	LOC2 = !(((*(*n).kindU.S4.Sym).Position == 0));
	LA5: ;
	LOC1 = LOC2;
	if (LOC1) goto LA6;
	LOC7 = 0;
	LOC7 = ((*n).Kind == ((NU8) 6));
	if (!(LOC7)) goto LA8;
	LOC7 = !(((*n).kindU.S1.Intval == 0));
	LA8: ;
	LOC1 = LOC7;
	LA6: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, jmpback_380318)(tctx249037* c, tnode188803* n, NI p) {
	NI dist;
	dist = (NI32)(p - (*c).Code->Sup.len);
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		LOC3 = 0;
		LOC3 = (-32767 < dist);
		if (!(LOC3)) goto LA4;
		LOC3 = (dist < 32767);
		LA4: ;
		if (!!(LOC3)) goto LA5;
		LOC7 = 0;
		LOC7 = HEX24_165714(TMP2596);
		internalerror_165606(LOC7);
	}
	LA5: ;
	gabx_380098(c, n, ((NU8) 135), 0, dist);
}

N_NIMCALL(void, popblock_380712)(tctx249037* c, NI oldlen) {
	NI f_380803;
	TY249198* HEX3Atmp_380820;
	NI i_380822;
	NI l_380824;
	f_380803 = 0;
	HEX3Atmp_380820 = 0;
	HEX3Atmp_380820 = (*(*c).Prc).Blocks->data[oldlen].Fixups;
	i_380822 = 0;
	l_380824 = HEX3Atmp_380820->Sup.len;
	while (1) {
		if (!(i_380822 < l_380824)) goto LA1;
		f_380803 = HEX3Atmp_380820->data[i_380822];
		patch_380355(c, f_380803);
		i_380822 += 1;
	} LA1: ;
	(*(*c).Prc).Blocks = (TY249217*) setLengthSeq(&((*(*c).Prc).Blocks)->Sup, sizeof(tblock249023), oldlen);
}

N_NIMCALL(void, genwhile_381078)(tctx249037* c, tnode188803* n) {
	NI l1;
	NI oldlen;
	tblock249023 LOC1;
	l1 = genlabel_380300(c);
	oldlen = (*(*c).Prc).Blocks->Sup.len;
	memset((void*)&LOC1, 0, sizeof(LOC1));
	memset((void*)&LOC1, 0, sizeof(LOC1));
	LOC1.Label = NIM_NIL;
	LOC1.Fixups = (TY249198*) newSeq((&NTI249198), 0);
	(*(*c).Prc).Blocks = (TY249217*) incrSeq(&((*(*c).Prc).Blocks)->Sup, sizeof(tblock249023));
	asgnRefNoCycle((void**) &(*(*c).Prc).Blocks->data[(*(*c).Prc).Blocks->Sup.len-1].Label, LOC1.Label);
	genericSeqAssign(&(*(*c).Prc).Blocks->data[(*(*c).Prc).Blocks->Sup.len-1].Fixups, LOC1.Fixups, (&NTI249198));
	{
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = istrue_381003((*n).kindU.S6.Sons->data[0]);
		if (!LOC4) goto LA5;
		gen_380864(c, (*n).kindU.S6.Sons->data[1], 0);
		jmpback_380318(c, n, l1);
	}
	goto LA2;
	LA5: ;
	{
		NIM_BOOL LOC8;
		NI tmp;
		NI l2;
		LOC8 = 0;
		LOC8 = isnotopr_380924((*n).kindU.S6.Sons->data[0]);
		if (!LOC8) goto LA9;
		tmp = genx_380876(c, (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1], 0);
		l2 = xjmp_380279(c, n, ((NU8) 132), tmp);
		freetemp_380538(c, tmp);
		gen_380864(c, (*n).kindU.S6.Sons->data[1], 0);
		jmpback_380318(c, n, l1);
		patch_380355(c, l2);
	}
	goto LA2;
	LA9: ;
	{
		NI tmp;
		NI l2;
		tmp = genx_380876(c, (*n).kindU.S6.Sons->data[0], 0);
		l2 = xjmp_380279(c, n, ((NU8) 133), tmp);
		freetemp_380538(c, tmp);
		gen_380864(c, (*n).kindU.S6.Sons->data[1], 0);
		jmpback_380318(c, n, l1);
		patch_380355(c, l2);
	}
	LA2: ;
	popblock_380712(c, oldlen);
}

N_NIMCALL(void, genblock_381252)(tctx249037* c, tnode188803* n, NI* dest) {
	NI oldlen;
	tblock249023 LOC1;
	oldlen = (*(*c).Prc).Blocks->Sup.len;
	memset((void*)&LOC1, 0, sizeof(LOC1));
	memset((void*)&LOC1, 0, sizeof(LOC1));
	LOC1.Label = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	LOC1.Fixups = (TY249198*) newSeq((&NTI249198), 0);
	(*(*c).Prc).Blocks = (TY249217*) incrSeq(&((*(*c).Prc).Blocks)->Sup, sizeof(tblock249023));
	asgnRefNoCycle((void**) &(*(*c).Prc).Blocks->data[(*(*c).Prc).Blocks->Sup.len-1].Label, LOC1.Label);
	genericSeqAssign(&(*(*c).Prc).Blocks->data[(*(*c).Prc).Blocks->Sup.len-1].Fixups, LOC1.Fixups, (&NTI249198));
	gen_380834(c, (*n).kindU.S6.Sons->data[1], dest, 0);
	popblock_380712(c, oldlen);
	cleardest_380896(c, n, dest);
}

N_NIMCALL(void, genreturn_382929)(tctx249037* c, tnode188803* n) {
	{
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		gen_380864(c, (*n).kindU.S6.Sons->data[0], 0);
	}
	LA3: ;
	gabc_379683(c, n, ((NU8) 1), 0, 0, 0);
}

N_NIMCALL(void, genraise_382908)(tctx249037* c, tnode188803* n) {
	NI dest;
	dest = genx_380876(c, (*n).kindU.S6.Sons->data[0], 0);
	gabc_379683(c, n, ((NU8) 127), dest, 0, 0);
	freetemp_380538(c, dest);
}

N_NIMCALL(void, genbreak_381353)(tctx249037* c, tnode188803* n) {
	NI l1;
	l1 = xjmp_380279(c, n, ((NU8) 134), 0);
	{
		NI i_381403;
		NI HEX3Atmp_381484;
		NI res_381486;
		if (!((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3))) goto LA3;
		i_381403 = 0;
		HEX3Atmp_381484 = 0;
		HEX3Atmp_381484 = (NI32)((*(*c).Prc).Blocks->Sup.len - 1);
		res_381486 = HEX3Atmp_381484;
		while (1) {
			if (!(0 <= res_381486)) goto LA5;
			i_381403 = res_381486;
			{
				if (!((*(*c).Prc).Blocks->data[i_381403].Label == (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym)) goto LA8;
				(*(*c).Prc).Blocks->data[i_381403].Fixups = (TY249198*) incrSeq(&((*(*c).Prc).Blocks->data[i_381403].Fixups)->Sup, sizeof(NI));
				(*(*c).Prc).Blocks->data[i_381403].Fixups->data[(*(*c).Prc).Blocks->data[i_381403].Fixups->Sup.len-1] = l1;
				goto BeforeRet;
			}
			LA8: ;
			res_381486 -= 1;
		} LA5: ;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2597));
	}
	goto LA1;
	LA3: ;
	{
		(*(*c).Prc).Blocks->data[((*(*c).Prc).Blocks->Sup.len-1)].Fixups = (TY249198*) incrSeq(&((*(*c).Prc).Blocks->data[((*(*c).Prc).Blocks->Sup.len-1)].Fixups)->Sup, sizeof(NI));
		(*(*c).Prc).Blocks->data[((*(*c).Prc).Blocks->Sup.len-1)].Fixups->data[(*(*c).Prc).Blocks->data[((*(*c).Prc).Blocks->Sup.len-1)].Fixups->Sup.len-1] = l1;
	}
	LA1: ;
	BeforeRet: ;
}

N_NIMCALL(void, gentry_382594)(tctx249037* c, tnode188803* n, NI* dest) {
	TY249198* endings;
	NI elsepos;
	NI i_382659;
	NI HEX3Atmp_382895;
	NI LOC9;
	NI res_382897;
	NI endpos_382865;
	NI i_382900;
	NI l_382902;
	tnode188803* fin;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		NI LOC8;
		LOC3 = 0;
		LOC3 = (((NI) ((*dest))) < 0);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = isemptytype_195210((*n).Typ);
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		LOC8 = 0;
		LOC8 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC8));
	}
	LA6: ;
	endings = (TY249198*) newSeq((&NTI249198), 0);
	elsepos = xjmp_380279(c, n, ((NU8) 137), 0);
	gen_380834(c, (*n).kindU.S6.Sons->data[0], dest, 0);
	cleardest_380896(c, n, dest);
	patch_380355(c, elsepos);
	i_382659 = 0;
	HEX3Atmp_382895 = 0;
	LOC9 = 0;
	LOC9 = len_189264(n);
	HEX3Atmp_382895 = LOC9 - 1;
	res_382897 = 1;
	while (1) {
		tnode188803* it;
		if (!(res_382897 <= HEX3Atmp_382895)) goto LA10;
		i_382659 = res_382897;
		it = (*n).kindU.S6.Sons->data[i_382659];
		{
			NI blen;
			NI endexcept;
			NI j_382698;
			NI HEX3Atmp_382891;
			NI res_382893;
			tnode188803* LOC21;
			if (!!(((*it).Kind == ((NU8) 106)))) goto LA13;
			blen = len_189264(it);
			endexcept = xjmp_380279(c, it, ((NU8) 138), 0);
			j_382698 = 0;
			HEX3Atmp_382891 = 0;
			HEX3Atmp_382891 = (NI32)(blen - 2);
			res_382893 = 0;
			while (1) {
				ttype188837* typ;
				NI LOC16;
				if (!(res_382893 <= HEX3Atmp_382891)) goto LA15;
				j_382698 = res_382893;
				typ = skiptypes_192793((*(*it).kindU.S6.Sons->data[j_382698]).Typ, IL64(211106247256064));
				LOC16 = 0;
				LOC16 = gentype_382494(c, typ);
				gabx_380098(c, it, ((NU8) 138), 0, LOC16);
				res_382893 += 1;
			} LA15: ;
			{
				if (!(blen == 1)) goto LA19;
				gabx_380098(c, it, ((NU8) 138), 0, 0);
			}
			LA19: ;
			LOC21 = 0;
			LOC21 = lastson_189189(it);
			gen_380834(c, LOC21, dest, 0);
			cleardest_380896(c, n, dest);
			{
				NI LOC24;
				NI LOC27;
				LOC24 = 0;
				LOC24 = sonslen_189181(n);
				if (!(i_382659 < (NI32)(LOC24 - 1))) goto LA25;
				LOC27 = 0;
				LOC27 = xjmp_380279(c, it, ((NU8) 134), 0);
				endings = (TY249198*) incrSeq(&(endings)->Sup, sizeof(NI));
				endings->data[endings->Sup.len-1] = LOC27;
			}
			LA25: ;
			patch_380355(c, endexcept);
		}
		LA13: ;
		res_382897 += 1;
	} LA10: ;
	endpos_382865 = 0;
	i_382900 = 0;
	l_382902 = endings->Sup.len;
	while (1) {
		if (!(i_382900 < l_382902)) goto LA28;
		endpos_382865 = endings->data[i_382900];
		patch_380355(c, endpos_382865);
		i_382900 += 1;
	} LA28: ;
	fin = lastson_189189(n);
	gabx_380098(c, fin, ((NU8) 139), 0, 0);
	{
		if (!((*fin).Kind == ((NU8) 106))) goto LA31;
		gen_380834(c, (*fin).kindU.S6.Sons->data[0], dest, 0);
		cleardest_380896(c, n, dest);
	}
	LA31: ;
	gabx_380098(c, fin, ((NU8) 140), 0, 0);
}

N_NIMCALL(tsym188833*, getowner_385493)(tctx249037* c) {
	tsym188833* result;
	result = 0;
	result = (*(*c).Prc).Sym;
	{
		if (!result == 0) goto LA3;
		result = (*c).Module;
	}
	LA3: ;
	return result;
}

N_NIMCALL(NU8, ldnullopcode_386587)(ttype188837* t) {
	NU8 result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = fitsregister_385046(t);
		if (!LOC3) goto LA4;
		result = ((NU8) 144);
	}
	goto LA1;
	LA4: ;
	{
		result = ((NU8) 143);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, genvarsection_386593)(tctx249037* c, tnode188803* n) {
	tnode188803* a_386597;
	NI i_386978;
	NI HEX3Atmp_386980;
	NI LOC1;
	NI res_386982;
	a_386597 = 0;
	i_386978 = 0;
	HEX3Atmp_386980 = 0;
	LOC1 = 0;
	LOC1 = len_189264(n);
	HEX3Atmp_386980 = LOC1 - 1;
	res_386982 = 0;
	while (1) {
		if (!(res_386982 <= HEX3Atmp_386980)) goto LA2;
		i_386978 = res_386982;
		a_386597 = (*n).kindU.S6.Sons->data[i_386978];
		{
			{
				if (!((*a_386597).Kind == ((NU8) 124))) goto LA6;
				goto LA3;
			}
			LA6: ;
			{
				NI i_386626;
				NI HEX3Atmp_386973;
				NI LOC12;
				NI res_386975;
				tsym188833* LOC16;
				tnode188803* LOC17;
				if (!((*a_386597).Kind == ((NU8) 36))) goto LA10;
				i_386626 = 0;
				HEX3Atmp_386973 = 0;
				LOC12 = 0;
				LOC12 = len_189264(a_386597);
				HEX3Atmp_386973 = (NI32)(LOC12 - 3);
				res_386975 = 0;
				while (1) {
					tnode188803* LOC14;
					tnode188803* LOC15;
					if (!(res_386975 <= HEX3Atmp_386973)) goto LA13;
					i_386626 = res_386975;
					LOC14 = 0;
					LOC14 = HEX5BHEX5D_189694(a_386597, i_386626);
					setslot_385403(c, (*LOC14).kindU.S4.Sym);
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_189694(a_386597, i_386626);
					checkcaneval_385510(c, LOC15);
					res_386975 += 1;
				} LA13: ;
				LOC16 = 0;
				LOC16 = getowner_385493(c);
				LOC17 = 0;
				LOC17 = lowertupleunpacking_366155(a_386597, LOC16);
				gen_380864(c, LOC17, 0);
			}
			goto LA8;
			LA10: ;
			{
				tsym188833* s;
				if (!((*(*a_386597).kindU.S6.Sons->data[0]).Kind == ((NU8) 3))) goto LA19;
				s = (*(*a_386597).kindU.S6.Sons->data[0]).kindU.S4.Sym;
				checkcaneval_385510(c, (*a_386597).kindU.S6.Sons->data[0]);
				{
					NIM_BOOL LOC23;
					LOC23 = 0;
					LOC23 = (((*s).Flags &(1<<((((NU8) 3))&31)))!=0);
					if (!(LOC23)) goto LA24;
					LOC23 = !(((*s).Kind == ((NU8) 21)));
					LA24: ;
					if (!LOC23) goto LA25;
					{
						if (!((*s).Position == 0)) goto LA29;
						{
							if (!(((*s).Flags &(1<<((((NU8) 5))&31)))!=0)) goto LA33;
							importcsym_385856(c, (*a_386597).Info, s);
						}
						goto LA31;
						LA33: ;
						{
							tnode188803* sa;
							sa = getnullvalue_386003((*s).Typ, (*a_386597).Info);
							add_189390((*c).Globals, sa);
							(*s).Position = len_189264((*c).Globals);
						}
						LA31: ;
					}
					LA29: ;
					{
						NI tmp;
						NI val;
						if (!!(((*(*a_386597).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)))) goto LA38;
						tmp = genx_380876(c, (*a_386597).kindU.S6.Sons->data[0], 2);
						val = genx_380876(c, (*a_386597).kindU.S6.Sons->data[2], 0);
						gabc_379683(c, a_386597, ((NU8) 18), tmp, val, 0);
						freetemp_380538(c, val);
						freetemp_380538(c, tmp);
					}
					LA38: ;
				}
				goto LA21;
				LA25: ;
				{
					setslot_385403(c, s);
					{
						NU8 LOC45;
						NI LOC46;
						if (!((*(*a_386597).kindU.S6.Sons->data[2]).Kind == ((NU8) 1))) goto LA43;
						LOC45 = 0;
						LOC45 = ldnullopcode_386587((*s).Typ);
						LOC46 = 0;
						LOC46 = gentype_382494(c, (*s).Typ);
						gabx_380098(c, a_386597, LOC45, ((NI) ((*s).Position)), LOC46);
					}
					goto LA41;
					LA43: ;
					{
						gen_380844(c, (*a_386597).kindU.S6.Sons->data[2], ((NI) ((*s).Position)), 0);
					}
					LA41: ;
				}
				LA21: ;
			}
			goto LA8;
			LA19: ;
			{
				{
					NI tmp;
					tnode188803* LOC53;
					NU8 LOC54;
					NI LOC55;
					if (!((*(*a_386597).kindU.S6.Sons->data[2]).Kind == ((NU8) 1))) goto LA51;
					tmp = genx_380876(c, (*a_386597).kindU.S6.Sons->data[0], 0);
					LOC53 = 0;
					LOC53 = HEX5BHEX5D_189694(a_386597, 0);
					LOC54 = 0;
					LOC54 = ldnullopcode_386587((*LOC53).Typ);
					LOC55 = 0;
					LOC55 = gentype_382494(c, (*(*a_386597).kindU.S6.Sons->data[0]).Typ);
					gabx_380098(c, a_386597, LOC54, tmp, LOC55);
					freetemp_380538(c, tmp);
				}
				goto LA49;
				LA51: ;
				{
					genasgn_385561(c, (*a_386597).kindU.S6.Sons->data[0], (*a_386597).kindU.S6.Sons->data[2], NIM_TRUE);
				}
				LA49: ;
			}
			LA8: ;
		} LA3: ;
		res_386982 += 1;
	} LA2: ;
}

N_NIMCALL(NU8, whichasgnopc_385352)(tnode188803* n, NU8 opc) {
	NU8 result;
	result = 0;
	result = opc;
	return result;
}

N_NIMCALL(void, genarrayconstr_386988)(tctx249037* c, tnode188803* n, NI* dest) {
	NI LOC6;
	ttype188837* inttype;
	ttype188837* seqtype;
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	LOC6 = 0;
	LOC6 = gentype_382494(c, (*n).Typ);
	gabx_380098(c, n, ((NU8) 143), ((NI) ((*dest))), LOC6);
	inttype = getsystype_242024(((NU8) 31));
	seqtype = skiptypes_192793((*n).Typ, IL64(211106240964608));
	{
		NI tmp;
		NI LOC11;
		NI LOC12;
		if (!((*seqtype).Kind == ((NU8) 24))) goto LA9;
		tmp = gettemp_380451(c, inttype);
		LOC11 = 0;
		LOC11 = len_189264(n);
		gabx_380098(c, n, ((NU8) 149), tmp, LOC11);
		LOC12 = 0;
		LOC12 = gentype_382494(c, seqtype);
		gabx_380098(c, n, ((NU8) 142), ((NI) ((*dest))), LOC12);
		gabx_380098(c, n, ((NU8) 142), tmp, 0);
		freetemp_380538(c, tmp);
	}
	LA9: ;
	{
		NI LOC15;
		NI tmp;
		NI LOC18;
		tnode188803* x_387027;
		NI i_387030;
		NI HEX3Atmp_387032;
		NI LOC19;
		NI res_387034;
		LOC15 = 0;
		LOC15 = len_189264(n);
		if (!(0 < LOC15)) goto LA16;
		tmp = gettemp_380451(c, inttype);
		LOC18 = 0;
		LOC18 = gentype_382494(c, inttype);
		gabx_380098(c, n, ((NU8) 144), tmp, LOC18);
		x_387027 = 0;
		i_387030 = 0;
		HEX3Atmp_387032 = 0;
		LOC19 = 0;
		LOC19 = len_189264(n);
		HEX3Atmp_387032 = LOC19 - 1;
		res_387034 = 0;
		while (1) {
			NI a;
			NU8 LOC21;
			if (!(res_387034 <= HEX3Atmp_387032)) goto LA20;
			i_387030 = res_387034;
			x_387027 = (*n).kindU.S6.Sons->data[i_387030];
			a = genx_380876(c, x_387027, 0);
			LOC21 = 0;
			LOC21 = whichasgnopc_385352(x_387027, ((NU8) 12));
			gabc_379683(c, n, LOC21, ((NI) ((*dest))), tmp, a);
			gabi_379899(c, n, ((NU8) 22), tmp, tmp, 1);
			freetemp_380538(c, a);
			res_387034 += 1;
		} LA20: ;
		freetemp_380538(c, tmp);
	}
	LA16: ;
}

N_NIMCALL(void, gensetconstr_387038)(tctx249037* c, tnode188803* n, NI* dest) {
	NI LOC6;
	tnode188803* x_387045;
	NI i_387087;
	NI HEX3Atmp_387089;
	NI LOC7;
	NI res_387091;
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	LOC6 = 0;
	LOC6 = gentype_382494(c, (*n).Typ);
	gabx_380098(c, n, ((NU8) 143), ((NI) ((*dest))), LOC6);
	x_387045 = 0;
	i_387087 = 0;
	HEX3Atmp_387089 = 0;
	LOC7 = 0;
	LOC7 = len_189264(n);
	HEX3Atmp_387089 = LOC7 - 1;
	res_387091 = 0;
	while (1) {
		if (!(res_387091 <= HEX3Atmp_387089)) goto LA8;
		i_387087 = res_387091;
		x_387045 = (*n).kindU.S6.Sons->data[i_387087];
		{
			NI a;
			NI b;
			if (!((*x_387045).Kind == ((NU8) 44))) goto LA11;
			a = genx_380876(c, (*x_387045).kindU.S6.Sons->data[0], 0);
			b = genx_380876(c, (*x_387045).kindU.S6.Sons->data[1], 0);
			gabc_379683(c, n, ((NU8) 28), ((NI) ((*dest))), a, b);
			freetemp_380538(c, b);
			freetemp_380538(c, a);
		}
		goto LA9;
		LA11: ;
		{
			NI a;
			a = genx_380876(c, x_387045, 0);
			gabc_379683(c, n, ((NU8) 27), ((NI) ((*dest))), a, 0);
			freetemp_380538(c, a);
		}
		LA9: ;
		res_387091 += 1;
	} LA8: ;
}

N_NIMCALL(void, genobjconstr_387095)(tctx249037* c, tnode188803* n, NI* dest) {
	ttype188837* t;
	NI i_387151;
	NI HEX3Atmp_387243;
	NI LOC13;
	NI res_387245;
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	t = skiptypes_192793((*n).Typ, IL64(211106233624576));
	{
		NI LOC10;
		if (!((*t).Kind == ((NU8) 22))) goto LA8;
		LOC10 = 0;
		LOC10 = gentype_382494(c, (*t).Sons->data[0]);
		gabx_380098(c, n, ((NU8) 141), ((NI) ((*dest))), LOC10);
	}
	goto LA6;
	LA8: ;
	{
		NI LOC12;
		LOC12 = 0;
		LOC12 = gentype_382494(c, (*n).Typ);
		gabx_380098(c, n, ((NU8) 143), ((NI) ((*dest))), LOC12);
	}
	LA6: ;
	i_387151 = 0;
	HEX3Atmp_387243 = 0;
	LOC13 = 0;
	LOC13 = len_189264(n);
	HEX3Atmp_387243 = LOC13 - 1;
	res_387245 = 1;
	while (1) {
		tnode188803* it;
		if (!(res_387245 <= HEX3Atmp_387243)) goto LA14;
		i_387151 = res_387245;
		it = (*n).kindU.S6.Sons->data[i_387151];
		{
			NIM_BOOL LOC17;
			NI idx;
			NI tmp;
			NU8 LOC21;
			LOC17 = 0;
			LOC17 = ((*it).Kind == ((NU8) 34));
			if (!(LOC17)) goto LA18;
			LOC17 = ((*(*it).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
			LA18: ;
			if (!LOC17) goto LA19;
			idx = genfield_383158((*it).kindU.S6.Sons->data[0]);
			tmp = genx_380876(c, (*it).kindU.S6.Sons->data[1], 0);
			LOC21 = 0;
			LOC21 = whichasgnopc_385352((*it).kindU.S6.Sons->data[1], ((NU8) 14));
			gabc_379683(c, it, LOC21, ((NI) ((*dest))), idx, tmp);
			freetemp_380538(c, tmp);
		}
		goto LA15;
		LA19: ;
		{
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2599));
		}
		LA15: ;
		res_387245 += 1;
	} LA14: ;
}

N_NIMCALL(void, gentupleconstr_387250)(tctx249037* c, tnode188803* n, NI* dest) {
	NI LOC6;
	NI i_387278;
	NI HEX3Atmp_387348;
	NI LOC7;
	NI res_387350;
	{
		NI LOC5;
		if (!(((NI) ((*dest))) < 0)) goto LA3;
		LOC5 = 0;
		LOC5 = gettemp_380451(c, (*n).Typ);
		(*dest) = ((NI) (LOC5));
	}
	LA3: ;
	LOC6 = 0;
	LOC6 = gentype_382494(c, (*n).Typ);
	gabx_380098(c, n, ((NU8) 143), ((NI) ((*dest))), LOC6);
	i_387278 = 0;
	HEX3Atmp_387348 = 0;
	LOC7 = 0;
	LOC7 = len_189264(n);
	HEX3Atmp_387348 = LOC7 - 1;
	res_387350 = 0;
	while (1) {
		tnode188803* it;
		if (!(res_387350 <= HEX3Atmp_387348)) goto LA8;
		i_387278 = res_387350;
		it = (*n).kindU.S6.Sons->data[i_387278];
		{
			NI idx;
			NI tmp;
			NU8 LOC13;
			if (!((*it).Kind == ((NU8) 34))) goto LA11;
			idx = genfield_383158((*it).kindU.S6.Sons->data[0]);
			tmp = genx_380876(c, (*it).kindU.S6.Sons->data[1], 0);
			LOC13 = 0;
			LOC13 = whichasgnopc_385352((*it).kindU.S6.Sons->data[1], ((NU8) 14));
			gabc_379683(c, it, LOC13, ((NI) ((*dest))), idx, tmp);
			freetemp_380538(c, tmp);
		}
		goto LA9;
		LA11: ;
		{
			NI tmp;
			NU8 LOC15;
			tmp = genx_380876(c, it, 0);
			LOC15 = 0;
			LOC15 = whichasgnopc_385352(it, ((NU8) 14));
			gabc_379683(c, it, LOC15, ((NI) ((*dest))), ((NI) (i_387278)), tmp);
			freetemp_380538(c, tmp);
		}
		LA9: ;
		res_387350 += 1;
	} LA8: ;
}

N_NIMCALL(void, gen_380834)(tctx249037* c, tnode188803* n, NI* dest, NU8 flags) {
	switch ((*n).Kind) {
	case ((NU8) 3):
	{
		tsym188833* s;
		s = (*n).kindU.S4.Sym;
		checkcaneval_385510(c, n);
		switch ((*s).Kind) {
		case ((NU8) 8):
		case ((NU8) 21):
		case ((NU8) 5):
		case ((NU8) 9):
		case ((NU8) 3):
		case ((NU8) 11):
		{
			genrdvar_386017(c, n, dest, flags);
		}
		break;
		case ((NU8) 12):
		case ((NU8) 16):
		case ((NU8) 17):
		case ((NU8) 18):
		case ((NU8) 13):
		case ((NU8) 14):
		case ((NU8) 15):
		{
			{
				if (!(((*s).Flags &(1<<((((NU8) 5))&31)))!=0)) goto LA6;
				importcsym_385856(c, (*n).Info, s);
			}
			LA6: ;
			genlit_385827(c, n, dest);
		}
		break;
		case ((NU8) 10):
		{
			gen_380834(c, (*s).Ast, dest, 0);
		}
		break;
		case ((NU8) 20):
		{
			{
				NI LOC14;
				if (!(((NI) ((*dest))) < 0)) goto LA12;
				LOC14 = 0;
				LOC14 = gettemp_380451(c, (*n).Typ);
				(*dest) = ((NI) (LOC14));
			}
			LA12: ;
			{
				NIM_BOOL LOC17;
				LOC17 = 0;
				LOC17 = (-32768 <= (*s).Position);
				if (!(LOC17)) goto LA18;
				LOC17 = ((*s).Position <= 32767);
				LA18: ;
				if (!LOC17) goto LA19;
				gabx_380098(c, n, ((NU8) 149), ((NI) ((*dest))), (*s).Position);
			}
			goto LA15;
			LA19: ;
			{
				NI lit;
				tnode188803* LOC22;
				LOC22 = 0;
				LOC22 = newintnode_189069(((NU8) 6), ((NI64) ((*s).Position)));
				lit = genliteral_382298(c, LOC22);
				gabx_380098(c, n, ((NU8) 145), ((NI) ((*dest))), lit);
			}
			LA15: ;
		}
		break;
		case ((NU8) 7):
		{
			gentypelit_385847(c, (*s).Typ, dest);
		}
		break;
		default:
		{
			NimStringDesc* LOC25;
			LOC25 = 0;
			LOC25 = rawNewString((*(*s).Name).S->Sup.len + 26);
appendString(LOC25, ((NimStringDesc*) &TMP2584));
appendString(LOC25, (*(*s).Name).S);
			internalerror_165591((*n).Info, LOC25);
		}
		break;
		}
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	case ((NU8) 32):
	{
		{
			NIM_BOOL LOC29;
			LOC29 = 0;
			LOC29 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
			if (!(LOC29)) goto LA30;
			LOC29 = !(((*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Magic == ((NU16) 0)));
			LA30: ;
			if (!LOC29) goto LA31;
			genmagic_384245(c, n, dest);
		}
		goto LA27;
		LA31: ;
		{
			gencall_382972(c, n, dest);
			cleardest_380896(c, n, dest);
		}
		LA27: ;
	}
	break;
	case ((NU8) 5) ... ((NU8) 10):
	{
		{
			NIM_BOOL LOC37;
			LOC37 = 0;
			LOC37 = isint16lit_384063(n);
			if (!LOC37) goto LA38;
			{
				NI LOC44;
				if (!(((NI) ((*dest))) < 0)) goto LA42;
				LOC44 = 0;
				LOC44 = gettemp_380451(c, (*n).Typ);
				(*dest) = ((NI) (LOC44));
			}
			LA42: ;
			gabx_380098(c, n, ((NU8) 149), ((NI) ((*dest))), ((NI) ((*n).kindU.S1.Intval)));
		}
		goto LA35;
		LA38: ;
		{
			genlit_385827(c, n, dest);
		}
		LA35: ;
	}
	break;
	case ((NU8) 11) ... ((NU8) 22):
	{
		genlit_385827(c, n, dest);
	}
	break;
	case ((NU8) 23):
	{
		{
			NIM_BOOL LOC50;
			LOC50 = 0;
			LOC50 = isemptytype_195210((*n).Typ);
			if (!!(LOC50)) goto LA51;
			genlit_385827(c, n, dest);
		}
		goto LA48;
		LA51: ;
		{
			unused_382332(n, (*dest));
		}
		LA48: ;
	}
	break;
	case ((NU8) 73):
	case ((NU8) 74):
	{
		unused_382332(n, (*dest));
		genasgn_385561(c, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1], ((*n).Kind == ((NU8) 73)));
	}
	break;
	case ((NU8) 45):
	{
		genobjaccess_386257(c, n, dest, flags);
	}
	break;
	case ((NU8) 46):
	{
		gencheckedobjaccess_386312(c, n, dest, flags);
	}
	break;
	case ((NU8) 42):
	{
		genarraccess_386335(c, n, dest, flags);
	}
	break;
	case ((NU8) 47):
	case ((NU8) 65):
	{
		genaddrderef_385185(c, n, dest, ((NU8) 17), flags);
	}
	break;
	case ((NU8) 63):
	case ((NU8) 64):
	{
		genaddrderef_385185(c, n, dest, ((NU8) 16), flags);
	}
	break;
	case ((NU8) 93):
	case ((NU8) 92):
	case ((NU8) 48):
	{
		genif_381490(c, n, dest);
	}
	break;
	case ((NU8) 97):
	{
		gencase_382338(c, n, dest);
	}
	break;
	case ((NU8) 96):
	{
		unused_382332(n, (*dest));
		genwhile_381078(c, n);
	}
	break;
	case ((NU8) 126):
	case ((NU8) 111):
	{
		genblock_381252(c, n, dest);
	}
	break;
	case ((NU8) 108):
	{
		unused_382332(n, (*dest));
		genreturn_382929(c, n);
	}
	break;
	case ((NU8) 107):
	{
		unused_382332(n, (*dest));
		genraise_382908(c, n);
	}
	break;
	case ((NU8) 109):
	{
		unused_382332(n, (*dest));
		genbreak_381353(c, n);
	}
	break;
	case ((NU8) 105):
	{
		gentry_382594(c, n, dest);
	}
	break;
	case ((NU8) 114):
	{
		tnode188803* x_387526;
		NI i_387738;
		NI HEX3Atmp_387740;
		NI LOC69;
		NI res_387742;
		unused_382332(n, (*dest));
		x_387526 = 0;
		i_387738 = 0;
		HEX3Atmp_387740 = 0;
		LOC69 = 0;
		LOC69 = len_189264(n);
		HEX3Atmp_387740 = LOC69 - 1;
		res_387742 = 0;
		while (1) {
			if (!(res_387742 <= HEX3Atmp_387740)) goto LA70;
			i_387738 = res_387742;
			x_387526 = (*n).kindU.S6.Sons->data[i_387738];
			gen_380864(c, x_387526, 0);
			res_387742 += 1;
		} LA70: ;
	}
	break;
	case ((NU8) 125):
	{
		NI l;
		NI LOC72;
		NI i_387549;
		NI HEX3Atmp_387743;
		NI res_387745;
		LOC72 = 0;
		LOC72 = len_189264(n);
		l = (NI32)(LOC72 - 1);
		i_387549 = 0;
		HEX3Atmp_387743 = 0;
		HEX3Atmp_387743 = l - 1;
		res_387745 = 0;
		while (1) {
			if (!(res_387745 <= HEX3Atmp_387743)) goto LA73;
			i_387549 = res_387745;
			gen_380864(c, (*n).kindU.S6.Sons->data[i_387549], 0);
			res_387745 += 1;
		} LA73: ;
		gen_380834(c, (*n).kindU.S6.Sons->data[l], dest, flags);
	}
	break;
	case ((NU8) 113):
	{
		unused_382332(n, (*dest));
		gen_380864(c, (*n).kindU.S6.Sons->data[0], 0);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	{
		genconv_384195(c, n, (*n).kindU.S6.Sons->data[1], dest, ((NU8) 83));
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		unused_382332(n, (*dest));
		genvarsection_386593(c, n);
	}
	break;
	case ((NU8) 79):
	case ((NU8) 80):
	case ((NU8) 84):
	case ((NU8) 81):
	{
		unused_382332(n, (*dest));
	}
	break;
	case ((NU8) 51):
	case ((NU8) 52):
	{
		tsym188833* s;
		NI LOC79;
		s = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		LOC79 = 0;
		LOC79 = genproc_387355(c, s);
		genlit_385827(c, (*n).kindU.S6.Sons->data[0], dest);
	}
	break;
	case ((NU8) 68):
	case ((NU8) 69):
	case ((NU8) 70):
	{
		NI tmp0;
		NI tmp1;
		NI tmp2;
		tmp0 = genx_380876(c, (*n).kindU.S6.Sons->data[0], 0);
		tmp1 = genx_380876(c, (*n).kindU.S6.Sons->data[1], 0);
		tmp2 = genx_380876(c, (*n).kindU.S6.Sons->data[2], 0);
		gabc_379683(c, n, ((NU8) 92), tmp0, tmp1, tmp2);
		freetemp_380538(c, tmp1);
		freetemp_380538(c, tmp2);
		{
			NU8 LOC85;
			if (!(0 <= ((NI) ((*dest))))) goto LA83;
			LOC85 = 0;
			LOC85 = whichasgnopc_385295(n);
			gabc_379683(c, n, LOC85, ((NI) ((*dest))), tmp0, 0);
			freetemp_380538(c, tmp0);
		}
		goto LA81;
		LA83: ;
		{
			(*dest) = ((NI) (tmp0));
		}
		LA81: ;
	}
	break;
	case ((NU8) 1):
	case ((NU8) 124):
	case ((NU8) 98):
	case ((NU8) 101):
	case ((NU8) 90):
	case ((NU8) 83):
	case ((NU8) 120):
	case ((NU8) 115):
	case ((NU8) 119):
	{
		unused_382332(n, (*dest));
	}
	break;
	case ((NU8) 71):
	case ((NU8) 72):
	{
		gen_380834(c, (*n).kindU.S6.Sons->data[0], dest, 0);
	}
	break;
	case ((NU8) 41):
	{
		genarrayconstr_386988(c, n, dest);
	}
	break;
	case ((NU8) 39):
	{
		gensetconstr_387038(c, n, dest);
	}
	break;
	case ((NU8) 38):
	{
		genobjconstr_387095(c, n, dest);
	}
	break;
	case ((NU8) 37):
	case ((NU8) 153):
	{
		gentupleconstr_387250(c, n, dest);
	}
	break;
	case ((NU8) 61):
	{
		{
			if (!(((*c).Features &(1<<((((NU8) 0))&7)))!=0)) goto LA96;
			genconv_384195(c, n, (*n).kindU.S6.Sons->data[1], dest, ((NU8) 84));
		}
		goto LA94;
		LA96: ;
		{
			localerror_165571((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP2600));
		}
		LA94: ;
	}
	break;
	default:
	{
		NimStringDesc* LOC100;
		NimStringDesc* LOC101;
		LOC100 = 0;
		LOC101 = 0;
		LOC101 = rendertree_211051(n, 0);
		LOC100 = rawNewString(LOC101->Sup.len + 28);
appendString(LOC100, ((NimStringDesc*) &TMP2601));
appendString(LOC100, LOC101);
		internalerror_165591((*n).Info, LOC100);
	}
	break;
	}
}

N_NIMCALL(void, gen_380864)(tctx249037* c, tnode188803* n, NU8 flags) {
	NI tmp;
	tmp = -1;
	gen_380834(c, n, &tmp, flags);
}

N_NIMCALL(void, finaljumptarget_388151)(tctx249037* c, NI pc, NI diff) {
	NU32 oldinstr;
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		LOC3 = 0;
		LOC3 = (-32767 < diff);
		if (!(LOC3)) goto LA4;
		LOC3 = (diff < 32767);
		LA4: ;
		if (!!(LOC3)) goto LA5;
		LOC7 = 0;
		LOC7 = HEX24_165714(TMP2602);
		internalerror_165606(LOC7);
	}
	LA5: ;
	oldinstr = (*c).Code->data[pc];
	(*c).Code->data[pc] = (NU32)(((NU32) ((NU32)(oldinstr & ((NU32) 65535)))) | (NU32)((NU32)(((NU32) ((NI32)(diff + 32768)))) << (NU32)(((NU32) 16))));
}

N_NIMCALL(void, optimizejumps_388208)(tctx249037* c, NI start) {
	NI i_388245;
	NI HEX3Atmp_388476;
	NI res_388478;
	i_388245 = 0;
	HEX3Atmp_388476 = 0;
	HEX3Atmp_388476 = (*c).Code->Sup.len - 1;
	res_388478 = start;
	while (1) {
		NU8 opc;
		if (!(res_388478 <= HEX3Atmp_388476)) goto LA1;
		i_388245 = res_388478;
		opc = ((NU8) ((NU32)((*c).Code->data[i_388245] & ((NU32) 255))));
		switch (opc) {
		case ((NU8) 132):
		case ((NU8) 133):
		{
			NI reg;
			NI d;
			NI iters_388298;
			NI res_388469;
			reg = ((NI) ((NU32)((NU32)((NU32)((*c).Code->data[i_388245]) >> (NU32)(((NU32) 8))) & ((NU32) 255))));
			d = (NI32)(i_388245 + (NI32)(((NI) ((NU32)((NU32)((*c).Code->data[i_388245]) >> (NU32)(((NU32) 16))))) - 32768));
			iters_388298 = 0;
			res_388469 = 10;
			while (1) {
				if (!(0 <= res_388469)) goto LA3;
				iters_388298 = res_388469;
				switch (((NU8) ((NU32)((*c).Code->data[d] & ((NU32) 255))))) {
				case ((NU8) 134):
				case ((NU8) 135):
				{
					d = (NI32)(d + (NI32)(((NI) ((NU32)((NU32)((*c).Code->data[d]) >> (NU32)(((NU32) 16))))) - 32768));
				}
				break;
				case ((NU8) 132):
				case ((NU8) 133):
				{
					{
						if (!!((((NI) (((NI) ((NU32)((NU32)((NU32)((*c).Code->data[d]) >> (NU32)(((NU32) 8))) & ((NU32) 255)))))) == ((NI) (reg))))) goto LA8;
						goto LA3;
					}
					LA8: ;
					{
						if (!(((NU8) ((NU32)((*c).Code->data[d] & ((NU32) 255)))) == opc)) goto LA12;
						d = (NI32)(d + (NI32)(((NI) ((NU32)((NU32)((*c).Code->data[d]) >> (NU32)(((NU32) 16))))) - 32768));
					}
					goto LA10;
					LA12: ;
					{
						d = (NI32)(d + 1);
					}
					LA10: ;
				}
				break;
				default:
				{
					goto LA3;
				}
				break;
				}
				res_388469 -= 1;
			} LA3: ;
			{
				if (!!((d == (NI32)(i_388245 + (NI32)(((NI) ((NU32)((NU32)((*c).Code->data[i_388245]) >> (NU32)(((NU32) 16))))) - 32768))))) goto LA18;
				finaljumptarget_388151(c, i_388245, (NI32)(d - i_388245));
			}
			LA18: ;
		}
		break;
		case ((NU8) 134):
		case ((NU8) 135):
		{
			NI d;
			NI iters;
			d = (NI32)(i_388245 + (NI32)(((NI) ((NU32)((NU32)((*c).Code->data[i_388245]) >> (NU32)(((NU32) 16))))) - 32768));
			iters = 10;
			while (1) {
				NIM_BOOL LOC22;
				LOC22 = 0;
				LOC22 = (((NU8) ((NU32)((*c).Code->data[d] & ((NU32) 255)))) == ((NU8) 134));
				if (!(LOC22)) goto LA23;
				LOC22 = (0 < iters);
				LA23: ;
				if (!LOC22) goto LA21;
				d = (NI32)(d + (NI32)(((NI) ((NU32)((NU32)((*c).Code->data[d]) >> (NU32)(((NU32) 16))))) - 32768));
				iters -= 1;
			} LA21: ;
			{
				if (!(((NU8) ((NU32)((*c).Code->data[d] & ((NU32) 255)))) == ((NU8) 1))) goto LA26;
				(*c).Code->data[i_388245] = (*c).Code->data[d];
			}
			goto LA24;
			LA26: ;
			{
				if (!!((d == (NI32)(i_388245 + (NI32)(((NI) ((NU32)((NU32)((*c).Code->data[i_388245]) >> (NU32)(((NU32) 16))))) - 32768))))) goto LA29;
				finaljumptarget_388151(c, i_388245, (NI32)(d - i_388245));
			}
			goto LA24;
			LA29: ;
			LA24: ;
		}
		break;
		default:
		{
		}
		break;
		}
		res_388478 += 1;
	} LA1: ;
}

N_NIMCALL(NI, genproc_387355)(tctx249037* c, tsym188833* s) {
	NI result;
	tnode188803* x;
	result = 0;
	x = (*(*s).Ast).kindU.S6.Sons->data[5];
	{
		NI last;
		NU32 eofinstr;
		tnode188803* body;
		NI procstart;
		pprocHEX3Aobjecttype249216* p;
		pprocHEX3Aobjecttype249216* LOC11;
		pprocHEX3Aobjecttype249216* oldprc;
		if (!((*x).Kind == ((NU8) 1))) goto LA3;
		last = (NI32)((*c).Code->Sup.len - 1);
		eofinstr = 0;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = (0 <= last);
			if (!(LOC7)) goto LA8;
			LOC7 = (((NU8) ((NU32)((*c).Code->data[last] & ((NU32) 255)))) == ((NU8) 0));
			LA8: ;
			if (!LOC7) goto LA9;
			eofinstr = (*c).Code->data[last];
			(*c).Code = (TY249229*) setLengthSeq(&((*c).Code)->Sup, sizeof(NU32), last);
			(*c).Debug = (TY164208*) setLengthSeq(&((*c).Debug)->Sup, sizeof(tlineinfo163527), last);
		}
		LA9: ;
		result = (NI32)((*c).Code->Sup.len + 1);
		asgnRefNoCycle((void**) &(*(*s).Ast).kindU.S6.Sons->data[5], newintnode_189069(((NU8) 6), ((NI64) (result))));
		body = getbody_239244(s);
		procstart = xjmp_380279(c, body, ((NU8) 134), 0);
		LOC11 = 0;
		LOC11 = (pprocHEX3Aobjecttype249216*) newObj((&NTI249033), sizeof(pprocHEX3Aobjecttype249216));
		if ((*LOC11).Blocks) nimGCunrefNoCycle((*LOC11).Blocks);
		(*LOC11).Blocks = (TY249217*) newSeqRC1((&NTI249217), 0);
		asgnRefNoCycle((void**) &(*LOC11).Sym, s);
		p = LOC11;
		oldprc = (*c).Prc;
		asgnRefNoCycle((void**) &(*c).Prc, p);
		genparams_388080(c, (*(*s).Typ).N);
		{
			if (!(((*(*s).Typ).Flags &(1<<((((NU8) 11))&31)))!=0)) goto LA14;
			(*(*c).Prc).Slots[((*(*c).Prc).Maxslots)- 0] = TMP2574;
			(*(*c).Prc).Maxslots += 1;
		}
		LA14: ;
		gen_380864(c, body, 0);
		gabc_379683(c, body, ((NU8) 1), 0, 0, 0);
		patch_380355(c, procstart);
		gabc_379683(c, body, ((NU8) 0), ((NI) ((NU32)((NU32)((NU32)(eofinstr) >> (NU32)(((NU32) 8))) & ((NU32) 255)))), 0, 0);
		optimizejumps_388208(c, result);
		(*s).Offset = (*(*c).Prc).Maxslots;
		asgnRefNoCycle((void**) &(*c).Prc, oldprc);
	}
	goto LA1;
	LA3: ;
	{
		(*(*c).Prc).Maxslots = (*s).Offset;
		result = ((NI) ((*x).kindU.S1.Intval));
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, removelasteof_387751)(tctx249037* c) {
	NI last;
	last = (NI32)((*c).Code->Sup.len - 1);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (0 <= last);
		if (!(LOC3)) goto LA4;
		LOC3 = (((NU8) ((NU32)((*c).Code->data[last] & ((NU32) 255)))) == ((NU8) 0));
		LA4: ;
		if (!LOC3) goto LA5;
		(*c).Code = (TY249229*) setLengthSeq(&((*c).Code)->Sup, sizeof(NU32), last);
		(*c).Debug = (TY164208*) setLengthSeq(&((*c).Debug)->Sup, sizeof(tlineinfo163527), last);
	}
	LA5: ;
}

N_NIMCALL(NI, genexpr_388057)(tctx249037* c, tnode188803* n, NIM_BOOL requiresvalue) {
	NI result;
	NI d;
	result = 0;
	removelasteof_387751(c);
	result = (*c).Code->Sup.len;
	d = -1;
	gen_380834(c, n, &d, 0);
	{
		if (!(((NI) (d)) < 0)) goto LA3;
		{
			if (!requiresvalue) goto LA7;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2957));
		}
		LA7: ;
		d = 0;
	}
	LA3: ;
	gabc_379683(c, n, ((NU8) 0), ((NI) (d)), 0, 0);
	return result;
}

N_NIMCALL(NI, genstmt_388036)(tctx249037* c, tnode188803* n) {
	NI result;
	NI d;
	result = 0;
	removelasteof_387751(c);
	result = (*c).Code->Sup.len;
	d = -1;
	gen_380834(c, n, &d, 0);
	gabc_379683(c, n, ((NU8) 0), 0, 0, 0);
	{
		if (!(0 <= ((NI) (d)))) goto LA3;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP4521));
	}
	LA3: ;
	return result;
}
N_NOINLINE(void, vmgenInit)(void) {
}

N_NOINLINE(void, vmgenDatInit)(void) {
}

