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

#include <string.h>

#include <math.h>
typedef struct Tctx244048 Tctx244048;
typedef struct Tnode191813 Tnode191813;
typedef struct Tsym191843 Tsym191843;
typedef struct Tlineinfo164338 Tlineinfo164338;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Ttype191849 Ttype191849;
typedef struct Tident168021 Tident168021;
typedef struct Tnodeseq191807 Tnodeseq191807;
typedef struct Tidobj168015 Tidobj168015;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Ttypeseq191845 Ttypeseq191845;
typedef struct Tscope191837 Tscope191837;
typedef struct TY191944 TY191944;
typedef struct Tstrtable191817 Tstrtable191817;
typedef struct Tsymseq191815 Tsymseq191815;
typedef struct Tloc191827 Tloc191827;
typedef struct Ropeobj162009 Ropeobj162009;
typedef struct Tlib191831 Tlib191831;
typedef struct Tcell46346 Tcell46346;
typedef struct Tcellset46358 Tcellset46358;
typedef struct Tgcheap48216 Tgcheap48216;
typedef struct Tcellseq46362 Tcellseq46362;
typedef struct Tpagedesc46354 Tpagedesc46354;
typedef struct Tmemregion28210 Tmemregion28210;
typedef struct Tsmallchunk27440 Tsmallchunk27440;
typedef struct Tllchunk28204 Tllchunk28204;
typedef struct Tbigchunk27442 Tbigchunk27442;
typedef struct Tintset27417 Tintset27417;
typedef struct Ttrunk27413 Ttrunk27413;
typedef struct Tavlnode28208 Tavlnode28208;
typedef struct Tgcstat48214 Tgcstat48214;
typedef struct Vmargs244042 Vmargs244042;
typedef struct TY385864 TY385864;
typedef struct Tfullreg385204 Tfullreg385204;
typedef struct Tpasscontext242005 Tpasscontext242005;
typedef struct TY244253 TY244253;
typedef struct TY165036 TY165036;
typedef struct PprocHEX3Aobjecttype244232 PprocHEX3Aobjecttype244232;
typedef struct TY244272 TY244272;
typedef struct Tstackframe385208 Tstackframe385208;
typedef struct TY298595 TY298595;
typedef struct TY397287 TY397287;
typedef struct TY244273 TY244273;
typedef struct TY386455 TY386455;
typedef struct TY86545 TY86545;
typedef struct TY244233 TY244233;
typedef struct TY244239 TY244239;
typedef struct Tinstantiation191833 Tinstantiation191833;
typedef struct Tlistentry130022 Tlistentry130022;
typedef struct Tbasechunk27438 Tbasechunk27438;
typedef struct Tfreecell27430 Tfreecell27430;
typedef struct Tblock244030 Tblock244030;
typedef struct TY244213 TY244213;
typedef struct TY191933 TY191933;
struct  Tlineinfo164338  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tnode191813  {
Ttype191849* typ;
Tlineinfo164338 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym191843* sym;
} S4;
struct {Tident168021* ident;
} S5;
struct {Tnodeseq191807* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
typedef N_NIMCALL_PTR(void, TY3289) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3294) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3289 marker;
TY3294 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj168015  {
  TNimObject Sup;
NI id;
};
struct  Tstrtable191817  {
NI counter;
Tsymseq191815* data;
};
struct  Tloc191827  {
NU8 k;
NU8 s;
NU16 flags;
Ttype191849* t;
Ropeobj162009* r;
Ropeobj162009* heaproot;
};
struct  Tsym191843  {
  Tidobj168015 Sup;
NU8 kind;
union{
struct {Ttypeseq191845* typeinstcache;
Tscope191837* typscope;
} S1;
struct {TY191944* procinstcache;
Tsym191843* gcunsafetyreason;
} S2;
struct {TY191944* usedgenerics;
Tstrtable191817 tab;
} S3;
struct {Tsym191843* guard;
} S4;
} kindU;
NU16 magic;
Ttype191849* typ;
Tident168021* name;
Tlineinfo164338 info;
Tsym191843* owner;
NU32 flags;
Tnode191813* ast;
NU32 options;
NI position;
NI offset;
Tloc191827 loc;
Tlib191831* annex;
Tnode191813* constraint;
};
typedef NimStringDesc* TY177061[3];
struct  Tcell46346  {
NI refcount;
TNimType* typ;
};
struct  Tcellseq46362  {
NI len;
NI cap;
Tcell46346** d;
};
struct  Tcellset46358  {
NI counter;
NI max;
Tpagedesc46354* head;
Tpagedesc46354** data;
};
typedef Tsmallchunk27440* TY28222[512];
typedef Ttrunk27413* Ttrunkbuckets27415[256];
struct  Tintset27417  {
Ttrunkbuckets27415 data;
};
struct  Tmemregion28210  {
NI minlargeobj;
NI maxlargeobj;
TY28222 freesmallchunks;
Tllchunk28204* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Tbigchunk27442* freechunkslist;
Tintset27417 chunkstarts;
Tavlnode28208* root;
Tavlnode28208* deleted;
Tavlnode28208* last;
Tavlnode28208* freeavlnodes;
};
struct  Tgcstat48214  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Tgcheap48216  {
void* stackbottom;
NI cyclethreshold;
Tcellseq46362 zct;
Tcellseq46362 decstack;
Tcellset46358 cycleroots;
Tcellseq46362 tempstack;
NI recgclock;
Tmemregion28210 region;
Tgcstat48214 stat;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (Vmargs244042* args, void* ClEnv);
void* ClEnv;
} Vmcallback244044;
struct  Tfullreg385204  {
NU8 kind;
union{
NI64 intval;
NF floatval;
Tnode191813* node;
Tfullreg385204* regaddr;
Tnode191813** nodeaddr;
} kindU;
};
struct  Vmargs244042  {
NI ra;
NI rb;
NI rc;
void* slots;
Tnode191813* currentexception;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef N_CLOSURE_PTR(void, TMP2703) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2705) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2707) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2709) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2711) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2713) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2715) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2717) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2719) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2721) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2723) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2725) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2727) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2729) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2731) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2733) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2735) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2737) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2739) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2741) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2743) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2745) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2748) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2750) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2752) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2754) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2757) (Vmargs244042* args, void* ClEnv);
typedef N_CLOSURE_PTR(void, TMP2759) (Vmargs244042* args, void* ClEnv);
struct  Tpasscontext242005  {
  TNimObject Sup;
NIM_BOOL fromcache;
};
struct  Tctx244048  {
  Tpasscontext242005 Sup;
TY244253* code;
TY165036* debug;
Tnode191813* globals;
Tnode191813* constants;
Ttypeseq191845* types;
Tnode191813* currentexceptiona;
Tnode191813* currentexceptionb;
NI exceptioninstr;
PprocHEX3Aobjecttype244232* prc;
Tsym191843* module;
Tnode191813* callsite;
NU8 mode;
NU8 features;
NIM_BOOL traceactive;
NI loopiterations;
Tlineinfo164338 comesfromheuristic;
TY244272* callbacks;
NimStringDesc* errorflag;
};
struct  Tstackframe385208  {
Tsym191843* prc;
TY385864* slots;
Tstackframe385208* next;
NI comesfrom;
TY298595* safepoints;
};
struct  Ttype191849  {
  Tidobj168015 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq191845* sons;
Tnode191813* n;
Tsym191843* owner;
Tsym191843* sym;
Tsym191843* destructor;
Tsym191843* deepcopy;
Tsym191843* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc191827 loc;
};
struct  TY397287  {
NI HEX3Astate;
NimStringDesc* error395461;
NimStringDesc* error395511;
};
struct  Tident168021  {
  Tidobj168015 Sup;
NimStringDesc* s;
Tident168021* next;
NI h;
};
typedef NimStringDesc* TY155965[2];
struct TY244273 {
NimStringDesc* Field0;
Vmcallback244044 Field1;
};
typedef N_CLOSURE_PTR(void, TMP2817) (Vmargs244042* args);
struct TY386455 {
NI Field0;
Tstackframe385208* Field1;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (Tlineinfo164338 info, NU16 msg, NimStringDesc* arg, void* ClEnv);
void* ClEnv;
} Terrorhandler182183;
struct TY86545 {
NimStringDesc* Field0;
NI Field1;
};
struct TY244239 {
NIM_BOOL Field0;
NU8 Field1;
};
typedef TY244239 TY244236[256];
struct  PprocHEX3Aobjecttype244232  {
TY244233* blocks;
Tsym191843* sym;
TY244236 slots;
NI maxslots;
};
struct  Tscope191837  {
NI depthlevel;
Tstrtable191817 symbols;
Tnodeseq191807* usingsyms;
Tscope191837* parent;
};
struct  Ropeobj162009  {
  TNimObject Sup;
Ropeobj162009* left;
Ropeobj162009* right;
NI length;
NimStringDesc* data;
};
struct  Tlistentry130022  {
  TNimObject Sup;
Tlistentry130022* prev;
Tlistentry130022* next;
};
struct  Tlib191831  {
  Tlistentry130022 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj162009* name;
Tnode191813* path;
};
typedef NI TY27420[16];
struct  Tpagedesc46354  {
Tpagedesc46354* next;
NI key;
TY27420 bits;
};
struct  Tbasechunk27438  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Tsmallchunk27440  {
  Tbasechunk27438 Sup;
Tsmallchunk27440* next;
Tsmallchunk27440* prev;
Tfreecell27430* freelist;
NI free;
NI acc;
NF data;
};
struct  Tllchunk28204  {
NI size;
NI acc;
Tllchunk28204* next;
};
struct  Tbigchunk27442  {
  Tbasechunk27438 Sup;
Tbigchunk27442* next;
Tbigchunk27442* prev;
NI align;
NF data;
};
struct  Ttrunk27413  {
Ttrunk27413* next;
NI key;
TY27420 bits;
};
typedef Tavlnode28208* TY28214[2];
struct  Tavlnode28208  {
TY28214 link;
NI key;
NI upperbound;
NI level;
};
struct  Tblock244030  {
Tsym191843* label;
TY244213* fixups;
};
struct  Tinstantiation191833  {
Tsym191843* sym;
Ttypeseq191845* concretetypes;
TY191933* usedby;
};
struct  Tfreecell27430  {
Tfreecell27430* next;
NI zerofield;
};
struct TY385864 {
  TGenericSeq Sup;
  Tfullreg385204 data[SEQ_DECL_SIZE];
};
struct Tnodeseq191807 {
  TGenericSeq Sup;
  Tnode191813* data[SEQ_DECL_SIZE];
};
struct TY298595 {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
struct Ttypeseq191845 {
  TGenericSeq Sup;
  Ttype191849* data[SEQ_DECL_SIZE];
};
struct TY191944 {
  TGenericSeq Sup;
  Tinstantiation191833* data[SEQ_DECL_SIZE];
};
struct Tsymseq191815 {
  TGenericSeq Sup;
  Tsym191843* data[SEQ_DECL_SIZE];
};
struct TY244253 {
  TGenericSeq Sup;
  NU32 data[SEQ_DECL_SIZE];
};
struct TY165036 {
  TGenericSeq Sup;
  Tlineinfo164338 data[SEQ_DECL_SIZE];
};
struct TY244272 {
  TGenericSeq Sup;
  TY244273 data[SEQ_DECL_SIZE];
};
struct TY244233 {
  TGenericSeq Sup;
  Tblock244030 data[SEQ_DECL_SIZE];
};
struct TY244213 {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
struct TY191933 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, globalerror_166134)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg);
static N_INLINE(NI, safelen_192125)(Tnode191813* n);
N_NIMCALL(NI, len_194377)(Ttype191849* n);
N_NIMCALL(void, globalerror_166145)(Tlineinfo164338 info, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
N_NIMCALL(NimStringDesc*, rendertree_213058)(Tnode191813* n, NU8 renderflags);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(void, setupglobalctx_397835)(Tsym191843* module);
N_NIMCALL(Tctx244048*, newctx_244281)(Tsym191843* module);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_52222)(Tcell46346* c);
static N_INLINE(NIM_BOOL, canbecycleroot_49867)(Tcell46346* c);
static N_INLINE(void, rtladdcycleroot_50623)(Tcell46346* c);
N_NOINLINE(void, incl_47065)(Tcellset46358* s, Tcell46346* cell);
static N_INLINE(Tcell46346*, usrtocell_49846)(void* usr);
static N_INLINE(void, decref_51804)(Tcell46346* c);
static N_INLINE(void, rtladdzct_51404)(Tcell46346* c);
N_NOINLINE(void, addzct_49817)(Tcellseq46362* s, Tcell46346* c);
N_NIMCALL(void, registeradditionalops_397659)(Tctx244048* c);
N_NIMCALL(void, registercallback_244400)(Tctx244048* c, NimStringDesc* name, Vmcallback244044 callback);
N_NIMCALL(void, sqrtwrapper_397662)(Vmargs244042* a);
N_NIMCALL(void, setresult_385860)(Vmargs244042* a, NF v);
N_NIMCALL(void, myreset_385401)(Tfullreg385204* n);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_NIMCALL(NF, getfloat_385972)(Vmargs244042* a, NI i);
N_NOINLINE(void, raiseassert_86557)(NimStringDesc* msg);
N_NIMCALL(void, lnwrapper_397665)(Vmargs244042* a);
N_NIMCALL(void, log10wrapper_397668)(Vmargs244042* a);
N_NIMCALL(void, log2wrapper_397671)(Vmargs244042* a);
N_NIMCALL(NF, log2_151247)(NF x);
N_NIMCALL(void, expwrapper_397674)(Vmargs244042* a);
N_NIMCALL(void, roundwrapper_397677)(Vmargs244042* a);
N_NIMCALL(void, setresult_385837)(Vmargs244042* a, NI64 v);
N_NIMCALL(void, arccoswrapper_397680)(Vmargs244042* a);
N_NIMCALL(void, arcsinwrapper_397683)(Vmargs244042* a);
N_NIMCALL(void, arctanwrapper_397686)(Vmargs244042* a);
N_NIMCALL(void, arctan2wrapper_397689)(Vmargs244042* a);
N_NIMCALL(void, coswrapper_397692)(Vmargs244042* a);
N_NIMCALL(void, coshwrapper_397695)(Vmargs244042* a);
N_NIMCALL(void, hypotwrapper_397698)(Vmargs244042* a);
N_NIMCALL(void, sinhwrapper_397701)(Vmargs244042* a);
N_NIMCALL(void, sinwrapper_397704)(Vmargs244042* a);
N_NIMCALL(void, tanwrapper_397707)(Vmargs244042* a);
N_NIMCALL(void, tanhwrapper_397710)(Vmargs244042* a);
N_NIMCALL(void, powwrapper_397713)(Vmargs244042* a);
N_NIMCALL(void, truncwrapper_397716)(Vmargs244042* a);
N_NIMCALL(void, floorwrapper_397719)(Vmargs244042* a);
N_NIMCALL(void, ceilwrapper_397722)(Vmargs244042* a);
N_NIMCALL(void, fmodwrapper_397725)(Vmargs244042* a);
N_NIMCALL(void, getenvwrapper_397728)(Vmargs244042* a);
N_NIMCALL(void, setresult_385915)(Vmargs244042* a, NimStringDesc* v);
N_NIMCALL(Tnode191813*, newnode_192401)(NU8 kind);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(NimStringDesc*, getenv_122644)(NimStringDesc* key);
N_NIMCALL(NimStringDesc*, getstring_385998)(Vmargs244042* a, NI i);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(void, existsenvwrapper_397731)(Vmargs244042* a);
N_NIMCALL(void, setresult_385883)(Vmargs244042* a, NIM_BOOL v_385886);
N_NIMCALL(NIM_BOOL, existsenv_122659)(NimStringDesc* key);
N_NIMCALL(void, direxistswrapper_397734)(Vmargs244042* a);
static N_INLINE(NIM_BOOL, direxists_118020)(NimStringDesc* dir);
N_NIMCALL(NIM_BOOL, nosexistsDir)(NimStringDesc* dir);
N_NIMCALL(void, fileexistswrapper_397737)(Vmargs244042* a);
static N_INLINE(NIM_BOOL, fileexists_118010)(NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename);
N_NIMCALL(void, writefilewrapper_397740)(Vmargs244042* a);
N_NIMCALL(void, writefile_13437)(NimStringDesc* filename, NimStringDesc* content);
N_NIMCALL(void, getcurrentexceptionmsgwrapper_397642)(Vmargs244042* a);
N_NIMCALL(void, refresh_244373)(Tctx244048* c, Tsym191843* module);
N_NIMCALL(NI, genproc_379402)(Tctx244048* c, Tsym191843* s);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP2803)(void* p, NI op);
N_NIMCALL(void, TMP2804)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(Tnode191813*, newnodeit_193807)(NU8 kind, Tlineinfo164338 info, Ttype191849* typ);
N_NIMCALL(Tnode191813*, setupmacroparam_398865)(Tnode191813* x);
N_NIMCALL(Tnode191813*, canonvalue_375370)(Tnode191813* n);
N_NIMCALL(Tnode191813*, regtonode_386340)(Tfullreg385204 x);
N_NIMCALL(void, rawexecute_387213)(Tctx244048* c, NI start, Tstackframe385208* tos_387217, Tfullreg385204* Result);
N_NIMCALL(void, TMP2806)(void* p, NI op);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(void, createstrkeepnode_385467)(Tfullreg385204* x);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(void, asgncomplex_386260)(Tfullreg385204* x, Tfullreg385204 y);
N_NIMCALL(Tnode191813*, copyvalue_386084)(Tnode191813* src);
N_NIMCALL(NI, sonslen_194403)(Tnode191813* n);
N_NIMCALL(void, moveconst_386046)(Tfullreg385204* x, Tfullreg385204 y);
N_NIMCALL(void, putintonode_386290)(Tnode191813** n, Tfullreg385204 x);
N_NIMCALL(void, stacktrace_385336)(Tctx244048* c, Tstackframe385208* tos, NI pc, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, msgwriteln_165536)(NimStringDesc* s);
N_NIMCALL(void, stacktraceaux_385233)(Tctx244048* c, Tstackframe385208* x_385236, NI pc, NI recursionlimit);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NimStringDesc*, tofilename_165266)(NI32 fileidx);
static N_INLINE(NI, tolinenumber_165439)(Tlineinfo164338 info);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(void, localerror_166155)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg);
static N_INLINE(NI, len_192097)(Tnode191813* n);
N_NIMCALL(Tnode191813*, skipcolon_382277)(Tnode191813* n);
N_NIMCALL(NIM_BOOL, inset_241019)(Tnode191813* s, Tnode191813* elem);
N_NIMCALL(void, addson_193819)(Tnode191813* father, Tnode191813* son);
N_NIMCALL(Tnode191813*, copytree_196028)(Tnode191813* src);
N_NIMCALL(void, add_192164)(Tnode191813* father, Tnode191813* son);
N_NIMCALL(Tnode191813*, diffsets_241054)(Tnode191813* a, Tnode191813* b);
N_NIMCALL(void, discardsons_192091)(Tnode191813* father);
N_NIMCALL(NI64, cardset_241089)(Tnode191813* s);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(NI, cmpStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(NIM_BOOL, containssets_241075)(Tnode191813* a, Tnode191813* b);
N_NIMCALL(NIM_BOOL, equalsets_241082)(Tnode191813* a, Tnode191813* b);
N_NIMCALL(Tnode191813*, intersectsets_241061)(Tnode191813* a, Tnode191813* b);
N_NIMCALL(Tnode191813*, unionsets_241047)(Tnode191813* a, Tnode191813* b);
N_NIMCALL(Tnode191813*, symdiffsets_241068)(Tnode191813* a, Tnode191813* b);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_76443, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(NI, nimParseBiggestFloat)(NimStringDesc* s, NF* number, NI start);
N_NIMCALL(NI, nimParseBiggestFloat)(NimStringDesc* s, NF* number, NI start);
N_NIMCALL(NIM_BOOL, levalueconv_257021)(Tnode191813* a, Tnode191813* b);
N_NIMCALL(NimStringDesc*, msgkindtostring_165616)(NU16 kind);
N_NIMCALL(NimStringDesc*, HEX24_213089)(Tnode191813* n);
N_NIMCALL(NI, compile_387010)(Tctx244048* c, Tsym191843* s);
static N_INLINE(NIM_BOOL, isemptytype_196933)(Ttype191849* t);
N_NIMCALL(void, putintoreg_386320)(Tfullreg385204* dest, Tnode191813* n);
N_NIMCALL(Tnode191813*, getnullvalue_378207)(Ttype191849* typ, Tlineinfo164338 info);
N_NIMCALL(Tnode191813*, newnodei_193351)(NU8 kind, Tlineinfo164338 info);
N_NIMCALL(Tnode191813*, newsymnode_193325)(Tsym191843* sym);
N_NIMCALL(Tnode191813*, evaltemplate_384260)(Tnode191813* n, Tsym191843* tmpl, Tsym191843* gensymowner);
static N_INLINE(Tnode191813*, HEX5BHEX5D_192244)(Tnode191813* n, NI i);
N_NIMCALL(NIM_BOOL, overlap_241012)(Tnode191813* a, Tnode191813* b);
N_NIMCALL(void, pushsafepoint_386366)(Tstackframe385208* f, NI pc);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(void, popsafepoint_386410)(Tstackframe385208* f);
static N_INLINE(NI, pop_386414)(TY298595** s);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, cleanuponexception_386451)(Tctx244048* c, Tstackframe385208* tos, TY386455* Result);
N_NIMCALL(Ttype191849*, skiptypes_195167)(Ttype191849* t, NU64 kinds);
N_NIMCALL(NI, inheritancediff_228064)(Ttype191849* a, Ttype191849* b);
N_NIMCALL(void, bailout_385358)(Tctx244048* c, Tstackframe385208* tos);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_NIMCALL(NIM_BOOL, fitsregister_377240)(Ttype191849* t);
N_NIMCALL(void, message_166188)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, msgquit_165107)(NI8 x);
N_NIMCALL(NI64, getordvalue_221178)(Tnode191813* n);
N_NIMCALL(void, genericShallowAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newlen);
N_NIMCALL(NIM_BOOL, sametype_226092)(Ttype191849* a, Ttype191849* b, NU8 flags);
N_NIMCALL(void, internalerror_166199)(Tlineinfo164338 info, NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_82729, TNimType* typ);
N_NIMCALL(Tnode191813*, copynode_195640)(Tnode191813* src);
N_NIMCALL(Tnode191813*, opmaptypetoast_381265)(Ttype191849* t, Tlineinfo164338 info);
N_NIMCALL(NimStringDesc*, opslurp_381040)(NimStringDesc* file, Tlineinfo164338 info, Tsym191843* module);
N_NIMCALL(NimStringDesc*, opgorge_381027)(NimStringDesc* cmd, NimStringDesc* input);
N_NIMCALL(Tnode191813*, parsestring_211306)(NimStringDesc* s, NimStringDesc* filename, NI line, Terrorhandler182183 errorhandler);
N_NIMCALL(NimStringDesc*, tofullpath_165276)(NI32 fileidx);
N_CLOSURE(void, HEX3Aanonymous_395464)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg, void* ClEnv);
N_NIMCALL(NimStringDesc*, formatmsg_165982)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg);
N_CLOSURE(void, HEX3Aanonymous_395514)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg, void* ClEnv);
static N_INLINE(NimStringDesc*, tofilelinecol_165469)(Tlineinfo164338 info);
N_NIMCALL(Tident168021*, getident_168463)(NimStringDesc* identifier);
N_NIMCALL(NIM_BOOL, opconv_386815)(Tfullreg385204* dest, Tfullreg385204 src, Ttype191849* desttyp, Ttype191849* srctyp);
N_NIMCALL(void, internalerror_166218)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(NimStringDesc*, HEX24_6401)(NU64 x);
N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f);
N_NIMCALL(NimStringDesc*, typetostring_221032)(Ttype191849* typ, NU8 prefer);
N_NIMCALL(NI64, firstord_221004)(Ttype191849* t);
N_NIMCALL(NI64, lastord_221010)(Ttype191849* t);
N_NIMCALL(NimStringDesc*, HEX24_166306)(TY86545 x);
N_NIMCALL(void, delson_195577)(Tnode191813* father, NI idx);
N_NIMCALL(Tsym191843*, newsym_192656)(NU8 symkind, Tident168021* name, Tsym191843* owner, Tlineinfo164338 info);
N_NIMCALL(Tnode191813*, loadany_383463)(NimStringDesc* s, Ttype191849* t);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
N_NIMCALL(void, storeany_382625)(NimStringDesc** s, Ttype191849* t, Tnode191813* a);
N_NIMCALL(NIM_BOOL, cyclictree_220138)(Tnode191813* n);
N_NIMCALL(Tnode191813*, evalconstexpraux_398357)(Tsym191843* module, Tsym191843* prc, Tnode191813* n_398361, NU8 mode);
N_NIMCALL(Tnode191813*, transformexpr_371407)(Tsym191843* module, Tnode191813* n);
N_NIMCALL(NI, genexpr_380050)(Tctx244048* c, Tnode191813* n, NIM_BOOL requiresvalue);
N_NIMCALL(void, evalstmt_397427)(Tctx244048* c, Tnode191813* n_397430);
N_NIMCALL(NI, genstmt_380028)(Tctx244048* c, Tnode191813* n);
N_NIMCALL(Tnode191813*, execute_397403)(Tctx244048* c, NI start);
STRING_LITERAL(TMP2694, "", 0);
STRING_LITERAL(TMP2695, "in call \'$#\' got $#, but expected $# argument(s)", 48);
STRING_LITERAL(TMP2697, "stdlib.math.sqrt", 16);
TNimNode* NimDT_385204_kind[7];
STRING_LITERAL(TMP2701, "i < a.rc - 1 ", 13);
STRING_LITERAL(TMP2702, "s[i + a.rb + 1].kind == rkFloat ", 32);
STRING_LITERAL(TMP2704, "stdlib.math.ln", 14);
STRING_LITERAL(TMP2706, "stdlib.math.log10", 17);
STRING_LITERAL(TMP2708, "stdlib.math.log2", 16);
STRING_LITERAL(TMP2710, "stdlib.math.exp", 15);
STRING_LITERAL(TMP2712, "stdlib.math.round", 17);
STRING_LITERAL(TMP2714, "stdlib.math.arccos", 18);
STRING_LITERAL(TMP2716, "stdlib.math.arcsin", 18);
STRING_LITERAL(TMP2718, "stdlib.math.arctan", 18);
STRING_LITERAL(TMP2720, "stdlib.math.arctan2", 19);
STRING_LITERAL(TMP2722, "stdlib.math.cos", 15);
STRING_LITERAL(TMP2724, "stdlib.math.cosh", 16);
STRING_LITERAL(TMP2726, "stdlib.math.hypot", 17);
STRING_LITERAL(TMP2728, "stdlib.math.sinh", 16);
STRING_LITERAL(TMP2730, "stdlib.math.sin", 15);
STRING_LITERAL(TMP2732, "stdlib.math.tan", 15);
STRING_LITERAL(TMP2734, "stdlib.math.tanh", 16);
STRING_LITERAL(TMP2736, "stdlib.math.pow", 15);
STRING_LITERAL(TMP2738, "stdlib.math.trunc", 17);
STRING_LITERAL(TMP2740, "stdlib.math.floor", 17);
STRING_LITERAL(TMP2742, "stdlib.math.ceil", 16);
STRING_LITERAL(TMP2744, "stdlib.math.fmod", 16);
STRING_LITERAL(TMP2746, "stdlib.os.getEnv", 16);
STRING_LITERAL(TMP2747, "s[i + a.rb + 1].kind == rkNode ", 31);
STRING_LITERAL(TMP2749, "stdlib.os.existsEnv", 19);
STRING_LITERAL(TMP2751, "stdlib.os.dirExists", 19);
STRING_LITERAL(TMP2753, "stdlib.os.fileExists", 20);
STRING_LITERAL(TMP2755, "stdlib.system.writeFile", 23);
STRING_LITERAL(TMP2758, "stdlib.system.getCurrentExceptionMsg", 36);
STRING_LITERAL(TMP2807, "stack trace: (most recent call last)", 36);
STRING_LITERAL(TMP2808, " calls omitted\012", 15);
STRING_LITERAL(TMP2814, "[", 1);
STRING_LITERAL(TMP2815, "..", 2);
STRING_LITERAL(TMP2816, "]", 1);
STRING_LITERAL(TMP2818, "VM not allowed to do FFI", 24);
STRING_LITERAL(TMP2819, "VM not built with FFI support", 29);
NIM_CONST TY386455 TMP2823 = {((NI) -1),
NIM_NIL}
;
STRING_LITERAL(TMP2824, "cannot swap operands", 20);
STRING_LITERAL(TMP2825, "too implement", 13);
STRING_LITERAL(TMP2826, "value out of range", 18);
STRING_LITERAL(TMP2827, "cannot add to node kind: ", 25);
STRING_LITERAL(TMP2828, "intVal", 6);
STRING_LITERAL(TMP2829, "floatVal", 8);
STRING_LITERAL(TMP2830, "symbol", 6);
STRING_LITERAL(TMP2831, "ident", 5);
STRING_LITERAL(TMP2884, "node has no type", 16);
STRING_LITERAL(TMP2885, "strVal", 6);
STRING_LITERAL(TMP2900, "multiple statements", 19);
STRING_LITERAL(TMP2901, "callsite", 8);
STRING_LITERAL(TMP2902, "(", 1);
STRING_LITERAL(TMP2903, ",", 1);
STRING_LITERAL(TMP2904, ")", 1);
STRING_LITERAL(TMP2905, "cannot set type", 15);
STRING_LITERAL(TMP2906, "opConv for enum", 15);
STRING_LITERAL(TMP2907, "false", 5);
STRING_LITERAL(TMP2908, "true", 4);
STRING_LITERAL(TMP2909, "cannot convert to string ", 25);
STRING_LITERAL(TMP2910, "cannot evaluate cast", 20);
STRING_LITERAL(TMP2912, "vm.nim", 6);
NIM_CONST TY86545 TMP2911 = {((NimStringDesc*) &TMP2912),
((NI) 1309)}
;
NIM_CONST TY86545 TMP2913 = {((NimStringDesc*) &TMP2912),
((NI) 1310)}
;
STRING_LITERAL(TMP2914, "request to create a NimNode of invalid kind", 43);
STRING_LITERAL(TMP2915, ":tmp", 4);
STRING_LITERAL(TMP2916, "request to create symbol of invalid kind", 40);
NIM_CONST TY86545 TMP2917 = {((NimStringDesc*) &TMP2912),
((NI) 1364)}
;
Tctx244048* globalctx_397830;
NI olderrorcount_398007;
NI evalmacrocounter_398897;
extern Tgcheap48216 gch_48244;
TNimType NTI385204; /* TFullReg */
TNimType NTI385202; /* TRegisterKind */
extern TNimType NTI5710; /* BiggestInt */
extern TNimType NTI5712; /* BiggestFloat */
extern TNimType NTI191805; /* PNode */
TNimType NTI385219; /* ptr TFullReg */
extern TNimType NTI385221; /* ptr PNode */
TNimType NTI385208; /* TStackFrame */
extern TNimType NTI191811; /* PSym */
TNimType NTI385864; /* seq[TFullReg] */
extern TNimType NTI108; /* int */
extern TNimType NTI298595; /* seq[int] */
TNimType NTI385206; /* PStackFrame */
TNimType NTI397287; /* object */
extern TNimType NTI311033; /* range -1..0(int) */
extern TNimType NTI149; /* string */
TNimType NTI397399; /* ref object */
extern TNimType NTI191813; /* TNode */
extern TNimType NTI191807; /* TNodeSeq */
extern TNimType NTI191029; /* TNodeKind */
extern Tnode191813* emptynode_192807;
extern NI gerrorcounter_165015;

static N_INLINE(NI, safelen_192125)(Tnode191813* n) {
	NI result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).kind >= ((NU8) 0) && (*n).kind <= ((NU8) 23));
		if (LOC3) goto LA4;
		LOC3 = (*n).kindU.S6.sons == 0;
		LA4: ;
		if (!LOC3) goto LA5;
		result = ((NI) 0);
	}
	goto LA1;
	LA5: ;
	{
		result = ((*n).kindU.S6.sons ? (*n).kindU.S6.sons->Sup.len : 0);
	}
	LA1: ;
	return result;
}

static N_INLINE(NIM_BOOL, canbecycleroot_49867)(Tcell46346* c) {
	NIM_BOOL result;
	result = 0;
	result = !((((*(*c).typ).flags &(1<<((((NU8) 1))&7)))!=0));
	return result;
}

static N_INLINE(void, rtladdcycleroot_50623)(Tcell46346* c) {
	{
		if (!!((((NI) ((NI)((*c).refcount & ((NI) 3)))) == ((NI) 3)))) goto LA3;
		(*c).refcount = (NI)((NI)((*c).refcount & ((NI) -4)) | ((NI) 3));
		incl_47065((&gch_48244.cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_52222)(Tcell46346* c) {
	(*c).refcount = (NI)((NU32)((*c).refcount) + (NU32)(((NI) 8)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_49867(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_50623(c);
	}
	LA4: ;
}

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

static N_INLINE(void, rtladdzct_51404)(Tcell46346* c) {
	addzct_49817((&gch_48244.zct), c);
}

static N_INLINE(void, decref_51804)(Tcell46346* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_51404(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_49867(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_50623(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		Tcell46346* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_49846(src);
		incref_52222(LOC5);
	}
	LA3: ;
	{
		Tcell46346* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_49846((*dest));
		decref_51804(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

N_NIMCALL(void, myreset_385401)(Tfullreg385204* n) {
	genericReset((void*)(&(*n)), (&NTI385204));
}

N_NIMCALL(void, setresult_385860)(Vmargs244042* a, NF v) {
	TY385864* s;
	s = 0;
	s = ((TY385864*) ((*a).slots));
	{
		if (!!((s->data[(*a).ra].kind == ((NU8) 3)))) goto LA3;
		myreset_385401((&s->data[(*a).ra]));
		s->data[(*a).ra].kind = ((NU8) 3);
	}
	LA3: ;
	s->data[(*a).ra].kindU.floatval = v;
}

N_NIMCALL(NF, getfloat_385972)(Vmargs244042* a, NI i) {
	NF result;
	TY385864* s;
	result = 0;
	{
		if (!!((((NI) (i)) < ((NI) ((NI)(((NI) ((*a).rc)) - ((NI) 1))))))) goto LA3;
		raiseassert_86557(((NimStringDesc*) &TMP2701));
	}
	LA3: ;
	s = ((TY385864*) ((*a).slots));
	{
		if (!!((s->data[(NI)(((NI) ((NI)(((NI) (i)) + ((NI) ((*a).rb))))) + ((NI) 1))].kind == ((NU8) 3)))) goto LA7;
		raiseassert_86557(((NimStringDesc*) &TMP2702));
	}
	LA7: ;
	result = s->data[(NI)(((NI) ((NI)(((NI) (i)) + ((NI) ((*a).rb))))) + ((NI) 1))].kindU.floatval;
	return result;
}

N_NIMCALL(void, sqrtwrapper_397662)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = sqrt(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, lnwrapper_397665)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = log(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, log10wrapper_397668)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = log10(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, log2wrapper_397671)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = log2_151247(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, expwrapper_397674)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = exp(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, setresult_385837)(Vmargs244042* a, NI64 v) {
	TY385864* s;
	s = 0;
	s = ((TY385864*) ((*a).slots));
	{
		if (!!((s->data[(*a).ra].kind == ((NU8) 2)))) goto LA3;
		myreset_385401((&s->data[(*a).ra]));
		s->data[(*a).ra].kind = ((NU8) 2);
	}
	LA3: ;
	s->data[(*a).ra].kindU.intval = v;
}

N_NIMCALL(void, roundwrapper_397677)(Vmargs244042* a) {
	NF LOC1;
	NI LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = lrint(LOC1);
	setresult_385837(a, ((NI64) (LOC2)));
}

N_NIMCALL(void, arccoswrapper_397680)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = acos(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, arcsinwrapper_397683)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = asin(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, arctanwrapper_397686)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = atan(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, arctan2wrapper_397689)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	NF LOC3;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = getfloat_385972(a, ((NI) 1));
	LOC3 = 0;
	LOC3 = atan2(LOC1, LOC2);
	setresult_385860(a, LOC3);
}

N_NIMCALL(void, coswrapper_397692)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = cos(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, coshwrapper_397695)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = cosh(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, hypotwrapper_397698)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	NF LOC3;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = getfloat_385972(a, ((NI) 1));
	LOC3 = 0;
	LOC3 = hypot(LOC1, LOC2);
	setresult_385860(a, LOC3);
}

N_NIMCALL(void, sinhwrapper_397701)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = sinh(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, sinwrapper_397704)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = sin(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, tanwrapper_397707)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = tan(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, tanhwrapper_397710)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = tanh(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, powwrapper_397713)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	NF LOC3;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = getfloat_385972(a, ((NI) 1));
	LOC3 = 0;
	LOC3 = pow(LOC1, LOC2);
	setresult_385860(a, LOC3);
}

N_NIMCALL(void, truncwrapper_397716)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = trunc(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, floorwrapper_397719)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = floor(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, ceilwrapper_397722)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = ceil(LOC1);
	setresult_385860(a, LOC2);
}

N_NIMCALL(void, fmodwrapper_397725)(Vmargs244042* a) {
	NF LOC1;
	NF LOC2;
	NF LOC3;
	LOC1 = 0;
	LOC1 = getfloat_385972(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = getfloat_385972(a, ((NI) 1));
	LOC3 = 0;
	LOC3 = fmod(LOC1, LOC2);
	setresult_385860(a, LOC3);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		Tcell46346* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_49846(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Tcell46346* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_49846((*dest));
		{
			(*c).refcount -= ((NI) 8);
			if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA11;
			rtladdzct_51404(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	Tcell46346* c;
	c = usrtocell_49846(p);
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_51404(c);
	}
	LA3: ;
}

N_NIMCALL(void, setresult_385915)(Vmargs244042* a, NimStringDesc* v) {
	TY385864* s;
	NimStringDesc* LOC5;
	s = 0;
	s = ((TY385864*) ((*a).slots));
	{
		if (!!((s->data[(*a).ra].kind == ((NU8) 1)))) goto LA3;
		myreset_385401((&s->data[(*a).ra]));
		s->data[(*a).ra].kind = ((NU8) 1);
	}
	LA3: ;
	asgnRefNoCycle((void**) (&s->data[(*a).ra].kindU.node), newnode_192401(((NU8) 20)));
	LOC5 = 0;
	LOC5 = (*s->data[(*a).ra].kindU.node).kindU.S3.strval; (*s->data[(*a).ra].kindU.node).kindU.S3.strval = copyStringRC1(v);
	if (LOC5) nimGCunrefNoCycle(LOC5);
}

N_NIMCALL(NimStringDesc*, getstring_385998)(Vmargs244042* a, NI i) {
	NimStringDesc* result;
	TY385864* s;
	result = 0;
	{
		if (!!((((NI) (i)) < ((NI) ((NI)(((NI) ((*a).rc)) - ((NI) 1))))))) goto LA3;
		raiseassert_86557(((NimStringDesc*) &TMP2701));
	}
	LA3: ;
	s = ((TY385864*) ((*a).slots));
	{
		if (!!((s->data[(NI)(((NI) ((NI)(((NI) (i)) + ((NI) ((*a).rb))))) + ((NI) 1))].kind == ((NU8) 1)))) goto LA7;
		raiseassert_86557(((NimStringDesc*) &TMP2747));
	}
	LA7: ;
	result = copyString((*s->data[(NI)(((NI) ((NI)(((NI) (i)) + ((NI) ((*a).rb))))) + ((NI) 1))].kindU.node).kindU.S3.strval);
	return result;
}

N_NIMCALL(void, getenvwrapper_397728)(Vmargs244042* a) {
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	LOC1 = 0;
	LOC1 = getstring_385998(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = getenv_122644(LOC1);
	setresult_385915(a, LOC2);
}

N_NIMCALL(void, setresult_385883)(Vmargs244042* a, NIM_BOOL v_385886) {
	NI v;
	TY385864* s;
	v = v_385886;
	s = 0;
	s = ((TY385864*) ((*a).slots));
	{
		if (!!((s->data[(*a).ra].kind == ((NU8) 2)))) goto LA3;
		myreset_385401((&s->data[(*a).ra]));
		s->data[(*a).ra].kind = ((NU8) 2);
	}
	LA3: ;
	s->data[(*a).ra].kindU.intval = ((NI64) (v));
}

N_NIMCALL(void, existsenvwrapper_397731)(Vmargs244042* a) {
	NimStringDesc* LOC1;
	NIM_BOOL LOC2;
	LOC1 = 0;
	LOC1 = getstring_385998(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = existsenv_122659(LOC1);
	setresult_385883(a, LOC2);
}

static N_INLINE(NIM_BOOL, direxists_118020)(NimStringDesc* dir) {
	NIM_BOOL result;
	result = 0;
	result = nosexistsDir(dir);
	return result;
}

N_NIMCALL(void, direxistswrapper_397734)(Vmargs244042* a) {
	NimStringDesc* LOC1;
	NIM_BOOL LOC2;
	LOC1 = 0;
	LOC1 = getstring_385998(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = direxists_118020(LOC1);
	setresult_385883(a, LOC2);
}

static N_INLINE(NIM_BOOL, fileexists_118010)(NimStringDesc* filename) {
	NIM_BOOL result;
	result = 0;
	result = nosexistsFile(filename);
	return result;
}

N_NIMCALL(void, fileexistswrapper_397737)(Vmargs244042* a) {
	NimStringDesc* LOC1;
	NIM_BOOL LOC2;
	LOC1 = 0;
	LOC1 = getstring_385998(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = fileexists_118010(LOC1);
	setresult_385883(a, LOC2);
}

N_NIMCALL(void, writefilewrapper_397740)(Vmargs244042* a) {
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	LOC1 = 0;
	LOC1 = getstring_385998(a, ((NI) 0));
	LOC2 = 0;
	LOC2 = getstring_385998(a, ((NI) 1));
	writefile_13437(LOC1, LOC2);
}

N_NIMCALL(void, getcurrentexceptionmsgwrapper_397642)(Vmargs244042* a) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	{
		if (!(*a).currentexception == 0) goto LA4;
		LOC1 = copyString(((NimStringDesc*) &TMP2694));
	}
	goto LA2;
	LA4: ;
	{
		LOC1 = copyString((*(*(*a).currentexception).kindU.S6.sons->data[((NI) 2)]).kindU.S3.strval);
	}
	LA2: ;
	setresult_385915(a, LOC1);
}

N_NIMCALL(void, registeradditionalops_397659)(Tctx244048* c) {
	Vmcallback244044 LOC1;
	Vmcallback244044 LOC2;
	Vmcallback244044 LOC3;
	Vmcallback244044 LOC4;
	Vmcallback244044 LOC5;
	Vmcallback244044 LOC6;
	Vmcallback244044 LOC7;
	Vmcallback244044 LOC8;
	Vmcallback244044 LOC9;
	Vmcallback244044 LOC10;
	Vmcallback244044 LOC11;
	Vmcallback244044 LOC12;
	Vmcallback244044 LOC13;
	Vmcallback244044 LOC14;
	Vmcallback244044 LOC15;
	Vmcallback244044 LOC16;
	Vmcallback244044 LOC17;
	Vmcallback244044 LOC18;
	Vmcallback244044 LOC19;
	Vmcallback244044 LOC20;
	Vmcallback244044 LOC21;
	Vmcallback244044 LOC22;
	Vmcallback244044 LOC23;
	Vmcallback244044 LOC24;
	Vmcallback244044 LOC25;
	Vmcallback244044 LOC26;
	Vmcallback244044 LOC27;
	Vmcallback244044 LOC28;
	memset((void*)(&LOC1), 0, sizeof(LOC1));
	LOC1.ClPrc = ((TMP2703) (sqrtwrapper_397662)); LOC1.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2697), LOC1);
	memset((void*)(&LOC2), 0, sizeof(LOC2));
	LOC2.ClPrc = ((TMP2705) (lnwrapper_397665)); LOC2.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2704), LOC2);
	memset((void*)(&LOC3), 0, sizeof(LOC3));
	LOC3.ClPrc = ((TMP2707) (log10wrapper_397668)); LOC3.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2706), LOC3);
	memset((void*)(&LOC4), 0, sizeof(LOC4));
	LOC4.ClPrc = ((TMP2709) (log2wrapper_397671)); LOC4.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2708), LOC4);
	memset((void*)(&LOC5), 0, sizeof(LOC5));
	LOC5.ClPrc = ((TMP2711) (expwrapper_397674)); LOC5.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2710), LOC5);
	memset((void*)(&LOC6), 0, sizeof(LOC6));
	LOC6.ClPrc = ((TMP2713) (roundwrapper_397677)); LOC6.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2712), LOC6);
	memset((void*)(&LOC7), 0, sizeof(LOC7));
	LOC7.ClPrc = ((TMP2715) (arccoswrapper_397680)); LOC7.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2714), LOC7);
	memset((void*)(&LOC8), 0, sizeof(LOC8));
	LOC8.ClPrc = ((TMP2717) (arcsinwrapper_397683)); LOC8.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2716), LOC8);
	memset((void*)(&LOC9), 0, sizeof(LOC9));
	LOC9.ClPrc = ((TMP2719) (arctanwrapper_397686)); LOC9.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2718), LOC9);
	memset((void*)(&LOC10), 0, sizeof(LOC10));
	LOC10.ClPrc = ((TMP2721) (arctan2wrapper_397689)); LOC10.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2720), LOC10);
	memset((void*)(&LOC11), 0, sizeof(LOC11));
	LOC11.ClPrc = ((TMP2723) (coswrapper_397692)); LOC11.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2722), LOC11);
	memset((void*)(&LOC12), 0, sizeof(LOC12));
	LOC12.ClPrc = ((TMP2725) (coshwrapper_397695)); LOC12.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2724), LOC12);
	memset((void*)(&LOC13), 0, sizeof(LOC13));
	LOC13.ClPrc = ((TMP2727) (hypotwrapper_397698)); LOC13.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2726), LOC13);
	memset((void*)(&LOC14), 0, sizeof(LOC14));
	LOC14.ClPrc = ((TMP2729) (sinhwrapper_397701)); LOC14.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2728), LOC14);
	memset((void*)(&LOC15), 0, sizeof(LOC15));
	LOC15.ClPrc = ((TMP2731) (sinwrapper_397704)); LOC15.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2730), LOC15);
	memset((void*)(&LOC16), 0, sizeof(LOC16));
	LOC16.ClPrc = ((TMP2733) (tanwrapper_397707)); LOC16.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2732), LOC16);
	memset((void*)(&LOC17), 0, sizeof(LOC17));
	LOC17.ClPrc = ((TMP2735) (tanhwrapper_397710)); LOC17.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2734), LOC17);
	memset((void*)(&LOC18), 0, sizeof(LOC18));
	LOC18.ClPrc = ((TMP2737) (powwrapper_397713)); LOC18.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2736), LOC18);
	memset((void*)(&LOC19), 0, sizeof(LOC19));
	LOC19.ClPrc = ((TMP2739) (truncwrapper_397716)); LOC19.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2738), LOC19);
	memset((void*)(&LOC20), 0, sizeof(LOC20));
	LOC20.ClPrc = ((TMP2741) (floorwrapper_397719)); LOC20.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2740), LOC20);
	memset((void*)(&LOC21), 0, sizeof(LOC21));
	LOC21.ClPrc = ((TMP2743) (ceilwrapper_397722)); LOC21.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2742), LOC21);
	memset((void*)(&LOC22), 0, sizeof(LOC22));
	LOC22.ClPrc = ((TMP2745) (fmodwrapper_397725)); LOC22.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2744), LOC22);
	memset((void*)(&LOC23), 0, sizeof(LOC23));
	LOC23.ClPrc = ((TMP2748) (getenvwrapper_397728)); LOC23.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2746), LOC23);
	memset((void*)(&LOC24), 0, sizeof(LOC24));
	LOC24.ClPrc = ((TMP2750) (existsenvwrapper_397731)); LOC24.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2749), LOC24);
	memset((void*)(&LOC25), 0, sizeof(LOC25));
	LOC25.ClPrc = ((TMP2752) (direxistswrapper_397734)); LOC25.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2751), LOC25);
	memset((void*)(&LOC26), 0, sizeof(LOC26));
	LOC26.ClPrc = ((TMP2754) (fileexistswrapper_397737)); LOC26.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2753), LOC26);
	memset((void*)(&LOC27), 0, sizeof(LOC27));
	LOC27.ClPrc = ((TMP2757) (writefilewrapper_397740)); LOC27.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2755), LOC27);
	memset((void*)(&LOC28), 0, sizeof(LOC28));
	LOC28.ClPrc = ((TMP2759) (getcurrentexceptionmsgwrapper_397642)); LOC28.ClEnv = NIM_NIL;
	registercallback_244400(c, ((NimStringDesc*) &TMP2758), LOC28);
}

N_NIMCALL(void, setupglobalctx_397835)(Tsym191843* module) {
	{
		if (!globalctx_397830 == 0) goto LA3;
		asgnRef((void**) (&globalctx_397830), newctx_244281(module));
		registeradditionalops_397659(globalctx_397830);
	}
	goto LA1;
	LA3: ;
	{
		refresh_244373(globalctx_397830, module);
	}
	LA1: ;
}
N_NIMCALL(void, TMP2803)(void* p, NI op) {
	TY385864* a;
	NI LOC1;
	a = (TY385864*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	switch (a->data[LOC1].kind) {
	case ((NU8) 0):
	break;
	case ((NU8) 2):
	break;
	case ((NU8) 3):
	break;
	case ((NU8) 1):
	nimGCvisit((void*)a->data[LOC1].kindU.node, op);
	break;
	case ((NU8) 4):
	break;
	case ((NU8) 5):
	break;
	} 
	}
}
N_NIMCALL(void, TMP2804)(void* p, NI op) {
	Tstackframe385208* a;
	a = (Tstackframe385208*)p;
	nimGCvisit((void*)(*a).prc, op);
	nimGCvisit((void*)(*a).slots, op);
	nimGCvisit((void*)(*a).next, op);
	nimGCvisit((void*)(*a).safepoints, op);
}

N_NIMCALL(Tnode191813*, setupmacroparam_398865)(Tnode191813* x) {
	Tnode191813* result;
	result = 0;
	result = x;
	{
		if (!((*result).kind == ((NU8) 59) || (*result).kind == ((NU8) 58))) goto LA3;
		result = (*result).kindU.S6.sons->data[((NI) 1)];
	}
	LA3: ;
	result = canonvalue_375370(result);
	(*result).flags |= ((NI16)1)<<((((NU8) 12))%(sizeof(NI16)*8));
	asgnRefNoCycle((void**) (&(*result).typ), (*x).typ);
	return result;
}

N_NIMCALL(Tnode191813*, regtonode_386340)(Tfullreg385204 x) {
	Tnode191813* result;
	result = 0;
	switch (x.kind) {
	case ((NU8) 0):
	{
		result = newnode_192401(((NU8) 1));
	}
	break;
	case ((NU8) 2):
	{
		result = newnode_192401(((NU8) 6));
		(*result).kindU.S1.intval = x.kindU.intval;
	}
	break;
	case ((NU8) 3):
	{
		result = newnode_192401(((NU8) 16));
		(*result).kindU.S2.floatval = x.kindU.floatval;
	}
	break;
	case ((NU8) 1):
	{
		result = x.kindU.node;
	}
	break;
	case ((NU8) 4):
	{
		result = regtonode_386340((*x.kindU.regaddr));
	}
	break;
	case ((NU8) 5):
	{
		result = (*x.kindU.nodeaddr);
	}
	break;
	}
	return result;
}
N_NIMCALL(void, TMP2806)(void* p, NI op) {
	TY397287* a;
	a = (TY397287*)p;
	nimGCvisit((void*)(*a).error395461, op);
	nimGCvisit((void*)(*a).error395511, op);
}

N_NIMCALL(void, createstrkeepnode_385467)(Tfullreg385204* x) {
	{
		if (!(*x).kindU.node == 0) goto LA3;
		unsureAsgnRef((void**) (&(*x).kindU.node), newnode_192401(((NU8) 20)));
	}
	goto LA1;
	LA3: ;
	{
		if (!((*(*x).kindU.node).kind == ((NU8) 23))) goto LA6;
		genericReset((void*)(&(*(*x).kindU.node)), (&NTI191813));
		(*(*x).kindU.node).kind = ((NU8) 20);
	}
	goto LA1;
	LA6: ;
	{
		NIM_BOOL LOC9;
		LOC9 = 0;
		LOC9 = !(((*(*x).kindU.node).kind >= ((NU8) 20) && (*(*x).kindU.node).kind <= ((NU8) 22)));
		if (LOC9) goto LA10;
		LOC9 = (((*(*x).kindU.node).flags &(1<<((((NU8) 4))&15)))!=0);
		LA10: ;
		if (!LOC9) goto LA11;
		unsureAsgnRef((void**) (&(*x).kindU.node), newnode_192401(((NU8) 20)));
	}
	goto LA1;
	LA11: ;
	LA1: ;
}

N_NIMCALL(Tnode191813*, copyvalue_386084)(Tnode191813* src) {
	Tnode191813* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (src == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = (((*src).flags &(1<<((((NU8) 12))&15)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		result = src;
		goto BeforeRet;
	}
	LA5: ;
	result = newnode_192401((*src).kind);
	(*result).info = (*src).info;
	asgnRefNoCycle((void**) (&(*result).typ), (*src).typ);
	(*result).flags = ((*src).flags & 13070);
	switch ((*src).kind) {
	case ((NU8) 5) ... ((NU8) 15):
	{
		(*result).kindU.S1.intval = (*src).kindU.S1.intval;
	}
	break;
	case ((NU8) 16) ... ((NU8) 19):
	{
		(*result).kindU.S2.floatval = (*src).kindU.S2.floatval;
	}
	break;
	case ((NU8) 3):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S4.sym), (*src).kindU.S4.sym);
	}
	break;
	case ((NU8) 2):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S5.ident), (*src).kindU.S5.ident);
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		NimStringDesc* LOC12;
		LOC12 = 0;
		LOC12 = (*result).kindU.S3.strval; (*result).kindU.S3.strval = copyStringRC1((*src).kindU.S3.strval);
		if (LOC12) nimGCunrefNoCycle(LOC12);
	}
	break;
	default:
	{
		NI LOC14;
		LOC14 = 0;
		LOC14 = sonslen_194403(src);
		if ((*result).kindU.S6.sons) nimGCunrefNoCycle((*result).kindU.S6.sons);
		(*result).kindU.S6.sons = (Tnodeseq191807*) newSeqRC1((&NTI191807), ((NI) (LOC14)));
		{
			NI i_386234;
			NI HEX3Atmp_386238;
			NI LOC16;
			NI res_386241;
			i_386234 = 0;
			HEX3Atmp_386238 = 0;
			LOC16 = 0;
			LOC16 = sonslen_194403(src);
			HEX3Atmp_386238 = (NI)(LOC16 - ((NI) 1));
			res_386241 = ((NI) 0);
			{
				while (1) {
					if (!(res_386241 <= HEX3Atmp_386238)) goto LA18;
					i_386234 = res_386241;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_386234]), copyvalue_386084((*src).kindU.S6.sons->data[i_386234]));
					res_386241 += ((NI) 1);
				} LA18: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, asgncomplex_386260)(Tfullreg385204* x, Tfullreg385204 y) {
	{
		if (!!(((*x).kind == y.kind))) goto LA3;
		myreset_385401(x);
		(*x).kind = y.kind;
	}
	LA3: ;
	switch ((*x).kind) {
	case ((NU8) 0):
	{
	}
	break;
	case ((NU8) 2):
	{
		(*x).kindU.intval = y.kindU.intval;
	}
	break;
	case ((NU8) 3):
	{
		(*x).kindU.floatval = y.kindU.floatval;
	}
	break;
	case ((NU8) 1):
	{
		unsureAsgnRef((void**) (&(*x).kindU.node), copyvalue_386084(y.kindU.node));
	}
	break;
	case ((NU8) 4):
	{
		(*x).kindU.regaddr = y.kindU.regaddr;
	}
	break;
	case ((NU8) 5):
	{
		(*x).kindU.nodeaddr = y.kindU.nodeaddr;
	}
	break;
	}
}

N_NIMCALL(void, moveconst_386046)(Tfullreg385204* x, Tfullreg385204 y) {
	{
		if (!!(((*x).kind == y.kind))) goto LA3;
		myreset_385401(x);
		(*x).kind = y.kind;
	}
	LA3: ;
	switch ((*x).kind) {
	case ((NU8) 0):
	{
	}
	break;
	case ((NU8) 2):
	{
		(*x).kindU.intval = y.kindU.intval;
	}
	break;
	case ((NU8) 3):
	{
		(*x).kindU.floatval = y.kindU.floatval;
	}
	break;
	case ((NU8) 1):
	{
		unsureAsgnRef((void**) (&(*x).kindU.node), y.kindU.node);
	}
	break;
	case ((NU8) 4):
	{
		(*x).kindU.regaddr = y.kindU.regaddr;
	}
	break;
	case ((NU8) 5):
	{
		(*x).kindU.nodeaddr = y.kindU.nodeaddr;
	}
	break;
	}
}

N_NIMCALL(void, putintonode_386290)(Tnode191813** n, Tfullreg385204 x) {
	switch (x.kind) {
	case ((NU8) 0):
	{
	}
	break;
	case ((NU8) 2):
	{
		(*(*n)).kindU.S1.intval = x.kindU.intval;
	}
	break;
	case ((NU8) 3):
	{
		(*(*n)).kindU.S2.floatval = x.kindU.floatval;
	}
	break;
	case ((NU8) 1):
	{
		{
			if (!(((*x.kindU.node).flags &(1<<((((NU8) 12))&15)))!=0)) goto LA7;
			unsureAsgnRef((void**) (&(*n)), x.kindU.node);
		}
		goto LA5;
		LA7: ;
		{
			genericAssign((void*)(&(*(*n))), (void*)(&(*x.kindU.node)), (&NTI191813));
		}
		LA5: ;
	}
	break;
	case ((NU8) 4):
	{
		putintonode_386290(n, (*x.kindU.regaddr));
	}
	break;
	case ((NU8) 5):
	{
		genericAssign((void*)(&(*(*n))), (void*)(&(*(*x.kindU.nodeaddr))), (&NTI191813));
	}
	break;
	}
}

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

static N_INLINE(NI, tolinenumber_165439)(Tlineinfo164338 info) {
	NI result;
	result = 0;
	result = ((NI) (info.line));
	return result;
}

N_NIMCALL(void, stacktraceaux_385233)(Tctx244048* c, Tstackframe385208* x_385236, NI pc, NI recursionlimit) {
{	{
		Tlineinfo164338 info;
		NimStringDesc* s;
		NI line;
		if (!!((x_385236 == NIM_NIL))) goto LA3;
		{
			NI calls;
			Tstackframe385208* x;
			NimStringDesc* LOC11;
			NimStringDesc* LOC12;
			if (!(recursionlimit == ((NI) 0))) goto LA7;
			calls = ((NI) 0);
			x = x_385236;
			{
				while (1) {
					if (!!((x == NIM_NIL))) goto LA10;
					calls += ((NI) 1);
					x = (*x).next;
				} LA10: ;
			}
			LOC11 = 0;
			LOC12 = 0;
			LOC12 = nimIntToStr(calls);
			LOC11 = rawNewString(LOC12->Sup.len + 15);
appendString(LOC11, LOC12);
appendString(LOC11, ((NimStringDesc*) &TMP2808));
			msgwriteln_165536(LOC11);
			goto BeforeRet;
		}
		LA7: ;
		stacktraceaux_385233(c, (*x_385236).next, (*x_385236).comesfrom, (NI)(recursionlimit - ((NI) 1)));
		info = (*c).debug->data[pc];
		s = tofilename_165266(info.fileindex);
		line = tolinenumber_165439(info);
		{
			NimStringDesc* LOC17;
			if (!(((NI) 0) < line)) goto LA15;
			s = addChar(s, 40);
			LOC17 = 0;
			LOC17 = nimIntToStr(line);
			s = resizeString(s, LOC17->Sup.len + 0);
appendString(s, LOC17);
			s = addChar(s, 41);
		}
		LA15: ;
		{
			if (!!(((*x_385236).prc == NIM_NIL))) goto LA20;
			{
				NI k_385304;
				NI HEX3Atmp_385308;
				NI res_385311;
				k_385304 = 0;
				HEX3Atmp_385308 = 0;
				HEX3Atmp_385308 = ((((NI) 1) >= (NI)(((NI) 25) - (s ? s->Sup.len : 0))) ? ((NI) 1) : (NI)(((NI) 25) - (s ? s->Sup.len : 0)));
				res_385311 = ((NI) 1);
				{
					while (1) {
						if (!(res_385311 <= HEX3Atmp_385308)) goto LA24;
						k_385304 = res_385311;
						s = addChar(s, 32);
						res_385311 += ((NI) 1);
					} LA24: ;
				}
			}
			s = resizeString(s, (*(*(*x_385236).prc).name).s->Sup.len + 0);
appendString(s, (*(*(*x_385236).prc).name).s);
		}
		LA20: ;
		msgwriteln_165536(s);
	}
	LA3: ;
	}BeforeRet: ;
}

N_NIMCALL(void, stacktrace_385336)(Tctx244048* c, Tstackframe385208* tos, NI pc, NU16 msg, NimStringDesc* arg) {
	msgwriteln_165536(((NimStringDesc*) &TMP2807));
	stacktraceaux_385233(c, tos, pc, ((NI) 100));
	{
		if (!((*c).mode == ((NU8) 0))) goto LA3;
		globalerror_166134((*c).debug->data[pc], msg, arg);
	}
	goto LA1;
	LA3: ;
	{
		localerror_166155((*c).debug->data[pc], msg, arg);
	}
	LA1: ;
}

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

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)), (*a).Sup.len);
	LOC11 = (LOC13 == ((NI32) 0));
	LA12: ;
	result = LOC11;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NI, cmpStrings)(NimStringDesc* a, NimStringDesc* b) {
	NI result;
	int LOC13;
{	result = 0;
	{
		if (!(a == b)) goto LA3;
		result = ((NI) 0);
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(a == NIM_NIL)) goto LA7;
		result = ((NI) -1);
		goto BeforeRet;
	}
	LA7: ;
	{
		if (!(b == NIM_NIL)) goto LA11;
		result = ((NI) 1);
		goto BeforeRet;
	}
	LA11: ;
	LOC13 = 0;
	LOC13 = strcmp(((NCSTRING) ((*a).data)), ((NCSTRING) ((*b).data)));
	result = ((NI) (LOC13));
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NI, compile_387010)(Tctx244048* c, Tsym191843* s) {
	NI result;
	result = 0;
	result = genproc_379402(c, s);
	return result;
}

static N_INLINE(NIM_BOOL, isemptytype_196933)(Ttype191849* 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, putintoreg_386320)(Tfullreg385204* dest, Tnode191813* n) {
	switch ((*n).kind) {
	case ((NU8) 20) ... ((NU8) 22):
	{
		NimStringDesc* LOC2;
		(*dest).kind = ((NU8) 1);
		unsureAsgnRef((void**) (&(*dest).kindU.node), newnode_192401(((NU8) 20)));
		LOC2 = 0;
		LOC2 = (*(*dest).kindU.node).kindU.S3.strval; (*(*dest).kindU.node).kindU.S3.strval = copyStringRC1((*n).kindU.S3.strval);
		if (LOC2) nimGCunrefNoCycle(LOC2);
	}
	break;
	case ((NU8) 5) ... ((NU8) 15):
	{
		(*dest).kind = ((NU8) 2);
		(*dest).kindU.intval = (*n).kindU.S1.intval;
	}
	break;
	case ((NU8) 16) ... ((NU8) 19):
	{
		(*dest).kind = ((NU8) 3);
		(*dest).kindU.floatval = (*n).kindU.S2.floatval;
	}
	break;
	default:
	{
		(*dest).kind = ((NU8) 1);
		unsureAsgnRef((void**) (&(*dest).kindU.node), n);
	}
	break;
	}
}

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

N_NIMCALL(void, pushsafepoint_386366)(Tstackframe385208* f, NI pc) {
	{
		if (!(*f).safepoints == 0) goto LA3;
		if ((*f).safepoints) nimGCunrefNoCycle((*f).safepoints);
		(*f).safepoints = (TY298595*) newSeqRC1((&NTI298595), 0);
	}
	LA3: ;
	(*f).safepoints = (TY298595*) incrSeq(&((*f).safepoints)->Sup, sizeof(NI));
	(*f).safepoints->data[(*f).safepoints->Sup.len-1] = pc;
}

static N_INLINE(NI, pop_386414)(TY298595** s) {
	NI result;
	NI L;
	result = 0;
	L = (NI)(((*s) ? (*s)->Sup.len : 0) - ((NI) 1));
	result = (*s)->data[L];
	(*s) = (TY298595*) setLengthSeq(&((*s))->Sup, sizeof(NI), ((NI) (L)));
	return result;
}

N_NIMCALL(void, popsafepoint_386410)(Tstackframe385208* f) {
	NI LOC1;
	LOC1 = 0;
	LOC1 = pop_386414((&(*f).safepoints));
}

N_NIMCALL(void, cleanuponexception_386451)(Tctx244048* c, Tstackframe385208* tos, TY386455* Result) {
	Ttype191849* raisedtype;
	Tstackframe385208* f;
{	raisedtype = skiptypes_195167((*(*c).currentexceptiona).typ, IL64(211106247256320));
	f = tos;
	{
		while (1) {
			NI pc2;
			NI nextexceptorfinally;
			NI LOC42;
			{
				while (1) {
					NIM_BOOL LOC5;
					LOC5 = 0;
					LOC5 = (*f).safepoints == 0;
					if (LOC5) goto LA6;
					LOC5 = (((*f).safepoints ? (*f).safepoints->Sup.len : 0) == ((NI) 0));
					LA6: ;
					if (!LOC5) goto LA4;
					f = (*f).next;
					{
						if (!f == 0) goto LA9;
						(*Result).Field0 = TMP2823.Field0;
						unsureAsgnRef((void**) (&(*Result).Field1), TMP2823.Field1);
						goto BeforeRet;
					}
					LA9: ;
				} LA4: ;
			}
			pc2 = (*f).safepoints->data[((*f).safepoints ? ((*f).safepoints->Sup.len-1) : -1)];
			nextexceptorfinally = ((NI) -1);
			{
				if (!(((NU8) ((NU32)((*c).code->data[pc2] & ((NU32) 255)))) == ((NU8) 140))) goto LA13;
				nextexceptorfinally = (NI)((NI)(pc2 + ((NI) ((NU32)((NU32)((*c).code->data[pc2]) >> (NU32)(((NU32) 16)))))) - ((NI) 32768));
				pc2 += ((NI) 1);
			}
			LA13: ;
			{
				while (1) {
					Ttype191849* excepttype;
					if (!(((NU8) ((NU32)((*c).code->data[pc2] & ((NU32) 255)))) == ((NU8) 140))) goto LA16;
					excepttype = skiptypes_195167((*c).types->data[(NI)(((NI) ((NU32)((NU32)((*c).code->data[pc2]) >> (NU32)(((NU32) 16))))) - ((NI) 32768))], IL64(211106247256320));
					{
						NI LOC19;
						LOC19 = 0;
						LOC19 = inheritancediff_228064(excepttype, raisedtype);
						if (!(LOC19 <= ((NI) 0))) goto LA20;
						asgnRefNoCycle((void**) (&(*c).currentexceptionb), (*c).currentexceptiona);
						asgnRefNoCycle((void**) (&(*c).currentexceptiona), NIM_NIL);
						{
							while (1) {
								if (!(((NU8) ((NU32)((*c).code->data[pc2] & ((NU32) 255)))) == ((NU8) 140))) goto LA23;
								pc2 += ((NI) 1);
							} LA23: ;
						}
						(*Result).Field0 = pc2;
						unsureAsgnRef((void**) (&(*Result).Field1), f);
						goto BeforeRet;
					}
					LA20: ;
					pc2 += ((NI) 1);
					{
						NIM_BOOL LOC26;
						LOC26 = 0;
						LOC26 = !((((NU8) ((NU32)((*c).code->data[pc2] & ((NU32) 255)))) == ((NU8) 140)));
						if (!(LOC26)) goto LA27;
						LOC26 = (((NI) 0) <= nextexceptorfinally);
						LA27: ;
						if (!LOC26) goto LA28;
						pc2 = (NI)(nextexceptorfinally + ((NI) 1));
						{
							if (!(((NU8) ((NU32)((*c).code->data[pc2] & ((NU32) 255)))) == ((NU8) 140))) goto LA32;
							nextexceptorfinally = (NI)((NI)(pc2 + ((NI) ((NU32)((NU32)((*c).code->data[pc2]) >> (NU32)(((NU32) 16)))))) - ((NI) 32768));
						}
						LA32: ;
					}
					LA28: ;
				} LA16: ;
			}
			{
				if (!(((NI) 0) <= nextexceptorfinally)) goto LA36;
				pc2 = nextexceptorfinally;
			}
			LA36: ;
			{
				if (!(((NU8) ((NU32)((*c).code->data[pc2] & ((NU32) 255)))) == ((NU8) 141))) goto LA40;
				(*Result).Field0 = pc2;
				unsureAsgnRef((void**) (&(*Result).Field1), f);
				goto BeforeRet;
			}
			LA40: ;
			LOC42 = 0;
			LOC42 = pop_386414((&(*f).safepoints));
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(void, bailout_385358)(Tctx244048* c, Tstackframe385208* tos) {
	stacktrace_385336(c, tos, (*c).exceptioninstr, ((NU16) 214), (*(*(*c).currentexceptiona).kindU.S6.sons->data[((NI) 2)]).kindU.S3.strval);
}

N_CLOSURE(void, HEX3Aanonymous_395464)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg, void* ClEnv) {
	TY397287* HEX3Aenvp_397374;
	HEX3Aenvp_397374 = (TY397287*) ClEnv;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (*HEX3Aenvp_397374).error395461 == 0;
		if (!(LOC3)) goto LA4;
		LOC3 = (msg <= ((NU16) 229));
		LA4: ;
		if (!LOC3) goto LA5;
		asgnRefNoCycle((void**) (&(*HEX3Aenvp_397374).error395461), formatmsg_165982(info, msg, arg));
	}
	LA5: ;
}

N_CLOSURE(void, HEX3Aanonymous_395514)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg, void* ClEnv) {
	TY397287* HEX3Aenvp_397380;
	HEX3Aenvp_397380 = (TY397287*) ClEnv;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (*HEX3Aenvp_397380).error395511 == 0;
		if (!(LOC3)) goto LA4;
		LOC3 = (msg <= ((NU16) 229));
		LA4: ;
		if (!LOC3) goto LA5;
		asgnRefNoCycle((void**) (&(*HEX3Aenvp_397380).error395511), formatmsg_165982(info, msg, arg));
	}
	LA5: ;
}

static N_INLINE(NimStringDesc*, tofilelinecol_165469)(Tlineinfo164338 info) {
	NimStringDesc* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	NimStringDesc* LOC4;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = tofilename_165266(info.fileindex);
	LOC3 = 0;
	LOC3 = nimIntToStr(((NI) (info.line)));
	LOC4 = 0;
	LOC4 = nimIntToStr(((NI) (info.col)));
	LOC1 = rawNewString(LOC2->Sup.len + LOC3->Sup.len + LOC4->Sup.len + 3);
appendString(LOC1, LOC2);
appendString(LOC1, ((NimStringDesc*) &TMP2902));
appendString(LOC1, LOC3);
appendString(LOC1, ((NimStringDesc*) &TMP2903));
appendString(LOC1, LOC4);
appendString(LOC1, ((NimStringDesc*) &TMP2904));
	result = LOC1;
	return result;
}

N_NIMCALL(NIM_BOOL, opconv_386815)(Tfullreg385204* dest, Tfullreg385204 src, Ttype191849* desttyp, Ttype191849* srctyp) {
	NIM_BOOL result;
{	result = 0;
	{
		Ttype191849* styp;
		if (!((*desttyp).kind == ((NU8) 28))) goto LA3;
		{
			if (!!(((*dest).kind == ((NU8) 1)))) goto LA7;
			myreset_385401(dest);
			(*dest).kind = ((NU8) 1);
		}
		LA7: ;
		unsureAsgnRef((void**) (&(*dest).kindU.node), newnode_192401(((NU8) 20)));
		styp = skiptypes_195167(srctyp, IL64(211106233624832));
		switch ((*styp).kind) {
		case ((NU8) 14):
		{
			Tnode191813* n;
			NI x;
			n = (*styp).n;
			x = ((NI) (src.kindU.intval));
			{
				NIM_BOOL LOC12;
				NI LOC13;
				Tsym191843* f;
				LOC12 = 0;
				LOC13 = 0;
				LOC13 = len_192097(n);
				LOC12 = ((NU32)(x) < (NU32)(LOC13));
				if (!(LOC12)) goto LA14;
				f = (*(*n).kindU.S6.sons->data[x]).kindU.S4.sym;
				LOC12 = ((*f).position == x);
				LA14: ;
				if (!LOC12) goto LA15;
				{
					NimStringDesc* LOC21;
					if (!(*f).ast == 0) goto LA19;
					LOC21 = 0;
					LOC21 = (*(*dest).kindU.node).kindU.S3.strval; (*(*dest).kindU.node).kindU.S3.strval = copyStringRC1((*(*f).name).s);
					if (LOC21) nimGCunrefNoCycle(LOC21);
				}
				goto LA17;
				LA19: ;
				{
					NimStringDesc* LOC23;
					LOC23 = 0;
					LOC23 = (*(*dest).kindU.node).kindU.S3.strval; (*(*dest).kindU.node).kindU.S3.strval = copyStringRC1((*(*f).ast).kindU.S3.strval);
					if (LOC23) nimGCunrefNoCycle(LOC23);
				}
				LA17: ;
			}
			goto LA10;
			LA15: ;
			{
				{
					NI i_386894;
					NI HEX3Atmp_386985;
					NI LOC26;
					NI res_386988;
					i_386894 = 0;
					HEX3Atmp_386985 = 0;
					LOC26 = 0;
					LOC26 = len_192097(n);
					HEX3Atmp_386985 = (LOC26 - 1);
					res_386988 = ((NI) 0);
					{
						while (1) {
							Tsym191843* f;
							if (!(res_386988 <= HEX3Atmp_386985)) goto LA28;
							i_386894 = res_386988;
							{
								if (!!(((*(*n).kindU.S6.sons->data[i_386894]).kind == ((NU8) 3)))) goto LA31;
								internalerror_166218(((NimStringDesc*) &TMP2906));
							}
							LA31: ;
							f = (*(*n).kindU.S6.sons->data[i_386894]).kindU.S4.sym;
							{
								if (!((*f).position == x)) goto LA35;
								{
									NimStringDesc* LOC41;
									if (!(*f).ast == 0) goto LA39;
									LOC41 = 0;
									LOC41 = (*(*dest).kindU.node).kindU.S3.strval; (*(*dest).kindU.node).kindU.S3.strval = copyStringRC1((*(*f).name).s);
									if (LOC41) nimGCunrefNoCycle(LOC41);
								}
								goto LA37;
								LA39: ;
								{
									NimStringDesc* LOC43;
									LOC43 = 0;
									LOC43 = (*(*dest).kindU.node).kindU.S3.strval; (*(*dest).kindU.node).kindU.S3.strval = copyStringRC1((*(*f).ast).kindU.S3.strval);
									if (LOC43) nimGCunrefNoCycle(LOC43);
								}
								LA37: ;
								goto BeforeRet;
							}
							LA35: ;
							res_386988 += ((NI) 1);
						} LA28: ;
					}
				}
				internalerror_166218(((NimStringDesc*) &TMP2906));
			}
			LA10: ;
		}
		break;
		case ((NU8) 31) ... ((NU8) 35):
		{
			asgnRefNoCycle((void**) (&(*(*dest).kindU.node).kindU.S3.strval), nimInt64ToStr(src.kindU.intval));
		}
		break;
		case ((NU8) 40) ... ((NU8) 44):
		{
			asgnRefNoCycle((void**) (&(*(*dest).kindU.node).kindU.S3.strval), HEX24_6401(((NU64) (src.kindU.intval))));
		}
		break;
		case ((NU8) 1):
		{
			{
				NimStringDesc* LOC51;
				if (!(src.kindU.intval == IL64(0))) goto LA49;
				LOC51 = 0;
				LOC51 = (*(*dest).kindU.node).kindU.S3.strval; (*(*dest).kindU.node).kindU.S3.strval = copyStringRC1(((NimStringDesc*) &TMP2907));
				if (LOC51) nimGCunrefNoCycle(LOC51);
			}
			goto LA47;
			LA49: ;
			{
				NimStringDesc* LOC53;
				LOC53 = 0;
				LOC53 = (*(*dest).kindU.node).kindU.S3.strval; (*(*dest).kindU.node).kindU.S3.strval = copyStringRC1(((NimStringDesc*) &TMP2908));
				if (LOC53) nimGCunrefNoCycle(LOC53);
			}
			LA47: ;
		}
		break;
		case ((NU8) 36) ... ((NU8) 39):
		{
			asgnRefNoCycle((void**) (&(*(*dest).kindU.node).kindU.S3.strval), nimFloatToStr(src.kindU.floatval));
		}
		break;
		case ((NU8) 28):
		case ((NU8) 29):
		{
			NimStringDesc* LOC56;
			LOC56 = 0;
			LOC56 = (*(*dest).kindU.node).kindU.S3.strval; (*(*dest).kindU.node).kindU.S3.strval = copyStringRC1((*src.kindU.node).kindU.S3.strval);
			if (LOC56) nimGCunrefNoCycle(LOC56);
		}
		break;
		case ((NU8) 2):
		{
			asgnRefNoCycle((void**) (&(*(*dest).kindU.node).kindU.S3.strval), nimCharToStr(((NIM_CHAR) (((NI) (src.kindU.intval))))));
		}
		break;
		default:
		{
			NimStringDesc* LOC59;
			NimStringDesc* LOC60;
			LOC59 = 0;
			LOC60 = 0;
			LOC60 = typetostring_221032(desttyp, ((NU8) 0));
			LOC59 = rawNewString(LOC60->Sup.len + 25);
appendString(LOC59, ((NimStringDesc*) &TMP2909));
appendString(LOC59, LOC60);
			internalerror_166218(LOC59);
		}
		break;
		}
	}
	goto LA1;
	LA3: ;
	{
		Ttype191849* LOC62;
		LOC62 = 0;
		LOC62 = skiptypes_195167(desttyp, IL64(211106233624832));
		switch ((*LOC62).kind) {
		case ((NU8) 31) ... ((NU8) 35):
		{
			Ttype191849* LOC68;
			{
				if (!!(((*dest).kind == ((NU8) 2)))) goto LA66;
				myreset_385401(dest);
				(*dest).kind = ((NU8) 2);
			}
			LA66: ;
			LOC68 = 0;
			LOC68 = skiptypes_195167(srctyp, IL64(211106233624832));
			switch ((*LOC68).kind) {
			case ((NU8) 36) ... ((NU8) 38):
			{
				(*dest).kindU.intval = ((NI64) (((NI) (src.kindU.floatval))));
			}
			break;
			default:
			{
				(*dest).kindU.intval = src.kindU.intval;
			}
			break;
			}
			{
				NIM_BOOL LOC73;
				NI64 LOC74;
				NI64 LOC76;
				LOC73 = 0;
				LOC74 = 0;
				LOC74 = firstord_221004(desttyp);
				LOC73 = ((*dest).kindU.intval < LOC74);
				if (LOC73) goto LA75;
				LOC76 = 0;
				LOC76 = lastord_221010(desttyp);
				LOC73 = (LOC76 < (*dest).kindU.intval);
				LA75: ;
				if (!LOC73) goto LA77;
				result = NIM_TRUE;
				goto BeforeRet;
			}
			LA77: ;
		}
		break;
		case ((NU8) 40) ... ((NU8) 44):
		{
			Ttype191849* LOC84;
			{
				if (!!(((*dest).kind == ((NU8) 2)))) goto LA82;
				myreset_385401(dest);
				(*dest).kind = ((NU8) 2);
			}
			LA82: ;
			LOC84 = 0;
			LOC84 = skiptypes_195167(srctyp, IL64(211106233624832));
			switch ((*LOC84).kind) {
			case ((NU8) 36) ... ((NU8) 38):
			{
				(*dest).kindU.intval = ((NI64) (((NI) (src.kindU.floatval))));
			}
			break;
			default:
			{
				(*dest).kindU.intval = (NI64)(src.kindU.intval & (NI64)((NI64)((NU64)(IL64(1)) << (NU64)((NI64)((*desttyp).size * IL64(8)))) - IL64(1)));
			}
			break;
			}
		}
		break;
		case ((NU8) 36) ... ((NU8) 38):
		{
			Ttype191849* LOC92;
			{
				if (!!(((*dest).kind == ((NU8) 3)))) goto LA90;
				myreset_385401(dest);
				(*dest).kind = ((NU8) 3);
			}
			LA90: ;
			LOC92 = 0;
			LOC92 = skiptypes_195167(srctyp, IL64(211106233624832));
			switch ((*LOC92).kind) {
			case ((NU8) 31) ... ((NU8) 35):
			case ((NU8) 40) ... ((NU8) 44):
			case ((NU8) 14):
			case ((NU8) 1):
			case ((NU8) 2):
			{
				(*dest).kindU.floatval = ((double) (((NI) (src.kindU.intval))));
			}
			break;
			default:
			{
				(*dest).kindU.floatval = src.kindU.floatval;
			}
			break;
			}
		}
		break;
		default:
		{
			asgncomplex_386260(dest, src);
		}
		break;
		}
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, rawexecute_387213)(Tctx244048* c, NI start, Tstackframe385208* tos_387217, Tfullreg385204* Result) {
	NI pc;
	Tstackframe385208* tos;
	TY385864* regs;
{	pc = start;
	tos = tos_387217;
	regs = 0;
	regs = (*tos).slots;
	{
		while (1) {
			TY397287* HEX3Aenv_397398;
			NU32 instr;
			NI ra_387243;
			HEX3Aenv_397398 = 0;
			HEX3Aenv_397398 = (TY397287*) newObj((&NTI397399), sizeof(TY397287));
			instr = (*c).code->data[pc];
			ra_387243 = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 8))) & ((NU32) 255))));
			switch (((NU8) ((NU32)(instr & ((NU32) 255))))) {
			case ((NU8) 0):
			{
				genericAssign((void*)Result, (void*)(&regs->data[ra_387243]), (&NTI385204));
				goto BeforeRet;
			}
			break;
			case ((NU8) 1):
			{
				Tfullreg385204 retval;
				pc = (*tos).comesfrom;
				tos = (*tos).next;
				memset((void*)(&retval), 0, sizeof(retval));
				memcpy((void*)(&retval), (NIM_CONST void*)(&regs->data[((NI) 0)]), sizeof(retval));
				{
					if (!tos == 0) goto LA7;
					genericAssign((void*)Result, (void*)(&retval), (&NTI385204));
					goto BeforeRet;
				}
				LA7: ;
				regs = (*tos).slots;
				{
					if (!(((NU8) ((NU32)((*c).code->data[pc] & ((NU32) 255)))) == ((NU8) 128))) goto LA11;
					genericAssign((void*)(&regs->data[((NI) ((NU32)((NU32)((NU32)((*c).code->data[pc]) >> (NU32)(((NU32) 8))) & ((NU32) 255))))]), (void*)(&retval), (&NTI385204));
				}
				LA11: ;
			}
			break;
			case ((NU8) 2):
			{
			}
			break;
			case ((NU8) 3):
			{
			}
			break;
			case ((NU8) 4):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA18;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA18: ;
				regs->data[ra_387243].kindU.intval = regs->data[rb].kindU.intval;
			}
			break;
			case ((NU8) 5):
			{
				NI rb;
				NimStringDesc* LOC25;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA23;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA23: ;
				createstrkeepnode_385467((&regs->data[ra_387243]));
				LOC25 = 0;
				LOC25 = (*regs->data[ra_387243].kindU.node).kindU.S3.strval; (*regs->data[ra_387243].kindU.node).kindU.S3.strval = copyStringRC1((*regs->data[rb].kindU.node).kindU.S3.strval);
				if (LOC25) nimGCunrefNoCycle(LOC25);
			}
			break;
			case ((NU8) 6):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 3)))) goto LA29;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 3);
				}
				LA29: ;
				regs->data[ra_387243].kindU.floatval = regs->data[rb].kindU.floatval;
			}
			break;
			case ((NU8) 8):
			{
				asgncomplex_386260((&regs->data[ra_387243]), regs->data[((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))))]);
			}
			break;
			case ((NU8) 7):
			{
				moveconst_386046((&regs->data[ra_387243]), regs->data[((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))))]);
			}
			break;
			case ((NU8) 9):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA36;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA36: ;
				putintonode_386290(&regs->data[ra_387243].kindU.node, regs->data[rb]);
			}
			break;
			case ((NU8) 10):
			{
				NI ra;
				NI rb;
				ra = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 8))) & ((NU32) 255))));
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[rb].kind == ((NU8) 1)))) goto LA41;
					genericAssign((void*)(&regs->data[ra]), (void*)(&regs->data[rb]), (&NTI385204));
				}
				goto LA39;
				LA41: ;
				{
					Tnode191813* nb;
					nb = regs->data[rb].kindU.node;
					switch ((*nb).kind) {
					case ((NU8) 5) ... ((NU8) 10):
					{
						{
							if (!!((regs->data[ra].kind == ((NU8) 2)))) goto LA47;
							myreset_385401((&regs->data[ra]));
							regs->data[ra].kind = ((NU8) 2);
						}
						LA47: ;
						regs->data[ra].kindU.intval = (*nb).kindU.S1.intval;
					}
					break;
					case ((NU8) 16) ... ((NU8) 18):
					{
						{
							if (!!((regs->data[ra].kind == ((NU8) 3)))) goto LA52;
							myreset_385401((&regs->data[ra]));
							regs->data[ra].kind = ((NU8) 3);
						}
						LA52: ;
						regs->data[ra].kindU.floatval = (*nb).kindU.S2.floatval;
					}
					break;
					default:
					{
						{
							if (!!((regs->data[ra].kind == ((NU8) 1)))) goto LA57;
							myreset_385401((&regs->data[ra]));
							regs->data[ra].kind = ((NU8) 1);
						}
						LA57: ;
						asgnRefNoCycle((void**) (&regs->data[ra].kindU.node), nb);
					}
					break;
					}
				}
				LA39: ;
			}
			break;
			case ((NU8) 11):
			{
				NI rb;
				NI rc;
				NI idx;
				Tnode191813* src;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA62;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA62: ;
				{
					if (!(IL64(2147483647) < regs->data[rc].kindU.intval)) goto LA66;
					stacktrace_385336(c, tos, pc, ((NU16) 82), ((NimStringDesc*) &TMP2694));
				}
				LA66: ;
				idx = ((NI) (regs->data[rc].kindU.intval));
				src = regs->data[rb].kindU.node;
				{
					NIM_BOOL LOC70;
					NI LOC72;
					LOC70 = 0;
					LOC70 = !(((*src).kind >= ((NU8) 1) && (*src).kind <= ((NU8) 23)));
					if (!(LOC70)) goto LA71;
					LOC72 = 0;
					LOC72 = len_192097(src);
					LOC70 = ((NU32)(idx) < (NU32)(LOC72));
					LA71: ;
					if (!LOC70) goto LA73;
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), (*src).kindU.S6.sons->data[idx]);
				}
				goto LA68;
				LA73: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 82), ((NimStringDesc*) &TMP2694));
				}
				LA68: ;
			}
			break;
			case ((NU8) 20):
			{
				NI rb;
				NI rc;
				NI idx;
				NimStringDesc* s;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA79;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA79: ;
				idx = ((NI) (regs->data[rc].kindU.intval));
				s = (*regs->data[rb].kindU.node).kindU.S3.strval;
				{
					if (!s == 0) goto LA83;
					stacktrace_385336(c, tos, pc, ((NU16) 81), ((NimStringDesc*) &TMP2694));
				}
				goto LA81;
				LA83: ;
				{
					if (!((NU32)(idx) <= (NU32)((s ? s->Sup.len : 0)))) goto LA86;
					regs->data[ra_387243].kindU.intval = ((NI64) (((NU8)(s->data[idx]))));
				}
				goto LA81;
				LA86: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 82), ((NimStringDesc*) &TMP2694));
				}
				LA81: ;
			}
			break;
			case ((NU8) 12):
			{
				NI rb;
				NI rc;
				NI idx;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA92;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA92: ;
				idx = ((NI) (regs->data[rb].kindU.intval));
				{
					NI LOC96;
					LOC96 = 0;
					LOC96 = len_192097(regs->data[ra_387243].kindU.node);
					if (!((NU32)(idx) < (NU32)(LOC96))) goto LA97;
					putintonode_386290(&(*regs->data[ra_387243].kindU.node).kindU.S6.sons->data[idx], regs->data[rc]);
				}
				goto LA94;
				LA97: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 82), ((NimStringDesc*) &TMP2694));
				}
				LA94: ;
			}
			break;
			case ((NU8) 13):
			{
				NI rb;
				NI rc;
				Tnode191813* src;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA103;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA103: ;
				src = regs->data[rb].kindU.node;
				{
					Tnode191813* n;
					if (!!(((*src).kind >= ((NU8) 1) && (*src).kind <= ((NU8) 23)))) goto LA107;
					n = skipcolon_382277((*src).kindU.S6.sons->data[rc]);
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), n);
				}
				goto LA105;
				LA107: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 81), ((NimStringDesc*) &TMP2694));
				}
				LA105: ;
			}
			break;
			case ((NU8) 14):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA113;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA113: ;
				putintonode_386290(&(*regs->data[ra_387243].kindU.node).kindU.S6.sons->data[rb], regs->data[rc]);
			}
			break;
			case ((NU8) 19):
			{
				NI rb;
				NI rc;
				NI idx;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA118;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA118: ;
				idx = ((NI) (regs->data[rb].kindU.intval));
				{
					if (!((NU32)(idx) < (NU32)(((*regs->data[ra_387243].kindU.node).kindU.S3.strval ? (*regs->data[ra_387243].kindU.node).kindU.S3.strval->Sup.len : 0)))) goto LA122;
					(*regs->data[ra_387243].kindU.node).kindU.S3.strval->data[idx] = ((NIM_CHAR) (((NI) (regs->data[rc].kindU.intval))));
				}
				goto LA120;
				LA122: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 82), ((NimStringDesc*) &TMP2694));
				}
				LA120: ;
			}
			break;
			case ((NU8) 15):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 4)))) goto LA128;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 4);
				}
				LA128: ;
				regs->data[ra_387243].kindU.regaddr = (&regs->data[rb]);
			}
			break;
			case ((NU8) 16):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 5)))) goto LA133;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 5);
				}
				LA133: ;
				regs->data[ra_387243].kindU.nodeaddr = &regs->data[rb].kindU.node;
			}
			break;
			case ((NU8) 17):
			{
				NI ra;
				NI rb;
				ra = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 8))) & ((NU32) 255))));
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				switch (regs->data[rb].kind) {
				case ((NU8) 5):
				{
					{
						if (!!((regs->data[ra].kind == ((NU8) 1)))) goto LA139;
						myreset_385401((&regs->data[ra]));
						regs->data[ra].kind = ((NU8) 1);
					}
					LA139: ;
					asgnRefNoCycle((void**) (&regs->data[ra].kindU.node), (*regs->data[rb].kindU.nodeaddr));
				}
				break;
				case ((NU8) 4):
				{
					{
						if (!!((regs->data[ra].kind == (*regs->data[rb].kindU.regaddr).kind))) goto LA144;
						myreset_385401((&regs->data[ra]));
						regs->data[ra].kind = (*regs->data[rb].kindU.regaddr).kind;
					}
					LA144: ;
					genericAssign((void*)(&regs->data[ra]), (void*)(&(*regs->data[rb].kindU.regaddr)), (&NTI385204));
				}
				break;
				case ((NU8) 1):
				{
					{
						if (!((*regs->data[rb].kindU.node).kind == ((NU8) 23))) goto LA149;
						stacktrace_385336(c, tos, pc, ((NU16) 81), ((NimStringDesc*) &TMP2694));
					}
					LA149: ;
					asgnRefNoCycle((void**) (&regs->data[ra].kindU.node), (*regs->data[rb].kindU.node).kindU.S6.sons->data[((NI) 0)]);
				}
				break;
				default:
				{
					stacktrace_385336(c, tos, pc, ((NU16) 81), ((NimStringDesc*) &TMP2694));
				}
				break;
				}
			}
			break;
			case ((NU8) 18):
			{
				NI ra;
				NI rc;
				ra = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 8))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				switch (regs->data[ra].kind) {
				case ((NU8) 5):
				{
					putintonode_386290(regs->data[ra].kindU.nodeaddr, regs->data[rc]);
				}
				break;
				case ((NU8) 4):
				{
					genericAssign((void*)(&(*regs->data[ra].kindU.regaddr)), (void*)(&regs->data[rc]), (&NTI385204));
				}
				break;
				case ((NU8) 1):
				{
					putintonode_386290(&regs->data[ra].kindU.node, regs->data[rc]);
				}
				break;
				default:
				{
					stacktrace_385336(c, tos, pc, ((NU16) 81), ((NimStringDesc*) &TMP2694));
				}
				break;
				}
			}
			break;
			case ((NU8) 21):
			{
				NI rb;
				NI rc;
				NI64 bval;
				NI64 cval;
				NI64 sum;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA160;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA160: ;
				bval = regs->data[rb].kindU.intval;
				cval = regs->data[rc].kindU.intval;
				sum = (NI64)((NU64)(bval) + (NU64)(cval));
				{
					NIM_BOOL LOC164;
					LOC164 = 0;
					LOC164 = (IL64(0) <= (NI64)(sum ^ bval));
					if (LOC164) goto LA165;
					LOC164 = (IL64(0) <= (NI64)(sum ^ cval));
					LA165: ;
					if (!LOC164) goto LA166;
					regs->data[ra_387243].kindU.intval = sum;
				}
				goto LA162;
				LA166: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 76), ((NimStringDesc*) &TMP2694));
				}
				LA162: ;
			}
			break;
			case ((NU8) 22):
			{
				NI rb;
				NI imm;
				NI64 bval;
				NI cval;
				NI64 sum;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				imm = (NI)(((NI) (((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24))))))) - ((NI) 128));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA172;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA172: ;
				bval = regs->data[rb].kindU.intval;
				cval = imm;
				sum = (NI64)((NU64)(bval) + (NU64)(((NI64) (cval))));
				{
					NIM_BOOL LOC176;
					LOC176 = 0;
					LOC176 = (IL64(0) <= (NI64)(sum ^ bval));
					if (LOC176) goto LA177;
					LOC176 = (IL64(0) <= (NI64)(sum ^ ((NI64) (cval))));
					LA177: ;
					if (!LOC176) goto LA178;
					regs->data[ra_387243].kindU.intval = sum;
				}
				goto LA174;
				LA178: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 76), ((NimStringDesc*) &TMP2694));
				}
				LA174: ;
			}
			break;
			case ((NU8) 23):
			{
				NI rb;
				NI rc;
				NI64 bval;
				NI64 cval;
				NI64 diff;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA184;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA184: ;
				bval = regs->data[rb].kindU.intval;
				cval = regs->data[rc].kindU.intval;
				diff = (NI64)((NU64)(bval) - (NU64)(cval));
				{
					NIM_BOOL LOC188;
					LOC188 = 0;
					LOC188 = (IL64(0) <= (NI64)(diff ^ bval));
					if (LOC188) goto LA189;
					LOC188 = (IL64(0) <= (NI64)(diff ^ (NI64)((NU64) ~(cval))));
					LA189: ;
					if (!LOC188) goto LA190;
					regs->data[ra_387243].kindU.intval = diff;
				}
				goto LA186;
				LA190: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 76), ((NimStringDesc*) &TMP2694));
				}
				LA186: ;
			}
			break;
			case ((NU8) 24):
			{
				NI rb;
				NI imm;
				NI64 bval;
				NI cval;
				NI64 diff;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				imm = (NI)(((NI) (((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24))))))) - ((NI) 128));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA196;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA196: ;
				bval = regs->data[rb].kindU.intval;
				cval = imm;
				diff = (NI64)((NU64)(bval) - (NU64)(((NI64) (cval))));
				{
					NIM_BOOL LOC200;
					LOC200 = 0;
					LOC200 = (IL64(0) <= (NI64)(diff ^ bval));
					if (LOC200) goto LA201;
					LOC200 = (IL64(0) <= (NI64)(diff ^ ((NI64) ((NI)((NU32) ~(((NI) (cval))))))));
					LA201: ;
					if (!LOC200) goto LA202;
					regs->data[ra_387243].kindU.intval = diff;
				}
				goto LA198;
				LA202: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 76), ((NimStringDesc*) &TMP2694));
				}
				LA198: ;
			}
			break;
			case ((NU8) 25):
			{
				NI rb;
				NI imm;
				NI LOC210;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				imm = (NI)(((NI) (((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24))))))) - ((NI) 128));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA208;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA208: ;
				LOC210 = 0;
				LOC210 = safelen_192125(regs->data[rb].kindU.node);
				regs->data[ra_387243].kindU.intval = ((NI64) ((NI)(LOC210 - ((NI) (imm)))));
			}
			break;
			case ((NU8) 26):
			{
				NI rb;
				NI imm;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				imm = (NI)(((NI) (((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24))))))) - ((NI) 128));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA214;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA214: ;
				regs->data[ra_387243].kindU.intval = ((NI64) ((NI)(((*regs->data[rb].kindU.node).kindU.S3.strval ? (*regs->data[rb].kindU.node).kindU.S3.strval->Sup.len : 0) - ((NI) (imm)))));
			}
			break;
			case ((NU8) 27):
			{
				NI rb;
				Tnode191813* b;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA219;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA219: ;
				b = regtonode_386340(regs->data[rb]);
				{
					NIM_BOOL LOC223;
					Tnode191813* LOC226;
					LOC223 = 0;
					LOC223 = inset_241019(regs->data[ra_387243].kindU.node, b);
					if (!!(LOC223)) goto LA224;
					LOC226 = 0;
					LOC226 = copytree_196028(b);
					addson_193819(regs->data[ra_387243].kindU.node, LOC226);
				}
				LA224: ;
			}
			break;
			case ((NU8) 28):
			{
				NI rb;
				NI rc;
				Tnode191813* r;
				Tnode191813* LOC232;
				Tnode191813* LOC233;
				Tnode191813* LOC234;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA230;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA230: ;
				r = newnode_192401(((NU8) 44));
				LOC232 = 0;
				LOC232 = regtonode_386340(regs->data[rb]);
				add_192164(r, LOC232);
				LOC233 = 0;
				LOC233 = regtonode_386340(regs->data[rc]);
				add_192164(r, LOC233);
				LOC234 = 0;
				LOC234 = copytree_196028(r);
				addson_193819(regs->data[ra_387243].kindU.node, LOC234);
			}
			break;
			case ((NU8) 29):
			{
				NI rb;
				Tnode191813* b;
				Tnode191813* LOC240;
				Tnode191813* r;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA238;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA238: ;
				b = newnodeit_193807(((NU8) 39), (*regs->data[rb].kindU.node).info, (*regs->data[rb].kindU.node).typ);
				LOC240 = 0;
				LOC240 = regtonode_386340(regs->data[rb]);
				addson_193819(b, LOC240);
				r = diffsets_241054(regs->data[ra_387243].kindU.node, b);
				discardsons_192091(regs->data[ra_387243].kindU.node);
				{
					NI i_389334;
					NI HEX3Atmp_396911;
					NI LOC242;
					NI res_396914;
					i_389334 = 0;
					HEX3Atmp_396911 = 0;
					LOC242 = 0;
					LOC242 = sonslen_194403(r);
					HEX3Atmp_396911 = (NI)(LOC242 - ((NI) 1));
					res_396914 = ((NI) 0);
					{
						while (1) {
							if (!(res_396914 <= HEX3Atmp_396911)) goto LA244;
							i_389334 = res_396914;
							addson_193819(regs->data[ra_387243].kindU.node, (*r).kindU.S6.sons->data[i_389334]);
							res_396914 += ((NI) 1);
						} LA244: ;
					}
				}
			}
			break;
			case ((NU8) 30):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA248;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA248: ;
				regs->data[ra_387243].kindU.intval = cardset_241089(regs->data[rb].kindU.node);
			}
			break;
			case ((NU8) 31):
			{
				NI rb;
				NI rc;
				NI64 bval;
				NI64 cval;
				NI64 product;
				NF floatprod;
				NF resasfloat;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA253;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA253: ;
				bval = regs->data[rb].kindU.intval;
				cval = regs->data[rc].kindU.intval;
				product = (NI64)((NU64)(bval) * (NU64)(cval));
				floatprod = ((NF)(((double) (bval))) * (NF)(((double) (cval))));
				resasfloat = ((double) (product));
				{
					if (!(resasfloat == floatprod)) goto LA257;
					regs->data[ra_387243].kindU.intval = product;
				}
				goto LA255;
				LA257: ;
				{
					if (!(((NF)(3.2000000000000000e+001) * (NF)((((NF)(resasfloat) - (NF)(floatprod)) > 0? (((NF)(resasfloat) - (NF)(floatprod))) : -(((NF)(resasfloat) - (NF)(floatprod)))))) <= (floatprod > 0? (floatprod) : -(floatprod)))) goto LA260;
					regs->data[ra_387243].kindU.intval = product;
				}
				goto LA255;
				LA260: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 76), ((NimStringDesc*) &TMP2694));
				}
				LA255: ;
			}
			break;
			case ((NU8) 32):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA266;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA266: ;
				{
					if (!(regs->data[rc].kindU.intval == IL64(0))) goto LA270;
					stacktrace_385336(c, tos, pc, ((NU16) 73), ((NimStringDesc*) &TMP2694));
				}
				goto LA268;
				LA270: ;
				{
					regs->data[ra_387243].kindU.intval = (NI64)(regs->data[rb].kindU.intval / regs->data[rc].kindU.intval);
				}
				LA268: ;
			}
			break;
			case ((NU8) 33):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA276;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA276: ;
				{
					if (!(regs->data[rc].kindU.intval == IL64(0))) goto LA280;
					stacktrace_385336(c, tos, pc, ((NU16) 73), ((NimStringDesc*) &TMP2694));
				}
				goto LA278;
				LA280: ;
				{
					regs->data[ra_387243].kindU.intval = (NI64)(regs->data[rb].kindU.intval % regs->data[rc].kindU.intval);
				}
				LA278: ;
			}
			break;
			case ((NU8) 34):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 3)))) goto LA286;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 3);
				}
				LA286: ;
				regs->data[ra_387243].kindU.floatval = ((NF)(regs->data[rb].kindU.floatval) + (NF)(regs->data[rc].kindU.floatval));
			}
			break;
			case ((NU8) 35):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 3)))) goto LA291;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 3);
				}
				LA291: ;
				regs->data[ra_387243].kindU.floatval = ((NF)(regs->data[rb].kindU.floatval) - (NF)(regs->data[rc].kindU.floatval));
			}
			break;
			case ((NU8) 36):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 3)))) goto LA296;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 3);
				}
				LA296: ;
				regs->data[ra_387243].kindU.floatval = ((NF)(regs->data[rb].kindU.floatval) * (NF)(regs->data[rc].kindU.floatval));
			}
			break;
			case ((NU8) 37):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 3)))) goto LA301;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 3);
				}
				LA301: ;
				regs->data[ra_387243].kindU.floatval = ((NF)(regs->data[rb].kindU.floatval) / (NF)(regs->data[rc].kindU.floatval));
			}
			break;
			case ((NU8) 38):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA306;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA306: ;
				regs->data[ra_387243].kindU.intval = (NI64)((NU64)(regs->data[rb].kindU.intval) >> (NU64)(regs->data[rc].kindU.intval));
			}
			break;
			case ((NU8) 39):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA311;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA311: ;
				regs->data[ra_387243].kindU.intval = (NI64)((NU64)(regs->data[rb].kindU.intval) << (NU64)(regs->data[rc].kindU.intval));
			}
			break;
			case ((NU8) 40):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA316;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA316: ;
				regs->data[ra_387243].kindU.intval = (NI64)(regs->data[rb].kindU.intval & regs->data[rc].kindU.intval);
			}
			break;
			case ((NU8) 41):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA321;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA321: ;
				regs->data[ra_387243].kindU.intval = (NI64)(regs->data[rb].kindU.intval | regs->data[rc].kindU.intval);
			}
			break;
			case ((NU8) 42):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA326;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA326: ;
				regs->data[ra_387243].kindU.intval = (NI64)(regs->data[rb].kindU.intval ^ regs->data[rc].kindU.intval);
			}
			break;
			case ((NU8) 43):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA331;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA331: ;
				regs->data[ra_387243].kindU.intval = (NI64)((NU64)(regs->data[rb].kindU.intval) + (NU64)(regs->data[rc].kindU.intval));
			}
			break;
			case ((NU8) 44):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA336;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA336: ;
				regs->data[ra_387243].kindU.intval = (NI64)((NU64)(regs->data[rb].kindU.intval) - (NU64)(regs->data[rc].kindU.intval));
			}
			break;
			case ((NU8) 45):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA341;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA341: ;
				regs->data[ra_387243].kindU.intval = (NI64)((NU64)(regs->data[rb].kindU.intval) * (NU64)(regs->data[rc].kindU.intval));
			}
			break;
			case ((NU8) 46):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA346;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA346: ;
				regs->data[ra_387243].kindU.intval = (NI64)((NU64)(regs->data[rb].kindU.intval) / (NU64)(regs->data[rc].kindU.intval));
			}
			break;
			case ((NU8) 47):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA351;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA351: ;
				regs->data[ra_387243].kindU.intval = (NI64)((NU64)(regs->data[rb].kindU.intval) % (NU64)(regs->data[rc].kindU.intval));
			}
			break;
			case ((NU8) 48):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA356;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA356: ;
				regs->data[ra_387243].kindU.intval = ((NI64) ((regs->data[rb].kindU.intval == regs->data[rc].kindU.intval)));
			}
			break;
			case ((NU8) 49):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA361;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA361: ;
				regs->data[ra_387243].kindU.intval = ((NI64) ((regs->data[rb].kindU.intval <= regs->data[rc].kindU.intval)));
			}
			break;
			case ((NU8) 50):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA366;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA366: ;
				regs->data[ra_387243].kindU.intval = ((NI64) ((regs->data[rb].kindU.intval < regs->data[rc].kindU.intval)));
			}
			break;
			case ((NU8) 51):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA371;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA371: ;
				regs->data[ra_387243].kindU.intval = ((NI64) ((regs->data[rb].kindU.floatval == regs->data[rc].kindU.floatval)));
			}
			break;
			case ((NU8) 52):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA376;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA376: ;
				regs->data[ra_387243].kindU.intval = ((NI64) ((regs->data[rb].kindU.floatval <= regs->data[rc].kindU.floatval)));
			}
			break;
			case ((NU8) 53):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA381;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA381: ;
				regs->data[ra_387243].kindU.intval = ((NI64) ((regs->data[rb].kindU.floatval < regs->data[rc].kindU.floatval)));
			}
			break;
			case ((NU8) 54):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA386;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA386: ;
				regs->data[ra_387243].kindU.intval = ((NI64) (((NU64)(regs->data[rb].kindU.intval) <= (NU64)(regs->data[rc].kindU.intval))));
			}
			break;
			case ((NU8) 55):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA391;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA391: ;
				regs->data[ra_387243].kindU.intval = ((NI64) (((NU64)(regs->data[rb].kindU.intval) < (NU64)(regs->data[rc].kindU.intval))));
			}
			break;
			case ((NU8) 56):
			case ((NU8) 57):
			{
				NI rb;
				NI rc;
				NIM_BOOL LOC398;
				NIM_BOOL LOC399;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA396;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA396: ;
				LOC398 = 0;
				LOC399 = 0;
				LOC399 = ((*regs->data[rb].kindU.node).kind == ((NU8) 23));
				if (!(LOC399)) goto LA400;
				LOC399 = ((*regs->data[rc].kindU.node).kind == ((NU8) 23));
				LA400: ;
				LOC398 = LOC399;
				if (LOC398) goto LA401;
				LOC398 = (regs->data[rb].kindU.node == regs->data[rc].kindU.node);
				LA401: ;
				regs->data[ra_387243].kindU.intval = ((NI64) (LOC398));
			}
			break;
			case ((NU8) 58):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA405;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA405: ;
				regs->data[ra_387243].kindU.intval = ((NI64) (!((regs->data[rb].kindU.intval == regs->data[rc].kindU.intval))));
			}
			break;
			case ((NU8) 59):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA410;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA410: ;
				regs->data[ra_387243].kindU.intval = (NI64)(IL64(1) - regs->data[rb].kindU.intval);
			}
			break;
			case ((NU8) 60):
			{
				NI rb;
				NI64 val;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA415;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA415: ;
				val = regs->data[rb].kindU.intval;
				{
					if (!!((val == (IL64(-9223372036854775807) - IL64(1))))) goto LA419;
					regs->data[ra_387243].kindU.intval = -(val);
				}
				goto LA417;
				LA419: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 76), ((NimStringDesc*) &TMP2694));
				}
				LA417: ;
			}
			break;
			case ((NU8) 61):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 3)))) goto LA425;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 3);
				}
				LA425: ;
				regs->data[ra_387243].kindU.floatval = -(regs->data[rb].kindU.floatval);
			}
			break;
			case ((NU8) 62):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA430;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA430: ;
				regs->data[ra_387243].kindU.intval = (NI64)((NU64) ~(regs->data[rb].kindU.intval));
			}
			break;
			case ((NU8) 63):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA435;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA435: ;
				regs->data[ra_387243].kindU.intval = ((NI64) (eqStrings((*regs->data[rb].kindU.node).kindU.S3.strval, (*regs->data[rc].kindU.node).kindU.S3.strval)));
			}
			break;
			case ((NU8) 64):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA440;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA440: ;
				regs->data[ra_387243].kindU.intval = ((NI64) ((cmpStrings((*regs->data[rb].kindU.node).kindU.S3.strval, (*regs->data[rc].kindU.node).kindU.S3.strval) <= 0)));
			}
			break;
			case ((NU8) 65):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA445;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA445: ;
				regs->data[ra_387243].kindU.intval = ((NI64) ((cmpStrings((*regs->data[rb].kindU.node).kindU.S3.strval, (*regs->data[rc].kindU.node).kindU.S3.strval) < 0)));
			}
			break;
			case ((NU8) 67):
			{
				NI rb;
				NI rc;
				NIM_BOOL LOC452;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA450;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA450: ;
				LOC452 = 0;
				LOC452 = containssets_241075(regs->data[rb].kindU.node, regs->data[rc].kindU.node);
				regs->data[ra_387243].kindU.intval = ((NI64) (LOC452));
			}
			break;
			case ((NU8) 66):
			{
				NI rb;
				NI rc;
				NIM_BOOL LOC458;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA456;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA456: ;
				LOC458 = 0;
				LOC458 = equalsets_241082(regs->data[rb].kindU.node, regs->data[rc].kindU.node);
				regs->data[ra_387243].kindU.intval = ((NI64) (LOC458));
			}
			break;
			case ((NU8) 68):
			{
				NI rb;
				NI rc;
				Tnode191813* a;
				Tnode191813* b;
				NIM_BOOL LOC464;
				NIM_BOOL LOC466;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA462;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA462: ;
				a = regs->data[rb].kindU.node;
				b = regs->data[rc].kindU.node;
				LOC464 = 0;
				LOC464 = containssets_241075(a, b);
				if (!(LOC464)) goto LA465;
				LOC466 = 0;
				LOC466 = equalsets_241082(a, b);
				LOC464 = !(LOC466);
				LA465: ;
				regs->data[ra_387243].kindU.intval = ((NI64) (LOC464));
			}
			break;
			case ((NU8) 69):
			{
				NI rb;
				NI rc;
				Tnode191813* LOC472;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA470;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA470: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 39)));
				LOC472 = 0;
				LOC472 = intersectsets_241061(regs->data[rb].kindU.node, regs->data[rc].kindU.node);
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S6.sons), (*LOC472).kindU.S6.sons);
			}
			break;
			case ((NU8) 70):
			{
				NI rb;
				NI rc;
				Tnode191813* LOC478;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA476;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA476: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 39)));
				LOC478 = 0;
				LOC478 = unionsets_241047(regs->data[rb].kindU.node, regs->data[rc].kindU.node);
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S6.sons), (*LOC478).kindU.S6.sons);
			}
			break;
			case ((NU8) 71):
			{
				NI rb;
				NI rc;
				Tnode191813* LOC484;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA482;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA482: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 39)));
				LOC484 = 0;
				LOC484 = diffsets_241054(regs->data[rb].kindU.node, regs->data[rc].kindU.node);
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S6.sons), (*LOC484).kindU.S6.sons);
			}
			break;
			case ((NU8) 72):
			{
				NI rb;
				NI rc;
				Tnode191813* LOC490;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA488;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA488: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 39)));
				LOC490 = 0;
				LOC490 = symdiffsets_241068(regs->data[rb].kindU.node, regs->data[rc].kindU.node);
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S6.sons), (*LOC490).kindU.S6.sons);
			}
			break;
			case ((NU8) 73):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA494;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA494: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 20)));
				{
					NimStringDesc* LOC500;
					if (!(regs->data[rb].kind == ((NU8) 1))) goto LA498;
					LOC500 = 0;
					LOC500 = (*regs->data[ra_387243].kindU.node).kindU.S3.strval; (*regs->data[ra_387243].kindU.node).kindU.S3.strval = copyStringRC1((*regs->data[rb].kindU.node).kindU.S3.strval);
					if (LOC500) nimGCunrefNoCycle(LOC500);
				}
				goto LA496;
				LA498: ;
				{
					asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S3.strval), nimCharToStr(((NIM_CHAR) (((NI) (((NI) (regs->data[rb].kindU.intval))))))));
				}
				LA496: ;
				{
					NI i_392023;
					NI HEX3Atmp_397044;
					NI HEX3Atmp_397045;
					NI res_397048;
					i_392023 = 0;
					HEX3Atmp_397044 = 0;
					HEX3Atmp_397045 = 0;
					HEX3Atmp_397044 = (NI)(((NI) (rb)) + ((NI) 1));
					HEX3Atmp_397045 = (NI)(((NI) ((NI)(((NI) (rb)) + ((NI) (rc))))) - ((NI) 1));
					res_397048 = ((NI) (HEX3Atmp_397044));
					{
						while (1) {
							NimStringDesc* LOC505;
							if (!(res_397048 <= ((NI) (HEX3Atmp_397045)))) goto LA504;
							i_392023 = ((NI) (res_397048));
							LOC505 = 0;
							{
								if (!(regs->data[i_392023].kind == ((NU8) 1))) goto LA508;
								LOC505 = copyString((*regs->data[i_392023].kindU.node).kindU.S3.strval);
							}
							goto LA506;
							LA508: ;
							{
								LOC505 = nimCharToStr(((NIM_CHAR) (((NI) (((NI) (regs->data[i_392023].kindU.intval)))))));
							}
							LA506: ;
							(*regs->data[ra_387243].kindU.node).kindU.S3.strval = resizeString((*regs->data[ra_387243].kindU.node).kindU.S3.strval, LOC505->Sup.len + 0);
appendString((*regs->data[ra_387243].kindU.node).kindU.S3.strval, LOC505);
							res_397048 += ((NI) 1);
						} LA504: ;
					}
				}
			}
			break;
			case ((NU8) 90):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA514;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA514: ;
				(*regs->data[ra_387243].kindU.node).kindU.S3.strval = addChar((*regs->data[ra_387243].kindU.node).kindU.S3.strval, ((NIM_CHAR) (((NI) (regs->data[rb].kindU.intval)))));
			}
			break;
			case ((NU8) 91):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA519;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA519: ;
				(*regs->data[ra_387243].kindU.node).kindU.S3.strval = resizeString((*regs->data[ra_387243].kindU.node).kindU.S3.strval, (*regs->data[rb].kindU.node).kindU.S3.strval->Sup.len + 0);
appendString((*regs->data[ra_387243].kindU.node).kindU.S3.strval, (*regs->data[rb].kindU.node).kindU.S3.strval);
			}
			break;
			case ((NU8) 92):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA524;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA524: ;
				{
					Tnode191813* LOC530;
					Tnode191813* LOC531;
					if (!((*regs->data[ra_387243].kindU.node).kind == ((NU8) 41))) goto LA528;
					LOC530 = 0;
					LOC530 = regtonode_386340(regs->data[rb]);
					LOC531 = 0;
					LOC531 = copytree_196028(LOC530);
					add_192164(regs->data[ra_387243].kindU.node, LOC531);
				}
				goto LA526;
				LA528: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 81), ((NimStringDesc*) &TMP2694));
				}
				LA526: ;
			}
			break;
			case ((NU8) 126):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!(((NI) (rb)) == ((NI) 1))) goto LA536;
					msgwriteln_165536((*regs->data[ra_387243].kindU.node).kindU.S3.strval);
				}
				goto LA534;
				LA536: ;
				{
					NimStringDesc* outp;
					outp = copyString(((NimStringDesc*) &TMP2694));
					{
						NI i_392223;
						NI HEX3Atmp_397060;
						NI res_397063;
						i_392223 = 0;
						HEX3Atmp_397060 = 0;
						HEX3Atmp_397060 = (NI)(((NI) ((NI)(((NI) (ra_387243)) + ((NI) (rb))))) - ((NI) 1));
						res_397063 = ((NI) (ra_387243));
						{
							while (1) {
								if (!(res_397063 <= ((NI) (HEX3Atmp_397060)))) goto LA541;
								i_392223 = ((NI) (res_397063));
								outp = resizeString(outp, (*regs->data[i_392223].kindU.node).kindU.S3.strval->Sup.len + 0);
appendString(outp, (*regs->data[i_392223].kindU.node).kindU.S3.strval);
								res_397063 += ((NI) 1);
							} LA541: ;
						}
					}
					msgwriteln_165536(outp);
				}
				LA534: ;
			}
			break;
			case ((NU8) 74):
			{
				NI rb;
				NI rc;
				Tnode191813* LOC547;
				NIM_BOOL LOC548;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA545;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA545: ;
				LOC547 = 0;
				LOC547 = regtonode_386340(regs->data[rc]);
				LOC548 = 0;
				LOC548 = inset_241019(regs->data[rb].kindU.node, LOC547);
				regs->data[ra_387243].kindU.intval = ((NI64) (LOC548));
			}
			break;
			case ((NU8) 82):
			{
				NI rb;
				NI rc;
				NI rd;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA552;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA552: ;
				pc += ((NI) 1);
				rd = ((NI) ((NU32)((NU32)((NU32)((*c).code->data[pc]) >> (NU32)(((NU32) 8))) & ((NU32) 255))));
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 20)));
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S3.strval), copyStrLast((*regs->data[rb].kindU.node).kindU.S3.strval, ((NI) (regs->data[rc].kindU.intval)), ((NI) (regs->data[rd].kindU.intval))));
			}
			break;
			case ((NU8) 83):
			{
				NI rb;
				NI rc;
				NI rd;
				Tfullreg385204* rcaddr;
				NI LOC566;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA557;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA557: ;
				pc += ((NI) 1);
				rd = ((NI) ((NU32)((NU32)((NU32)((*c).code->data[pc]) >> (NU32)(((NU32) 8))) & ((NU32) 255))));
				rcaddr = (&regs->data[rc]);
				{
					if (!((*rcaddr).kind == ((NU8) 4))) goto LA561;
					rcaddr = (*rcaddr).kindU.regaddr;
				}
				goto LA559;
				LA561: ;
				{
					if (!!((regs->data[rc].kind == ((NU8) 3)))) goto LA564;
					myreset_385401((&regs->data[rc]));
					regs->data[rc].kind = ((NU8) 3);
				}
				goto LA559;
				LA564: ;
				LA559: ;
				LOC566 = 0;
				LOC566 = nimParseBiggestFloat((*regs->data[rb].kindU.node).kindU.S3.strval, (&(*rcaddr).kindU.floatval), ((NI) (regs->data[rd].kindU.intval)));
				regs->data[ra_387243].kindU.intval = ((NI64) (LOC566));
			}
			break;
			case ((NU8) 93):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					NIM_BOOL LOC570;
					Tnode191813* LOC571;
					Tnode191813* LOC572;
					Tnode191813* LOC574;
					Tnode191813* LOC575;
					NimStringDesc* LOC578;
					TY155965 LOC579;
					Tnode191813* LOC580;
					NimStringDesc* LOC581;
					Tnode191813* LOC582;
					NimStringDesc* LOC583;
					Tnode191813* LOC584;
					NimStringDesc* LOC585;
					NimStringDesc* LOC586;
					LOC570 = 0;
					LOC571 = 0;
					LOC571 = regtonode_386340(regs->data[rb]);
					LOC572 = 0;
					LOC572 = regtonode_386340(regs->data[ra_387243]);
					LOC570 = levalueconv_257021(LOC571, LOC572);
					if (!(LOC570)) goto LA573;
					LOC574 = 0;
					LOC574 = regtonode_386340(regs->data[ra_387243]);
					LOC575 = 0;
					LOC575 = regtonode_386340(regs->data[rc]);
					LOC570 = levalueconv_257021(LOC574, LOC575);
					LA573: ;
					if (!!(LOC570)) goto LA576;
					LOC578 = 0;
					LOC578 = msgkindtostring_165616(((NU16) 142));
					memset((void*)LOC579, 0, sizeof(LOC579));
					LOC580 = 0;
					LOC580 = regtonode_386340(regs->data[ra_387243]);
					LOC579[0] = HEX24_213089(LOC580);
					LOC581 = 0;
					LOC582 = 0;
					LOC582 = regtonode_386340(regs->data[rb]);
					LOC583 = 0;
					LOC583 = HEX24_213089(LOC582);
					LOC584 = 0;
					LOC584 = regtonode_386340(regs->data[rc]);
					LOC585 = 0;
					LOC585 = HEX24_213089(LOC584);
					LOC581 = rawNewString(LOC583->Sup.len + LOC585->Sup.len + 4);
appendString(LOC581, ((NimStringDesc*) &TMP2814));
appendString(LOC581, LOC583);
appendString(LOC581, ((NimStringDesc*) &TMP2815));
appendString(LOC581, LOC585);
appendString(LOC581, ((NimStringDesc*) &TMP2816));
					LOC579[1] = LOC581;
					LOC586 = 0;
					LOC586 = nsuFormatOpenArray(LOC578, LOC579, 2);
					stacktrace_385336(c, tos, pc, ((NU16) 4), LOC586);
				}
				LA576: ;
			}
			break;
			case ((NU8) 127):
			case ((NU8) 128):
			{
				NI rb;
				NI rc;
				Tnode191813* bb;
				NIM_BOOL isclosure;
				Tsym191843* prc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				bb = regs->data[rb].kindU.node;
				isclosure = ((*bb).kind == ((NU8) 37));
				{
					if (!!(isclosure)) goto LA590;
					prc = (*bb).kindU.S4.sym;
				}
				goto LA588;
				LA590: ;
				{
					prc = (*(*bb).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
				}
				LA588: ;
				{
					Vmargs244042 LOC597;
					if (!((*prc).offset < ((NI) -1))) goto LA595;
					memset((void*)(&LOC597), 0, sizeof(LOC597));
					memset((void*)(&LOC597), 0, sizeof(LOC597));
					LOC597.ra = ((NI) (ra_387243));
					LOC597.rb = ((NI) (rb));
					LOC597.rc = ((NI) (rc));
					LOC597.slots = ((void*) (regs));
					LOC597.currentexception = (*c).currentexceptionb;
					(*c).callbacks->data[(NI)(((NI32)-((*prc).offset)) - ((NI) 2))].Field1.ClEnv? (*c).callbacks->data[(NI)(((NI32)-((*prc).offset)) - ((NI) 2))].Field1.ClPrc((&LOC597), (*c).callbacks->data[(NI)(((NI32)-((*prc).offset)) - ((NI) 2))].Field1.ClEnv):((TMP2817)((*c).callbacks->data[(NI)(((NI32)-((*prc).offset)) - ((NI) 2))].Field1.ClPrc))((&LOC597));
				}
				goto LA593;
				LA595: ;
				{
					if (!(((*prc).flags &(1<<((((NU8) 5))&31)))!=0)) goto LA599;
					{
						if (!!((((*c).features &(1<<((((NU8) 1))&7)))!=0))) goto LA603;
						globalerror_166134((*c).debug->data[pc], ((NU16) 4), ((NimStringDesc*) &TMP2818));
					}
					LA603: ;
					globalerror_166134((*c).debug->data[pc], ((NU16) 4), ((NimStringDesc*) &TMP2819));
				}
				goto LA593;
				LA599: ;
				{
					NI newpc;
					Tstackframe385208* newframe;
					Tstackframe385208* LOC621;
					if (!!(((*prc).kind == ((NU8) 18)))) goto LA606;
					newpc = compile_387010(c, prc);
					{
						if (!(newpc < pc)) goto LA610;
						{
							if (!((*c).loopiterations <= ((NI) 0))) goto LA614;
							{
								if (!(((*c).features &(1<<((((NU8) 2))&7)))!=0)) goto LA618;
								(*c).loopiterations = ((NI) 1500000);
							}
							goto LA616;
							LA618: ;
							{
								msgwriteln_165536(((NimStringDesc*) &TMP2807));
								stacktraceaux_385233(c, tos, pc, ((NI) 100));
								globalerror_166134((*c).debug->data[pc], ((NU16) 207), ((NimStringDesc*) &TMP2694));
							}
							LA616: ;
						}
						LA614: ;
						(*c).loopiterations -= ((NI) 1);
					}
					LA610: ;
					LOC621 = 0;
					LOC621 = (Tstackframe385208*) newObj((&NTI385206), sizeof(Tstackframe385208));
					asgnRefNoCycle((void**) (&(*LOC621).prc), prc);
					(*LOC621).comesfrom = pc;
					asgnRef((void**) (&(*LOC621).next), tos);
					newframe = LOC621;
					if ((*newframe).slots) nimGCunrefNoCycle((*newframe).slots);
					(*newframe).slots = (TY385864*) newSeqRC1((&NTI385864), ((NI) ((*prc).offset)));
					{
						NIM_BOOL LOC624;
						NIM_BOOL LOC625;
						Tnode191813* LOC629;
						LOC624 = 0;
						LOC625 = 0;
						LOC625 = isemptytype_196933((*(*prc).typ).sons->data[((NI) 0)]);
						LOC624 = !(LOC625);
						if (LOC624) goto LA626;
						LOC624 = ((*prc).kind == ((NU8) 17));
						LA626: ;
						if (!LOC624) goto LA627;
						LOC629 = 0;
						LOC629 = getnullvalue_378207((*(*prc).typ).sons->data[((NI) 0)], (*prc).info);
						putintoreg_386320((&(*newframe).slots->data[((NI) 0)]), LOC629);
					}
					LA627: ;
					{
						NI i_393023;
						NI HEX3Atmp_397089;
						NI res_397092;
						i_393023 = 0;
						HEX3Atmp_397089 = 0;
						HEX3Atmp_397089 = (NI)(((NI) (rc)) - ((NI) 1));
						res_397092 = ((NI) 1);
						{
							while (1) {
								if (!(res_397092 <= ((NI) (HEX3Atmp_397089)))) goto LA632;
								i_393023 = ((NI) (res_397092));
								genericAssign((void*)(&(*newframe).slots->data[i_393023]), (void*)(&regs->data[(NI)(((NI) (rb)) + ((NI) (i_393023)))]), (&NTI385204));
								res_397092 += ((NI) 1);
							} LA632: ;
						}
					}
					{
						if (!isclosure) goto LA635;
						(*newframe).slots->data[rc].kind = ((NU8) 1);
						asgnRefNoCycle((void**) (&(*newframe).slots->data[rc].kindU.node), (*regs->data[rb].kindU.node).kindU.S6.sons->data[((NI) 1)]);
					}
					LA635: ;
					tos = newframe;
					regs = (*newframe).slots;
					pc = (NI)(newpc - ((NI) 1));
				}
				goto LA593;
				LA606: ;
				{
					Tsym191843* gensymowner;
					Tnode191813* macrocall;
					Tnode191813* LOC645;
					Tnode191813* a;
					{
						NIM_BOOL LOC640;
						LOC640 = 0;
						LOC640 = !(((*tos).next == NIM_NIL));
						if (!(LOC640)) goto LA641;
						LOC640 = !(((*(*tos).next).prc == NIM_NIL));
						LA641: ;
						if (!LOC640) goto LA642;
						gensymowner = (*(*tos).next).prc;
					}
					goto LA638;
					LA642: ;
					{
						gensymowner = (*c).module;
					}
					LA638: ;
					macrocall = newnodei_193351(((NU8) 27), (*c).debug->data[pc]);
					LOC645 = 0;
					LOC645 = newsymnode_193325(prc);
					add_192164(macrocall, LOC645);
					{
						NI i_393066;
						NI HEX3Atmp_397096;
						NI res_397099;
						i_393066 = 0;
						HEX3Atmp_397096 = 0;
						HEX3Atmp_397096 = (NI)(((NI) (rc)) - ((NI) 1));
						res_397099 = ((NI) 1);
						{
							while (1) {
								Tnode191813* LOC649;
								if (!(res_397099 <= ((NI) (HEX3Atmp_397096)))) goto LA648;
								i_393066 = ((NI) (res_397099));
								LOC649 = 0;
								LOC649 = regtonode_386340(regs->data[(NI)(((NI) (rb)) + ((NI) (i_393066)))]);
								add_192164(macrocall, LOC649);
								res_397099 += ((NI) 1);
							} LA648: ;
						}
					}
					a = evaltemplate_384260(macrocall, prc, gensymowner);
					{
						if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA652;
						myreset_385401((&regs->data[ra_387243]));
						regs->data[ra_387243].kind = ((NU8) 1);
					}
					LA652: ;
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), a);
				}
				LA593: ;
			}
			break;
			case ((NU8) 134):
			{
				NI rbx;
				rbx = (NI)((NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768)) - ((NI) 1));
				{
					if (!!((regs->data[ra_387243].kindU.intval == IL64(0)))) goto LA657;
					pc += rbx;
				}
				LA657: ;
			}
			break;
			case ((NU8) 135):
			{
				NI rbx;
				rbx = (NI)((NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768)) - ((NI) 1));
				{
					if (!(regs->data[ra_387243].kindU.intval == IL64(0))) goto LA662;
					pc += rbx;
				}
				LA662: ;
			}
			break;
			case ((NU8) 136):
			{
				NI rbx;
				rbx = (NI)((NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768)) - ((NI) 1));
				pc += rbx;
			}
			break;
			case ((NU8) 137):
			{
				NI rbx;
				rbx = (NI)((NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768)) - ((NI) 1));
				pc += rbx;
				{
					if (!((*c).loopiterations <= ((NI) 0))) goto LA668;
					{
						if (!(((*c).features &(1<<((((NU8) 2))&7)))!=0)) goto LA672;
						(*c).loopiterations = ((NI) 1500000);
					}
					goto LA670;
					LA672: ;
					{
						msgwriteln_165536(((NimStringDesc*) &TMP2807));
						stacktraceaux_385233(c, tos, pc, ((NI) 100));
						globalerror_166134((*c).debug->data[pc], ((NU16) 207), ((NimStringDesc*) &TMP2694));
					}
					LA670: ;
				}
				LA668: ;
				(*c).loopiterations -= ((NI) 1);
			}
			break;
			case ((NU8) 138):
			{
				Tnode191813* branch;
				NIM_BOOL cond;
				branch = HEX5BHEX5D_192244((*c).constants, (NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768)));
				cond = NIM_FALSE;
				{
					NI j_393202;
					NI HEX3Atmp_397108;
					NI LOC677;
					NI res_397111;
					j_393202 = 0;
					HEX3Atmp_397108 = 0;
					LOC677 = 0;
					LOC677 = sonslen_194403(branch);
					HEX3Atmp_397108 = (NI)(LOC677 - ((NI) 2));
					res_397111 = ((NI) 0);
					{
						while (1) {
							if (!(res_397111 <= HEX3Atmp_397108)) goto LA679;
							j_393202 = res_397111;
							{
								Tnode191813* LOC682;
								NIM_BOOL LOC683;
								LOC682 = 0;
								LOC682 = regtonode_386340(regs->data[ra_387243]);
								LOC683 = 0;
								LOC683 = overlap_241012(LOC682, (*branch).kindU.S6.sons->data[j_393202]);
								if (!LOC683) goto LA684;
								cond = NIM_TRUE;
								goto LA676;
							}
							LA684: ;
							res_397111 += ((NI) 1);
						} LA679: ;
					}
				} LA676: ;
				pc += ((NI) 1);
				{
					NU32 instr2;
					NI rbx;
					if (!!(cond)) goto LA688;
					instr2 = (*c).code->data[pc];
					rbx = (NI)((NI)(((NI) ((NU32)((NU32)(instr2) >> (NU32)(((NU32) 16))))) - ((NI) 32768)) - ((NI) 1));
					pc += rbx;
				}
				LA688: ;
			}
			break;
			case ((NU8) 139):
			{
				NI rbx;
				rbx = (NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768));
				pushsafepoint_386366(tos, (NI)(pc + rbx));
			}
			break;
			case ((NU8) 140):
			{
				NI rbx;
				rbx = (NI)((NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768)) - ((NI) 1));
				pc += rbx;
			}
			break;
			case ((NU8) 141):
			{
				popsafepoint_386410(tos);
			}
			break;
			case ((NU8) 142):
			{
				{
					TY386455 LOC698;
					NI newpc;
					Tstackframe385208* newtos;
					if (!!(((*c).currentexceptiona == NIM_NIL))) goto LA696;
					memset((void*)(&LOC698), 0, sizeof(LOC698));
					cleanuponexception_386451(c, tos, (&LOC698));
					newpc = 0;
					newpc = LOC698.Field0;
					newtos = 0;
					newtos = LOC698.Field1;
					{
						if (!((NI)(newpc - ((NI) 1)) < ((NI) 0))) goto LA701;
						bailout_385358(c, tos);
						goto BeforeRet;
					}
					LA701: ;
					pc = (NI)(newpc - ((NI) 1));
					{
						if (!!((tos == newtos))) goto LA705;
						tos = newtos;
						regs = (*tos).slots;
					}
					LA705: ;
				}
				LA696: ;
			}
			break;
			case ((NU8) 129):
			{
				Tnode191813* raised;
				TY386455 LOC708;
				NI newpc;
				Tstackframe385208* newtos;
				raised = regs->data[ra_387243].kindU.node;
				asgnRefNoCycle((void**) (&(*c).currentexceptiona), raised);
				(*c).exceptioninstr = pc;
				memset((void*)(&LOC708), 0, sizeof(LOC708));
				cleanuponexception_386451(c, tos, (&LOC708));
				newpc = 0;
				newpc = LOC708.Field0;
				newtos = 0;
				newtos = LOC708.Field1;
				{
					if (!((NI)(newpc - ((NI) 1)) < ((NI) 0))) goto LA711;
					bailout_385358(c, tos);
					goto BeforeRet;
				}
				LA711: ;
				pc = (NI)(newpc - ((NI) 1));
				{
					if (!!((tos == newtos))) goto LA715;
					tos = newtos;
					regs = (*tos).slots;
				}
				LA715: ;
			}
			break;
			case ((NU8) 143):
			{
				Ttype191849* typ;
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA720;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA720: ;
				typ = (*c).types->data[(NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768))];
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), getnullvalue_378207(typ, (*c).debug->data[pc]));
				(*regs->data[ra_387243].kindU.node).flags |= ((NI16)1)<<((((NU8) 12))%(sizeof(NI16)*8));
			}
			break;
			case ((NU8) 144):
			{
				Ttype191849* typ;
				NU32 instr2;
				NI count;
				typ = (*c).types->data[(NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768))];
				pc += ((NI) 1);
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA725;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA725: ;
				instr2 = (*c).code->data[pc];
				count = ((NI) (regs->data[((NI) ((NU32)((NU32)((NU32)(instr2) >> (NU32)(((NU32) 8))) & ((NU32) 255))))].kindU.intval));
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnodei_193351(((NU8) 41), (*c).debug->data[pc]));
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).typ), typ);
				if ((*regs->data[ra_387243].kindU.node).kindU.S6.sons) nimGCunrefNoCycle((*regs->data[ra_387243].kindU.node).kindU.S6.sons);
				(*regs->data[ra_387243].kindU.node).kindU.S6.sons = (Tnodeseq191807*) newSeqRC1((&NTI191807), ((NI) (count)));
				{
					NI i_393956;
					NI HEX3Atmp_397123;
					NI res_397126;
					i_393956 = 0;
					HEX3Atmp_397123 = 0;
					HEX3Atmp_397123 = (count - 1);
					res_397126 = ((NI) 0);
					{
						while (1) {
							if (!(res_397126 <= HEX3Atmp_397123)) goto LA729;
							i_393956 = res_397126;
							asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S6.sons->data[i_393956]), getnullvalue_378207((*typ).sons->data[((NI) 0)], (*c).debug->data[pc]));
							res_397126 += ((NI) 1);
						} LA729: ;
					}
				}
			}
			break;
			case ((NU8) 133):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA733;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA733: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnodei_193351(((NU8) 20), (*c).debug->data[pc]));
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S3.strval), mnewString(((NI) (((NI) (regs->data[rb].kindU.intval))))));
			}
			break;
			case ((NU8) 151):
			{
				NI rbx;
				rbx = (NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA738;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA738: ;
				regs->data[ra_387243].kindU.intval = ((NI64) (rbx));
			}
			break;
			case ((NU8) 145):
			{
				Ttype191849* typ;
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA743;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA743: ;
				typ = (*c).types->data[(NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768))];
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), getnullvalue_378207(typ, (*c).debug->data[pc]));
			}
			break;
			case ((NU8) 146):
			{
				Ttype191849* typ;
				typ = (*c).types->data[(NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768))];
				{
					Ttype191849* LOC748;
					LOC748 = 0;
					LOC748 = skiptypes_195167(typ, IL64(211106233624576));
					if (!((*LOC748).kind >= ((NU8) 36) && (*LOC748).kind <= ((NU8) 39))) goto LA749;
					{
						if (!!((regs->data[ra_387243].kind == ((NU8) 3)))) goto LA753;
						myreset_385401((&regs->data[ra_387243]));
						regs->data[ra_387243].kind = ((NU8) 3);
					}
					LA753: ;
					regs->data[ra_387243].kindU.floatval = 0.0;
				}
				goto LA746;
				LA749: ;
				{
					{
						if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA758;
						myreset_385401((&regs->data[ra_387243]));
						regs->data[ra_387243].kind = ((NU8) 2);
					}
					LA758: ;
					regs->data[ra_387243].kindU.intval = IL64(0);
				}
				LA746: ;
			}
			break;
			case ((NU8) 147):
			{
				NI rb;
				Tnode191813* cnst;
				rb = (NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768));
				cnst = (*(*c).constants).kindU.S6.sons->data[rb];
				{
					NIM_BOOL LOC763;
					LOC763 = 0;
					LOC763 = fitsregister_377240((*cnst).typ);
					if (!LOC763) goto LA764;
					myreset_385401((&regs->data[ra_387243]));
					putintoreg_386320((&regs->data[ra_387243]), cnst);
				}
				goto LA761;
				LA764: ;
				{
					{
						if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA769;
						myreset_385401((&regs->data[ra_387243]));
						regs->data[ra_387243].kind = ((NU8) 1);
					}
					LA769: ;
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), cnst);
				}
				LA761: ;
			}
			break;
			case ((NU8) 148):
			{
				NI rb;
				Tnode191813* cnst;
				rb = (NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768));
				cnst = (*(*c).constants).kindU.S6.sons->data[rb];
				{
					NIM_BOOL LOC774;
					LOC774 = 0;
					LOC774 = fitsregister_377240((*cnst).typ);
					if (!LOC774) goto LA775;
					putintoreg_386320((&regs->data[ra_387243]), cnst);
				}
				goto LA772;
				LA775: ;
				{
					{
						if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA780;
						myreset_385401((&regs->data[ra_387243]));
						regs->data[ra_387243].kind = ((NU8) 1);
					}
					LA780: ;
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), copytree_196028(cnst));
				}
				LA772: ;
			}
			break;
			case ((NU8) 149):
			{
				NI rb;
				rb = (NI)((NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768)) - ((NI) 1));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA785;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA785: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), (*(*c).globals).kindU.S6.sons->data[rb]);
			}
			break;
			case ((NU8) 150):
			{
				NI rb;
				rb = (NI)((NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768)) - ((NI) 1));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 5)))) goto LA790;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 5);
				}
				LA790: ;
				regs->data[ra_387243].kindU.nodeaddr = &(*(*c).globals).kindU.S6.sons->data[rb];
			}
			break;
			case ((NU8) 75):
			{
				NI rb;
				Tnode191813* LOC797;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA795;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA795: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 20)));
				LOC797 = 0;
				LOC797 = regtonode_386340(regs->data[rb]);
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S3.strval), rendertree_213058(LOC797, 4));
			}
			break;
			case ((NU8) 86):
			{
				{
					Tnode191813* LOC803;
					NI64 LOC804;
					if (!((25 &(1<<(((*c).mode)&7)))!=0)) goto LA801;
					message_166188((*c).debug->data[pc], ((NU16) 268), ((NimStringDesc*) &TMP2694));
					LOC803 = 0;
					LOC803 = regtonode_386340(regs->data[ra_387243]);
					LOC804 = 0;
					LOC804 = getordvalue_221178(LOC803);
					msgquit_165107(((NI8) (LOC804)));
				}
				goto LA799;
				LA801: ;
				{
					Tfullreg385204 LOC806;
					memset((void*)(&LOC806), 0, sizeof(LOC806));
					memset((void*)(&LOC806), 0, sizeof(LOC806));
					LOC806.kind = ((NU8) 0);
					genericShallowAssign((void*)Result, (void*)(&LOC806), (&NTI385204));
					goto BeforeRet;
				}
				LA799: ;
			}
			break;
			case ((NU8) 76):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA810;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA810: ;
				(*regs->data[ra_387243].kindU.node).kindU.S3.strval = setLengthStr((*regs->data[ra_387243].kindU.node).kindU.S3.strval, ((NI) (((NI) (regs->data[rb].kindU.intval)))));
			}
			break;
			case ((NU8) 80):
			{
				NI rb;
				NI rc;
				Ttype191849* typ;
				NI LOC817;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA815;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA815: ;
				typ = (*c).types->data[regs->data[rc].kindU.intval];
				LOC817 = 0;
				LOC817 = inheritancediff_228064((*regs->data[rb].kindU.node).typ, typ);
				regs->data[ra_387243].kindU.intval = ((NI64) ((((NI) 0) <= LOC817)));
			}
			break;
			case ((NU8) 81):
			{
				NI rb;
				NI rc;
				Ttype191849* t1;
				Ttype191849* t2;
				NIM_BOOL match;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA821;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA821: ;
				t1 = skiptypes_195167((*regs->data[rb].kindU.node).typ, 256);
				t2 = (*c).types->data[regs->data[rc].kindU.intval];
				{
					if (!((*t2).kind == ((NU8) 52))) goto LA825;
					match = NIM_TRUE;
				}
				goto LA823;
				LA825: ;
				{
					match = sametype_226092(t1, t2, 0);
				}
				LA823: ;
				regs->data[ra_387243].kindU.intval = ((NI64) (match));
			}
			break;
			case ((NU8) 77):
			{
				NI rb;
				NI newlen;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA831;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA831: ;
				newlen = ((NI) (regs->data[rb].kindU.intval));
				{
					if (!regs->data[ra_387243].kindU.node == 0) goto LA835;
					stacktrace_385336(c, tos, pc, ((NU16) 81), ((NimStringDesc*) &TMP2694));
				}
				goto LA833;
				LA835: ;
				{
					NI oldlen;
					oldlen = len_192097(regs->data[ra_387243].kindU.node);
					(*regs->data[ra_387243].kindU.node).kindU.S6.sons = (Tnodeseq191807*) setLengthSeq(&((*regs->data[ra_387243].kindU.node).kindU.S6.sons)->Sup, sizeof(Tnode191813*), ((NI) (newlen)));
					{
						if (!(oldlen < newlen)) goto LA840;
						{
							NI i_394471;
							NI HEX3Atmp_397153;
							NI res_397156;
							i_394471 = 0;
							HEX3Atmp_397153 = 0;
							HEX3Atmp_397153 = (newlen - 1);
							res_397156 = oldlen;
							{
								while (1) {
									if (!(res_397156 <= HEX3Atmp_397153)) goto LA844;
									i_394471 = res_397156;
									asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S6.sons->data[i_394471]), newnodei_193351(((NU8) 1), (*c).debug->data[pc]));
									res_397156 += ((NI) 1);
								} LA844: ;
							}
						}
					}
					LA840: ;
				}
				LA833: ;
			}
			break;
			case ((NU8) 78):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!(regs->data[ra_387243].kind == regs->data[rb].kind)) goto LA848;
					switch (regs->data[ra_387243].kind) {
					case ((NU8) 0):
					{
					}
					break;
					case ((NU8) 2):
					{
						NI64 LOC852;
						LOC852 = 0;
						LOC852 = regs->data[ra_387243].kindU.intval;
						regs->data[ra_387243].kindU.intval = regs->data[rb].kindU.intval;
						regs->data[rb].kindU.intval = LOC852;
					}
					break;
					case ((NU8) 3):
					{
						NF LOC854;
						LOC854 = 0;
						LOC854 = regs->data[ra_387243].kindU.floatval;
						regs->data[ra_387243].kindU.floatval = regs->data[rb].kindU.floatval;
						regs->data[rb].kindU.floatval = LOC854;
					}
					break;
					case ((NU8) 1):
					{
						Tnode191813* LOC856;
						LOC856 = 0;
						LOC856 = regs->data[ra_387243].kindU.node;
						asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), regs->data[rb].kindU.node);
						asgnRefNoCycle((void**) (&regs->data[rb].kindU.node), LOC856);
					}
					break;
					case ((NU8) 4):
					{
						Tfullreg385204* LOC858;
						LOC858 = 0;
						LOC858 = regs->data[ra_387243].kindU.regaddr;
						regs->data[ra_387243].kindU.regaddr = regs->data[rb].kindU.regaddr;
						regs->data[rb].kindU.regaddr = LOC858;
					}
					break;
					case ((NU8) 5):
					{
						Tnode191813** LOC860;
						LOC860 = 0;
						LOC860 = regs->data[ra_387243].kindU.nodeaddr;
						regs->data[ra_387243].kindU.nodeaddr = regs->data[rb].kindU.nodeaddr;
						regs->data[rb].kindU.nodeaddr = LOC860;
					}
					break;
					}
				}
				goto LA846;
				LA848: ;
				{
					internalerror_166199((*c).debug->data[pc], ((NimStringDesc*) &TMP2824));
				}
				LA846: ;
			}
			break;
			case ((NU8) 87):
			{
				internalerror_166199((*c).debug->data[pc], ((NimStringDesc*) &TMP2825));
			}
			break;
			case ((NU8) 88):
			{
				NI rb;
				NI64 min;
				NI64 max;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA866;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA866: ;
				min = -((NI64)((NU64)(IL64(1)) << (NU64)(((NI64) ((NI)(((NI) (rb)) - ((NI) 1)))))));
				max = (NI64)((NI64)((NU64)(IL64(1)) << (NU64)(((NI64) ((NI)(((NI) (rb)) - ((NI) 1)))))) - IL64(1));
				{
					NIM_BOOL LOC870;
					NimStringDesc* LOC874;
					NimStringDesc* LOC875;
					LOC870 = 0;
					LOC870 = (regs->data[ra_387243].kindU.intval < min);
					if (LOC870) goto LA871;
					LOC870 = (max < regs->data[ra_387243].kindU.intval);
					LA871: ;
					if (!LOC870) goto LA872;
					LOC874 = 0;
					LOC874 = msgkindtostring_165616(((NU16) 214));
					LOC875 = 0;
					LOC875 = nsuFormatSingleElem(LOC874, ((NimStringDesc*) &TMP2826));
					stacktrace_385336(c, tos, pc, ((NU16) 4), LOC875);
				}
				LA872: ;
			}
			break;
			case ((NU8) 89):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA879;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA879: ;
				regs->data[ra_387243].kindU.intval = (NI64)(regs->data[ra_387243].kindU.intval & (NI64)((NI64)((NU64)(IL64(1)) << (NU64)(((NI64) (rb)))) - IL64(1)));
			}
			break;
			case ((NU8) 79):
			{
				NI rb;
				Tnode191813* node;
				NIM_BOOL LOC886;
				NIM_BOOL LOC888;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA884;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA884: ;
				node = regs->data[rb].kindU.node;
				LOC886 = 0;
				LOC886 = ((*node).kind == ((NU8) 23));
				if (LOC886) goto LA887;
				LOC888 = 0;
				LOC888 = ((*node).kind >= ((NU8) 20) && (*node).kind <= ((NU8) 22));
				if (!(LOC888)) goto LA889;
				LOC888 = (*node).kindU.S3.strval == 0;
				LA889: ;
				LOC886 = LOC888;
				LA887: ;
				regs->data[ra_387243].kindU.intval = ((NI64) (LOC886));
			}
			break;
			case ((NU8) 152):
			{
				NI rbx;
				rbx = (NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA893;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA893: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), copytree_196028((*(*c).constants).kindU.S6.sons->data[rbx]));
			}
			break;
			case ((NU8) 130):
			{
				NI rb;
				NI rc;
				NI idx;
				Tnode191813* src;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA898;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA898: ;
				idx = ((NI) (regs->data[rc].kindU.intval));
				src = regs->data[rb].kindU.node;
				{
					NIM_BOOL LOC902;
					NI LOC904;
					LOC902 = 0;
					LOC902 = !(((*src).kind >= ((NU8) 1) && (*src).kind <= ((NU8) 23)));
					if (!(LOC902)) goto LA903;
					LOC904 = 0;
					LOC904 = len_192097(src);
					LOC902 = ((NU32)(idx) < (NU32)(LOC904));
					LA903: ;
					if (!LOC902) goto LA905;
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), (*src).kindU.S6.sons->data[idx]);
				}
				goto LA900;
				LA905: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 82), ((NimStringDesc*) &TMP2694));
				}
				LA900: ;
			}
			break;
			case ((NU8) 131):
			{
				NI rb;
				NI rc;
				NI idx;
				Tnode191813* dest;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA911;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA911: ;
				idx = ((NI) (regs->data[rb].kindU.intval));
				dest = regs->data[ra_387243].kindU.node;
				{
					NIM_BOOL LOC915;
					NI LOC917;
					LOC915 = 0;
					LOC915 = !(((*dest).kind >= ((NU8) 1) && (*dest).kind <= ((NU8) 23)));
					if (!(LOC915)) goto LA916;
					LOC917 = 0;
					LOC917 = len_192097(dest);
					LOC915 = ((NU32)(idx) < (NU32)(LOC917));
					LA916: ;
					if (!LOC915) goto LA918;
					asgnRefNoCycle((void**) (&(*dest).kindU.S6.sons->data[idx]), regs->data[rc].kindU.node);
				}
				goto LA913;
				LA918: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 82), ((NimStringDesc*) &TMP2694));
				}
				LA913: ;
			}
			break;
			case ((NU8) 94):
			{
				NI rb;
				NI rc;
				Tnode191813* u;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA924;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA924: ;
				u = regs->data[rb].kindU.node;
				{
					if (!!(((*u).kind >= ((NU8) 1) && (*u).kind <= ((NU8) 23)))) goto LA928;
					add_192164(u, regs->data[rc].kindU.node);
				}
				goto LA926;
				LA928: ;
				{
					NimStringDesc* LOC931;
					LOC931 = 0;
					LOC931 = rawNewString(reprEnum((*u).kind, (&NTI191029))->Sup.len + 25);
appendString(LOC931, ((NimStringDesc*) &TMP2827));
appendString(LOC931, reprEnum((*u).kind, (&NTI191029)));
					stacktrace_385336(c, tos, pc, ((NU16) 4), LOC931);
				}
				LA926: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), u);
			}
			break;
			case ((NU8) 95):
			{
				NI rb;
				NI rc;
				Tnode191813* x;
				Tnode191813* u;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA935;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA935: ;
				x = regs->data[rc].kindU.node;
				u = regs->data[rb].kindU.node;
				{
					if (!!(((*u).kind >= ((NU8) 1) && (*u).kind <= ((NU8) 23)))) goto LA939;
					{
						NI i_394986;
						NI HEX3Atmp_397184;
						NI LOC942;
						NI res_397187;
						i_394986 = 0;
						HEX3Atmp_397184 = 0;
						LOC942 = 0;
						LOC942 = len_192097(x);
						HEX3Atmp_397184 = (LOC942 - 1);
						res_397187 = ((NI) 0);
						{
							while (1) {
								if (!(res_397187 <= HEX3Atmp_397184)) goto LA944;
								i_394986 = res_397187;
								add_192164(u, (*x).kindU.S6.sons->data[i_394986]);
								res_397187 += ((NI) 1);
							} LA944: ;
						}
					}
				}
				goto LA937;
				LA939: ;
				{
					NimStringDesc* LOC946;
					LOC946 = 0;
					LOC946 = rawNewString(reprEnum((*u).kind, (&NTI191029))->Sup.len + 25);
appendString(LOC946, ((NimStringDesc*) &TMP2827));
appendString(LOC946, reprEnum((*u).kind, (&NTI191029)));
					stacktrace_385336(c, tos, pc, ((NU16) 4), LOC946);
				}
				LA937: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), u);
			}
			break;
			case ((NU8) 96):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA950;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA950: ;
				regs->data[ra_387243].kindU.intval = ((NI64) ((*regs->data[rb].kindU.node).kind));
				(*c).comesfromheuristic = (*regs->data[rb].kindU.node).info;
			}
			break;
			case ((NU8) 97):
			{
				NI rb;
				Tnode191813* a;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA955;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA955: ;
				a = regs->data[rb].kindU.node;
				switch ((*a).kind) {
				case ((NU8) 5) ... ((NU8) 10):
				{
					regs->data[ra_387243].kindU.intval = (*a).kindU.S1.intval;
				}
				break;
				default:
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2828));
				}
				break;
				}
			}
			break;
			case ((NU8) 98):
			{
				NI rb;
				Tnode191813* a;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 3)))) goto LA962;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 3);
				}
				LA962: ;
				a = regs->data[rb].kindU.node;
				switch ((*a).kind) {
				case ((NU8) 16) ... ((NU8) 18):
				{
					regs->data[ra_387243].kindU.floatval = (*a).kindU.S2.floatval;
				}
				break;
				default:
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2829));
				}
				break;
				}
			}
			break;
			case ((NU8) 99):
			{
				NI rb;
				Tnode191813* a;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA969;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA969: ;
				a = regs->data[rb].kindU.node;
				{
					if (!((*a).kind == ((NU8) 3))) goto LA973;
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), copynode_195640(a));
				}
				goto LA971;
				LA973: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2830));
				}
				LA971: ;
			}
			break;
			case ((NU8) 100):
			{
				NI rb;
				Tnode191813* a;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA979;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA979: ;
				a = regs->data[rb].kindU.node;
				{
					if (!((*a).kind == ((NU8) 2))) goto LA983;
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), copynode_195640(a));
				}
				goto LA981;
				LA983: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2831));
				}
				LA981: ;
			}
			break;
			case ((NU8) 101):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!(((NI) (rc)) == ((NI) 0))) goto LA989;
					{
						if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA993;
						myreset_385401((&regs->data[ra_387243]));
						regs->data[ra_387243].kind = ((NU8) 1);
					}
					LA993: ;
					{
						NIM_BOOL LOC997;
						LOC997 = 0;
						LOC997 = (regs->data[rb].kind == ((NU8) 1));
						if (!(LOC997)) goto LA998;
						LOC997 = !(((*regs->data[rb].kindU.node).typ == NIM_NIL));
						LA998: ;
						if (!LOC997) goto LA999;
						asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), opmaptypetoast_381265((*regs->data[rb].kindU.node).typ, (*c).debug->data[pc]));
					}
					goto LA995;
					LA999: ;
					{
						stacktrace_385336(c, tos, pc, ((NU16) 4), ((NimStringDesc*) &TMP2884));
					}
					LA995: ;
				}
				goto LA987;
				LA989: ;
				{
					{
						if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA1005;
						myreset_385401((&regs->data[ra_387243]));
						regs->data[ra_387243].kind = ((NU8) 2);
					}
					LA1005: ;
					{
						NIM_BOOL LOC1009;
						LOC1009 = 0;
						LOC1009 = (regs->data[rb].kind == ((NU8) 1));
						if (!(LOC1009)) goto LA1010;
						LOC1009 = !(((*regs->data[rb].kindU.node).typ == NIM_NIL));
						LA1010: ;
						if (!LOC1009) goto LA1011;
						regs->data[ra_387243].kindU.intval = ((NI64) ((*(*regs->data[rb].kindU.node).typ).kind));
					}
					LA1011: ;
				}
				LA987: ;
			}
			break;
			case ((NU8) 102):
			{
				NI rb;
				Tnode191813* a;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1016;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1016: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 20)));
				a = regs->data[rb].kindU.node;
				{
					NimStringDesc* LOC1022;
					if (!((*a).kind >= ((NU8) 20) && (*a).kind <= ((NU8) 22))) goto LA1020;
					LOC1022 = 0;
					LOC1022 = (*regs->data[ra_387243].kindU.node).kindU.S3.strval; (*regs->data[ra_387243].kindU.node).kindU.S3.strval = copyStringRC1((*a).kindU.S3.strval);
					if (LOC1022) nimGCunrefNoCycle(LOC1022);
				}
				goto LA1018;
				LA1020: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2885));
				}
				LA1018: ;
			}
			break;
			case ((NU8) 114):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1027;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1027: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 20)));
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S3.strval), opslurp_381040((*regs->data[rb].kindU.node).kindU.S3.strval, (*c).debug->data[pc], (*c).module));
			}
			break;
			case ((NU8) 115):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1032;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1032: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 20)));
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S3.strval), opgorge_381027((*regs->data[rb].kindU.node).kindU.S3.strval, (*regs->data[rc].kindU.node).kindU.S3.strval));
			}
			break;
			case ((NU8) 119):
			{
				stacktrace_385336(c, tos, pc, ((NU16) 229), (*regs->data[ra_387243].kindU.node).kindU.S3.strval);
			}
			break;
			case ((NU8) 120):
			{
				message_166188((*c).debug->data[pc], ((NU16) 260), (*regs->data[ra_387243].kindU.node).kindU.S3.strval);
			}
			break;
			case ((NU8) 121):
			{
				message_166188((*c).debug->data[pc], ((NU16) 277), (*regs->data[ra_387243].kindU.node).kindU.S3.strval);
			}
			break;
			case ((NU8) 116):
			{
				NI rb;
				Tnode191813* ast;
				NimStringDesc* LOC1042;
				Terrorhandler182183 LOC1043;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1040;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1040: ;
				LOC1042 = 0;
				LOC1042 = tofullpath_165276((*c).debug->data[pc].fileindex);
				memset((void*)(&LOC1043), 0, sizeof(LOC1043));
				LOC1043.ClPrc = HEX3Aanonymous_395464; LOC1043.ClEnv = HEX3Aenv_397398;
				ast = parsestring_211306((*regs->data[rb].kindU.node).kindU.S3.strval, LOC1042, ((NI) ((*c).debug->data[pc].line)), LOC1043);
				{
					NimStringDesc* LOC1048;
					if (!!((*HEX3Aenv_397398).error395461 == 0)) goto LA1046;
					LOC1048 = 0;
					LOC1048 = (*c).errorflag; (*c).errorflag = copyStringRC1((*HEX3Aenv_397398).error395461);
					if (LOC1048) nimGCunrefNoCycle(LOC1048);
				}
				goto LA1044;
				LA1046: ;
				{
					NI LOC1050;
					LOC1050 = 0;
					LOC1050 = sonslen_194403(ast);
					if (!!((LOC1050 == ((NI) 1)))) goto LA1051;
					asgnRefNoCycle((void**) (&(*c).errorflag), formatmsg_165982((*c).debug->data[pc], ((NU16) 60), ((NimStringDesc*) &TMP2900)));
				}
				goto LA1044;
				LA1051: ;
				{
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), (*ast).kindU.S6.sons->data[((NI) 0)]);
				}
				LA1044: ;
			}
			break;
			case ((NU8) 117):
			{
				NI rb;
				Tnode191813* ast;
				NimStringDesc* LOC1059;
				Terrorhandler182183 LOC1060;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1057;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1057: ;
				LOC1059 = 0;
				LOC1059 = tofullpath_165276((*c).debug->data[pc].fileindex);
				memset((void*)(&LOC1060), 0, sizeof(LOC1060));
				LOC1060.ClPrc = HEX3Aanonymous_395514; LOC1060.ClEnv = HEX3Aenv_397398;
				ast = parsestring_211306((*regs->data[rb].kindU.node).kindU.S3.strval, LOC1059, ((NI) ((*c).debug->data[pc].line)), LOC1060);
				{
					NimStringDesc* LOC1065;
					if (!!((*HEX3Aenv_397398).error395511 == 0)) goto LA1063;
					LOC1065 = 0;
					LOC1065 = (*c).errorflag; (*c).errorflag = copyStringRC1((*HEX3Aenv_397398).error395511);
					if (LOC1065) nimGCunrefNoCycle(LOC1065);
				}
				goto LA1061;
				LA1063: ;
				{
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), ast);
				}
				LA1061: ;
			}
			break;
			case ((NU8) 118):
			{
				NimStringDesc* LOC1068;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 20)));
				LOC1068 = 0;
				LOC1068 = (*regs->data[ra_387243].kindU.node).kindU.S3.strval; (*regs->data[ra_387243].kindU.node).kindU.S3.strval = copyStringRC1((*c).errorflag);
				if (LOC1068) nimGCunrefNoCycle(LOC1068);
				(*c).errorflag = setLengthStr((*c).errorflag, ((NI) 0));
			}
			break;
			case ((NU8) 132):
			{
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1072;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1072: ;
				{
					if (!!(((*c).callsite == NIM_NIL))) goto LA1076;
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), (*c).callsite);
				}
				goto LA1074;
				LA1076: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2901));
				}
				LA1074: ;
			}
			break;
			case ((NU8) 122):
			{
				NI rb;
				Tnode191813* n;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1082;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1082: ;
				n = regs->data[rb].kindU.node;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 20)));
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S3.strval), tofilelinecol_165469((*n).info));
				(*regs->data[ra_387243].kindU.node).info = (*c).debug->data[pc];
			}
			break;
			case ((NU8) 123):
			{
				NI rb;
				NI rc;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 2)))) goto LA1087;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 2);
				}
				LA1087: ;
				{
					NIM_BOOL LOC1091;
					LOC1091 = 0;
					LOC1091 = ((*regs->data[rb].kindU.node).kind == ((NU8) 2));
					if (!(LOC1091)) goto LA1092;
					LOC1091 = ((*regs->data[rc].kindU.node).kind == ((NU8) 2));
					LA1092: ;
					if (!LOC1091) goto LA1093;
					regs->data[ra_387243].kindU.intval = ((NI64) (((*(*regs->data[rb].kindU.node).kindU.S5.ident).Sup.id == (*(*regs->data[rc].kindU.node).kindU.S5.ident).Sup.id)));
				}
				goto LA1089;
				LA1093: ;
				{
					regs->data[ra_387243].kindU.intval = IL64(0);
				}
				LA1089: ;
			}
			break;
			case ((NU8) 124):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1099;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1099: ;
				{
					if (!!(((*regs->data[rb].kindU.node).kind >= ((NU8) 20) && (*regs->data[rb].kindU.node).kind <= ((NU8) 22)))) goto LA1103;
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2885));
				}
				goto LA1101;
				LA1103: ;
				{
					asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnodei_193351(((NU8) 2), (*c).debug->data[pc]));
					asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S5.ident), getident_168463((*regs->data[rb].kindU.node).kindU.S3.strval));
				}
				LA1101: ;
			}
			break;
			case ((NU8) 125):
			{
				NI rb;
				Tnode191813* a;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1109;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1109: ;
				a = regs->data[rb].kindU.node;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 20)));
				(*regs->data[ra_387243].kindU.node).info = (*c).debug->data[pc];
				{
					NimStringDesc* LOC1115;
					if (!((*a).kind == ((NU8) 3))) goto LA1113;
					LOC1115 = 0;
					LOC1115 = (*regs->data[ra_387243].kindU.node).kindU.S3.strval; (*regs->data[ra_387243].kindU.node).kindU.S3.strval = copyStringRC1((*(*(*a).kindU.S4.sym).name).s);
					if (LOC1115) nimGCunrefNoCycle(LOC1115);
				}
				goto LA1111;
				LA1113: ;
				{
					NimStringDesc* LOC1119;
					if (!((*a).kind == ((NU8) 2))) goto LA1117;
					LOC1119 = 0;
					LOC1119 = (*regs->data[ra_387243].kindU.node).kindU.S3.strval; (*regs->data[ra_387243].kindU.node).kindU.S3.strval = copyStringRC1((*(*a).kindU.S5.ident).s);
					if (LOC1119) nimGCunrefNoCycle(LOC1119);
				}
				goto LA1111;
				LA1117: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2831));
				}
				LA1111: ;
			}
			break;
			case ((NU8) 153):
			{
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1124;
					internalerror_166199((*c).debug->data[pc], ((NimStringDesc*) &TMP2905));
				}
				LA1124: ;
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).typ), (*c).types->data[(NI)(((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))))) - ((NI) 32768))]);
			}
			break;
			case ((NU8) 84):
			{
				NI rb;
				Ttype191849* desttyp;
				Ttype191849* srctyp;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				pc += ((NI) 1);
				desttyp = (*c).types->data[(NI)(((NI) ((NU32)((NU32)((*c).code->data[pc]) >> (NU32)(((NU32) 16))))) - ((NI) 32768))];
				pc += ((NI) 1);
				srctyp = (*c).types->data[(NI)(((NI) ((NU32)((NU32)((*c).code->data[pc]) >> (NU32)(((NU32) 16))))) - ((NI) 32768))];
				{
					NIM_BOOL LOC1129;
					NimStringDesc* LOC1132;
					TY155965 LOC1133;
					NimStringDesc* LOC1134;
					LOC1129 = 0;
					LOC1129 = opconv_386815((&regs->data[ra_387243]), regs->data[rb], desttyp, srctyp);
					if (!LOC1129) goto LA1130;
					LOC1132 = 0;
					LOC1132 = msgkindtostring_165616(((NU16) 142));
					memset((void*)LOC1133, 0, sizeof(LOC1133));
					LOC1133[0] = typetostring_221032(srctyp, ((NU8) 0));
					LOC1133[1] = typetostring_221032(desttyp, ((NU8) 0));
					LOC1134 = 0;
					LOC1134 = nsuFormatOpenArray(LOC1132, LOC1133, 2);
					stacktrace_385336(c, tos, pc, ((NU16) 4), LOC1134);
				}
				LA1130: ;
			}
			break;
			case ((NU8) 85):
			{
				NI rb;
				Ttype191849* desttyp;
				Ttype191849* srctyp;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				pc += ((NI) 1);
				desttyp = (*c).types->data[(NI)(((NI) ((NU32)((NU32)((*c).code->data[pc]) >> (NU32)(((NU32) 16))))) - ((NI) 32768))];
				pc += ((NI) 1);
				srctyp = (*c).types->data[(NI)(((NI) ((NU32)((NU32)((*c).code->data[pc]) >> (NU32)(((NU32) 16))))) - ((NI) 32768))];
				globalerror_166145((*c).debug->data[pc], ((NimStringDesc*) &TMP2910));
			}
			break;
			case ((NU8) 103):
			{
				NI rb;
				Tnode191813* dest;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1139;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1139: ;
				dest = regs->data[ra_387243].kindU.node;
				{
					NIM_BOOL LOC1143;
					LOC1143 = 0;
					LOC1143 = ((*dest).kind >= ((NU8) 5) && (*dest).kind <= ((NU8) 10));
					if (!(LOC1143)) goto LA1144;
					LOC1143 = ((4 &(1<<((regs->data[rb].kind)&7)))!=0);
					LA1144: ;
					if (!LOC1143) goto LA1145;
					(*dest).kindU.S1.intval = regs->data[rb].kindU.intval;
				}
				goto LA1141;
				LA1145: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2828));
				}
				LA1141: ;
			}
			break;
			case ((NU8) 104):
			{
				NI rb;
				Tnode191813* dest;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1151;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1151: ;
				dest = regs->data[ra_387243].kindU.node;
				{
					NIM_BOOL LOC1155;
					LOC1155 = 0;
					LOC1155 = ((*dest).kind >= ((NU8) 16) && (*dest).kind <= ((NU8) 18));
					if (!(LOC1155)) goto LA1156;
					LOC1155 = ((8 &(1<<((regs->data[rb].kind)&7)))!=0);
					LA1156: ;
					if (!LOC1155) goto LA1157;
					(*dest).kindU.S2.floatval = regs->data[rb].kindU.floatval;
				}
				goto LA1153;
				LA1157: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2829));
				}
				LA1153: ;
			}
			break;
			case ((NU8) 105):
			{
				NI rb;
				Tnode191813* dest;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1163;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1163: ;
				dest = regs->data[ra_387243].kindU.node;
				{
					NIM_BOOL LOC1167;
					LOC1167 = 0;
					LOC1167 = ((*dest).kind == ((NU8) 3));
					if (!(LOC1167)) goto LA1168;
					LOC1167 = ((*regs->data[rb].kindU.node).kind == ((NU8) 3));
					LA1168: ;
					if (!LOC1167) goto LA1169;
					asgnRefNoCycle((void**) (&(*dest).kindU.S4.sym), (*regs->data[rb].kindU.node).kindU.S4.sym);
				}
				goto LA1165;
				LA1169: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2830));
				}
				LA1165: ;
			}
			break;
			case ((NU8) 106):
			{
				NI rb;
				Tnode191813* dest;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1175;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1175: ;
				dest = regs->data[ra_387243].kindU.node;
				{
					NIM_BOOL LOC1179;
					LOC1179 = 0;
					LOC1179 = ((*dest).kind == ((NU8) 2));
					if (!(LOC1179)) goto LA1180;
					LOC1179 = ((*regs->data[rb].kindU.node).kind == ((NU8) 2));
					LA1180: ;
					if (!LOC1179) goto LA1181;
					asgnRefNoCycle((void**) (&(*dest).kindU.S5.ident), (*regs->data[rb].kindU.node).kindU.S5.ident);
				}
				goto LA1177;
				LA1181: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2831));
				}
				LA1177: ;
			}
			break;
			case ((NU8) 107):
			{
				NI rb;
				Tnode191813* b;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1187;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1187: ;
				b = regs->data[rb].kindU.node;
				{
					NIM_BOOL LOC1191;
					NimStringDesc* LOC1195;
					LOC1191 = 0;
					LOC1191 = ((*b).kind == ((NU8) 3));
					if (!(LOC1191)) goto LA1192;
					LOC1191 = ((*(*b).kindU.S4.sym).kind == ((NU8) 7));
					LA1192: ;
					if (!!(LOC1191)) goto LA1193;
					LOC1195 = 0;
					LOC1195 = HEX24_166306(TMP2911);
					internalerror_166218(LOC1195);
				}
				LA1193: ;
				{
					NimStringDesc* LOC1200;
					if (!!(!((regs->data[ra_387243].kindU.node == NIM_NIL)))) goto LA1198;
					LOC1200 = 0;
					LOC1200 = HEX24_166306(TMP2913);
					internalerror_166218(LOC1200);
				}
				LA1198: ;
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).typ), (*(*b).kindU.S4.sym).typ);
			}
			break;
			case ((NU8) 108):
			{
				NI rb;
				Tnode191813* dest;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1204;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1204: ;
				dest = regs->data[ra_387243].kindU.node;
				{
					NIM_BOOL LOC1208;
					NimStringDesc* LOC1212;
					LOC1208 = 0;
					LOC1208 = ((*dest).kind >= ((NU8) 20) && (*dest).kind <= ((NU8) 22));
					if (!(LOC1208)) goto LA1209;
					LOC1208 = ((2 &(1<<((regs->data[rb].kind)&7)))!=0);
					LA1209: ;
					if (!LOC1208) goto LA1210;
					LOC1212 = 0;
					LOC1212 = (*dest).kindU.S3.strval; (*dest).kindU.S3.strval = copyStringRC1((*regs->data[rb].kindU.node).kindU.S3.strval);
					if (LOC1212) nimGCunrefNoCycle(LOC1212);
				}
				goto LA1206;
				LA1210: ;
				{
					stacktrace_385336(c, tos, pc, ((NU16) 209), ((NimStringDesc*) &TMP2885));
				}
				LA1206: ;
			}
			break;
			case ((NU8) 109):
			{
				NI rb;
				NI rc;
				NI64 k;
				Tnode191813* cc;
				Tlineinfo164338 LOC1225;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1217;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1217: ;
				k = regs->data[rb].kindU.intval;
				{
					NIM_BOOL LOC1221;
					LOC1221 = 0;
					LOC1221 = (k < IL64(0));
					if (LOC1221) goto LA1222;
					LOC1221 = (IL64(158) < k);
					LA1222: ;
					if (!LOC1221) goto LA1223;
					internalerror_166199((*c).debug->data[pc], ((NimStringDesc*) &TMP2914));
				}
				LA1223: ;
				cc = regs->data[rc].kindU.node;
				{
					if (!!(((*cc).kind == ((NU8) 23)))) goto LA1228;
					LOC1225 = (*cc).info;
				}
				goto LA1226;
				LA1228: ;
				{
					if (!(((NI16) -1) < (*c).comesfromheuristic.line)) goto LA1231;
					LOC1225 = (*c).comesfromheuristic;
				}
				goto LA1226;
				LA1231: ;
				{
					NIM_BOOL LOC1234;
					NI LOC1236;
					Tnode191813* LOC1239;
					LOC1234 = 0;
					LOC1234 = !(((*c).callsite == NIM_NIL));
					if (!(LOC1234)) goto LA1235;
					LOC1236 = 0;
					LOC1236 = safelen_192125((*c).callsite);
					LOC1234 = (((NI) 1) < LOC1236);
					LA1235: ;
					if (!LOC1234) goto LA1237;
					LOC1239 = 0;
					LOC1239 = HEX5BHEX5D_192244((*c).callsite, ((NI) 1));
					LOC1225 = (*LOC1239).info;
				}
				goto LA1226;
				LA1237: ;
				{
					LOC1225 = (*c).debug->data[pc];
				}
				LA1226: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnodei_193351(((NU8) (((NI) (k)))), LOC1225));
				(*regs->data[ra_387243].kindU.node).flags |= ((NI16)1)<<((((NU8) 12))%(sizeof(NI16)*8));
			}
			break;
			case ((NU8) 110):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1244;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1244: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), copynode_195640(regs->data[rb].kindU.node));
			}
			break;
			case ((NU8) 111):
			{
				NI rb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1249;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1249: ;
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), copytree_196028(regs->data[rb].kindU.node));
			}
			break;
			case ((NU8) 112):
			{
				NI rb;
				NI rc;
				NI bb;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1254;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1254: ;
				bb = ((NI) (regs->data[rb].kindU.intval));
				{
					NI i_396566;
					NI HEX3Atmp_397260;
					NI res_397263;
					i_396566 = 0;
					HEX3Atmp_397260 = 0;
					HEX3Atmp_397260 = (NI)(((NI) (regs->data[rc].kindU.intval)) - ((NI) 1));
					res_397263 = ((NI) 0);
					{
						while (1) {
							if (!(res_397263 <= HEX3Atmp_397260)) goto LA1258;
							i_396566 = res_397263;
							delson_195577(regs->data[ra_387243].kindU.node, bb);
							res_397263 += ((NI) 1);
						} LA1258: ;
					}
				}
			}
			break;
			case ((NU8) 113):
			{
				NI rb;
				NI rc;
				NI64 k;
				NimStringDesc* name;
				Tsym191843* sym;
				Tident168021* LOC1275;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				rc = ((NI) ((NU32)((NU32)(instr) >> (NU32)(((NU32) 24)))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1262;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1262: ;
				k = regs->data[rb].kindU.intval;
				{
					if (!(((*regs->data[rc].kindU.node).kindU.S3.strval ? (*regs->data[rc].kindU.node).kindU.S3.strval->Sup.len : 0) == ((NI) 0))) goto LA1266;
					name = copyString(((NimStringDesc*) &TMP2915));
				}
				goto LA1264;
				LA1266: ;
				{
					name = (*regs->data[rc].kindU.node).kindU.S3.strval;
				}
				LA1264: ;
				{
					NIM_BOOL LOC1271;
					LOC1271 = 0;
					LOC1271 = (k < IL64(0));
					if (LOC1271) goto LA1272;
					LOC1271 = (IL64(25) < k);
					LA1272: ;
					if (!LOC1271) goto LA1273;
					internalerror_166199((*c).debug->data[pc], ((NimStringDesc*) &TMP2916));
				}
				LA1273: ;
				LOC1275 = 0;
				LOC1275 = getident_168463(name);
				sym = newsym_192656(((NU8) (k)), LOC1275, (*c).module, (*c).debug->data[pc]);
				(*sym).flags |= ((NI32)1)<<((((NU8) 31))%(sizeof(NI32)*8));
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newsymnode_193325(sym));
			}
			break;
			case ((NU8) 154):
			{
				NI rb;
				Ttype191849* typ;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1279;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1279: ;
				typ = (*regs->data[rb].kindU.node).typ;
				{
					NimStringDesc* LOC1285;
					if (!!(!((typ == NIM_NIL)))) goto LA1283;
					LOC1285 = 0;
					LOC1285 = HEX24_166306(TMP2917);
					internalerror_166218(LOC1285);
				}
				LA1283: ;
				{
					while (1) {
						NIM_BOOL LOC1288;
						NI LOC1290;
						LOC1288 = 0;
						LOC1288 = ((*typ).kind == ((NU8) 8));
						if (!(LOC1288)) goto LA1289;
						LOC1290 = 0;
						LOC1290 = len_194377(typ);
						LOC1288 = (((NI) 0) < LOC1290);
						LA1289: ;
						if (!LOC1288) goto LA1287;
						typ = (*typ).sons->data[((NI) 0)];
					} LA1287: ;
				}
				asgnRefNoCycle((void**) (&regs->data[ra_387243].kindU.node), newnode_192401(((NU8) 20)));
				asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S3.strval), typetostring_221032(typ, ((NU8) 2)));
			}
			break;
			case ((NU8) 155):
			{
				NI ra;
				NI rb;
				Ttype191849* typ;
				Tnode191813* LOC1292;
				ra = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 8))) & ((NU32) 255))));
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				pc += ((NI) 1);
				typ = (*c).types->data[(NI)(((NI) ((NU32)((NU32)((*c).code->data[pc]) >> (NU32)(((NU32) 16))))) - ((NI) 32768))];
				LOC1292 = 0;
				LOC1292 = loadany_383463((*regs->data[rb].kindU.node).kindU.S3.strval, typ);
				putintoreg_386320((&regs->data[ra]), LOC1292);
			}
			break;
			case ((NU8) 156):
			{
				NI rb;
				Ttype191849* typ;
				Tnode191813* LOC1302;
				rb = ((NI) ((NU32)((NU32)((NU32)(instr) >> (NU32)(((NU32) 16))) & ((NU32) 255))));
				{
					if (!!((regs->data[ra_387243].kind == ((NU8) 1)))) goto LA1296;
					myreset_385401((&regs->data[ra_387243]));
					regs->data[ra_387243].kind = ((NU8) 1);
				}
				LA1296: ;
				pc += ((NI) 1);
				typ = (*c).types->data[(NI)(((NI) ((NU32)((NU32)((*c).code->data[pc]) >> (NU32)(((NU32) 16))))) - ((NI) 32768))];
				createstrkeepnode_385467((&regs->data[ra_387243]));
				{
					if (!(*regs->data[ra_387243].kindU.node).kindU.S3.strval == 0) goto LA1300;
					asgnRefNoCycle((void**) (&(*regs->data[ra_387243].kindU.node).kindU.S3.strval), rawNewString(((NI) 1000)));
				}
				LA1300: ;
				LOC1302 = 0;
				LOC1302 = regtonode_386340(regs->data[rb]);
				storeany_382625((&(*regs->data[ra_387243].kindU.node).kindU.S3.strval), typ, LOC1302);
			}
			break;
			}
			pc += ((NI) 1);
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode191813*, evalmacrocall_398902)(Tsym191843* module, Tnode191813* n, Tnode191813* norig, Tsym191843* sym) {
	Tnode191813* result;
	Tctx244048* c;
	NI start;
	Tstackframe385208* tos;
	Tstackframe385208* LOC18;
	NI maxslots;
	NI L;
	Tfullreg385204 LOC26;
	result = 0;
	evalmacrocounter_398897 += ((NI) 1);
	{
		if (!(((NI) 100) < evalmacrocounter_398897)) goto LA3;
		globalerror_166134((*n).info, ((NU16) 183), ((NimStringDesc*) &TMP2694));
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		NI LOC8;
		NI LOC9;
		NI LOC11;
		TY177061 LOC14;
		NI LOC15;
		NI LOC16;
		NimStringDesc* LOC17;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = safelen_192125(n);
		LOC9 = 0;
		LOC9 = len_194377((*sym).typ);
		LOC7 = (LOC8 < LOC9);
		if (!(LOC7)) goto LA10;
		LOC11 = 0;
		LOC11 = len_194377((*sym).typ);
		LOC7 = (((NI) 1) < LOC11);
		LA10: ;
		if (!LOC7) goto LA12;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = rendertree_213058(n, 0);
		LOC15 = 0;
		LOC15 = safelen_192125(n);
		LOC14[1] = nimIntToStr((LOC15 - 1));
		LOC16 = 0;
		LOC16 = len_194377((*sym).typ);
		LOC14[2] = nimIntToStr((LOC16 - 1));
		LOC17 = 0;
		LOC17 = nsuFormatOpenArray(((NimStringDesc*) &TMP2695), LOC14, 3);
		globalerror_166145((*n).info, LOC17);
	}
	LA12: ;
	setupglobalctx_397835(module);
	c = globalctx_397830;
	asgnRefNoCycle((void**) (&(*c).callsite), norig);
	start = genproc_379402(c, sym);
	LOC18 = 0;
	LOC18 = (Tstackframe385208*) newObj((&NTI385206), sizeof(Tstackframe385208));
	asgnRefNoCycle((void**) (&(*LOC18).prc), sym);
	(*LOC18).comesfrom = ((NI) 0);
	asgnRef((void**) (&(*LOC18).next), NIM_NIL);
	tos = LOC18;
	maxslots = (*sym).offset;
	if ((*tos).slots) nimGCunrefNoCycle((*tos).slots);
	(*tos).slots = (TY385864*) newSeqRC1((&NTI385864), ((NI) (maxslots)));
	L = safelen_192125(n);
	{
		if (!(L == ((NI) 0))) goto LA21;
		L = ((NI) 1);
	}
	LA21: ;
	(*tos).slots->data[((NI) 0)].kind = ((NU8) 1);
	asgnRefNoCycle((void**) (&(*tos).slots->data[((NI) 0)].kindU.node), newnodeit_193807(((NU8) 1), (*n).info, (*(*sym).typ).sons->data[((NI) 0)]));
	{
		NI i_398992;
		NI HEX3Atmp_399007;
		NI res_399010;
		i_398992 = 0;
		HEX3Atmp_399007 = 0;
		HEX3Atmp_399007 = (((((*tos).slots ? (*tos).slots->Sup.len : 0) <= L) ? ((*tos).slots ? (*tos).slots->Sup.len : 0) : L) - 1);
		res_399010 = ((NI) 1);
		{
			while (1) {
				if (!(res_399010 <= HEX3Atmp_399007)) goto LA25;
				i_398992 = res_399010;
				(*tos).slots->data[i_398992].kind = ((NU8) 1);
				asgnRefNoCycle((void**) (&(*tos).slots->data[i_398992].kindU.node), setupmacroparam_398865((*n).kindU.S6.sons->data[i_398992]));
				res_399010 += ((NI) 1);
			} LA25: ;
		}
	}
	memset((void*)(&LOC26), 0, sizeof(LOC26));
	rawexecute_387213(c, start, tos, (&LOC26));
	result = regtonode_386340(LOC26);
	{
		if (!((*result).info.line < ((NI16) 0))) goto LA29;
		(*result).info = (*n).info;
	}
	LA29: ;
	{
		NIM_BOOL LOC33;
		LOC33 = 0;
		LOC33 = cyclictree_220138(result);
		if (!LOC33) goto LA34;
		globalerror_166134((*n).info, ((NU16) 215), ((NimStringDesc*) &TMP2694));
	}
	LA34: ;
	evalmacrocounter_398897 -= ((NI) 1);
	asgnRefNoCycle((void**) (&(*c).callsite), NIM_NIL);
	return result;
}

N_NIMCALL(Tnode191813*, evalconstexpraux_398357)(Tsym191843* module, Tsym191843* prc, Tnode191813* n_398361, NU8 mode) {
	Tnode191813* result;
	Tnode191813* n;
	Tctx244048* c;
	NI start;
	Tstackframe385208* tos;
	Tstackframe385208* LOC5;
	Tfullreg385204 LOC6;
{	result = 0;
	n = transformexpr_371407(module, n_398361);
	setupglobalctx_397835(module);
	c = globalctx_397830;
	(*c).mode = mode;
	start = genexpr_380050(c, n, !((mode == ((NU8) 4))));
	{
		if (!(((NU8) ((NU32)((*c).code->data[start] & ((NU32) 255)))) == ((NU8) 0))) goto LA3;
		result = emptynode_192807;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = (Tstackframe385208*) newObj((&NTI385206), sizeof(Tstackframe385208));
	asgnRefNoCycle((void**) (&(*LOC5).prc), prc);
	(*LOC5).comesfrom = ((NI) 0);
	asgnRef((void**) (&(*LOC5).next), NIM_NIL);
	tos = LOC5;
	if ((*tos).slots) nimGCunrefNoCycle((*tos).slots);
	(*tos).slots = (TY385864*) newSeqRC1((&NTI385864), ((NI) ((*(*c).prc).maxslots)));
	memset((void*)(&LOC6), 0, sizeof(LOC6));
	rawexecute_387213(c, start, tos, (&LOC6));
	result = regtonode_386340(LOC6);
	{
		if (!((*result).info.line < ((NI16) 0))) goto LA9;
		(*result).info = (*n).info;
	}
	LA9: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode191813*, evalstaticexpr_398832)(Tsym191843* module, Tnode191813* e, Tsym191843* prc) {
	Tnode191813* result;
	result = 0;
	result = evalconstexpraux_398357(module, prc, e, ((NU8) 3));
	return result;
}

N_NIMCALL(Tnode191813*, evalconstexpr_398821)(Tsym191843* module, Tnode191813* e) {
	Tnode191813* result;
	result = 0;
	result = evalconstexpraux_398357(module, NIM_NIL, e, ((NU8) 1));
	return result;
}

N_NIMCALL(void, setupcompiletimevar_398855)(Tsym191843* module, Tnode191813* n) {
	Tnode191813* LOC1;
	LOC1 = 0;
	LOC1 = evalconstexpraux_398357(module, NIM_NIL, n, ((NU8) 4));
}

N_NIMCALL(void, evalstaticstmt_398844)(Tsym191843* module, Tnode191813* e, Tsym191843* prc) {
	Tnode191813* LOC1;
	LOC1 = 0;
	LOC1 = evalconstexpraux_398357(module, prc, e, ((NU8) 4));
}

N_NIMCALL(Tpasscontext242005*, myopen_397852)(Tsym191843* module) {
	Tpasscontext242005* result;
	result = 0;
	setupglobalctx_397835(module);
	result = &globalctx_397830->Sup;
	return result;
}

N_NIMCALL(Tnode191813*, execute_397403)(Tctx244048* c, NI start) {
	Tnode191813* result;
	Tstackframe385208* tos;
	Tstackframe385208* LOC1;
	Tfullreg385204 LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = (Tstackframe385208*) newObj((&NTI385206), sizeof(Tstackframe385208));
	asgnRefNoCycle((void**) (&(*LOC1).prc), NIM_NIL);
	(*LOC1).comesfrom = ((NI) 0);
	asgnRef((void**) (&(*LOC1).next), NIM_NIL);
	tos = LOC1;
	if ((*tos).slots) nimGCunrefNoCycle((*tos).slots);
	(*tos).slots = (TY385864*) newSeqRC1((&NTI385864), ((NI) ((*(*c).prc).maxslots)));
	memset((void*)(&LOC2), 0, sizeof(LOC2));
	rawexecute_387213(c, start, tos, (&LOC2));
	result = regtonode_386340(LOC2);
	return result;
}

N_NIMCALL(void, evalstmt_397427)(Tctx244048* c, Tnode191813* n_397430) {
	Tnode191813* n;
	NI start;
	n = transformexpr_371407((*c).module, n_397430);
	start = genstmt_380028(c, n);
	{
		Tnode191813* LOC5;
		if (!!((((NU8) ((NU32)((*c).code->data[start] & ((NU32) 255)))) == ((NU8) 0)))) goto LA3;
		LOC5 = 0;
		LOC5 = execute_397403(c, start);
	}
	LA3: ;
}

N_NIMCALL(Tnode191813*, myprocess_398012)(Tpasscontext242005* c, Tnode191813* n) {
	Tnode191813* result;
	result = 0;
	{
		if (!(olderrorcount_398007 == gerrorcounter_165015)) goto LA3;
		evalstmt_397427(((Tctx244048*) (c)), n);
		result = emptynode_192807;
	}
	goto LA1;
	LA3: ;
	{
		result = n;
	}
	LA1: ;
	olderrorcount_398007 = gerrorcounter_165015;
	return result;
}
NIM_EXTERNC N_NOINLINE(void, nimsrc_vmInit)(void) {
}

NIM_EXTERNC N_NOINLINE(void, nimsrc_vmDatInit)(void) {
static TNimNode* TMP2698[6];
NI TMP2700;
static char* NIM_CONST TMP2699[6] = {
"rkNone", 
"rkNode", 
"rkInt", 
"rkFloat", 
"rkRegisterAddr", 
"rkNodeAddr"};
static TNimNode* TMP2802[5];
static TNimNode* TMP2805[3];
static TNimNode TMP934[24];
NTI385204.size = sizeof(Tfullreg385204);
NTI385204.kind = 18;
NTI385204.base = 0;
NTI385204.flags = 2;
NTI385202.size = sizeof(NU8);
NTI385202.kind = 14;
NTI385202.base = 0;
NTI385202.flags = 3;
for (TMP2700 = 0; TMP2700 < 6; TMP2700++) {
TMP934[TMP2700+1].kind = 1;
TMP934[TMP2700+1].offset = TMP2700;
TMP934[TMP2700+1].name = TMP2699[TMP2700];
TMP2698[TMP2700] = &TMP934[TMP2700+1];
}
TMP934[7].len = 6; TMP934[7].kind = 2; TMP934[7].sons = &TMP2698[0];
NTI385202.node = &TMP934[7];
TMP934[0].kind = 3;
TMP934[0].offset = offsetof(Tfullreg385204, kind);
TMP934[0].typ = (&NTI385202);
TMP934[0].name = "kind";
TMP934[0].sons = &NimDT_385204_kind[0];
TMP934[0].len = 6;
TMP934[8].len = 0; TMP934[8].kind = 2;
NimDT_385204_kind[0] = &TMP934[8];
TMP934[9].kind = 1;
TMP934[9].offset = offsetof(Tfullreg385204, kindU.intval);
TMP934[9].typ = (&NTI5710);
TMP934[9].name = "intVal";
NimDT_385204_kind[2] = &TMP934[9];
TMP934[10].kind = 1;
TMP934[10].offset = offsetof(Tfullreg385204, kindU.floatval);
TMP934[10].typ = (&NTI5712);
TMP934[10].name = "floatVal";
NimDT_385204_kind[3] = &TMP934[10];
TMP934[11].kind = 1;
TMP934[11].offset = offsetof(Tfullreg385204, kindU.node);
TMP934[11].typ = (&NTI191805);
TMP934[11].name = "node";
NimDT_385204_kind[1] = &TMP934[11];
NTI385219.size = sizeof(Tfullreg385204*);
NTI385219.kind = 21;
NTI385219.base = (&NTI385204);
NTI385219.flags = 3;
TMP934[12].kind = 1;
TMP934[12].offset = offsetof(Tfullreg385204, kindU.regaddr);
TMP934[12].typ = (&NTI385219);
TMP934[12].name = "regAddr";
NimDT_385204_kind[4] = &TMP934[12];
TMP934[13].kind = 1;
TMP934[13].offset = offsetof(Tfullreg385204, kindU.nodeaddr);
TMP934[13].typ = (&NTI385221);
TMP934[13].name = "nodeAddr";
NimDT_385204_kind[5] = &TMP934[13];
NTI385204.node = &TMP934[0];
NTI385208.size = sizeof(Tstackframe385208);
NTI385208.kind = 18;
NTI385208.base = 0;
TMP2802[0] = &TMP934[15];
TMP934[15].kind = 1;
TMP934[15].offset = offsetof(Tstackframe385208, prc);
TMP934[15].typ = (&NTI191811);
TMP934[15].name = "prc";
TMP2802[1] = &TMP934[16];
NTI385864.size = sizeof(TY385864*);
NTI385864.kind = 24;
NTI385864.base = (&NTI385204);
NTI385864.flags = 2;
NTI385864.marker = TMP2803;
TMP934[16].kind = 1;
TMP934[16].offset = offsetof(Tstackframe385208, slots);
TMP934[16].typ = (&NTI385864);
TMP934[16].name = "slots";
TMP2802[2] = &TMP934[17];
TMP934[17].kind = 1;
TMP934[17].offset = offsetof(Tstackframe385208, next);
TMP934[17].typ = (&NTI385206);
TMP934[17].name = "next";
TMP2802[3] = &TMP934[18];
TMP934[18].kind = 1;
TMP934[18].offset = offsetof(Tstackframe385208, comesfrom);
TMP934[18].typ = (&NTI108);
TMP934[18].name = "comesFrom";
TMP2802[4] = &TMP934[19];
TMP934[19].kind = 1;
TMP934[19].offset = offsetof(Tstackframe385208, safepoints);
TMP934[19].typ = (&NTI298595);
TMP934[19].name = "safePoints";
TMP934[14].len = 5; TMP934[14].kind = 2; TMP934[14].sons = &TMP2802[0];
NTI385208.node = &TMP934[14];
NTI385206.size = sizeof(Tstackframe385208*);
NTI385206.kind = 22;
NTI385206.base = (&NTI385208);
NTI385206.marker = TMP2804;
NTI397287.size = sizeof(TY397287);
NTI397287.kind = 18;
NTI397287.base = 0;
NTI397287.flags = 2;
TMP2805[0] = &TMP934[21];
TMP934[21].kind = 1;
TMP934[21].offset = offsetof(TY397287, HEX3Astate);
TMP934[21].typ = (&NTI311033);
TMP934[21].name = ":state";
TMP2805[1] = &TMP934[22];
TMP934[22].kind = 1;
TMP934[22].offset = offsetof(TY397287, error395461);
TMP934[22].typ = (&NTI149);
TMP934[22].name = "error395461";
TMP2805[2] = &TMP934[23];
TMP934[23].kind = 1;
TMP934[23].offset = offsetof(TY397287, error395511);
TMP934[23].typ = (&NTI149);
TMP934[23].name = "error395511";
TMP934[20].len = 3; TMP934[20].kind = 2; TMP934[20].sons = &TMP2805[0];
NTI397287.node = &TMP934[20];
NTI397399.size = sizeof(TY397287*);
NTI397399.kind = 22;
NTI397399.base = (&NTI397287);
NTI397399.flags = 2;
NTI397399.marker = TMP2806;
}

