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

#include "nimbase.h"
#include <string.h>
typedef struct Tcontext265020 Tcontext265020;
typedef struct Tsym215822 Tsym215822;
typedef struct Tnode215790 Tnode215790;
typedef struct Ttype215828 Ttype215828;
typedef struct Tlineinfo183337 Tlineinfo183337;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tident190012 Tident190012;
typedef struct Tnodeseq215784 Tnodeseq215784;
typedef struct Tidobj190006 Tidobj190006;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Tpasscontext262002 Tpasscontext262002;
typedef struct Tscope215816 Tscope215816;
typedef struct Tproccon265008 Tproccon265008;
typedef struct Tsymseq215792 Tsymseq215792;
typedef struct Intset212035 Intset212035;
typedef struct Trunk212031 Trunk212031;
typedef struct Trunkseq212033 Trunkseq212033;
typedef struct Tlinkedlist135016 Tlinkedlist135016;
typedef struct Tlistentry135010 Tlistentry135010;
typedef struct Tidtable215840 Tidtable215840;
typedef struct Tidpairseq215838 Tidpairseq215838;
typedef struct Tstrtable215794 Tstrtable215794;
typedef struct Tctx264036 Tctx264036;
typedef struct TY265140 TY265140;
typedef struct Cell47504 Cell47504;
typedef struct Cellseq47520 Cellseq47520;
typedef struct Gcheap49818 Gcheap49818;
typedef struct Gcstack49816 Gcstack49816;
typedef struct Cellset47516 Cellset47516;
typedef struct Pagedesc47512 Pagedesc47512;
typedef struct Memregion29687 Memregion29687;
typedef struct Smallchunk29639 Smallchunk29639;
typedef struct Llchunk29681 Llchunk29681;
typedef struct Bigchunk29641 Bigchunk29641;
typedef struct Intset29614 Intset29614;
typedef struct Trunk29610 Trunk29610;
typedef struct Avlnode29685 Avlnode29685;
typedef struct Gcstat49814 Gcstat49814;
typedef struct Ttypeseq215824 Ttypeseq215824;
typedef struct TY215925 TY215925;
typedef struct Tloc215804 Tloc215804;
typedef struct Ropeobj170006 Ropeobj170006;
typedef struct Tlib215808 Tlib215808;
typedef struct Toptionentry265002 Toptionentry265002;
typedef struct TY118706 TY118706;
typedef struct Tinfocc195008 Tinfocc195008;
typedef struct Tidpair215836 Tidpair215836;
typedef struct TY264242 TY264242;
typedef struct TY184093 TY184093;
typedef struct PprocHEX3Aobjecttype264221 PprocHEX3Aobjecttype264221;
typedef struct TY264261 TY264261;
typedef struct Tinstantiationpair265010 Tinstantiationpair265010;
typedef struct Tinstantiation215812 Tinstantiation215812;
typedef struct Basechunk29637 Basechunk29637;
typedef struct Freecell29629 Freecell29629;
typedef struct TY264222 TY264222;
typedef struct TY264227 TY264227;
typedef struct TY264262 TY264262;
typedef struct Vmargs264030 Vmargs264030;
typedef struct TY215913 TY215913;
typedef struct Tblock264018 Tblock264018;
typedef struct TY264202 TY264202;
typedef NU8 Tspecialwords197006[33];
struct  Tlineinfo183337  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tnode215790  {
Ttype215828* typ;
Tlineinfo183337 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym215822* sym;
} S4;
struct {Tident190012* ident;
} S5;
struct {Tnodeseq215784* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
typedef NimStringDesc* TY183308[23];
typedef N_NIMCALL_PTR(void, TY3489) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3494) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3489 marker;
TY3494 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj190006  {
  TNimObject Sup;
NI id;
};
struct  Tident190012  {
  Tidobj190006 Sup;
NimStringDesc* s;
Tident190012* next;
NI h;
};
typedef NimStringDesc* TY183302[31];
struct  Tpasscontext262002  {
  TNimObject Sup;
NIM_BOOL fromcache;
};
struct  Intset212035  {
NI counter;
NI max;
Trunk212031* head;
Trunkseq212033* data;
};
struct  Tlinkedlist135016  {
Tlistentry135010* head;
Tlistentry135010* tail;
NI counter;
};
struct  Tidtable215840  {
NI counter;
Tidpairseq215838* data;
};
typedef N_NIMCALL_PTR(Tnode215790*, TY265071) (Tcontext265020* c, Tnode215790* n);
typedef N_NIMCALL_PTR(Tnode215790*, TY265076) (Tcontext265020* c, Tnode215790* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode215790*, TY265084) (Tcontext265020* c, Tnode215790* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode215790*, TY265092) (Tcontext265020* c, Tnode215790* n);
typedef N_NIMCALL_PTR(Tnode215790*, TY265097) (Tcontext265020* c, Tnode215790* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode215790*, TY265105) (Tcontext265020* c, Tnode215790* n);
typedef N_NIMCALL_PTR(Tnode215790*, TY265110) (Tcontext265020* c, Tnode215790* n, Tnode215790* norig, NU32 filter);
typedef N_NIMCALL_PTR(Ttype215828*, TY265117) (Tcontext265020* c, Tnode215790* n, Ttype215828* prev);
typedef struct {
N_NIMCALL_PTR(Tnode215790*, ClPrc) (Tcontext265020* c, Tidtable215840 pt, Tnode215790* n, void* ClEnv);
void* ClEnv;
} TY265123;
typedef struct {
N_NIMCALL_PTR(Tsym215822*, ClPrc) (Tcontext265020* c, Tsym215822* fn, Tidtable215840 pt, Tlineinfo183337 info, void* ClEnv);
void* ClEnv;
} TY265129;
struct  Tstrtable215794  {
NI counter;
Tsymseq215792* data;
};
typedef N_NIMCALL_PTR(Tsym215822*, TY265145) (Tcontext265020* c, Tsym215822* dc, Ttype215828* t, Tlineinfo183337 info, NU8 op);
struct  Tcontext265020  {
  Tpasscontext262002 Sup;
Tsym215822* module;
Tscope215816* currentscope;
Tscope215816* importtable;
Tscope215816* toplevelscope;
Tproccon265008* p;
Tsymseq215792* friendmodules;
NI instcounter;
Intset212035 ambiguoussymbols;
NI intypeclass;
NI ingenericcontext;
NI inunrolledcontext;
NI compilescontextid;
NI compilescontextidgenerator;
NI ingenericinst;
Tsymseq215792* converters;
Tsymseq215792* patterns;
Tlinkedlist135016 optionstack;
Tidtable215840 symmapping;
Tlinkedlist135016 libs;
TY265071 semconstexpr;
TY265076 semexpr;
TY265084 semtryexpr;
TY265092 semtryconstexpr;
TY265097 semoperand;
TY265105 semconstboolexpr;
TY265110 semoverloadedcall;
TY265117 semtypenode;
TY265123 seminferredlambda;
TY265129 semgenerateinstance;
Intset212035 includedfiles;
Tstrtable215794 userpragmas;
Tctx264036* evalcontext;
Intset212035 unknownidents;
TY265140* generics;
NI lastgenericidx;
NI hloloopdetector;
NI inparallelstmt;
TY265145 insttypeboundop;
};
struct  Cell47504  {
NI refcount;
TNimType* typ;
};
struct  Cellseq47520  {
NI len;
NI cap;
Cell47504** d;
};
struct  Cellset47516  {
NI counter;
NI max;
Pagedesc47512* head;
Pagedesc47512** data;
};
typedef Smallchunk29639* TY29702[512];
typedef Trunk29610* Trunkbuckets29612[256];
struct  Intset29614  {
Trunkbuckets29612 data;
};
struct  Memregion29687  {
NI minlargeobj;
NI maxlargeobj;
TY29702 freesmallchunks;
Llchunk29681* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk29641* freechunkslist;
Intset29614 chunkstarts;
Avlnode29685* root;
Avlnode29685* deleted;
Avlnode29685* last;
Avlnode29685* freeavlnodes;
};
struct  Gcstat49814  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap49818  {
Gcstack49816* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq47520 zct;
Cellseq47520 decstack;
Cellset47516 cycleroots;
Cellseq47520 tempstack;
NI recgclock;
Memregion29687 region;
Gcstat49814 stat;
};
struct  Tloc215804  {
NU8 k;
NU8 s;
NU16 flags;
Ttype215828* t;
Ropeobj170006* r;
Ropeobj170006* heaproot;
};
struct  Tsym215822  {
  Tidobj190006 Sup;
NU8 kind;
union{
struct {Ttypeseq215824* typeinstcache;
Tscope215816* typscope;
} S1;
struct {TY215925* procinstcache;
Tsym215822* gcunsafetyreason;
} S2;
struct {TY215925* usedgenerics;
Tstrtable215794 tab;
} S3;
struct {Tsym215822* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype215828* typ;
Tident190012* name;
Tlineinfo183337 info;
Tsym215822* owner;
NU32 flags;
Tnode215790* ast;
NU32 options;
NI position;
NI offset;
Tloc215804 loc;
Tlib215808* annex;
Tnode215790* constraint;
};
struct  Ttype215828  {
  Tidobj190006 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq215824* sons;
Tnode215790* n;
Tsym215822* owner;
Tsym215822* sym;
Tsym215822* destructor;
Tsym215822* deepcopy;
Tsym215822* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc215804 loc;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  Tlistentry135010  {
  TNimObject Sup;
Tlistentry135010* prev;
Tlistentry135010* next;
};
struct  Tlib215808  {
  Tlistentry135010 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj170006* name;
Tnode215790* path;
};
struct  Toptionentry265002  {
  Tlistentry135010 Sup;
NU32 options;
NU8 defaultcc;
Tlib215808* dynlib;
NU64 notes;
Tnode215790* otherpragmas;
};
struct TY118706 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
struct Tinfocc195008 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
NimStringDesc* Field3;
NimStringDesc* Field4;
NimStringDesc* Field5;
NimStringDesc* Field6;
NimStringDesc* Field7;
NimStringDesc* Field8;
NimStringDesc* Field9;
NimStringDesc* Field10;
NimStringDesc* Field11;
NimStringDesc* Field12;
NimStringDesc* Field13;
NimStringDesc* Field14;
NimStringDesc* Field15;
NimStringDesc* Field16;
NimStringDesc* Field17;
NimStringDesc* Field18;
NimStringDesc* Field19;
NU8 Field20;
};
typedef Tinfocc195008 TY195427[13];
struct  Tproccon265008  {
Tsym215822* owner;
Tsym215822* resultsym;
NI nestedloopcounter;
NI nestedblockcounter;
NI intrystmt;
Tproccon265008* next;
NIM_BOOL wasforwarded;
Tnode215790* bracketexpr;
};
struct  Tscope215816  {
NI depthlevel;
Tstrtable215794 symbols;
Tnodeseq215784* usingsyms;
Tscope215816* parent;
};
typedef NI TY29618[16];
struct  Trunk212031  {
Trunk212031* next;
NI key;
TY29618 bits;
};
struct  Tidpair215836  {
Tidobj190006* key;
TNimObject* val;
};
struct  Tctx264036  {
  Tpasscontext262002 Sup;
TY264242* code;
TY184093* debug;
Tnode215790* globals;
Tnode215790* constants;
Ttypeseq215824* types;
Tnode215790* currentexceptiona;
Tnode215790* currentexceptionb;
NI exceptioninstr;
PprocHEX3Aobjecttype264221* prc;
Tsym215822* module;
Tnode215790* callsite;
NU8 mode;
NU8 features;
NIM_BOOL traceactive;
NI loopiterations;
Tlineinfo183337 comesfromheuristic;
TY264261* callbacks;
NimStringDesc* errorflag;
};
struct  Tinstantiationpair265010  {
Tsym215822* genericsym;
Tinstantiation215812* inst;
};
struct  Gcstack49816  {
Gcstack49816* prev;
Gcstack49816* next;
void* starts;
void* pos;
NI maxstacksize;
};
struct  Pagedesc47512  {
Pagedesc47512* next;
NI key;
TY29618 bits;
};
struct  Basechunk29637  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk29639  {
  Basechunk29637 Sup;
Smallchunk29639* next;
Smallchunk29639* prev;
Freecell29629* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk29681  {
NI size;
NI acc;
Llchunk29681* next;
};
struct  Bigchunk29641  {
  Basechunk29637 Sup;
Bigchunk29641* next;
Bigchunk29641* prev;
NI align;
NF data;
};
struct  Trunk29610  {
Trunk29610* next;
NI key;
TY29618 bits;
};
typedef Avlnode29685* TY29692[2];
struct  Avlnode29685  {
TY29692 link;
NI key;
NI upperbound;
NI level;
};
struct  Ropeobj170006  {
  TNimObject Sup;
Ropeobj170006* left;
Ropeobj170006* right;
NI length;
NimStringDesc* data;
};
struct TY264227 {
NIM_BOOL Field0;
NU8 Field1;
};
typedef TY264227 TY264230[256];
struct  PprocHEX3Aobjecttype264221  {
TY264222* blocks;
Tsym215822* sym;
TY264230 slots;
NI maxslots;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (Vmargs264030* args, void* ClEnv);
void* ClEnv;
} Vmcallback264032;
struct TY264262 {
NimStringDesc* Field0;
Vmcallback264032 Field1;
};
struct  Tinstantiation215812  {
Tsym215822* sym;
Ttypeseq215824* concretetypes;
TY215913* usedby;
NI compilesid;
};
struct  Freecell29629  {
Freecell29629* next;
NI zerofield;
};
struct  Tblock264018  {
Tsym215822* label;
TY264202* fixups;
};
struct  Vmargs264030  {
NI ra;
NI rb;
NI rc;
void* slots;
Tnode215790* currentexception;
};
struct Tnodeseq215784 {
  TGenericSeq Sup;
  Tnode215790* data[SEQ_DECL_SIZE];
};
struct Tsymseq215792 {
  TGenericSeq Sup;
  Tsym215822* data[SEQ_DECL_SIZE];
};
struct Trunkseq212033 {
  TGenericSeq Sup;
  Trunk212031* data[SEQ_DECL_SIZE];
};
struct Tidpairseq215838 {
  TGenericSeq Sup;
  Tidpair215836 data[SEQ_DECL_SIZE];
};
struct TY265140 {
  TGenericSeq Sup;
  Tinstantiationpair265010 data[SEQ_DECL_SIZE];
};
struct Ttypeseq215824 {
  TGenericSeq Sup;
  Ttype215828* data[SEQ_DECL_SIZE];
};
struct TY215925 {
  TGenericSeq Sup;
  Tinstantiation215812* data[SEQ_DECL_SIZE];
};
struct TY264242 {
  TGenericSeq Sup;
  NU32 data[SEQ_DECL_SIZE];
};
struct TY184093 {
  TGenericSeq Sup;
  Tlineinfo183337 data[SEQ_DECL_SIZE];
};
struct TY264261 {
  TGenericSeq Sup;
  TY264262 data[SEQ_DECL_SIZE];
};
struct TY264222 {
  TGenericSeq Sup;
  Tblock264018 data[SEQ_DECL_SIZE];
};
struct TY215913 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct TY264202 {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, pragmarec_283639)(Tcontext265020* c, Tsym215822* sym, Tnode215790* n, Tspecialwords197006 validpragmas);
N_NIMCALL(NI, sonslen_218351)(Tnode215790* n);
N_NIMCALL(NIM_BOOL, singlepragma_281918)(Tcontext265020* c, Tsym215822* sym, Tnode215790* n, NI i, Tspecialwords197006 validpragmas);
N_NIMCALL(void, processnote_281000)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NU16, whichkeyword_197362)(Tident190012* id);
N_NIMCALL(NI, findstr_197336)(NimStringDesc** a, NI aLen0, NimStringDesc* s);
N_NIMCALL(void, invalidpragma_280076)(Tnode215790* n);
N_NIMCALL(void, localerror_188080)(Tlineinfo183337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, rendertree_234044)(Tnode215790* n, NU8 renderflags);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Cell47504*, usrtocell_51440)(void* usr);
static N_INLINE(void, rtladdzct_53001)(Cell47504* c);
N_NOINLINE(void, addzct_51417)(Cellseq47520* s, Cell47504* c);
N_NIMCALL(Tident190012*, considerquotedident_270004)(Tnode215790* n);
N_NIMCALL(Tsym215822*, strtableget_222066)(Tstrtable215794 t, Tident190012* name);
N_NIMCALL(void, globalerror_188071)(Tlineinfo183337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, pragma_280070)(Tcontext265020* c, Tsym215822* sym, Tnode215790* n, Tspecialwords197006 validpragmas);
N_NIMCALL(void, makeexternexport_280221)(Tsym215822* s, NimStringDesc* extname, Tlineinfo183337 info);
N_NIMCALL(void, setexternname_280152)(Tsym215822* s, NimStringDesc* extname);
N_NIMCALL(Ropeobj170006*, rope_170277)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(NIM_BOOL, contains_101023)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, getoptionalstr_280422)(Tcontext265020* c, Tnode215790* n, NimStringDesc* defaultstr);
N_NIMCALL(NimStringDesc*, expectstrlit_280397)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, getstrlitnode_280379)(Tcontext265020* c, Tnode215790* n);
N_NOINLINE(Tnode215790*, newemptystrnode_280374)(Tnode215790* n);
N_NIMCALL(Tnode215790*, newnodeit_217801)(NU8 kind, Tlineinfo183337 info, Ttype215828* typ);
N_NIMCALL(Ttype215828*, getsystype_259130)(NU8 kind);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(void, makeexternimport_280179)(Tsym215822* s, NimStringDesc* extname);
N_NIMCALL(void, processimportcompilerproc_280237)(Tsym215822* s, NimStringDesc* extname);
N_NIMCALL(void, processimportcpp_280274)(Tsym215822* s, NimStringDesc* extname);
N_NIMCALL(Tsym215822*, getmodule_222144)(Tsym215822* s);
N_NIMCALL(void, processimportobjc_280324)(Tsym215822* s, NimStringDesc* extname);
N_NIMCALL(NI, expectintlit_280403)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NIM_BOOL, ispoweroftwo_156623)(NI x);
N_NIMCALL(void, noval_281431)(Tnode215790* n);
N_NIMCALL(void, pragmadeadcodeelim_280729)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NIM_BOOL, isturnedon_280673)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, pragmanoforward_280755)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, processmagic_280443)(Tcontext265020* c, Tnode215790* n, Tsym215822* s);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI start);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI first);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_85009, TNimType* typ);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, message_188095)(Tlineinfo183337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(Tlib215808*, getlib_280807)(Tcontext265020* c, NU8 kind, Tnode215790* path);
N_NIMCALL(NIM_BOOL, exprstructuralequivalent_240099)(Tnode215790* a, Tnode215790* b, NIM_BOOL strictsymequality);
N_NIMCALL(Tlib215808*, newlib_265174)(NU8 kind);
N_NIMCALL(void, append_135032)(Tlinkedlist135016* list, Tlistentry135010* entry);
N_NIMCALL(NIM_BOOL, isdynliboverride_162642)(NimStringDesc* lib);
N_NIMCALL(void, addtolib_265177)(Tlib215808* lib, Tsym215822* sym);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(void, processdynlib_280908)(Tcontext265020* c, Tnode215790* n, Tsym215822* sym);
N_NIMCALL(Tnode215790*, expectdynlibnode_280849)(Tcontext265020* c, Tnode215790* n);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_53819)(Cell47504* c);
static N_INLINE(NIM_BOOL, canbecycleroot_51458)(Cell47504* c);
static N_INLINE(void, rtladdcycleroot_52220)(Cell47504* c);
N_NOINLINE(void, incl_48247)(Cellset47516* s, Cell47504* cell);
static N_INLINE(void, decref_53401)(Cell47504* c);
N_NIMCALL(void, markcompilerproc_281762)(Tsym215822* s);
N_NIMCALL(void, registercompilerproc_259795)(Tsym215822* s);
N_NIMCALL(void, deprecatedstmt_281788)(Tcontext265020* c, Tnode215790* pragma_281791);
static N_INLINE(Tnode215790*, HEX5BHEX5D_216238)(Tnode215790* n, NI i);
N_NIMCALL(void, localerror_188085)(Tlineinfo183337 info, NimStringDesc* arg);
static N_INLINE(NI, len_216059)(Tnode215790* n);
N_NIMCALL(Tsym215822*, qualifiedlookup_270652)(Tcontext265020* c, Tnode215790* n, NU8 flags);
N_NIMCALL(Tsym215822*, newsym_216684)(NU8 symkind, Tident190012* name, Tsym215822* owner, Tlineinfo183337 info);
N_NIMCALL(void, addinterfacedecl_270538)(Tcontext265020* c, Tsym215822* sym);
N_NIMCALL(void, typeborrow_281727)(Tsym215822* sym, Tnode215790* n);
static N_INLINE(NIM_BOOL, isroutine_220396)(Tsym215822* s);
N_NIMCALL(void, fatal_188066)(Tlineinfo183337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, processdefine_281293)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, definesymbol_191004)(NimStringDesc* symbol);
N_NIMCALL(void, processundef_281318)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, undefsymbol_191007)(NimStringDesc* symbol);
N_NIMCALL(void, processcompile_281347)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NimStringDesc*, findfile_162480)(NimStringDesc* f);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path);
N_NIMCALL(NimStringDesc*, HEX2F_118465)(NimStringDesc* head, NimStringDesc* tail);
N_NIMCALL(NimStringDesc*, nosparentDir)(NimStringDesc* path);
N_NIMCALL(NimStringDesc*, tofullpath_184269)(NI32 fileidx);
N_NIMCALL(void, addexternalfiletocompile_196419)(NimStringDesc* filename);
N_NIMCALL(void, addfiletolink_195872)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, completecfilepath_195854)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(void, processcommonlink_281354)(Tcontext265020* c, Tnode215790* n, NU8 feature);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY118706* Result);
N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(void, internalerror_188100)(Tlineinfo183337 info, NimStringDesc* errmsg);
N_NIMCALL(void, addlinkoption_195826)(NimStringDesc* option);
N_NIMCALL(void, addcompileoption_195830)(NimStringDesc* option);
N_NIMCALL(void, pragmabreakpoint_281361)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, pragmawatchpoint_281365)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, processpush_281238)(Tcontext265020* c, Tnode215790* n, NI start);
N_NIMCALL(Toptionentry265002*, newoptionentry_265172)(void);
N_NIMCALL(NIM_BOOL, processoption_281109)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, onoff_280700)(Tcontext265020* c, Tnode215790* n, NU32 op);
N_NIMCALL(void, processcallconv_280781)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NU8, wordtocallconv_280642)(NU16 sw);
N_NIMCALL(Tnode215790*, newnodei_217248)(NU8 kind, Tlineinfo183337 info);
N_NIMCALL(void, add_216114)(Tnode215790* father, Tnode215790* son);
N_NIMCALL(void, processpop_281288)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, remove_135633)(Tlinkedlist135016* list, Tlistentry135010* entry);
N_NIMCALL(void, processpragma_281537)(Tcontext265020* c, Tnode215790* n, NI i);
N_NIMCALL(void, addson_217807)(Tnode215790* father, Tnode215790* son);
N_NIMCALL(void, strtableadd_222061)(Tstrtable215794* t, Tsym215822* n);
N_NIMCALL(void, processcodegendecl_280437)(Tcontext265020* c, Tnode215790* n, Tsym215822* sym);
N_NIMCALL(void, pragmaemit_281426)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, semasmoremit_281380)(Tcontext265020* con, Tnode215790* n, NIM_CHAR marker);
N_NIMCALL(Tnode215790*, newnode_217601)(NU8 kind, Tlineinfo183337 info, Tnodeseq215784* sons, Ttype215828* typ);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(NI, nsuFindChar)(NimStringDesc* s, NIM_CHAR sub, NI start);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_79810, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(Tnode215790*, newstrnode_216678)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(Tsym215822*, searchinscopes_270131)(Tcontext265020* c, Tident190012* s);
N_NIMCALL(Tident190012*, getident_190441)(NimStringDesc* identifier);
N_NIMCALL(void, loadstub_255825)(Tsym215822* s);
N_NIMCALL(Tnode215790*, newsymnode_217234)(Tsym215822* sym);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
N_NIMCALL(void, illformedastlocal_265954)(Tnode215790* n);
N_NIMCALL(void, pragmaunroll_281443)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(Tnode215790*, newintnode_216660)(NU8 kind, NI64 intval);
N_NIMCALL(void, pragmaline_281467)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(NI32, fileinfoidx_184017)(NimStringDesc* filename);
N_NIMCALL(Tlineinfo183337, getinfocontext_184242)(NI index);
N_NIMCALL(void, pragmaraisesortags_281599)(Tcontext265020* c, Tnode215790* n);
N_NIMCALL(void, processexc_281603)(Tcontext265020* c, Tnode215790* x);
N_NIMCALL(Ttype215828*, skiptypes_219113)(Ttype215828* t, NU64 kinds);
N_NIMCALL(void, pragmalockstmt_281651)(Tcontext265020* c, Tnode215790* it);
N_NIMCALL(NI16, pragmalocks_281703)(Tcontext265020* c, Tnode215790* it);
N_NIMCALL(Tsym215822*, pragmaguard_281850)(Tcontext265020* c, Tnode215790* it, NU8 kind);
N_NIMCALL(void, registernimscriptsymbol_259799)(Tsym215822* s);
static N_INLINE(NIM_BOOL, istoplevel_265966)(Tcontext265020* c);
N_NIMCALL(void, implicitpragmas_283153)(Tcontext265020* c, Tsym215822* sym, Tnode215790* n, Tspecialwords197006 validpragmas);
N_NIMCALL(void, pushinfocontext_184209)(Tlineinfo183337 info);
N_NIMCALL(void, popinfocontext_184222)(void);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_283344)(Tnodeseq215784* x, Tnodeseq215784* y);
STRING_LITERAL(TMP3202, "Success", 7);
STRING_LITERAL(TMP3203, "SuccessX", 8);
STRING_LITERAL(TMP3204, "LineTooLong", 11);
STRING_LITERAL(TMP3205, "XDeclaredButNotUsed", 19);
STRING_LITERAL(TMP3206, "ConvToBaseNotNeeded", 19);
STRING_LITERAL(TMP3207, "ConvFromXtoItselfNotNeeded", 26);
STRING_LITERAL(TMP3208, "ExprAlwaysX", 11);
STRING_LITERAL(TMP3209, "QuitCalled", 10);
STRING_LITERAL(TMP3210, "Processing", 10);
STRING_LITERAL(TMP3211, "CodeBegin", 9);
STRING_LITERAL(TMP3212, "CodeEnd", 7);
STRING_LITERAL(TMP3213, "Conf", 4);
STRING_LITERAL(TMP3214, "Path", 4);
STRING_LITERAL(TMP3215, "CondTrue", 8);
STRING_LITERAL(TMP3216, "Name", 4);
STRING_LITERAL(TMP3217, "Pattern", 7);
STRING_LITERAL(TMP3218, "Exec", 4);
STRING_LITERAL(TMP3219, "Link", 4);
STRING_LITERAL(TMP3220, "Dependency", 10);
STRING_LITERAL(TMP3221, "Source", 6);
STRING_LITERAL(TMP3222, "StackTrace", 10);
STRING_LITERAL(TMP3223, "GCStats", 7);
STRING_LITERAL(TMP3224, "User", 4);
NIM_CONST TY183308 TMP3201 = {((NimStringDesc*) &TMP3202),
((NimStringDesc*) &TMP3203),
((NimStringDesc*) &TMP3204),
((NimStringDesc*) &TMP3205),
((NimStringDesc*) &TMP3206),
((NimStringDesc*) &TMP3207),
((NimStringDesc*) &TMP3208),
((NimStringDesc*) &TMP3209),
((NimStringDesc*) &TMP3210),
((NimStringDesc*) &TMP3211),
((NimStringDesc*) &TMP3212),
((NimStringDesc*) &TMP3213),
((NimStringDesc*) &TMP3214),
((NimStringDesc*) &TMP3215),
((NimStringDesc*) &TMP3216),
((NimStringDesc*) &TMP3217),
((NimStringDesc*) &TMP3218),
((NimStringDesc*) &TMP3219),
((NimStringDesc*) &TMP3220),
((NimStringDesc*) &TMP3221),
((NimStringDesc*) &TMP3222),
((NimStringDesc*) &TMP3223),
((NimStringDesc*) &TMP3224)}
;
STRING_LITERAL(TMP3226, "CannotOpenFile", 14);
STRING_LITERAL(TMP3227, "OctalEscape", 11);
STRING_LITERAL(TMP3228, "XIsNeverRead", 12);
STRING_LITERAL(TMP3229, "XmightNotBeenInit", 17);
STRING_LITERAL(TMP3230, "Deprecated", 10);
STRING_LITERAL(TMP3231, "ConfigDeprecated", 16);
STRING_LITERAL(TMP3232, "SmallLshouldNotBeUsed", 21);
STRING_LITERAL(TMP3233, "UnknownMagic", 12);
STRING_LITERAL(TMP3234, "RedefinitionOfLabel", 19);
STRING_LITERAL(TMP3235, "UnknownSubstitutionX", 20);
STRING_LITERAL(TMP3236, "LanguageXNotSupported", 21);
STRING_LITERAL(TMP3237, "FieldXNotSupported", 18);
STRING_LITERAL(TMP3238, "CommentXIgnored", 15);
STRING_LITERAL(TMP3239, "NilStmt", 7);
STRING_LITERAL(TMP3240, "TypelessParam", 13);
STRING_LITERAL(TMP3241, "UseBase", 7);
STRING_LITERAL(TMP3242, "WriteToForeignHeap", 18);
STRING_LITERAL(TMP3243, "UnsafeCode", 10);
STRING_LITERAL(TMP3244, "EachIdentIsTuple", 16);
STRING_LITERAL(TMP3245, "ShadowIdent", 11);
STRING_LITERAL(TMP3246, "ProveInit", 9);
STRING_LITERAL(TMP3247, "ProveField", 10);
STRING_LITERAL(TMP3248, "ProveIndex", 10);
STRING_LITERAL(TMP3249, "GcUnsafe", 8);
STRING_LITERAL(TMP3250, "GcUnsafe2", 9);
STRING_LITERAL(TMP3251, "Uninit", 6);
STRING_LITERAL(TMP3252, "GcMem", 5);
STRING_LITERAL(TMP3253, "Destructor", 10);
STRING_LITERAL(TMP3254, "LockLevel", 9);
STRING_LITERAL(TMP3255, "ResultShadowed", 14);
NIM_CONST TY183302 TMP3225 = {((NimStringDesc*) &TMP3226),
((NimStringDesc*) &TMP3227),
((NimStringDesc*) &TMP3228),
((NimStringDesc*) &TMP3229),
((NimStringDesc*) &TMP3230),
((NimStringDesc*) &TMP3231),
((NimStringDesc*) &TMP3232),
((NimStringDesc*) &TMP3233),
((NimStringDesc*) &TMP3234),
((NimStringDesc*) &TMP3235),
((NimStringDesc*) &TMP3236),
((NimStringDesc*) &TMP3237),
((NimStringDesc*) &TMP3238),
((NimStringDesc*) &TMP3239),
((NimStringDesc*) &TMP3240),
((NimStringDesc*) &TMP3241),
((NimStringDesc*) &TMP3242),
((NimStringDesc*) &TMP3243),
((NimStringDesc*) &TMP3244),
((NimStringDesc*) &TMP3245),
((NimStringDesc*) &TMP3246),
((NimStringDesc*) &TMP3247),
((NimStringDesc*) &TMP3248),
((NimStringDesc*) &TMP3249),
((NimStringDesc*) &TMP3250),
((NimStringDesc*) &TMP3251),
((NimStringDesc*) &TMP3252),
((NimStringDesc*) &TMP3253),
((NimStringDesc*) &TMP3254),
((NimStringDesc*) &TMP3255),
((NimStringDesc*) &TMP3224)}
;
STRING_LITERAL(TMP3256, "", 0);
STRING_LITERAL(TMP3257, "$1", 2);
STRING_LITERAL(TMP3258, "destroy", 7);
STRING_LITERAL(TMP3259, "destructor has to be named \'destroy\'", 36);
STRING_LITERAL(TMP3260, "list of key:value pairs expected", 32);
STRING_LITERAL(TMP3261, "key:value pair expected", 23);
STRING_LITERAL(TMP3262, "a type can only borrow `.` for now", 34);
STRING_LITERAL(TMP3263, "define", 6);
STRING_LITERAL(TMP3264, "undef", 5);
extern NIM_CONST TY195427 Cc_195413;
STRING_LITERAL(TMP3265, "processCommonLink", 17);
STRING_LITERAL(TMP3266, "\':\' after \'push\' not supported", 30);
STRING_LITERAL(TMP3267, "speed", 5);
STRING_LITERAL(TMP3268, "size", 4);
STRING_LITERAL(TMP3269, "none", 4);
STRING_LITERAL(TMP3270, "tuple", 5);
STRING_LITERAL(TMP3271, "invalid type for raises/tags list", 33);
STRING_LITERAL(TMP3272, "locks pragma takes a list of expressions", 40);
STRING_LITERAL(TMP3273, "integer must be within 0..1000", 30);
STRING_LITERAL(TMP3278, "\'experimental\' pragma only valid as toplevel statement", 54);
STRING_LITERAL(TMP3279, "implicitPragmas", 15);
extern Gcheap49818 gch_49859;
extern NU64 gnotes_184080;
extern NU8 gcmd_161123;
extern NIM_BOOL gmixedmode_195433;
extern TNimType NTI215521; /* TMagic */
extern NU8 ccompiler_195431;
extern NimStringDesc* libpath_161198;
extern NU32 goptions_161119;
extern TNimType NTI215784; /* TNodeSeq */

N_NIMCALL(void, invalidpragma_280076)(Tnode215790* n) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = rendertree_234044(n, 4);
	localerror_188080((*n).info, ((NU16) 166), LOC1);
}

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

static N_INLINE(void, rtladdzct_53001)(Cell47504* c) {
	addzct_51417((&gch_49859.zct), c);
}

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

N_NIMCALL(void, processnote_281000)(Tcontext265020* c, Tnode215790* n) {
{	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NIM_BOOL LOC6;
		NI LOC8;
		NU16 nk;
		NU16 LOC14;
		Tnode215790* x;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = ((*n).kind == ((NU8) 34));
		if (!(LOC6)) goto LA7;
		LOC8 = 0;
		LOC8 = sonslen_218351(n);
		LOC6 = (LOC8 == ((NI) 2));
		LA7: ;
		LOC5 = LOC6;
		if (!(LOC5)) goto LA9;
		LOC5 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 42));
		LA9: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA10;
		LOC4 = ((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2));
		LA10: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA11;
		LOC3 = ((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2));
		LA11: ;
		if (!LOC3) goto LA12;
		nk = 0;
		LOC14 = 0;
		LOC14 = whichkeyword_197362((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident);
		switch (LOC14) {
		case ((NU16) 114):
		{
			NI x;
			x = findstr_197336(TMP3201, 23, (*(*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident).s);
			{
				if (!(((NI) 0) <= x)) goto LA18;
				nk = ((NU16) ((NI)(x + ((NI) 268))));
			}
			goto LA16;
			LA18: ;
			{
				invalidpragma_280076(n);
				goto BeforeRet;
			}
			LA16: ;
		}
		break;
		case ((NU16) 113):
		{
			NI x;
			x = findstr_197336(TMP3225, 31, (*(*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident).s);
			{
				if (!(((NI) 0) <= x)) goto LA24;
				nk = ((NU16) ((NI)(x + ((NI) 237))));
			}
			goto LA22;
			LA24: ;
			{
				invalidpragma_280076(n);
				goto BeforeRet;
			}
			LA22: ;
		}
		break;
		default:
		{
			invalidpragma_280076(n);
			goto BeforeRet;
		}
		break;
		}
		x = (*c).semconstboolexpr(c, (*n).kindU.S6.sons->data[((NI) 1)]);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), x);
		{
			NIM_BOOL LOC30;
			LOC30 = 0;
			LOC30 = ((*x).kind == ((NU8) 6));
			if (!(LOC30)) goto LA31;
			LOC30 = !(((*x).kindU.S1.intval == IL64(0)));
			LA31: ;
			if (!LOC30) goto LA32;
			gnotes_184080 |= ((NU64)1)<<(((nk- 237))%(sizeof(NU64)*8));
		}
		goto LA28;
		LA32: ;
		{
			gnotes_184080 &= ~(((NU64)1) << (((nk- 237)) % (sizeof(NU64)*8)));
		}
		LA28: ;
	}
	goto LA1;
	LA12: ;
	{
		invalidpragma_280076(n);
	}
	LA1: ;
	}BeforeRet: ;
}

N_NIMCALL(void, setexternname_280152)(Tsym215822* s, NimStringDesc* extname) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = nsuFormatSingleElem(extname, (*(*s).name).s);
	asgnRefNoCycle((void**) (&(*s).loc.r), rope_170277(LOC1));
	{
		NIM_BOOL LOC4;
		NIM_BOOL LOC6;
		LOC4 = 0;
		LOC4 = (gcmd_161123 == ((NU8) 7));
		if (!(LOC4)) goto LA5;
		LOC6 = 0;
		LOC6 = contains_101023(extname, 36);
		LOC4 = !(LOC6);
		LA5: ;
		if (!LOC4) goto LA7;
		(*s).loc.flags |= ((NU16)1)<<((((NU8) 1))%(sizeof(NU16)*8));
	}
	LA7: ;
}

N_NIMCALL(void, makeexternexport_280221)(Tsym215822* s, NimStringDesc* extname, Tlineinfo183337 info) {
	setexternname_280152(s, extname);
	(*s).flags |= ((NU32)1)<<((((NU8) 6))%(sizeof(NU32)*8));
}

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

N_NOINLINE(Tnode215790*, newemptystrnode_280374)(Tnode215790* n) {
	Tnode215790* result;
	Ttype215828* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getsystype_259130(((NU8) 28));
	result = newnodeit_217801(((NU8) 20), (*n).info, LOC1);
	LOC2 = 0;
	LOC2 = (*result).kindU.S3.strval; (*result).kindU.S3.strval = copyStringRC1(((NimStringDesc*) &TMP3256));
	if (LOC2) nimGCunrefNoCycle(LOC2);
	return result;
}

N_NIMCALL(Tnode215790*, getstrlitnode_280379)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	{
		if (!!(((*n).kind == ((NU8) 34)))) goto LA3;
		localerror_188080((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3256));
		result = newemptystrnode_280374(n);
	}
	goto LA1;
	LA3: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), (*c).semconstexpr(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		switch ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind) {
		case ((NU8) 20):
		case ((NU8) 21):
		case ((NU8) 22):
		{
			result = (*n).kindU.S6.sons->data[((NI) 1)];
		}
		break;
		default:
		{
			localerror_188080((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3256));
			result = newemptystrnode_280374(n);
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(NimStringDesc*, expectstrlit_280397)(Tcontext265020* c, Tnode215790* n) {
	NimStringDesc* result;
	Tnode215790* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getstrlitnode_280379(c, n);
	result = copyString((*LOC1).kindU.S3.strval);
	return result;
}

N_NIMCALL(NimStringDesc*, getoptionalstr_280422)(Tcontext265020* c, Tnode215790* n, NimStringDesc* defaultstr) {
	NimStringDesc* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 34))) goto LA3;
		result = expectstrlit_280397(c, n);
	}
	goto LA1;
	LA3: ;
	{
		result = copyString(defaultstr);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, makeexternimport_280179)(Tsym215822* s, NimStringDesc* extname) {
	setexternname_280152(s, extname);
	(*s).flags |= ((NU32)1)<<((((NU8) 5))%(sizeof(NU32)*8));
	(*s).flags &= ~(((NU32)1) << ((((NU8) 4)) % (sizeof(NU32)*8)));
}

N_NIMCALL(void, processimportcompilerproc_280237)(Tsym215822* s, NimStringDesc* extname) {
	setexternname_280152(s, extname);
	(*s).flags |= ((NU32)1)<<((((NU8) 5))%(sizeof(NU32)*8));
	(*s).flags &= ~(((NU32)1) << ((((NU8) 4)) % (sizeof(NU32)*8)));
	(*s).loc.flags |= ((NU16)1)<<((((NU8) 7))%(sizeof(NU16)*8));
}

N_NIMCALL(void, processimportcpp_280274)(Tsym215822* s, NimStringDesc* extname) {
	Tsym215822* m;
	setexternname_280152(s, extname);
	(*s).flags |= ((NU32)1)<<((((NU8) 5))%(sizeof(NU32)*8));
	(*s).flags |= ((NU32)1)<<((((NU8) 27))%(sizeof(NU32)*8));
	(*s).flags &= ~(((NU32)1) << ((((NU8) 4)) % (sizeof(NU32)*8)));
	m = getmodule_222144(s);
	(*m).flags |= ((NU32)1)<<((((NU8) 27))%(sizeof(NU32)*8));
	gmixedmode_195433 = NIM_TRUE;
}

N_NIMCALL(void, processimportobjc_280324)(Tsym215822* s, NimStringDesc* extname) {
	Tsym215822* m;
	setexternname_280152(s, extname);
	(*s).flags |= ((NU32)1)<<((((NU8) 5))%(sizeof(NU32)*8));
	(*s).flags |= ((NU32)1)<<((((NU8) 28))%(sizeof(NU32)*8));
	(*s).flags &= ~(((NU32)1) << ((((NU8) 4)) % (sizeof(NU32)*8)));
	m = getmodule_222144(s);
	(*m).flags |= ((NU32)1)<<((((NU8) 28))%(sizeof(NU32)*8));
}

N_NIMCALL(NI, expectintlit_280403)(Tcontext265020* c, Tnode215790* n) {
	NI result;
	result = 0;
	{
		if (!!(((*n).kind == ((NU8) 34)))) goto LA3;
		localerror_188080((*n).info, ((NU16) 7), ((NimStringDesc*) &TMP3256));
	}
	goto LA1;
	LA3: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), (*c).semconstexpr(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		switch ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind) {
		case ((NU8) 6) ... ((NU8) 10):
		{
			result = ((NI) ((*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S1.intval));
		}
		break;
		default:
		{
			localerror_188080((*n).info, ((NU16) 7), ((NimStringDesc*) &TMP3256));
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, noval_281431)(Tnode215790* n) {
	{
		if (!((*n).kind == ((NU8) 34))) goto LA3;
		invalidpragma_280076(n);
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, isturnedon_280673)(Tcontext265020* c, Tnode215790* n) {
	NIM_BOOL result;
{	result = 0;
	{
		Tnode215790* x;
		if (!((*n).kind == ((NU8) 34))) goto LA3;
		x = (*c).semconstboolexpr(c, (*n).kindU.S6.sons->data[((NI) 1)]);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), x);
		{
			if (!((*x).kind == ((NU8) 6))) goto LA7;
			result = !(((*x).kindU.S1.intval == IL64(0)));
			goto BeforeRet;
		}
		LA7: ;
	}
	LA3: ;
	localerror_188080((*n).info, ((NU16) 27), ((NimStringDesc*) &TMP3256));
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, pragmadeadcodeelim_280729)(Tcontext265020* c, Tnode215790* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_280673(c, n);
		if (!LOC3) goto LA4;
		(*(*c).module).flags |= ((NU32)1)<<((((NU8) 25))%(sizeof(NU32)*8));
	}
	goto LA1;
	LA4: ;
	{
		(*(*c).module).flags &= ~(((NU32)1) << ((((NU8) 25)) % (sizeof(NU32)*8)));
	}
	LA1: ;
}

N_NIMCALL(void, pragmanoforward_280755)(Tcontext265020* c, Tnode215790* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_280673(c, n);
		if (!LOC3) goto LA4;
		(*(*c).module).flags |= ((NU32)1)<<((((NU8) 8))%(sizeof(NU32)*8));
	}
	goto LA1;
	LA4: ;
	{
		(*(*c).module).flags &= ~(((NU32)1) << ((((NU8) 8)) % (sizeof(NU32)*8)));
	}
	LA1: ;
}

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

N_NIMCALL(void, processmagic_280443)(Tcontext265020* c, Tnode215790* n, Tsym215822* s) {
	NimStringDesc* v;
{	{
		if (!!(((*n).kind == ((NU8) 34)))) goto LA3;
		localerror_188080((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3256));
		goto BeforeRet;
	}
	LA3: ;
	v = 0;
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2))) goto LA7;
		v = copyString((*(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident).s);
	}
	goto LA5;
	LA7: ;
	{
		v = expectstrlit_280397(c, n);
	}
	LA5: ;
	{
		NU8 m_280614;
		NI res_280639;
		m_280614 = 0;
		res_280639 = ((NI) 0);
		{
			while (1) {
				if (!(res_280639 <= ((NI) 254))) goto LA12;
				m_280614 = ((NU8) (res_280639));
				{
					NimStringDesc* LOC15;
					LOC15 = 0;
					LOC15 = copyStr(reprEnum(m_280614, (&NTI215521)), ((NI) 1));
					if (!eqStrings(LOC15, v)) goto LA16;
					(*s).magic = m_280614;
					goto LA10;
				}
				LA16: ;
				res_280639 += ((NI) 1);
			} LA12: ;
		}
	} LA10: ;
	{
		if (!((*s).magic == ((NU8) 0))) goto LA20;
		message_188095((*n).info, ((NU16) 244), v);
	}
	LA20: ;
	}BeforeRet: ;
}

N_NIMCALL(Tlib215808*, getlib_280807)(Tcontext265020* c, NU8 kind, Tnode215790* path) {
	Tlib215808* result;
	Tlib215808* it;
	Tlistentry135010* LOC12;
{	result = 0;
	it = ((Tlib215808*) ((*c).libs.head));
	{
		while (1) {
			if (!!((it == NIM_NIL))) goto LA2;
			{
				if (!((*it).kind == kind)) goto LA5;
				{
					NIM_BOOL LOC9;
					LOC9 = 0;
					LOC9 = exprstructuralequivalent_240099((*it).path, path, NIM_FALSE);
					if (!LOC9) goto LA10;
					result = it;
					goto BeforeRet;
				}
				LA10: ;
			}
			LA5: ;
			it = ((Tlib215808*) ((*it).Sup.next));
		} LA2: ;
	}
	result = newlib_265174(kind);
	asgnRefNoCycle((void**) (&(*result).path), path);
	LOC12 = 0;
	LOC12 = &result->Sup;
	append_135032((&(*c).libs), LOC12);
	{
		if (!((*path).kind >= ((NU8) 20) && (*path).kind <= ((NU8) 22))) goto LA15;
		(*result).isoverriden = isdynliboverride_162642((*path).kindU.S3.strval);
	}
	LA15: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, expectdynlibnode_280849)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	{
		if (!!(((*n).kind == ((NU8) 34)))) goto LA3;
		localerror_188080((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3256));
		result = newemptystrnode_280374(n);
	}
	goto LA1;
	LA3: ;
	{
		result = (*c).semexpr(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
		{
			NIM_BOOL LOC8;
			LOC8 = 0;
			LOC8 = ((*result).kind == ((NU8) 3));
			if (!(LOC8)) goto LA9;
			LOC8 = ((*(*result).kindU.S4.sym).kind == ((NU8) 10));
			LA9: ;
			if (!LOC8) goto LA10;
			result = (*(*result).kindU.S4.sym).ast;
		}
		LA10: ;
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = ((*result).typ == NIM_NIL);
			if (LOC14) goto LA15;
			LOC14 = !(((*(*result).typ).kind == ((NU8) 26) || (*(*result).typ).kind == ((NU8) 28) || (*(*result).typ).kind == ((NU8) 25)));
			LA15: ;
			if (!LOC14) goto LA16;
			localerror_188080((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3256));
			result = newemptystrnode_280374(n);
		}
		LA16: ;
	}
	LA1: ;
	return result;
}

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

static N_INLINE(void, rtladdcycleroot_52220)(Cell47504* c) {
	{
		if (!!((((NI) ((NI)((*c).refcount & ((NI) 3)))) == ((NI) 3)))) goto LA3;
		(*c).refcount = (NI)((NI)((*c).refcount & ((NI) -4)) | ((NI) 3));
		incl_48247((&gch_49859.cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_53819)(Cell47504* c) {
	(*c).refcount = (NI)((NU32)((*c).refcount) + (NU32)(((NI) 8)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_51458(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_52220(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_53401)(Cell47504* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_53001(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_51458(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_52220(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		Cell47504* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_51440(src);
		incref_53819(LOC5);
	}
	LA3: ;
	{
		Cell47504* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_51440((*dest));
		decref_53401(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

N_NIMCALL(void, processdynlib_280908)(Tcontext265020* c, Tnode215790* n, Tsym215822* sym) {
	{
		NIM_BOOL LOC3;
		Tnode215790* LOC7;
		LOC3 = 0;
		LOC3 = (sym == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = ((*sym).kind == ((NU8) 6));
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		LOC7 = expectdynlibnode_280849(c, n);
		asgnRef((void**) (&(*((Toptionentry265002*) ((*c).optionstack.tail))).dynlib), getlib_280807(c, ((NU8) 1), LOC7));
	}
	goto LA1;
	LA5: ;
	{
		{
			Tlib215808* lib;
			Tnode215790* LOC13;
			if (!((*n).kind == ((NU8) 34))) goto LA11;
			LOC13 = 0;
			LOC13 = expectdynlibnode_280849(c, n);
			lib = getlib_280807(c, ((NU8) 1), LOC13);
			{
				if (!!((*lib).isoverriden)) goto LA16;
				addtolib_265177(lib, sym);
				(*sym).loc.flags |= ((NU16)1)<<((((NU8) 4))%(sizeof(NU16)*8));
			}
			LA16: ;
		}
		goto LA9;
		LA11: ;
		{
			(*sym).loc.flags |= ((NU16)1)<<((((NU8) 5))%(sizeof(NU16)*8));
		}
		LA9: ;
		{
			NIM_BOOL LOC21;
			NIM_BOOL LOC22;
			LOC21 = 0;
			LOC22 = 0;
			LOC22 = ((258048 &(1U<<((NU)((*sym).kind)&31U)))!=0);
			if (!(LOC22)) goto LA23;
			LOC22 = !(((*sym).typ == NIM_NIL));
			LA23: ;
			LOC21 = LOC22;
			if (!(LOC21)) goto LA24;
			LOC21 = ((*(*sym).typ).callconv == ((NU8) 0));
			LA24: ;
			if (!LOC21) goto LA25;
			(*(*sym).typ).callconv = ((NU8) 2);
		}
		LA25: ;
	}
	LA1: ;
}

N_NIMCALL(void, markcompilerproc_281762)(Tsym215822* s) {
	makeexternexport_280221(s, ((NimStringDesc*) &TMP3257), (*s).info);
	(*s).flags |= ((NU32)1)<<((((NU8) 16))%(sizeof(NU32)*8));
	(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	registercompilerproc_259795(s);
}

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

static N_INLINE(NI, len_216059)(Tnode215790* 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;
}

N_NIMCALL(void, deprecatedstmt_281788)(Tcontext265020* c, Tnode215790* pragma_281791) {
	Tnode215790* pragma;
{	pragma = HEX5BHEX5D_216238(pragma_281791, ((NI) 1));
	{
		if (!!(((*pragma).kind == ((NU8) 41)))) goto LA3;
		localerror_188085((*pragma).info, ((NimStringDesc*) &TMP3260));
		goto BeforeRet;
	}
	LA3: ;
	{
		Tnode215790* n_281802;
		n_281802 = 0;
		{
			NI i_281843;
			NI HEX3Atmp_281845;
			NI LOC7;
			NI res_281847;
			i_281843 = 0;
			HEX3Atmp_281845 = 0;
			LOC7 = 0;
			LOC7 = len_216059(pragma);
			HEX3Atmp_281845 = (LOC7 - 1);
			res_281847 = ((NI) 0);
			{
				while (1) {
					if (!(res_281847 <= HEX3Atmp_281845)) goto LA9;
					i_281843 = res_281847;
					n_281802 = (*pragma).kindU.S6.sons->data[i_281843];
					{
						Tsym215822* dest;
						Tnode215790* LOC14;
						Tident190012* src;
						Tnode215790* LOC15;
						Tsym215822* alias;
						Tnode215790* LOC16;
						if (!((*n_281802).kind == ((NU8) 34) || (*n_281802).kind == ((NU8) 33))) goto LA12;
						LOC14 = 0;
						LOC14 = HEX5BHEX5D_216238(n_281802, ((NI) 1));
						dest = qualifiedlookup_270652(c, LOC14, 2);
						LOC15 = 0;
						LOC15 = HEX5BHEX5D_216238(n_281802, ((NI) 0));
						src = considerquotedident_270004(LOC15);
						LOC16 = 0;
						LOC16 = HEX5BHEX5D_216238(n_281802, ((NI) 0));
						alias = newsym_216684(((NU8) 24), src, dest, (*LOC16).info);
						(*alias).flags |= ((NU32)1)<<((((NU8) 1))%(sizeof(NU32)*8));
						{
							if (!(((*dest).flags &(1U<<((NU)(((NU8) 16))&31U)))!=0)) goto LA19;
							markcompilerproc_281762(alias);
						}
						LA19: ;
						addinterfacedecl_270538(c, alias);
					}
					goto LA10;
					LA12: ;
					{
						localerror_188085((*n_281802).info, ((NimStringDesc*) &TMP3261));
					}
					LA10: ;
					res_281847 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(void, typeborrow_281727)(Tsym215822* sym, Tnode215790* n) {
	{
		Tnode215790* it;
		if (!((*n).kind == ((NU8) 34))) goto LA3;
		it = (*n).kindU.S6.sons->data[((NI) 1)];
		{
			if (!!(((*it).kind == ((NU8) 53)))) goto LA7;
			localerror_188085((*n).info, ((NimStringDesc*) &TMP3262));
		}
		LA7: ;
	}
	LA3: ;
	(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 27))%(sizeof(NU32)*8));
}

static N_INLINE(NIM_BOOL, isroutine_220396)(Tsym215822* s) {
	NIM_BOOL result;
	result = 0;
	result = ((258048 &(1U<<((NU)((*s).kind)&31U)))!=0);
	return result;
}

N_NIMCALL(void, processdefine_281293)(Tcontext265020* c, Tnode215790* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 34));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2));
		LA4: ;
		if (!LOC3) goto LA5;
		definesymbol_191004((*(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident).s);
		message_188095((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3263));
	}
	goto LA1;
	LA5: ;
	{
		invalidpragma_280076(n);
	}
	LA1: ;
}

N_NIMCALL(void, processundef_281318)(Tcontext265020* c, Tnode215790* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 34));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2));
		LA4: ;
		if (!LOC3) goto LA5;
		undefsymbol_191007((*(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident).s);
		message_188095((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3264));
	}
	goto LA1;
	LA5: ;
	{
		invalidpragma_280076(n);
	}
	LA1: ;
}

N_NIMCALL(void, processcompile_281347)(Tcontext265020* c, Tnode215790* n) {
	NimStringDesc* s;
	NimStringDesc* found;
	NimStringDesc* trunc;
	NimStringDesc* LOC12;
	s = expectstrlit_280397(c, n);
	found = findfile_162480(s);
	{
		if (!((found) && (found)->Sup.len == 0)) goto LA3;
		found = copyString(s);
	}
	LA3: ;
	trunc = noschangeFileExt(found, ((NimStringDesc*) &TMP3256));
	{
		NIM_BOOL LOC7;
		NimStringDesc* LOC10;
		NimStringDesc* LOC11;
		LOC7 = 0;
		LOC7 = nosisAbsolute(found);
		if (!!(LOC7)) goto LA8;
		LOC10 = 0;
		LOC10 = tofullpath_184269((*n).info.fileindex);
		LOC11 = 0;
		LOC11 = nosparentDir(LOC10);
		found = HEX2F_118465(LOC11, found);
	}
	LA8: ;
	addexternalfiletocompile_196419(found);
	LOC12 = 0;
	LOC12 = completecfilepath_195854(trunc, NIM_FALSE);
	addfiletolink_195872(LOC12);
}

N_NIMCALL(void, processcommonlink_281354)(Tcontext265020* c, Tnode215790* n, NU8 feature) {
	NimStringDesc* f;
	NimStringDesc* found;
	f = expectstrlit_280397(c, n);
	{
		TY118706 LOC3;
		memset((void*)(&LOC3), 0, sizeof(LOC3));
		nossplitFile(f, (&LOC3));
		if (!((LOC3.Field2) && (LOC3.Field2)->Sup.len == 0)) goto LA4;
		f = nosaddFileExt(f, Cc_195413[(ccompiler_195431)- 1].Field1);
	}
	LA4: ;
	found = findfile_162480(f);
	{
		if (!((found) && (found)->Sup.len == 0)) goto LA8;
		found = copyString(f);
	}
	LA8: ;
	switch (feature) {
	case ((NU8) 0):
	{
		addfiletolink_195872(found);
	}
	break;
	case ((NU8) 1):
	{
		NimStringDesc* LOC12;
		NimStringDesc* LOC13;
		LOC12 = 0;
		LOC12 = completecfilepath_195854(found, NIM_FALSE);
		LOC13 = 0;
		LOC13 = HEX2F_118465(libpath_161198, LOC12);
		addfiletolink_195872(LOC13);
	}
	break;
	default:
	{
		internalerror_188100((*n).info, ((NimStringDesc*) &TMP3265));
	}
	break;
	}
}

N_NIMCALL(void, pragmabreakpoint_281361)(Tcontext265020* c, Tnode215790* n) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = getoptionalstr_280422(c, n, ((NimStringDesc*) &TMP3256));
}

N_NIMCALL(void, pragmawatchpoint_281365)(Tcontext265020* c, Tnode215790* n) {
	{
		if (!((*n).kind == ((NU8) 34))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), (*c).semexpr(c, (*n).kindU.S6.sons->data[((NI) 1)], 0));
	}
	goto LA1;
	LA3: ;
	{
		invalidpragma_280076(n);
	}
	LA1: ;
}

N_NIMCALL(void, onoff_280700)(Tcontext265020* c, Tnode215790* n, NU32 op) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_280673(c, n);
		if (!LOC3) goto LA4;
		goptions_161119 = (goptions_161119 | op);
	}
	goto LA1;
	LA4: ;
	{
		goptions_161119 = (goptions_161119 & ~ op);
	}
	LA1: ;
}

N_NIMCALL(NU8, wordtocallconv_280642)(NU16 sw) {
	NU8 result;
	result = 0;
	result = ((NU8) ((NI)(((NI) ((NI)(((NI) 0) + ((NI) (sw))))) - ((NI) 131))));
	return result;
}

N_NIMCALL(void, processcallconv_280781)(Tcontext265020* c, Tnode215790* n) {
	{
		NIM_BOOL LOC3;
		NU16 sw;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 34));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2));
		LA4: ;
		if (!LOC3) goto LA5;
		sw = whichkeyword_197362((*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident);
		switch (sw) {
		case ((NU16) 131) ... ((NU16) 140):
		{
			(*((Toptionentry265002*) ((*c).optionstack.tail))).defaultcc = wordtocallconv_280642(sw);
		}
		break;
		default:
		{
			localerror_188080((*n).info, ((NU16) 104), ((NimStringDesc*) &TMP3256));
		}
		break;
		}
	}
	goto LA1;
	LA5: ;
	{
		localerror_188080((*n).info, ((NU16) 104), ((NimStringDesc*) &TMP3256));
	}
	LA1: ;
}

N_NIMCALL(NIM_BOOL, processoption_281109)(Tcontext265020* c, Tnode215790* n) {
	NIM_BOOL result;
	result = 0;
	{
		if (!!(((*n).kind == ((NU8) 34)))) goto LA3;
		result = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 42))) goto LA6;
		processnote_281000(c, n);
	}
	goto LA1;
	LA6: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2)))) goto LA9;
		result = NIM_TRUE;
	}
	goto LA1;
	LA9: ;
	{
		NU16 sw;
		sw = whichkeyword_197362((*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident);
		switch (sw) {
		case ((NU16) 143):
		{
			onoff_280700(c, n, 1022);
		}
		break;
		case ((NU16) 82):
		{
			onoff_280700(c, n, 2);
		}
		break;
		case ((NU16) 173):
		{
			onoff_280700(c, n, 4);
		}
		break;
		case ((NU16) 144):
		{
			onoff_280700(c, n, 8);
		}
		break;
		case ((NU16) 145):
		{
			onoff_280700(c, n, 16);
		}
		break;
		case ((NU16) 146):
		{
			onoff_280700(c, n, 32);
		}
		break;
		case ((NU16) 147):
		{
			onoff_280700(c, n, 64);
		}
		break;
		case ((NU16) 148):
		{
			onoff_280700(c, n, 384);
		}
		break;
		case ((NU16) 149):
		{
			onoff_280700(c, n, 128);
		}
		break;
		case ((NU16) 150):
		{
			onoff_280700(c, n, 256);
		}
		break;
		case ((NU16) 151):
		{
			onoff_280700(c, n, 512);
		}
		break;
		case ((NU16) 153):
		{
			onoff_280700(c, n, 2048);
		}
		break;
		case ((NU16) 154):
		{
			onoff_280700(c, n, 4096);
		}
		break;
		case ((NU16) 128):
		{
			processcallconv_280781(c, n);
		}
		break;
		case ((NU16) 120):
		{
			onoff_280700(c, n, 1024);
		}
		break;
		case ((NU16) 121):
		{
			onoff_280700(c, n, 32768);
		}
		break;
		case ((NU16) 122):
		{
			onoff_280700(c, n, 65536);
		}
		break;
		case ((NU16) 130):
		{
			onoff_280700(c, n, 131072);
		}
		break;
		case ((NU16) 81):
		{
			onoff_280700(c, n, 524288);
		}
		break;
		case ((NU16) 258):
		{
			onoff_280700(c, n, 262144);
		}
		break;
		case ((NU16) 107):
		{
			processdynlib_280908(c, n, NIM_NIL);
		}
		break;
		case ((NU16) 155):
		{
			{
				if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2)))) goto LA36;
				invalidpragma_280076(n);
			}
			goto LA34;
			LA36: ;
			{
				NimStringDesc* LOC39;
				LOC39 = 0;
				LOC39 = nsuNormalize((*(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident).s);
				if (eqStrings(LOC39, ((NimStringDesc*) &TMP3267))) goto LA40;
				if (eqStrings(LOC39, ((NimStringDesc*) &TMP3268))) goto LA41;
				if (eqStrings(LOC39, ((NimStringDesc*) &TMP3269))) goto LA42;
				goto LA43;
				LA40: ;
				{
					goptions_161119 |= ((NU32)1)<<((((NU8) 13))%(sizeof(NU32)*8));
					goptions_161119 &= ~(((NU32)1) << ((((NU8) 14)) % (sizeof(NU32)*8)));
				}
				goto LA44;
				LA41: ;
				{
					goptions_161119 &= ~(((NU32)1) << ((((NU8) 13)) % (sizeof(NU32)*8)));
					goptions_161119 |= ((NU32)1)<<((((NU8) 14))%(sizeof(NU32)*8));
				}
				goto LA44;
				LA42: ;
				{
					goptions_161119 &= ~(((NU32)1) << ((((NU8) 13)) % (sizeof(NU32)*8)));
					goptions_161119 &= ~(((NU32)1) << ((((NU8) 14)) % (sizeof(NU32)*8)));
				}
				goto LA44;
				LA43: ;
				{
					localerror_188080((*n).info, ((NU16) 28), ((NimStringDesc*) &TMP3256));
				}
				LA44: ;
			}
			LA34: ;
		}
		break;
		case ((NU16) 191):
		{
			onoff_280700(c, n, 1048576);
		}
		break;
		case ((NU16) 152):
		{
			onoff_280700(c, n, 2097152);
		}
		break;
		default:
		{
			result = NIM_TRUE;
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, processpush_281238)(Tcontext265020* c, Tnode215790* n, NI start) {
	Toptionentry265002* x;
	Toptionentry265002* y;
	Tlistentry135010* LOC5;
	{
		if (!((*(*n).kindU.S6.sons->data[(NI)(start - ((NI) 1))]).kind == ((NU8) 34))) goto LA3;
		localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3266));
	}
	LA3: ;
	x = newoptionentry_265172();
	y = ((Toptionentry265002*) ((*c).optionstack.tail));
	(*x).options = goptions_161119;
	(*x).defaultcc = (*y).defaultcc;
	asgnRef((void**) (&(*x).dynlib), (*y).dynlib);
	(*x).notes = gnotes_184080;
	LOC5 = 0;
	LOC5 = &x->Sup;
	append_135032((&(*c).optionstack), LOC5);
	{
		NI i_281267;
		NI HEX3Atmp_281281;
		NI LOC7;
		NI res_281284;
		i_281267 = 0;
		HEX3Atmp_281281 = 0;
		LOC7 = 0;
		LOC7 = sonslen_218351(n);
		HEX3Atmp_281281 = (NI)(LOC7 - ((NI) 1));
		res_281284 = start;
		{
			while (1) {
				if (!(res_281284 <= HEX3Atmp_281281)) goto LA9;
				i_281267 = res_281284;
				{
					NIM_BOOL LOC12;
					LOC12 = 0;
					LOC12 = processoption_281109(c, (*n).kindU.S6.sons->data[i_281267]);
					if (!LOC12) goto LA13;
					{
						if (!(*x).otherpragmas == 0) goto LA17;
						asgnRefNoCycle((void**) (&(*x).otherpragmas), newnodei_217248(((NU8) 90), (*n).info));
					}
					LA17: ;
					add_216114((*x).otherpragmas, (*n).kindU.S6.sons->data[i_281267]);
				}
				LA13: ;
				res_281284 += ((NI) 1);
			} LA9: ;
		}
	}
}

N_NIMCALL(void, processpop_281288)(Tcontext265020* c, Tnode215790* n) {
	{
		if (!((*c).optionstack.counter <= ((NI) 1))) goto LA3;
		localerror_188080((*n).info, ((NU16) 32), ((NimStringDesc*) &TMP3256));
	}
	goto LA1;
	LA3: ;
	{
		goptions_161119 = (*((Toptionentry265002*) ((*c).optionstack.tail))).options;
		gnotes_184080 = (*((Toptionentry265002*) ((*c).optionstack.tail))).notes;
		remove_135633((&(*c).optionstack), (*c).optionstack.tail);
	}
	LA1: ;
}

N_NIMCALL(void, processpragma_281537)(Tcontext265020* c, Tnode215790* n, NI i) {
	Tnode215790* it;
	Tsym215822* userpragma;
	Tnode215790* body;
	it = (*n).kindU.S6.sons->data[i];
	{
		if (!!(((*it).kind == ((NU8) 34)))) goto LA3;
		invalidpragma_280076(n);
	}
	goto LA1;
	LA3: ;
	{
		if (!!(((*(*it).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2)))) goto LA6;
		invalidpragma_280076(n);
	}
	goto LA1;
	LA6: ;
	{
		if (!!(((*(*it).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2)))) goto LA9;
		invalidpragma_280076(n);
	}
	goto LA1;
	LA9: ;
	LA1: ;
	userpragma = newsym_216684(((NU8) 17), (*(*it).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident, NIM_NIL, (*it).info);
	body = newnodei_217248(((NU8) 90), (*n).info);
	{
		NI j_281586;
		NI HEX3Atmp_281591;
		NI HEX3Atmp_281592;
		NI LOC12;
		NI res_281595;
		j_281586 = 0;
		HEX3Atmp_281591 = 0;
		HEX3Atmp_281592 = 0;
		HEX3Atmp_281591 = (NI)(i + ((NI) 1));
		LOC12 = 0;
		LOC12 = sonslen_218351(n);
		HEX3Atmp_281592 = (NI)(LOC12 - ((NI) 1));
		res_281595 = HEX3Atmp_281591;
		{
			while (1) {
				if (!(res_281595 <= HEX3Atmp_281592)) goto LA14;
				j_281586 = res_281595;
				addson_217807(body, (*n).kindU.S6.sons->data[j_281586]);
				res_281595 += ((NI) 1);
			} LA14: ;
		}
	}
	asgnRefNoCycle((void**) (&(*userpragma).ast), body);
	strtableadd_222061((&(*c).userpragmas), userpragma);
}

N_NIMCALL(void, processcodegendecl_280437)(Tcontext265020* c, Tnode215790* n, Tsym215822* sym) {
	asgnRefNoCycle((void**) (&(*sym).constraint), getstrlitnode_280379(c, n));
}

N_NIMCALL(Tnode215790*, semasmoremit_281380)(Tcontext265020* con, Tnode215790* n, NIM_CHAR marker) {
	Tnode215790* result;
{	result = 0;
	switch ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind) {
	case ((NU8) 20):
	case ((NU8) 21):
	case ((NU8) 22):
	{
		NU8 LOC2;
		Tnodeseq215784* LOC8;
		NimStringDesc* str;
		NI a;
		LOC2 = 0;
		{
			if (!((*n).kind == ((NU8) 89))) goto LA5;
			LOC2 = ((NU8) 89);
		}
		goto LA3;
		LA5: ;
		{
			LOC2 = ((NU8) 152);
		}
		LA3: ;
		LOC8 = 0;
		LOC8 = (Tnodeseq215784*) newSeq((&NTI215784), 0);
		result = newnode_217601(LOC2, (*n).info, LOC8, NIM_NIL);
		str = copyString((*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S3.strval);
		{
			if (!((str) && (str)->Sup.len == 0)) goto LA11;
			localerror_188080((*n).info, ((NU16) 33), ((NimStringDesc*) &TMP3256));
			goto BeforeRet;
		}
		LA11: ;
		a = ((NI) 0);
		{
			while (1) {
				NI b;
				NimStringDesc* sub;
				NI c;
				b = nsuFindChar(str, marker, ((NI) (a)));
				{
					if (!(b < ((NI) 0))) goto LA17;
					sub = copyStr(str, a);
				}
				goto LA15;
				LA17: ;
				{
					sub = copyStrLast(str, a, (NI)(b - ((NI) 1)));
				}
				LA15: ;
				{
					Tnode215790* LOC24;
					if (!!(((sub) && (sub)->Sup.len == 0))) goto LA22;
					LOC24 = 0;
					LOC24 = newstrnode_216678(((NU8) 20), sub);
					addson_217807(result, LOC24);
				}
				LA22: ;
				{
					if (!(b < ((NI) 0))) goto LA27;
					goto LA13;
				}
				LA27: ;
				c = nsuFindChar(str, marker, ((NI) ((NI)(b + ((NI) 1)))));
				{
					if (!(c < ((NI) 0))) goto LA31;
					sub = copyStr(str, (NI)(b + ((NI) 1)));
				}
				goto LA29;
				LA31: ;
				{
					sub = copyStrLast(str, (NI)(b + ((NI) 1)), (NI)(c - ((NI) 1)));
				}
				LA29: ;
				{
					Tsym215822* e;
					Tident190012* LOC38;
					if (!!(((sub) && (sub)->Sup.len == 0))) goto LA36;
					LOC38 = 0;
					LOC38 = getident_190441(sub);
					e = searchinscopes_270131(con, LOC38);
					{
						Tnode215790* LOC47;
						if (!!((e == NIM_NIL))) goto LA41;
						{
							if (!((*e).kind == ((NU8) 22))) goto LA45;
							loadstub_255825(e);
						}
						LA45: ;
						LOC47 = 0;
						LOC47 = newsymnode_217234(e);
						addson_217807(result, LOC47);
					}
					goto LA39;
					LA41: ;
					{
						Tnode215790* LOC49;
						LOC49 = 0;
						LOC49 = newstrnode_216678(((NU8) 20), sub);
						addson_217807(result, LOC49);
					}
					LA39: ;
				}
				goto LA34;
				LA36: ;
				{
					NimStringDesc* LOC51;
					Tnode215790* LOC52;
					LOC51 = 0;
					LOC51 = nimCharToStr(marker);
					LOC52 = 0;
					LOC52 = newstrnode_216678(((NU8) 20), LOC51);
					addson_217807(result, LOC52);
				}
				LA34: ;
				{
					if (!(c < ((NI) 0))) goto LA55;
					goto LA13;
				}
				LA55: ;
				a = (NI)(c + ((NI) 1));
			}
		} LA13: ;
	}
	break;
	default:
	{
		Tnodeseq215784* LOC58;
		illformedastlocal_265954(n);
		LOC58 = 0;
		LOC58 = (Tnodeseq215784*) newSeq((&NTI215784), 0);
		result = newnode_217601(((NU8) 89), (*n).info, LOC58, NIM_NIL);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, pragmaemit_281426)(Tcontext265020* c, Tnode215790* n) {
	Tnode215790* LOC1;
	LOC1 = 0;
	LOC1 = getstrlitnode_280379(c, n);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semasmoremit_281380(c, n, 96));
}

N_NIMCALL(void, pragmaunroll_281443)(Tcontext265020* c, Tnode215790* n) {
	{
		if (!((*(*c).p).nestedloopcounter <= ((NI) 0))) goto LA3;
		invalidpragma_280076(n);
	}
	goto LA1;
	LA3: ;
	{
		NI unrollfactor;
		if (!((*n).kind == ((NU8) 34))) goto LA6;
		unrollfactor = expectintlit_280403(c, n);
		{
			if (!((NU32)(unrollfactor) < (NU32)(((NI) 32)))) goto LA10;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), newintnode_216660(((NU8) 6), ((NI64) (unrollfactor))));
		}
		goto LA8;
		LA10: ;
		{
			invalidpragma_280076(n);
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	LA1: ;
}

N_NIMCALL(void, pragmaline_281467)(Tcontext265020* c, Tnode215790* n) {
	{
		Tnode215790* a;
		if (!((*n).kind == ((NU8) 34))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), (*c).semconstexpr(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		a = (*n).kindU.S6.sons->data[((NI) 1)];
		{
			Tnode215790* x;
			Tnode215790* y;
			if (!((*a).kind == ((NU8) 37))) goto LA7;
			x = (*a).kindU.S6.sons->data[((NI) 0)];
			y = (*a).kindU.S6.sons->data[((NI) 1)];
			{
				if (!((*x).kind == ((NU8) 34))) goto LA11;
				x = (*x).kindU.S6.sons->data[((NI) 1)];
			}
			LA11: ;
			{
				if (!((*y).kind == ((NU8) 34))) goto LA15;
				y = (*y).kindU.S6.sons->data[((NI) 1)];
			}
			LA15: ;
			{
				if (!!(((*x).kind == ((NU8) 20)))) goto LA19;
				localerror_188080((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3256));
			}
			goto LA17;
			LA19: ;
			{
				if (!!(((*y).kind == ((NU8) 6)))) goto LA22;
				localerror_188080((*n).info, ((NU16) 7), ((NimStringDesc*) &TMP3256));
			}
			goto LA17;
			LA22: ;
			{
				(*n).info.fileindex = fileinfoidx_184017((*x).kindU.S3.strval);
				(*n).info.line = ((NI16) ((*y).kindU.S1.intval));
			}
			LA17: ;
		}
		goto LA5;
		LA7: ;
		{
			localerror_188080((*n).info, ((NU16) 193), ((NimStringDesc*) &TMP3270));
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		(*n).info = getinfocontext_184242(((NI) -1));
	}
	LA1: ;
}

N_NIMCALL(void, processexc_281603)(Tcontext265020* c, Tnode215790* x) {
	Ttype215828* t;
	Ttype215828* LOC1;
	LOC1 = 0;
	LOC1 = (*c).semtypenode(c, x, NIM_NIL);
	t = skiptypes_219113(LOC1, IL64(211106247215360));
	{
		if (!!(((*t).kind == ((NU8) 17)))) goto LA4;
		localerror_188080((*x).info, ((NU16) 4), ((NimStringDesc*) &TMP3271));
	}
	LA4: ;
	asgnRefNoCycle((void**) (&(*x).typ), t);
}

N_NIMCALL(void, pragmaraisesortags_281599)(Tcontext265020* c, Tnode215790* n) {
	{
		Tnode215790* it;
		if (!((*n).kind == ((NU8) 34))) goto LA3;
		it = (*n).kindU.S6.sons->data[((NI) 1)];
		{
			if (!!(((*it).kind == ((NU8) 39) || (*it).kind == ((NU8) 41)))) goto LA7;
			processexc_281603(c, it);
		}
		goto LA5;
		LA7: ;
		{
			{
				Tnode215790* e_281639;
				e_281639 = 0;
				{
					NI i_281644;
					NI HEX3Atmp_281646;
					NI LOC12;
					NI res_281648;
					i_281644 = 0;
					HEX3Atmp_281646 = 0;
					LOC12 = 0;
					LOC12 = len_216059(it);
					HEX3Atmp_281646 = (LOC12 - 1);
					res_281648 = ((NI) 0);
					{
						while (1) {
							if (!(res_281648 <= HEX3Atmp_281646)) goto LA14;
							i_281644 = res_281648;
							e_281639 = (*it).kindU.S6.sons->data[i_281644];
							processexc_281603(c, e_281639);
							res_281648 += ((NI) 1);
						} LA14: ;
					}
				}
			}
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		invalidpragma_280076(n);
	}
	LA1: ;
}

N_NIMCALL(void, pragmalockstmt_281651)(Tcontext265020* c, Tnode215790* it) {
	{
		if (!!(((*it).kind == ((NU8) 34)))) goto LA3;
		invalidpragma_280076(it);
	}
	goto LA1;
	LA3: ;
	{
		Tnode215790* n;
		n = HEX5BHEX5D_216238(it, ((NI) 1));
		{
			if (!!(((*n).kind == ((NU8) 41)))) goto LA8;
			localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3272));
		}
		goto LA6;
		LA8: ;
		{
			{
				NI i_281692;
				NI HEX3Atmp_281696;
				NI LOC12;
				NI res_281699;
				i_281692 = 0;
				HEX3Atmp_281696 = 0;
				LOC12 = 0;
				LOC12 = len_216059(n);
				HEX3Atmp_281696 = (LOC12 - 1);
				res_281699 = ((NI) 0);
				{
					while (1) {
						if (!(res_281699 <= HEX3Atmp_281696)) goto LA14;
						i_281692 = res_281699;
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_281692]), (*c).semexpr(c, (*n).kindU.S6.sons->data[i_281692], 0));
						res_281699 += ((NI) 1);
					} LA14: ;
				}
			}
		}
		LA6: ;
	}
	LA1: ;
}

N_NIMCALL(NI16, pragmalocks_281703)(Tcontext265020* c, Tnode215790* it) {
	NI16 result;
	result = 0;
	{
		if (!!(((*it).kind == ((NU8) 34)))) goto LA3;
		invalidpragma_280076(it);
	}
	goto LA1;
	LA3: ;
	{
		{
			Tnode215790* LOC8;
			NI x;
			LOC8 = 0;
			LOC8 = HEX5BHEX5D_216238(it, ((NI) 1));
			if (!!(((*LOC8).kind == ((NU8) 23)))) goto LA9;
			x = expectintlit_280403(c, it);
			{
				NIM_BOOL LOC13;
				Tnode215790* LOC17;
				LOC13 = 0;
				LOC13 = (x < ((NI) 0));
				if (LOC13) goto LA14;
				LOC13 = (((NI) 1000) < x);
				LA14: ;
				if (!LOC13) goto LA15;
				LOC17 = 0;
				LOC17 = HEX5BHEX5D_216238(it, ((NI) 1));
				localerror_188085((*LOC17).info, ((NimStringDesc*) &TMP3273));
			}
			goto LA11;
			LA15: ;
			{
				result = ((NI16) (x));
			}
			LA11: ;
		}
		LA9: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym215822*, pragmaguard_281850)(Tcontext265020* c, Tnode215790* it, NU8 kind) {
	Tsym215822* result;
	Tnode215790* n;
{	result = 0;
	{
		if (!!(((*it).kind == ((NU8) 34)))) goto LA3;
		invalidpragma_280076(it);
		goto BeforeRet;
	}
	LA3: ;
	n = HEX5BHEX5D_216238(it, ((NI) 1));
	{
		if (!((*n).kind == ((NU8) 3))) goto LA7;
		result = (*n).kindU.S4.sym;
	}
	goto LA5;
	LA7: ;
	{
		if (!(kind == ((NU8) 18))) goto LA10;
		result = qualifiedlookup_270652(c, n, 0);
		{
			NIM_BOOL LOC14;
			NIM_BOOL LOC15;
			Tident190012* LOC20;
			LOC14 = 0;
			LOC15 = 0;
			LOC15 = result == 0;
			if (LOC15) goto LA16;
			LOC15 = !(((768 &(1U<<((NU)((*result).kind)&31U)))!=0));
			LA16: ;
			LOC14 = LOC15;
			if (LOC14) goto LA17;
			LOC14 = !((((*result).flags &(1U<<((NU)(((NU8) 3))&31U)))!=0));
			LA17: ;
			if (!LOC14) goto LA18;
			LOC20 = 0;
			LOC20 = considerquotedident_270004(n);
			result = newsym_216684(((NU8) 0), LOC20, NIM_NIL, (*n).info);
		}
		LA18: ;
	}
	goto LA5;
	LA10: ;
	{
		result = qualifiedlookup_270652(c, n, 2);
	}
	LA5: ;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, istoplevel_265966)(Tcontext265020* c) {
	NIM_BOOL result;
	result = 0;
	result = ((*(*c).currentscope).depthlevel <= ((NI) 2));
	return result;
}

N_NIMCALL(NIM_BOOL, singlepragma_281918)(Tcontext265020* c, Tsym215822* sym, Tnode215790* n, NI i, Tspecialwords197006 validpragmas) {
	NIM_BOOL result;
	Tnode215790* it;
	Tnode215790* key;
	Tident190012* ident;
	Tsym215822* userpragma;
{	result = 0;
	it = (*n).kindU.S6.sons->data[i];
	{
		if (!((*it).kind == ((NU8) 34))) goto LA3;
		key = (*it).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA3: ;
	{
		key = it;
	}
	LA1: ;
	{
		if (!((*key).kind == ((NU8) 42))) goto LA8;
		processnote_281000(c, it);
		goto BeforeRet;
	}
	LA8: ;
	ident = considerquotedident_270004(key);
	userpragma = strtableget_222066((*c).userpragmas, ident);
	{
		if (!!((userpragma == NIM_NIL))) goto LA12;
		(*c).instcounter += ((NI) 1);
		{
			if (!(((NI) 100) < (*c).instcounter)) goto LA16;
			globalerror_188071((*it).info, ((NU16) 26), (*(*userpragma).name).s);
		}
		LA16: ;
		pragma_280070(c, sym, (*userpragma).ast, validpragmas);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i]), (*userpragma).ast);
		(*c).instcounter -= ((NI) 1);
	}
	goto LA10;
	LA12: ;
	{
		NU16 k;
		k = whichkeyword_197362(ident);
		{
			if (!((validpragmas[(NU)(k)>>3] &(1U<<((NU)(k)&7U)))!=0)) goto LA21;
			switch (k) {
			case ((NU16) 93):
			{
				NimStringDesc* LOC24;
				LOC24 = 0;
				LOC24 = getoptionalstr_280422(c, it, ((NimStringDesc*) &TMP3257));
				makeexternexport_280221(sym, LOC24, (*it).info);
				(*sym).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
			}
			break;
			case ((NU16) 92):
			{
				NimStringDesc* LOC26;
				LOC26 = 0;
				LOC26 = getoptionalstr_280422(c, it, ((NimStringDesc*) &TMP3257));
				makeexternimport_280179(sym, LOC26);
			}
			break;
			case ((NU16) 91):
			{
				NimStringDesc* LOC28;
				LOC28 = 0;
				LOC28 = getoptionalstr_280422(c, it, ((NimStringDesc*) &TMP3257));
				processimportcompilerproc_280237(sym, LOC28);
			}
			break;
			case ((NU16) 208):
			{
				NimStringDesc* LOC30;
				LOC30 = 0;
				LOC30 = expectstrlit_280397(c, it);
				setexternname_280152(sym, LOC30);
			}
			break;
			case ((NU16) 84):
			{
				{
					if (!((196608 &(1U<<((NU)((*sym).kind)&31U)))!=0)) goto LA34;
					(*sym).flags |= ((NU32)1)<<((((NU8) 25))%(sizeof(NU32)*8));
				}
				goto LA32;
				LA34: ;
				{
					invalidpragma_280076(it);
				}
				LA32: ;
			}
			break;
			case ((NU16) 186):
			{
				{
					if (!((*sym).kind == ((NU8) 17))) goto LA40;
					(*sym).flags |= ((NU32)1)<<((((NU8) 9))%(sizeof(NU32)*8));
				}
				goto LA38;
				LA40: ;
				{
					invalidpragma_280076(it);
				}
				LA38: ;
			}
			break;
			case ((NU16) 89):
			{
				NimStringDesc* LOC44;
				LOC44 = 0;
				LOC44 = getoptionalstr_280422(c, it, ((NimStringDesc*) &TMP3257));
				processimportcpp_280274(sym, LOC44);
			}
			break;
			case ((NU16) 90):
			{
				NimStringDesc* LOC46;
				LOC46 = 0;
				LOC46 = getoptionalstr_280422(c, it, ((NimStringDesc*) &TMP3257));
				processimportobjc_280324(sym, LOC46);
			}
			break;
			case ((NU16) 97):
			{
				NI align;
				{
					if (!((*sym).typ == NIM_NIL)) goto LA50;
					invalidpragma_280076(it);
				}
				LA50: ;
				align = expectintlit_280403(c, it);
				{
					NIM_BOOL LOC54;
					NIM_BOOL LOC55;
					NIM_BOOL LOC56;
					LOC54 = 0;
					LOC55 = 0;
					LOC56 = 0;
					LOC56 = ispoweroftwo_156623(align);
					LOC55 = !(LOC56);
					if (!(LOC55)) goto LA57;
					LOC55 = !((align == ((NI) 0)));
					LA57: ;
					LOC54 = LOC55;
					if (LOC54) goto LA58;
					LOC54 = ((NU64)(IL64(32767)) < (NU64)(((NI64) (align))));
					LA58: ;
					if (!LOC54) goto LA59;
					localerror_188080((*it).info, ((NU16) 102), ((NimStringDesc*) &TMP3256));
				}
				goto LA52;
				LA59: ;
				{
					(*(*sym).typ).align = ((NI16) (align));
				}
				LA52: ;
			}
			break;
			case ((NU16) 159):
			{
				NI size;
				{
					if (!((*sym).typ == NIM_NIL)) goto LA65;
					invalidpragma_280076(it);
				}
				LA65: ;
				size = expectintlit_280403(c, it);
				{
					NIM_BOOL LOC69;
					NIM_BOOL LOC70;
					NIM_BOOL LOC71;
					LOC69 = 0;
					LOC70 = 0;
					LOC71 = 0;
					LOC71 = ispoweroftwo_156623(size);
					LOC70 = !(LOC71);
					if (LOC70) goto LA72;
					LOC70 = (size <= ((NI) 0));
					LA72: ;
					LOC69 = LOC70;
					if (LOC69) goto LA73;
					LOC69 = (((NI) 8) < size);
					LA73: ;
					if (!LOC69) goto LA74;
					localerror_188080((*it).info, ((NU16) 102), ((NimStringDesc*) &TMP3256));
				}
				goto LA67;
				LA74: ;
				{
					(*(*sym).typ).size = ((NI64) (size));
				}
				LA67: ;
			}
			break;
			case ((NU16) 98):
			{
				noval_281431(it);
				(*sym).loc.flags |= ((NU16)1)<<((((NU8) 3))%(sizeof(NU16)*8));
			}
			break;
			case ((NU16) 99):
			case ((NU16) 190):
			{
				noval_281431(it);
				{
					if (!!((sym == NIM_NIL))) goto LA81;
					{
						NIM_BOOL LOC85;
						LOC85 = 0;
						LOC85 = (k == ((NU16) 99));
						if (!(LOC85)) goto LA86;
						LOC85 = ((258048 &(1U<<((NU)((*sym).kind)&31U)))!=0);
						LA86: ;
						if (!LOC85) goto LA87;
						invalidpragma_280076(it);
					}
					goto LA83;
					LA87: ;
					{
						(*sym).flags |= ((NU32)1)<<((((NU8) 9))%(sizeof(NU32)*8));
					}
					LA83: ;
				}
				LA81: ;
			}
			break;
			case ((NU16) 241):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 7))%(sizeof(NU32)*8));
			}
			break;
			case ((NU16) 222):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 8))%(sizeof(NU32)*8));
			}
			break;
			case ((NU16) 188):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 22))%(sizeof(NU32)*8));
			}
			break;
			case ((NU16) 162):
			{
				pragmadeadcodeelim_280729(c, it);
			}
			break;
			case ((NU16) 164):
			{
				pragmanoforward_280755(c, it);
			}
			break;
			case ((NU16) 78):
			{
				processmagic_280443(c, it, sym);
			}
			break;
			case ((NU16) 167):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 23))%(sizeof(NU32)*8));
				(*sym).loc.flags |= ((NU16)1)<<((((NU8) 3))%(sizeof(NU16)*8));
			}
			break;
			case ((NU16) 192):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 3))%(sizeof(NU32)*8));
				(*sym).flags |= ((NU32)1)<<((((NU8) 9))%(sizeof(NU32)*8));
			}
			break;
			case ((NU16) 105):
			{
				noval_281431(it);
			}
			break;
			case ((NU16) 85):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 24))%(sizeof(NU32)*8));
			}
			break;
			case ((NU16) 101):
			{
				Tlib215808* lib;
				Tnode215790* LOC101;
				LOC101 = 0;
				LOC101 = getstrlitnode_280379(c, it);
				lib = getlib_280807(c, ((NU8) 0), LOC101);
				addtolib_265177(lib, sym);
				(*sym).flags |= ((NU32)1)<<((((NU8) 5))%(sizeof(NU32)*8));
				(*sym).loc.flags |= ((NU16)1)<<((((NU8) 6))%(sizeof(NU16)*8));
				(*sym).loc.flags |= ((NU16)1)<<((((NU8) 3))%(sizeof(NU16)*8));
				{
					if (!((*sym).loc.r == NIM_NIL)) goto LA104;
					asgnRefNoCycle((void**) (&(*sym).loc.r), rope_170277((*(*sym).name).s));
				}
				LA104: ;
			}
			break;
			case ((NU16) 86):
			{
				(*sym).flags |= ((NU32)1)<<((((NU8) 30))%(sizeof(NU32)*8));
				{
					NimStringDesc* LOC109;
					LOC109 = 0;
					LOC109 = nsuNormalize((*(*sym).name).s);
					if (!!(eqStrings(LOC109, ((NimStringDesc*) &TMP3258)))) goto LA110;
					localerror_188080((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3259));
				}
				LA110: ;
			}
			break;
			case ((NU16) 88):
			{
				(*sym).flags |= ((NU32)1)<<((((NU8) 30))%(sizeof(NU32)*8));
			}
			break;
			case ((NU16) 102):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 10))%(sizeof(NU32)*8));
				{
					if (!!(((*sym).typ == NIM_NIL))) goto LA116;
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 1))%(sizeof(NU32)*8));
				}
				LA116: ;
			}
			break;
			case ((NU16) 100):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 11))%(sizeof(NU32)*8));
			}
			break;
			case ((NU16) 104):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 14))%(sizeof(NU32)*8));
			}
			break;
			case ((NU16) 107):
			{
				processdynlib_280908(c, it, sym);
			}
			break;
			case ((NU16) 108):
			{
				noval_281431(it);
				{
					if (!!((((*sym).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0))) goto LA124;
					markcompilerproc_281762(sym);
				}
				LA124: ;
			}
			break;
			case ((NU16) 109):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
			}
			break;
			case ((NU16) 126):
			{
				{
					if (!((*it).kind == ((NU8) 34))) goto LA130;
					deprecatedstmt_281788(c, it);
				}
				goto LA128;
				LA130: ;
				{
					if (!!((sym == NIM_NIL))) goto LA133;
					(*sym).flags |= ((NU32)1)<<((((NU8) 19))%(sizeof(NU32)*8));
				}
				goto LA128;
				LA133: ;
				{
					(*(*c).module).flags |= ((NU32)1)<<((((NU8) 19))%(sizeof(NU32)*8));
				}
				LA128: ;
			}
			break;
			case ((NU16) 127):
			{
				noval_281431(it);
				{
					if (!((*sym).typ == NIM_NIL)) goto LA139;
					invalidpragma_280076(it);
				}
				goto LA137;
				LA139: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				}
				LA137: ;
			}
			break;
			case ((NU16) 171):
			{
				{
					if (!((*sym).kind == ((NU8) 7))) goto LA145;
					typeborrow_281727(sym, it);
				}
				goto LA143;
				LA145: ;
				{
					noval_281431(it);
					(*sym).flags |= ((NU32)1)<<((((NU8) 26))%(sizeof(NU32)*8));
				}
				LA143: ;
			}
			break;
			case ((NU16) 80):
			{
				noval_281431(it);
				{
					if (!((*sym).typ == NIM_NIL)) goto LA151;
					invalidpragma_280076(it);
				}
				goto LA149;
				LA151: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 2))%(sizeof(NU32)*8));
				}
				LA149: ;
			}
			break;
			case ((NU16) 187):
			{
				noval_281431(it);
				{
					NIM_BOOL LOC157;
					LOC157 = 0;
					LOC157 = ((*sym).typ == NIM_NIL);
					if (LOC157) goto LA158;
					LOC157 = (((*(*sym).typ).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0);
					LA158: ;
					if (!LOC157) goto LA159;
					invalidpragma_280076(it);
				}
				goto LA155;
				LA159: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 3))%(sizeof(NU32)*8));
				}
				LA155: ;
			}
			break;
			case ((NU16) 176):
			{
				noval_281431(it);
				{
					if (!((*sym).typ == NIM_NIL)) goto LA165;
					invalidpragma_280076(it);
				}
				goto LA163;
				LA165: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 4))%(sizeof(NU32)*8));
				}
				LA163: ;
			}
			break;
			case ((NU16) 177):
			{
				noval_281431(it);
				{
					if (!((*sym).typ == NIM_NIL)) goto LA171;
					invalidpragma_280076(it);
				}
				goto LA169;
				LA171: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 6))%(sizeof(NU32)*8));
				}
				LA169: ;
			}
			break;
			case ((NU16) 79):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 22))%(sizeof(NU32)*8));
				(*sym).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
				{
					if (!!(((*sym).typ == NIM_NIL))) goto LA177;
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 7))%(sizeof(NU32)*8));
				}
				LA177: ;
			}
			break;
			case ((NU16) 103):
			{
				noval_281431(it);
				{
					if (!!(((*sym).kind == ((NU8) 7)))) goto LA182;
					(*sym).flags |= ((NU32)1)<<((((NU8) 22))%(sizeof(NU32)*8));
				}
				LA182: ;
				{
					if (!!(((*sym).typ == NIM_NIL))) goto LA186;
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 7))%(sizeof(NU32)*8));
				}
				goto LA184;
				LA186: ;
				{
					invalidpragma_280076(it);
				}
				LA184: ;
			}
			break;
			case ((NU16) 237):
			{
				noval_281431(it);
				{
					if (!((*sym).typ == NIM_NIL)) goto LA192;
					invalidpragma_280076(it);
				}
				goto LA190;
				LA192: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 21))%(sizeof(NU32)*8));
				}
				LA190: ;
			}
			break;
			case ((NU16) 114):
			{
				NimStringDesc* LOC196;
				LOC196 = 0;
				LOC196 = expectstrlit_280397(c, it);
				message_188095((*it).info, ((NU16) 290), LOC196);
			}
			break;
			case ((NU16) 113):
			{
				NimStringDesc* LOC198;
				LOC198 = 0;
				LOC198 = expectstrlit_280397(c, it);
				message_188095((*it).info, ((NU16) 267), LOC198);
			}
			break;
			case ((NU16) 112):
			{
				{
					NIM_BOOL LOC202;
					LOC202 = 0;
					LOC202 = !((sym == NIM_NIL));
					if (!(LOC202)) goto LA203;
					LOC202 = isroutine_220396(sym);
					LA203: ;
					if (!LOC202) goto LA204;
					noval_281431(it);
					(*sym).flags |= ((NU32)1)<<((((NU8) 20))%(sizeof(NU32)*8));
				}
				goto LA200;
				LA204: ;
				{
					NimStringDesc* LOC207;
					LOC207 = 0;
					LOC207 = expectstrlit_280397(c, it);
					localerror_188080((*it).info, ((NU16) 236), LOC207);
				}
				LA200: ;
			}
			break;
			case ((NU16) 111):
			{
				NimStringDesc* LOC209;
				LOC209 = 0;
				LOC209 = expectstrlit_280397(c, it);
				fatal_188066((*it).info, ((NU16) 236), LOC209);
			}
			break;
			case ((NU16) 118):
			{
				processdefine_281293(c, it);
			}
			break;
			case ((NU16) 119):
			{
				processundef_281318(c, it);
			}
			break;
			case ((NU16) 124):
			{
				processcompile_281347(c, it);
			}
			break;
			case ((NU16) 123):
			{
				processcommonlink_281354(c, it, ((NU8) 0));
			}
			break;
			case ((NU16) 125):
			{
				processcommonlink_281354(c, it, ((NU8) 1));
			}
			break;
			case ((NU16) 170):
			{
				NimStringDesc* LOC216;
				LOC216 = 0;
				LOC216 = expectstrlit_280397(c, it);
				addlinkoption_195826(LOC216);
			}
			break;
			case ((NU16) 169):
			{
				NimStringDesc* LOC218;
				LOC218 = 0;
				LOC218 = expectstrlit_280397(c, it);
				addcompileoption_195830(LOC218);
			}
			break;
			case ((NU16) 129):
			{
				pragmabreakpoint_281361(c, it);
			}
			break;
			case ((NU16) 174):
			{
				pragmawatchpoint_281365(c, it);
			}
			break;
			case ((NU16) 116):
			{
				processpush_281238(c, n, (NI)(i + ((NI) 1)));
				result = NIM_TRUE;
			}
			break;
			case ((NU16) 117):
			{
				processpop_281288(c, it);
			}
			break;
			case ((NU16) 166):
			{
				processpragma_281537(c, n, i);
				result = NIM_TRUE;
			}
			break;
			case ((NU16) 172):
			{
				noval_281431(it);
				{
					if (!!((sym == NIM_NIL))) goto LA227;
					(*sym).flags |= ((NU32)1)<<((((NU8) 29))%(sizeof(NU32)*8));
				}
				LA227: ;
			}
			break;
			case ((NU16) 168):
			{
				noval_281431(it);
				{
					if (!!((sym == NIM_NIL))) goto LA232;
					(*sym).flags |= ((NU32)1)<<((((NU8) 12))%(sizeof(NU32)*8));
				}
				LA232: ;
			}
			break;
			case ((NU16) 193):
			{
				processcodegendecl_280437(c, it, sym);
			}
			break;
			case ((NU16) 143):
			case ((NU16) 82):
			case ((NU16) 173):
			case ((NU16) 144):
			case ((NU16) 145):
			case ((NU16) 146):
			case ((NU16) 147):
			case ((NU16) 151):
			case ((NU16) 153):
			case ((NU16) 154):
			case ((NU16) 120):
			case ((NU16) 121):
			case ((NU16) 122):
			case ((NU16) 155):
			case ((NU16) 128):
			case ((NU16) 130):
			case ((NU16) 81):
			case ((NU16) 148):
			case ((NU16) 149):
			case ((NU16) 150):
			case ((NU16) 152):
			{
				{
					NIM_BOOL LOC238;
					LOC238 = 0;
					LOC238 = processoption_281109(c, it);
					if (!LOC238) goto LA239;
					localerror_188080((*it).info, ((NU16) 153), ((NimStringDesc*) &TMP3256));
				}
				LA239: ;
			}
			break;
			case ((NU16) 131) ... ((NU16) 140):
			{
				{
					if (!((*sym).typ == NIM_NIL)) goto LA244;
					invalidpragma_280076(it);
				}
				goto LA242;
				LA244: ;
				{
					(*(*sym).typ).callconv = wordtocallconv_280642(k);
				}
				LA242: ;
			}
			break;
			case ((NU16) 189):
			{
				pragmaemit_281426(c, it);
			}
			break;
			case ((NU16) 178):
			{
				pragmaunroll_281443(c, it);
			}
			break;
			case ((NU16) 179):
			case ((NU16) 180):
			{
				noval_281431(it);
			}
			break;
			case ((NU16) 160):
			{
				noval_281431(it);
			}
			break;
			case ((NU16) 95):
			{
				noval_281431(it);
				{
					if (!((*sym).typ == NIM_NIL)) goto LA254;
					invalidpragma_280076(it);
				}
				goto LA252;
				LA254: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				}
				LA252: ;
			}
			break;
			case ((NU16) 194):
			{
				noval_281431(it);
				{
					if (!((*sym).typ == NIM_NIL)) goto LA260;
					invalidpragma_280076(it);
				}
				goto LA258;
				LA260: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				}
				LA258: ;
			}
			break;
			case ((NU16) 236):
			{
				noval_281431(it);
				{
					if (!((*sym).typ == NIM_NIL)) goto LA266;
					invalidpragma_280076(it);
				}
				goto LA264;
				LA266: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 1))%(sizeof(NU32)*8));
				}
				LA264: ;
			}
			break;
			case ((NU16) 96):
			{
				noval_281431(it);
				{
					if (!((*sym).typ == NIM_NIL)) goto LA272;
					invalidpragma_280076(it);
				}
				goto LA270;
				LA272: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
				}
				LA270: ;
			}
			break;
			case ((NU16) 258):
			{
				noval_281431(it);
				{
					NIM_BOOL LOC278;
					LOC278 = 0;
					LOC278 = (sym == NIM_NIL);
					if (LOC278) goto LA279;
					LOC278 = ((*sym).typ == NIM_NIL);
					LA279: ;
					if (!LOC278) goto LA280;
					{
						NIM_BOOL LOC284;
						LOC284 = 0;
						LOC284 = processoption_281109(c, it);
						if (!LOC284) goto LA285;
						localerror_188080((*it).info, ((NU16) 153), ((NimStringDesc*) &TMP3256));
					}
					LA285: ;
				}
				goto LA276;
				LA280: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 13))%(sizeof(NU32)*8));
				}
				LA276: ;
			}
			break;
			case ((NU16) 257):
			{
				noval_281431(it);
				{
					NIM_BOOL LOC291;
					LOC291 = 0;
					LOC291 = !(((*sym).kind == ((NU8) 7)));
					if (LOC291) goto LA292;
					LOC291 = ((*sym).typ == NIM_NIL);
					LA292: ;
					if (!LOC291) goto LA293;
					invalidpragma_280076(it);
				}
				goto LA289;
				LA293: ;
				{
					(*(*sym).typ).flags |= ((NU32)1)<<((((NU8) 12))%(sizeof(NU32)*8));
				}
				LA289: ;
			}
			break;
			case ((NU16) 185):
			case ((NU16) 184):
			{
				noval_281431(it);
				{
					if (!(sym == NIM_NIL)) goto LA299;
					invalidpragma_280076(it);
				}
				LA299: ;
			}
			break;
			case ((NU16) 115):
			{
				pragmaline_281467(c, it);
			}
			break;
			case ((NU16) 156):
			case ((NU16) 161):
			{
				pragmaraisesortags_281599(c, it);
			}
			break;
			case ((NU16) 196):
			{
				{
					if (!(sym == NIM_NIL)) goto LA306;
					pragmalockstmt_281651(c, it);
				}
				goto LA304;
				LA306: ;
				{
					if (!((*sym).typ == NIM_NIL)) goto LA309;
					invalidpragma_280076(it);
				}
				goto LA304;
				LA309: ;
				{
					(*(*sym).typ).locklevel = pragmalocks_281703(c, it);
				}
				LA304: ;
			}
			break;
			case ((NU16) 260):
			{
				{
					NIM_BOOL LOC315;
					NIM_BOOL LOC316;
					LOC315 = 0;
					LOC316 = 0;
					LOC316 = (sym == NIM_NIL);
					if (LOC316) goto LA317;
					LOC316 = !(((*sym).kind == ((NU8) 18)));
					LA317: ;
					LOC315 = LOC316;
					if (LOC315) goto LA318;
					LOC315 = !(((*it).kind == ((NU8) 34)));
					LA318: ;
					if (!LOC315) goto LA319;
					invalidpragma_280076(it);
				}
				goto LA313;
				LA319: ;
				{
					(*sym).kindU.S4.bitsize = expectintlit_280403(c, it);
				}
				LA313: ;
			}
			break;
			case ((NU16) 195):
			{
				{
					NIM_BOOL LOC325;
					LOC325 = 0;
					LOC325 = (sym == NIM_NIL);
					if (LOC325) goto LA326;
					LOC325 = !(((262912 &(1U<<((NU)((*sym).kind)&31U)))!=0));
					LA326: ;
					if (!LOC325) goto LA327;
					invalidpragma_280076(it);
				}
				goto LA323;
				LA327: ;
				{
					asgnRefNoCycle((void**) (&(*sym).kindU.S4.guard), pragmaguard_281850(c, it, (*sym).kind));
				}
				LA323: ;
			}
			break;
			case ((NU16) 212):
			{
				{
					NIM_BOOL LOC333;
					LOC333 = 0;
					LOC333 = (sym == NIM_NIL);
					if (LOC333) goto LA334;
					LOC333 = !(((768 &(1U<<((NU)((*sym).kind)&31U)))!=0));
					LA334: ;
					if (!LOC333) goto LA335;
					invalidpragma_280076(it);
				}
				goto LA331;
				LA335: ;
				{
					(*sym).flags |= ((NU32)1)<<((((NU8) 30))%(sizeof(NU32)*8));
				}
				LA331: ;
			}
			break;
			case ((NU16) 94):
			{
				{
					if (!(sym == NIM_NIL)) goto LA341;
					invalidpragma_280076(it);
				}
				goto LA339;
				LA341: ;
				{
					registernimscriptsymbol_259799(sym);
				}
				LA339: ;
			}
			break;
			case ((NU16) 181):
			{
				{
					if (!!(((*it).kind == ((NU8) 34)))) goto LA347;
					localerror_188080((*it).info, ((NU16) 62), ((NimStringDesc*) &TMP3256));
				}
				goto LA345;
				LA347: ;
				{
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), (*c).semexpr(c, (*it).kindU.S6.sons->data[((NI) 1)], 0));
				}
				LA345: ;
			}
			break;
			case ((NU16) 182):
			{
				noval_281431(it);
				{
					NIM_BOOL LOC353;
					LOC353 = 0;
					LOC353 = istoplevel_265966(c);
					if (!LOC353) goto LA354;
					(*(*c).module).flags |= ((NU32)1)<<((((NU8) 30))%(sizeof(NU32)*8));
				}
				goto LA351;
				LA354: ;
				{
					localerror_188085((*it).info, ((NimStringDesc*) &TMP3278));
				}
				LA351: ;
			}
			break;
			case ((NU16) 165):
			{
				noval_281431(it);
			}
			break;
			case ((NU16) 110):
			{
				noval_281431(it);
				(*sym).flags |= ((NU32)1)<<((((NU8) 18))%(sizeof(NU32)*8));
			}
			break;
			default:
			{
				invalidpragma_280076(it);
			}
			break;
			}
		}
		goto LA19;
		LA21: ;
		{
			invalidpragma_280076(it);
		}
		LA19: ;
	}
	LA10: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, pragmarec_283639)(Tcontext265020* c, Tsym215822* sym, Tnode215790* n, Tspecialwords197006 validpragmas) {
{	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		NI i_283668;
		NI HEX3Atmp_283681;
		NI LOC6;
		NI res_283684;
		i_283668 = 0;
		HEX3Atmp_283681 = 0;
		LOC6 = 0;
		LOC6 = sonslen_218351(n);
		HEX3Atmp_283681 = (NI)(LOC6 - ((NI) 1));
		res_283684 = ((NI) 0);
		{
			while (1) {
				if (!(res_283684 <= HEX3Atmp_283681)) goto LA8;
				i_283668 = res_283684;
				{
					if (!((*(*n).kindU.S6.sons->data[i_283668]).kind == ((NU8) 90))) goto LA11;
					pragmarec_283639(c, sym, (*n).kindU.S6.sons->data[i_283668], validpragmas);
				}
				goto LA9;
				LA11: ;
				{
					NIM_BOOL LOC14;
					LOC14 = 0;
					LOC14 = singlepragma_281918(c, sym, n, i_283668, validpragmas);
					if (!LOC14) goto LA15;
					goto LA5;
				}
				goto LA9;
				LA15: ;
				LA9: ;
				res_283684 += ((NI) 1);
			} LA8: ;
		}
	} LA5: ;
	}BeforeRet: ;
}

N_NIMCALL(void, implicitpragmas_283153)(Tcontext265020* c, Tsym215822* sym, Tnode215790* n, Tspecialwords197006 validpragmas) {
	{
		NIM_BOOL LOC3;
		Toptionentry265002* it;
		Tlib215808* lib;
		LOC3 = 0;
		LOC3 = !((sym == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*sym).kind == ((NU8) 6)));
		LA4: ;
		if (!LOC3) goto LA5;
		it = ((Toptionentry265002*) ((*c).optionstack.head));
		{
			while (1) {
				Tnode215790* o;
				if (!!((it == NIM_NIL))) goto LA8;
				o = (*it).otherpragmas;
				{
					if (!!(o == 0)) goto LA11;
					pushinfocontext_184209((*n).info);
					{
						NI i_283214;
						NI HEX3Atmp_283317;
						NI LOC14;
						NI res_283320;
						i_283214 = 0;
						HEX3Atmp_283317 = 0;
						LOC14 = 0;
						LOC14 = sonslen_218351(o);
						HEX3Atmp_283317 = (NI)(LOC14 - ((NI) 1));
						res_283320 = ((NI) 0);
						{
							while (1) {
								if (!(res_283320 <= HEX3Atmp_283317)) goto LA16;
								i_283214 = res_283320;
								{
									NIM_BOOL LOC19;
									LOC19 = 0;
									LOC19 = singlepragma_281918(c, sym, o, i_283214, validpragmas);
									if (!LOC19) goto LA20;
									internalerror_188100((*n).info, ((NimStringDesc*) &TMP3279));
								}
								LA20: ;
								res_283320 += ((NI) 1);
							} LA16: ;
						}
					}
					popinfocontext_184222();
				}
				LA11: ;
				it = ((Toptionentry265002*) ((*it).Sup.next));
			} LA8: ;
		}
		{
			NIM_BOOL LOC24;
			LOC24 = 0;
			LOC24 = (((*sym).loc.flags &(1U<<((NU)(((NU8) 5))&15U)))!=0);
			if (!(LOC24)) goto LA25;
			LOC24 = !((((*sym).flags &(1U<<((NU)(((NU8) 6))&31U)))!=0));
			LA25: ;
			if (!LOC24) goto LA26;
			localerror_188080((*n).info, ((NU16) 83), ((NimStringDesc*) &TMP3256));
		}
		LA26: ;
		lib = (*((Toptionentry265002*) ((*c).optionstack.tail))).dynlib;
		{
			NIM_BOOL LOC30;
			NIM_BOOL LOC31;
			LOC30 = 0;
			LOC31 = 0;
			LOC31 = ((80 & (*sym).loc.flags) == 0);
			if (!(LOC31)) goto LA32;
			LOC31 = (((*sym).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0);
			LA32: ;
			LOC30 = LOC31;
			if (!(LOC30)) goto LA33;
			LOC30 = !((lib == NIM_NIL));
			LA33: ;
			if (!LOC30) goto LA34;
			(*sym).loc.flags |= ((NU16)1)<<((((NU8) 4))%(sizeof(NU16)*8));
			addtolib_265177(lib, sym);
			{
				if (!((*sym).loc.r == NIM_NIL)) goto LA38;
				asgnRefNoCycle((void**) (&(*sym).loc.r), rope_170277((*(*sym).name).s));
			}
			LA38: ;
		}
		LA34: ;
	}
	LA5: ;
}

N_NIMCALL(void, pragma_280070)(Tcontext265020* c, Tsym215822* sym, Tnode215790* n, Tspecialwords197006 validpragmas) {
{	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	pragmarec_283639(c, sym, n, validpragmas);
	implicitpragmas_283153(c, sym, n, validpragmas);
	}BeforeRet: ;
}

N_NIMCALL(NIM_BOOL, haspragma_283324)(Tnode215790* n, NU16 pragma) {
	NIM_BOOL result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (n == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = HEX3DHEX3D_283344((*n).kindU.S6.sons, NIM_NIL);
		LA4: ;
		if (!LOC3) goto LA5;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA5: ;
	{
		Tnode215790* p_283602;
		Tnodeseq215784* HEX3Atmp_283633;
		NI i_283636;
		NI L_283638;
		p_283602 = 0;
		HEX3Atmp_283633 = 0;
		HEX3Atmp_283633 = (*n).kindU.S6.sons;
		i_283636 = ((NI) 0);
		L_283638 = (HEX3Atmp_283633 ? HEX3Atmp_283633->Sup.len : 0);
		{
			while (1) {
				Tnode215790* key;
				if (!(i_283636 < L_283638)) goto LA9;
				p_283602 = HEX3Atmp_283633->data[i_283636];
				{
					if (!((*p_283602).kind == ((NU8) 34))) goto LA12;
					key = HEX5BHEX5D_216238(p_283602, ((NI) 0));
				}
				goto LA10;
				LA12: ;
				{
					key = p_283602;
				}
				LA10: ;
				{
					NIM_BOOL LOC17;
					NU16 LOC19;
					LOC17 = 0;
					LOC17 = ((*key).kind == ((NU8) 2));
					if (!(LOC17)) goto LA18;
					LOC19 = 0;
					LOC19 = whichkeyword_197362((*key).kindU.S5.ident);
					LOC17 = (LOC19 == pragma);
					LA18: ;
					if (!LOC17) goto LA20;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA20: ;
				i_283636 += ((NI) 1);
			} LA9: ;
		}
	}
	result = NIM_FALSE;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_CHAR, pragmaasm_280080)(Tcontext265020* c, Tnode215790* n) {
	NIM_CHAR result;
	result = 0;
	result = 0;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		{
			NI i_280108;
			NI HEX3Atmp_280145;
			NI LOC6;
			NI res_280148;
			i_280108 = 0;
			HEX3Atmp_280145 = 0;
			LOC6 = 0;
			LOC6 = sonslen_218351(n);
			HEX3Atmp_280145 = (NI)(LOC6 - ((NI) 1));
			res_280148 = ((NI) 0);
			{
				while (1) {
					Tnode215790* it;
					if (!(res_280148 <= HEX3Atmp_280145)) goto LA8;
					i_280108 = res_280148;
					it = (*n).kindU.S6.sons->data[i_280108];
					{
						NIM_BOOL LOC11;
						NU16 LOC15;
						LOC11 = 0;
						LOC11 = ((*it).kind == ((NU8) 34));
						if (!(LOC11)) goto LA12;
						LOC11 = ((*(*it).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2));
						LA12: ;
						if (!LOC11) goto LA13;
						LOC15 = 0;
						LOC15 = whichkeyword_197362((*(*it).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident);
						switch (LOC15) {
						case ((NU16) 175):
						{
							{
								if (!((*(*it).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 5))) goto LA19;
								result = ((NIM_CHAR) (((NI) (((NI) ((*(*it).kindU.S6.sons->data[((NI) 1)]).kindU.S1.intval))))));
							}
							goto LA17;
							LA19: ;
							{
								invalidpragma_280076(it);
							}
							LA17: ;
						}
						break;
						default:
						{
							invalidpragma_280076(it);
						}
						break;
						}
					}
					goto LA9;
					LA13: ;
					{
						invalidpragma_280076(it);
					}
					LA9: ;
					res_280148 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	LA3: ;
	return result;
}
NIM_EXTERNC N_NOINLINE(void, compiler_pragmasInit000)(void) {
}

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

