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

#include <string.h>
typedef struct Tcontext245023 Tcontext245023;
typedef struct Tsym191843 Tsym191843;
typedef struct Tnode191813 Tnode191813;
typedef struct Ttype191849 Ttype191849;
typedef struct Tlineinfo164338 Tlineinfo164338;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tident168021 Tident168021;
typedef struct Tnodeseq191807 Tnodeseq191807;
typedef struct Tstrtable191817 Tstrtable191817;
typedef struct Tsymseq191815 Tsymseq191815;
typedef struct Tpasscontext242005 Tpasscontext242005;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Tscope191837 Tscope191837;
typedef struct Tproccon245011 Tproccon245011;
typedef struct Intset188056 Intset188056;
typedef struct Ttrunk188052 Ttrunk188052;
typedef struct Ttrunkseq188054 Ttrunkseq188054;
typedef struct Tlinkedlist130028 Tlinkedlist130028;
typedef struct Tlistentry130022 Tlistentry130022;
typedef struct Tidtable191861 Tidtable191861;
typedef struct Tidpairseq191859 Tidpairseq191859;
typedef struct Tctx244048 Tctx244048;
typedef struct TY245141 TY245141;
typedef struct Tidobj168015 Tidobj168015;
typedef struct Ttypeseq191845 Ttypeseq191845;
typedef struct TY191944 TY191944;
typedef struct Tloc191827 Tloc191827;
typedef struct Ropeobj162009 Ropeobj162009;
typedef struct Tlib191831 Tlib191831;
typedef struct Tcell46346 Tcell46346;
typedef struct Tcellseq46362 Tcellseq46362;
typedef struct Tgcheap48216 Tgcheap48216;
typedef struct Tcellset46358 Tcellset46358;
typedef struct Tpagedesc46354 Tpagedesc46354;
typedef struct Tmemregion28210 Tmemregion28210;
typedef struct Tsmallchunk27440 Tsmallchunk27440;
typedef struct Tllchunk28204 Tllchunk28204;
typedef struct Tbigchunk27442 Tbigchunk27442;
typedef struct Tintset27417 Tintset27417;
typedef struct Ttrunk27413 Ttrunk27413;
typedef struct Tavlnode28208 Tavlnode28208;
typedef struct Tgcstat48214 Tgcstat48214;
typedef struct Toptionentry245005 Toptionentry245005;
typedef struct TY119589 TY119589;
typedef struct Tinfocc171011 Tinfocc171011;
typedef struct Tidpair191857 Tidpair191857;
typedef struct TY244253 TY244253;
typedef struct TY165036 TY165036;
typedef struct PprocHEX3Aobjecttype244232 PprocHEX3Aobjecttype244232;
typedef struct TY244272 TY244272;
typedef struct Tinstantiationpair245013 Tinstantiationpair245013;
typedef struct Tinstantiation191833 Tinstantiation191833;
typedef struct Tbasechunk27438 Tbasechunk27438;
typedef struct Tfreecell27430 Tfreecell27430;
typedef struct TY244233 TY244233;
typedef struct TY244239 TY244239;
typedef struct TY244273 TY244273;
typedef struct Vmargs244042 Vmargs244042;
typedef struct TY191933 TY191933;
typedef struct Tblock244030 Tblock244030;
typedef struct TY244213 TY244213;
typedef NU8 Tspecialwords173012[33];
struct  Tlineinfo164338  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tnode191813  {
Ttype191849* typ;
Tlineinfo164338 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym191843* sym;
} S4;
struct {Tident168021* ident;
} S5;
struct {Tnodeseq191807* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
struct  Tstrtable191817  {
NI counter;
Tsymseq191815* data;
};
typedef N_NIMCALL_PTR(void, TY3289) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3294) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3289 marker;
TY3294 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tpasscontext242005  {
  TNimObject Sup;
NIM_BOOL fromcache;
};
struct  Intset188056  {
NI counter;
NI max;
Ttrunk188052* head;
Ttrunkseq188054* data;
};
struct  Tlinkedlist130028  {
Tlistentry130022* head;
Tlistentry130022* tail;
NI counter;
};
struct  Tidtable191861  {
NI counter;
Tidpairseq191859* data;
};
typedef N_NIMCALL_PTR(Tnode191813*, TY245072) (Tcontext245023* c, Tnode191813* n);
typedef N_NIMCALL_PTR(Tnode191813*, TY245077) (Tcontext245023* c, Tnode191813* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode191813*, TY245085) (Tcontext245023* c, Tnode191813* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode191813*, TY245093) (Tcontext245023* c, Tnode191813* n);
typedef N_NIMCALL_PTR(Tnode191813*, TY245098) (Tcontext245023* c, Tnode191813* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode191813*, TY245106) (Tcontext245023* c, Tnode191813* n);
typedef N_NIMCALL_PTR(Tnode191813*, TY245111) (Tcontext245023* c, Tnode191813* n, Tnode191813* norig, NU32 filter);
typedef N_NIMCALL_PTR(Ttype191849*, TY245118) (Tcontext245023* c, Tnode191813* n, Ttype191849* prev);
typedef struct {
N_NIMCALL_PTR(Tnode191813*, ClPrc) (Tcontext245023* c, Tidtable191861 pt, Tnode191813* n, void* ClEnv);
void* ClEnv;
} TY245124;
typedef struct {
N_NIMCALL_PTR(Tsym191843*, ClPrc) (Tcontext245023* c, Tsym191843* fn, Tidtable191861 pt, Tlineinfo164338 info, void* ClEnv);
void* ClEnv;
} TY245130;
typedef N_NIMCALL_PTR(Tsym191843*, TY245146) (Tcontext245023* c, Tsym191843* dc, Ttype191849* t, Tlineinfo164338 info, NU8 op);
struct  Tcontext245023  {
  Tpasscontext242005 Sup;
Tsym191843* module;
Tscope191837* currentscope;
Tscope191837* importtable;
Tscope191837* toplevelscope;
Tproccon245011* p;
Tsymseq191815* friendmodules;
NI instcounter;
Intset188056 ambiguoussymbols;
NI intypeclass;
NI ingenericcontext;
NI inunrolledcontext;
NI incompilescontext;
NI ingenericinst;
Tsymseq191815* converters;
Tsymseq191815* patterns;
Tlinkedlist130028 optionstack;
Tidtable191861 symmapping;
Tlinkedlist130028 libs;
TY245072 semconstexpr;
TY245077 semexpr;
TY245085 semtryexpr;
TY245093 semtryconstexpr;
TY245098 semoperand;
TY245106 semconstboolexpr;
TY245111 semoverloadedcall;
TY245118 semtypenode;
TY245124 seminferredlambda;
TY245130 semgenerateinstance;
Intset188056 includedfiles;
Tstrtable191817 userpragmas;
Tctx244048* evalcontext;
Intset188056 unknownidents;
TY245141* generics;
NI lastgenericidx;
NI hloloopdetector;
NI inparallelstmt;
TY245146 insttypeboundop;
};
struct  Tidobj168015  {
  TNimObject Sup;
NI id;
};
struct  Tloc191827  {
NU8 k;
NU8 s;
NU16 flags;
Ttype191849* t;
Ropeobj162009* r;
Ropeobj162009* heaproot;
};
struct  Tsym191843  {
  Tidobj168015 Sup;
NU8 kind;
union{
struct {Ttypeseq191845* typeinstcache;
Tscope191837* typscope;
} S1;
struct {TY191944* procinstcache;
Tsym191843* gcunsafetyreason;
} S2;
struct {TY191944* usedgenerics;
Tstrtable191817 tab;
} S3;
struct {Tsym191843* guard;
} S4;
} kindU;
NU16 magic;
Ttype191849* typ;
Tident168021* name;
Tlineinfo164338 info;
Tsym191843* owner;
NU32 flags;
Tnode191813* ast;
NU32 options;
NI position;
NI offset;
Tloc191827 loc;
Tlib191831* annex;
Tnode191813* constraint;
};
struct  Tident168021  {
  Tidobj168015 Sup;
NimStringDesc* s;
Tident168021* next;
NI h;
};
struct  Tcell46346  {
NI refcount;
TNimType* typ;
};
struct  Tcellseq46362  {
NI len;
NI cap;
Tcell46346** d;
};
struct  Tcellset46358  {
NI counter;
NI max;
Tpagedesc46354* head;
Tpagedesc46354** data;
};
typedef Tsmallchunk27440* TY28222[512];
typedef Ttrunk27413* Ttrunkbuckets27415[256];
struct  Tintset27417  {
Ttrunkbuckets27415 data;
};
struct  Tmemregion28210  {
NI minlargeobj;
NI maxlargeobj;
TY28222 freesmallchunks;
Tllchunk28204* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Tbigchunk27442* freechunkslist;
Tintset27417 chunkstarts;
Tavlnode28208* root;
Tavlnode28208* deleted;
Tavlnode28208* last;
Tavlnode28208* freeavlnodes;
};
struct  Tgcstat48214  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Tgcheap48216  {
void* stackbottom;
NI cyclethreshold;
Tcellseq46362 zct;
Tcellseq46362 decstack;
Tcellset46358 cycleroots;
Tcellseq46362 tempstack;
NI recgclock;
Tmemregion28210 region;
Tgcstat48214 stat;
};
struct  Ttype191849  {
  Tidobj168015 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq191845* sons;
Tnode191813* n;
Tsym191843* owner;
Tsym191843* sym;
Tsym191843* destructor;
Tsym191843* deepcopy;
Tsym191843* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc191827 loc;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  Tlistentry130022  {
  TNimObject Sup;
Tlistentry130022* prev;
Tlistentry130022* next;
};
struct  Tlib191831  {
  Tlistentry130022 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj162009* name;
Tnode191813* path;
};
struct  Toptionentry245005  {
  Tlistentry130022 Sup;
NU32 options;
NU8 defaultcc;
Tlib191831* dynlib;
NU64 notes;
Tnode191813* otherpragmas;
};
struct TY119589 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
struct Tinfocc171011 {
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 Tinfocc171011 TY171435[12];
typedef NimStringDesc* TY164302[17];
typedef NimStringDesc* TY164297[31];
struct  Tproccon245011  {
Tsym191843* owner;
Tsym191843* resultsym;
NI nestedloopcounter;
NI nestedblockcounter;
NI intrystmt;
Tproccon245011* next;
NIM_BOOL wasforwarded;
Tnode191813* bracketexpr;
};
struct  Tscope191837  {
NI depthlevel;
Tstrtable191817 symbols;
Tnodeseq191807* usingsyms;
Tscope191837* parent;
};
typedef NI TY27420[16];
struct  Ttrunk188052  {
Ttrunk188052* next;
NI key;
TY27420 bits;
};
struct  Tidpair191857  {
Tidobj168015* key;
TNimObject* val;
};
struct  Tctx244048  {
  Tpasscontext242005 Sup;
TY244253* code;
TY165036* debug;
Tnode191813* globals;
Tnode191813* constants;
Ttypeseq191845* types;
Tnode191813* currentexceptiona;
Tnode191813* currentexceptionb;
NI exceptioninstr;
PprocHEX3Aobjecttype244232* prc;
Tsym191843* module;
Tnode191813* callsite;
NU8 mode;
NU8 features;
NIM_BOOL traceactive;
NI loopiterations;
Tlineinfo164338 comesfromheuristic;
TY244272* callbacks;
NimStringDesc* errorflag;
};
struct  Tinstantiationpair245013  {
Tsym191843* genericsym;
Tinstantiation191833* inst;
};
struct  Ropeobj162009  {
  TNimObject Sup;
Ropeobj162009* left;
Ropeobj162009* right;
NI length;
NimStringDesc* data;
};
struct  Tpagedesc46354  {
Tpagedesc46354* next;
NI key;
TY27420 bits;
};
struct  Tbasechunk27438  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Tsmallchunk27440  {
  Tbasechunk27438 Sup;
Tsmallchunk27440* next;
Tsmallchunk27440* prev;
Tfreecell27430* freelist;
NI free;
NI acc;
NF data;
};
struct  Tllchunk28204  {
NI size;
NI acc;
Tllchunk28204* next;
};
struct  Tbigchunk27442  {
  Tbasechunk27438 Sup;
Tbigchunk27442* next;
Tbigchunk27442* prev;
NI align;
NF data;
};
struct  Ttrunk27413  {
Ttrunk27413* next;
NI key;
TY27420 bits;
};
typedef Tavlnode28208* TY28214[2];
struct  Tavlnode28208  {
TY28214 link;
NI key;
NI upperbound;
NI level;
};
struct TY244239 {
NIM_BOOL Field0;
NU8 Field1;
};
typedef TY244239 TY244236[256];
struct  PprocHEX3Aobjecttype244232  {
TY244233* blocks;
Tsym191843* sym;
TY244236 slots;
NI maxslots;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (Vmargs244042* args, void* ClEnv);
void* ClEnv;
} Vmcallback244044;
struct TY244273 {
NimStringDesc* Field0;
Vmcallback244044 Field1;
};
struct  Tinstantiation191833  {
Tsym191843* sym;
Ttypeseq191845* concretetypes;
TY191933* usedby;
};
struct  Tfreecell27430  {
Tfreecell27430* next;
NI zerofield;
};
struct  Tblock244030  {
Tsym191843* label;
TY244213* fixups;
};
struct  Vmargs244042  {
NI ra;
NI rb;
NI rc;
void* slots;
Tnode191813* currentexception;
};
struct Tnodeseq191807 {
  TGenericSeq Sup;
  Tnode191813* data[SEQ_DECL_SIZE];
};
struct Tsymseq191815 {
  TGenericSeq Sup;
  Tsym191843* data[SEQ_DECL_SIZE];
};
struct Ttrunkseq188054 {
  TGenericSeq Sup;
  Ttrunk188052* data[SEQ_DECL_SIZE];
};
struct Tidpairseq191859 {
  TGenericSeq Sup;
  Tidpair191857 data[SEQ_DECL_SIZE];
};
struct TY245141 {
  TGenericSeq Sup;
  Tinstantiationpair245013 data[SEQ_DECL_SIZE];
};
struct Ttypeseq191845 {
  TGenericSeq Sup;
  Ttype191849* data[SEQ_DECL_SIZE];
};
struct TY191944 {
  TGenericSeq Sup;
  Tinstantiation191833* data[SEQ_DECL_SIZE];
};
struct TY244253 {
  TGenericSeq Sup;
  NU32 data[SEQ_DECL_SIZE];
};
struct TY165036 {
  TGenericSeq Sup;
  Tlineinfo164338 data[SEQ_DECL_SIZE];
};
struct TY244272 {
  TGenericSeq Sup;
  TY244273 data[SEQ_DECL_SIZE];
};
struct TY244233 {
  TGenericSeq Sup;
  Tblock244030 data[SEQ_DECL_SIZE];
};
struct TY191933 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct TY244213 {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, pragmarec_265063)(Tcontext245023* c, Tsym191843* sym, Tnode191813* n, Tspecialwords173012 validpragmas);
N_NIMCALL(NI, sonslen_194403)(Tnode191813* n);
N_NIMCALL(NIM_BOOL, singlepragma_263216)(Tcontext245023* c, Tsym191843* sym, Tnode191813* n, NI i, Tspecialwords173012 validpragmas);
N_NIMCALL(Tsym191843*, strtableget_199111)(Tstrtable191817 t, Tident168021* name);
N_NIMCALL(void, globalerror_166134)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, pragma_261069)(Tcontext245023* c, Tsym191843* sym, Tnode191813* n, Tspecialwords173012 validpragmas);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Tcell46346*, usrtocell_49846)(void* usr);
static N_INLINE(void, rtladdzct_51404)(Tcell46346* c);
N_NOINLINE(void, addzct_49817)(Tcellseq46362* s, Tcell46346* c);
N_NIMCALL(NU16, whichkeyword_173386)(Tident168021* id);
N_NIMCALL(void, makeexternexport_261262)(Tsym191843* s, NimStringDesc* extname, Tlineinfo164338 info);
N_NIMCALL(void, setexternname_261176)(Tsym191843* s, NimStringDesc* extname);
N_NIMCALL(Ropeobj162009*, rope_162320)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(NIM_BOOL, contains_99351)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, getoptionalstr_261511)(Tcontext245023* c, Tnode191813* n, NimStringDesc* defaultstr);
N_NIMCALL(NimStringDesc*, expectstrlit_261474)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(Tnode191813*, getstrlitnode_261450)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(void, localerror_166155)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg);
N_NOINLINE(Tnode191813*, newemptystrnode_261439)(Tnode191813* n);
N_NIMCALL(Tnode191813*, newnodeit_193807)(NU8 kind, Tlineinfo164338 info, Ttype191849* typ);
N_NIMCALL(Ttype191849*, getsystype_239030)(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_261208)(Tsym191843* s, NimStringDesc* extname);
N_NIMCALL(void, processimportcompilerproc_261284)(Tsym191843* s, NimStringDesc* extname);
N_NIMCALL(void, invalidpragma_261078)(Tnode191813* n);
N_NIMCALL(NimStringDesc*, rendertree_213058)(Tnode191813* n, NU8 renderflags);
N_NIMCALL(void, processimportcpp_261327)(Tsym191843* s, NimStringDesc* extname);
N_NIMCALL(Tsym191843*, getmodule_199243)(Tsym191843* s);
N_NIMCALL(void, processimportobjc_261383)(Tsym191843* s, NimStringDesc* extname);
N_NIMCALL(NI, expectintlit_261486)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(NIM_BOOL, ispoweroftwo_150521)(NI x);
N_NIMCALL(void, noval_262616)(Tnode191813* n);
N_NIMCALL(void, pragmadeadcodeelim_261771)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(NIM_BOOL, isturnedon_261703)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(void, pragmanoforward_261803)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(void, processmagic_261544)(Tcontext245023* c, Tnode191813* n, Tsym191843* s);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI start);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI first);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_82729, TNimType* typ);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, message_166188)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(Tlib191831*, getlib_261867)(Tcontext245023* c, NU8 kind, Tnode191813* path);
N_NIMCALL(NIM_BOOL, exprstructuralequivalent_220149)(Tnode191813* a, Tnode191813* b);
N_NIMCALL(Tlib191831*, newlib_245199)(NU8 kind);
N_NIMCALL(void, append_130053)(Tlinkedlist130028* list, Tlistentry130022* entry);
N_NIMCALL(NIM_BOOL, isdynliboverride_156481)(NimStringDesc* lib);
N_NIMCALL(void, addtolib_245205)(Tlib191831* lib, Tsym191843* sym);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(void, processdynlib_261986)(Tcontext245023* c, Tnode191813* n, Tsym191843* sym);
N_NIMCALL(Tnode191813*, expectdynlibnode_261921)(Tcontext245023* c, Tnode191813* n);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_52222)(Tcell46346* c);
static N_INLINE(NIM_BOOL, canbecycleroot_49867)(Tcell46346* c);
static N_INLINE(void, rtladdcycleroot_50623)(Tcell46346* c);
N_NOINLINE(void, incl_47065)(Tcellset46358* s, Tcell46346* cell);
static N_INLINE(void, decref_51804)(Tcell46346* c);
N_NIMCALL(void, markcompilerproc_263030)(Tsym191843* s);
N_NIMCALL(void, registercompilerproc_239042)(Tsym191843* s);
N_NIMCALL(void, deprecatedstmt_263062)(Tcontext245023* c, Tnode191813* pragma_263065);
static N_INLINE(Tnode191813*, HEX5BHEX5D_192244)(Tnode191813* n, NI i);
N_NIMCALL(void, localerror_166166)(Tlineinfo164338 info, NimStringDesc* arg);
static N_INLINE(NI, len_192097)(Tnode191813* n);
N_NIMCALL(Tsym191843*, qualifiedlookup_250864)(Tcontext245023* c, Tnode191813* n, NU8 flags);
N_NIMCALL(Tident168021*, considerquotedident_250010)(Tnode191813* n);
N_NIMCALL(Tsym191843*, newsym_192656)(NU8 symkind, Tident168021* name, Tsym191843* owner, Tlineinfo164338 info);
N_NIMCALL(void, addinterfacedecl_250736)(Tcontext245023* c, Tsym191843* sym);
N_NIMCALL(void, typeborrow_262989)(Tsym191843* sym, Tnode191813* n);
static N_INLINE(NIM_BOOL, isroutine_196764)(Tsym191843* s);
N_NIMCALL(void, fatal_166123)(Tlineinfo164338 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, processdefine_262421)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(void, definesymbol_169013)(NimStringDesc* symbol);
N_NIMCALL(void, processundef_262452)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(void, undefsymbol_169022)(NimStringDesc* symbol);
N_NIMCALL(void, processcompile_262490)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(NimStringDesc*, findfile_156339)(NimStringDesc* f);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(void, addexternalfiletocompile_172465)(NimStringDesc* filename);
N_NIMCALL(void, addfiletolink_171954)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, completecfilepath_171912)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(void, processcommonlink_262503)(Tcontext245023* c, Tnode191813* n, NU8 feature);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY119589* Result);
N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, HEX2F_119292)(NimStringDesc* head, NimStringDesc* tail);
N_NIMCALL(void, internalerror_166199)(Tlineinfo164338 info, NimStringDesc* errmsg);
N_NIMCALL(void, addlinkoption_171856)(NimStringDesc* option);
N_NIMCALL(void, addcompileoption_171866)(NimStringDesc* option);
N_NIMCALL(void, pragmabreakpoint_262516)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(void, pragmawatchpoint_262526)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(void, processpush_262344)(Tcontext245023* c, Tnode191813* n, NI start);
N_NIMCALL(Toptionentry245005*, newoptionentry_245194)(void);
N_NIMCALL(NIM_BOOL, processoption_262209)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(void, processnote_262084)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(NI, findstr_173344)(NimStringDesc** a, NI aLen0, NimStringDesc* s);
N_NIMCALL(void, onoff_261736)(Tcontext245023* c, Tnode191813* n, NU32 op);
N_NIMCALL(void, processcallconv_261835)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(NU8, wordtocallconv_261666)(NU16 sw);
N_NIMCALL(Tnode191813*, newnodei_193351)(NU8 kind, Tlineinfo164338 info);
N_NIMCALL(void, add_192164)(Tnode191813* father, Tnode191813* son);
N_NIMCALL(void, processpop_262410)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(void, remove_130639)(Tlinkedlist130028* list, Tlistentry130022* entry);
N_NIMCALL(void, processpragma_262740)(Tcontext245023* c, Tnode191813* n, NI i);
N_NIMCALL(void, addson_193819)(Tnode191813* father, Tnode191813* son);
N_NIMCALL(void, strtableadd_199103)(Tstrtable191817* t, Tsym191843* n);
N_NIMCALL(void, processcodegendecl_261532)(Tcontext245023* c, Tnode191813* n, Tsym191843* sym);
N_NIMCALL(void, pragmaemit_262605)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(Tnode191813*, semasmoremit_262547)(Tcontext245023* con, Tnode191813* n, NIM_CHAR marker);
N_NIMCALL(Tnode191813*, newnode_193607)(NU8 kind, Tlineinfo164338 info, Tnodeseq191807* sons, Ttype191849* 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_76443, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(Tnode191813*, newstrnode_192644)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(Tsym191843*, searchinscopes_250205)(Tcontext245023* c, Tident168021* s);
N_NIMCALL(Tident168021*, getident_168463)(NimStringDesc* identifier);
N_NIMCALL(void, loadstub_236639)(Tsym191843* s);
N_NIMCALL(Tnode191813*, newsymnode_193325)(Tsym191843* sym);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
N_NIMCALL(void, illformedastlocal_246239)(Tnode191813* n);
N_NIMCALL(void, pragmaunroll_262634)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(Tnode191813*, newintnode_192608)(NU8 kind, NI64 intval);
N_NIMCALL(void, pragmaline_262664)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(NI32, fileinfoidx_164854)(NimStringDesc* filename);
N_NIMCALL(Tlineinfo164338, getinfocontext_165237)(NI index);
N_NIMCALL(void, pragmaraisesortags_262818)(Tcontext245023* c, Tnode191813* n);
N_NIMCALL(void, processexc_262822)(Tcontext245023* c, Tnode191813* x);
N_NIMCALL(Ttype191849*, skiptypes_195167)(Ttype191849* t, NU64 kinds);
N_NIMCALL(void, pragmalockstmt_262891)(Tcontext245023* c, Tnode191813* it);
N_NIMCALL(NI16, pragmalocks_262959)(Tcontext245023* c, Tnode191813* it);
N_NIMCALL(Tsym191843*, pragmaguard_263142)(Tcontext245023* c, Tnode191813* it, NU8 kind);
static N_INLINE(NIM_BOOL, istoplevel_246269)(Tcontext245023* c);
N_NIMCALL(void, implicitpragmas_264505)(Tcontext245023* c, Tsym191843* sym, Tnode191813* n, Tspecialwords173012 validpragmas);
N_NIMCALL(void, pushinfocontext_165192)(Tlineinfo164338 info);
N_NIMCALL(void, popinfocontext_165211)(void);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_264718)(Tnodeseq191807* x, Tnodeseq191807* y);
STRING_LITERAL(TMP3031, "", 0);
STRING_LITERAL(TMP3032, "$1", 2);
STRING_LITERAL(TMP3033, "destroy", 7);
STRING_LITERAL(TMP3034, "destructor has to be named \'destroy\'", 36);
STRING_LITERAL(TMP3035, "list of key:value pairs expected", 32);
STRING_LITERAL(TMP3037, "key:value pair expected", 23);
STRING_LITERAL(TMP3038, "a type can only borrow `.` for now", 34);
STRING_LITERAL(TMP3039, "define", 6);
STRING_LITERAL(TMP3040, "undef", 5);
extern NIM_CONST TY171435 Cc_171434;
STRING_LITERAL(TMP3041, "processCommonLink", 17);
STRING_LITERAL(TMP3042, "\':\' after \'push\' not supported", 30);
STRING_LITERAL(TMP3044, "Success", 7);
STRING_LITERAL(TMP3045, "SuccessX", 8);
STRING_LITERAL(TMP3046, "LineTooLong", 11);
STRING_LITERAL(TMP3047, "XDeclaredButNotUsed", 19);
STRING_LITERAL(TMP3048, "ConvToBaseNotNeeded", 19);
STRING_LITERAL(TMP3049, "ConvFromXtoItselfNotNeeded", 26);
STRING_LITERAL(TMP3050, "ExprAlwaysX", 11);
STRING_LITERAL(TMP3051, "QuitCalled", 10);
STRING_LITERAL(TMP3052, "Processing", 10);
STRING_LITERAL(TMP3053, "CodeBegin", 9);
STRING_LITERAL(TMP3054, "CodeEnd", 7);
STRING_LITERAL(TMP3055, "Conf", 4);
STRING_LITERAL(TMP3056, "Path", 4);
STRING_LITERAL(TMP3057, "CondTrue", 8);
STRING_LITERAL(TMP3058, "Name", 4);
STRING_LITERAL(TMP3059, "Pattern", 7);
STRING_LITERAL(TMP3060, "User", 4);
NIM_CONST TY164302 TMP3043 = {((NimStringDesc*) &TMP3044),
((NimStringDesc*) &TMP3045),
((NimStringDesc*) &TMP3046),
((NimStringDesc*) &TMP3047),
((NimStringDesc*) &TMP3048),
((NimStringDesc*) &TMP3049),
((NimStringDesc*) &TMP3050),
((NimStringDesc*) &TMP3051),
((NimStringDesc*) &TMP3052),
((NimStringDesc*) &TMP3053),
((NimStringDesc*) &TMP3054),
((NimStringDesc*) &TMP3055),
((NimStringDesc*) &TMP3056),
((NimStringDesc*) &TMP3057),
((NimStringDesc*) &TMP3058),
((NimStringDesc*) &TMP3059),
((NimStringDesc*) &TMP3060)}
;
STRING_LITERAL(TMP3062, "CannotOpenFile", 14);
STRING_LITERAL(TMP3063, "OctalEscape", 11);
STRING_LITERAL(TMP3064, "XIsNeverRead", 12);
STRING_LITERAL(TMP3065, "XmightNotBeenInit", 17);
STRING_LITERAL(TMP3066, "Deprecated", 10);
STRING_LITERAL(TMP3067, "ConfigDeprecated", 16);
STRING_LITERAL(TMP3068, "SmallLshouldNotBeUsed", 21);
STRING_LITERAL(TMP3069, "UnknownMagic", 12);
STRING_LITERAL(TMP3070, "RedefinitionOfLabel", 19);
STRING_LITERAL(TMP3071, "UnknownSubstitutionX", 20);
STRING_LITERAL(TMP3072, "LanguageXNotSupported", 21);
STRING_LITERAL(TMP3073, "FieldXNotSupported", 18);
STRING_LITERAL(TMP3074, "CommentXIgnored", 15);
STRING_LITERAL(TMP3075, "NilStmt", 7);
STRING_LITERAL(TMP3076, "TypelessParam", 13);
STRING_LITERAL(TMP3077, "DifferentHeaps", 14);
STRING_LITERAL(TMP3078, "WriteToForeignHeap", 18);
STRING_LITERAL(TMP3079, "UnsafeCode", 10);
STRING_LITERAL(TMP3080, "EachIdentIsTuple", 16);
STRING_LITERAL(TMP3081, "ShadowIdent", 11);
STRING_LITERAL(TMP3082, "ProveInit", 9);
STRING_LITERAL(TMP3083, "ProveField", 10);
STRING_LITERAL(TMP3084, "ProveIndex", 10);
STRING_LITERAL(TMP3085, "GcUnsafe", 8);
STRING_LITERAL(TMP3086, "GcUnsafe2", 9);
STRING_LITERAL(TMP3087, "Uninit", 6);
STRING_LITERAL(TMP3088, "GcMem", 5);
STRING_LITERAL(TMP3089, "Destructor", 10);
STRING_LITERAL(TMP3090, "LockLevel", 9);
STRING_LITERAL(TMP3091, "ResultShadowed", 14);
NIM_CONST TY164297 TMP3061 = {((NimStringDesc*) &TMP3062),
((NimStringDesc*) &TMP3063),
((NimStringDesc*) &TMP3064),
((NimStringDesc*) &TMP3065),
((NimStringDesc*) &TMP3066),
((NimStringDesc*) &TMP3067),
((NimStringDesc*) &TMP3068),
((NimStringDesc*) &TMP3069),
((NimStringDesc*) &TMP3070),
((NimStringDesc*) &TMP3071),
((NimStringDesc*) &TMP3072),
((NimStringDesc*) &TMP3073),
((NimStringDesc*) &TMP3074),
((NimStringDesc*) &TMP3075),
((NimStringDesc*) &TMP3076),
((NimStringDesc*) &TMP3077),
((NimStringDesc*) &TMP3078),
((NimStringDesc*) &TMP3079),
((NimStringDesc*) &TMP3080),
((NimStringDesc*) &TMP3081),
((NimStringDesc*) &TMP3082),
((NimStringDesc*) &TMP3083),
((NimStringDesc*) &TMP3084),
((NimStringDesc*) &TMP3085),
((NimStringDesc*) &TMP3086),
((NimStringDesc*) &TMP3087),
((NimStringDesc*) &TMP3088),
((NimStringDesc*) &TMP3089),
((NimStringDesc*) &TMP3090),
((NimStringDesc*) &TMP3091),
((NimStringDesc*) &TMP3060)}
;
STRING_LITERAL(TMP3092, "speed", 5);
STRING_LITERAL(TMP3093, "size", 4);
STRING_LITERAL(TMP3094, "none", 4);
STRING_LITERAL(TMP3095, "tuple", 5);
STRING_LITERAL(TMP3096, "invalid type for raises/tags list", 33);
STRING_LITERAL(TMP3097, "locks pragma takes a list of expressions", 40);
STRING_LITERAL(TMP3098, "integer must be within 0..1000", 30);
STRING_LITERAL(TMP3099, "\'experimental\' pragma only valid as toplevel statement", 54);
STRING_LITERAL(TMP3100, "implicitPragmas", 15);
extern Tgcheap48216 gch_48244;
extern NU8 gcmd_155130;
extern NIM_BOOL gmixedmode_171456;
extern TNimType NTI191529; /* TMagic */
extern NU8 ccompiler_171455;
extern NimStringDesc* libpath_155233;
extern NU32 goptions_155126;
extern NU64 gnotes_165014;
extern TNimType NTI191807; /* TNodeSeq */

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

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

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

N_NIMCALL(void, setexternname_261176)(Tsym191843* s, NimStringDesc* extname) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = nsuFormatSingleElem(extname, (*(*s).name).s);
	asgnRefNoCycle((void**) (&(*s).loc.r), rope_162320(LOC1));
	{
		NIM_BOOL LOC4;
		NIM_BOOL LOC6;
		LOC4 = 0;
		LOC4 = (gcmd_155130 == ((NU8) 7));
		if (!(LOC4)) goto LA5;
		LOC6 = 0;
		LOC6 = contains_99351(extname, 36);
		LOC4 = !(LOC6);
		LA5: ;
		if (!LOC4) goto LA7;
		(*s).loc.flags |= ((NI16)1)<<((((NU8) 1))%(sizeof(NI16)*8));
	}
	LA7: ;
}

N_NIMCALL(void, makeexternexport_261262)(Tsym191843* s, NimStringDesc* extname, Tlineinfo164338 info) {
	setexternname_261176(s, extname);
	(*s).flags |= ((NI32)1)<<((((NU8) 6))%(sizeof(NI32)*8));
}

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

N_NOINLINE(Tnode191813*, newemptystrnode_261439)(Tnode191813* n) {
	Tnode191813* result;
	Ttype191849* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getsystype_239030(((NU8) 28));
	result = newnodeit_193807(((NU8) 20), (*n).info, LOC1);
	LOC2 = 0;
	LOC2 = (*result).kindU.S3.strval; (*result).kindU.S3.strval = copyStringRC1(((NimStringDesc*) &TMP3031));
	if (LOC2) nimGCunrefNoCycle(LOC2);
	return result;
}

N_NIMCALL(Tnode191813*, getstrlitnode_261450)(Tcontext245023* c, Tnode191813* n) {
	Tnode191813* result;
	result = 0;
	{
		if (!!(((*n).kind == ((NU8) 34)))) goto LA3;
		localerror_166155((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3031));
		result = newemptystrnode_261439(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_166155((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3031));
			result = newemptystrnode_261439(n);
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(NimStringDesc*, expectstrlit_261474)(Tcontext245023* c, Tnode191813* n) {
	NimStringDesc* result;
	Tnode191813* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getstrlitnode_261450(c, n);
	result = copyString((*LOC1).kindU.S3.strval);
	return result;
}

N_NIMCALL(NimStringDesc*, getoptionalstr_261511)(Tcontext245023* c, Tnode191813* n, NimStringDesc* defaultstr) {
	NimStringDesc* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 34))) goto LA3;
		result = expectstrlit_261474(c, n);
	}
	goto LA1;
	LA3: ;
	{
		result = copyString(defaultstr);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, makeexternimport_261208)(Tsym191843* s, NimStringDesc* extname) {
	setexternname_261176(s, extname);
	(*s).flags |= ((NI32)1)<<((((NU8) 5))%(sizeof(NI32)*8));
	(*s).flags &= ~(((NI32)1) << ((((NU8) 4)) % (sizeof(NI32)*8)));
}

N_NIMCALL(void, processimportcompilerproc_261284)(Tsym191843* s, NimStringDesc* extname) {
	setexternname_261176(s, extname);
	(*s).flags |= ((NI32)1)<<((((NU8) 5))%(sizeof(NI32)*8));
	(*s).flags &= ~(((NI32)1) << ((((NU8) 4)) % (sizeof(NI32)*8)));
	(*s).loc.flags |= ((NI16)1)<<((((NU8) 7))%(sizeof(NI16)*8));
}

N_NIMCALL(void, invalidpragma_261078)(Tnode191813* n) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = rendertree_213058(n, 4);
	localerror_166155((*n).info, ((NU16) 162), LOC1);
}

N_NIMCALL(void, processimportcpp_261327)(Tsym191843* s, NimStringDesc* extname) {
	Tsym191843* m;
	setexternname_261176(s, extname);
	(*s).flags |= ((NI32)1)<<((((NU8) 5))%(sizeof(NI32)*8));
	(*s).flags |= ((NI32)1)<<((((NU8) 27))%(sizeof(NI32)*8));
	(*s).flags &= ~(((NI32)1) << ((((NU8) 4)) % (sizeof(NI32)*8)));
	m = getmodule_199243(s);
	(*m).flags |= ((NI32)1)<<((((NU8) 27))%(sizeof(NI32)*8));
	gmixedmode_171456 = NIM_TRUE;
}

N_NIMCALL(void, processimportobjc_261383)(Tsym191843* s, NimStringDesc* extname) {
	Tsym191843* m;
	setexternname_261176(s, extname);
	(*s).flags |= ((NI32)1)<<((((NU8) 5))%(sizeof(NI32)*8));
	(*s).flags |= ((NI32)1)<<((((NU8) 28))%(sizeof(NI32)*8));
	(*s).flags &= ~(((NI32)1) << ((((NU8) 4)) % (sizeof(NI32)*8)));
	m = getmodule_199243(s);
	(*m).flags |= ((NI32)1)<<((((NU8) 28))%(sizeof(NI32)*8));
}

N_NIMCALL(NI, expectintlit_261486)(Tcontext245023* c, Tnode191813* n) {
	NI result;
	result = 0;
	{
		if (!!(((*n).kind == ((NU8) 34)))) goto LA3;
		localerror_166155((*n).info, ((NU16) 7), ((NimStringDesc*) &TMP3031));
	}
	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_166155((*n).info, ((NU16) 7), ((NimStringDesc*) &TMP3031));
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, noval_262616)(Tnode191813* n) {
	{
		if (!((*n).kind == ((NU8) 34))) goto LA3;
		invalidpragma_261078(n);
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, isturnedon_261703)(Tcontext245023* c, Tnode191813* n) {
	NIM_BOOL result;
{	result = 0;
	{
		Tnode191813* 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_166155((*n).info, ((NU16) 26), ((NimStringDesc*) &TMP3031));
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, pragmadeadcodeelim_261771)(Tcontext245023* c, Tnode191813* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_261703(c, n);
		if (!LOC3) goto LA4;
		(*(*c).module).flags |= ((NI32)1)<<((((NU8) 25))%(sizeof(NI32)*8));
	}
	goto LA1;
	LA4: ;
	{
		(*(*c).module).flags &= ~(((NI32)1) << ((((NU8) 25)) % (sizeof(NI32)*8)));
	}
	LA1: ;
}

N_NIMCALL(void, pragmanoforward_261803)(Tcontext245023* c, Tnode191813* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_261703(c, n);
		if (!LOC3) goto LA4;
		(*(*c).module).flags |= ((NI32)1)<<((((NU8) 8))%(sizeof(NI32)*8));
	}
	goto LA1;
	LA4: ;
	{
		(*(*c).module).flags &= ~(((NI32)1) << ((((NU8) 8)) % (sizeof(NI32)*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_261544)(Tcontext245023* c, Tnode191813* n, Tsym191843* s) {
	NimStringDesc* v;
{	{
		if (!!(((*n).kind == ((NU8) 34)))) goto LA3;
		localerror_166155((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3031));
		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_261474(c, n);
	}
	LA5: ;
	{
		NU16 m_261623;
		NI res_261648;
		m_261623 = 0;
		res_261648 = ((NI) 0);
		{
			while (1) {
				if (!(res_261648 <= ((NI) 263))) goto LA12;
				m_261623 = ((NU16) (res_261648));
				{
					NimStringDesc* LOC15;
					LOC15 = 0;
					LOC15 = copyStr(reprEnum(m_261623, (&NTI191529)), ((NI) 1));
					if (!eqStrings(LOC15, v)) goto LA16;
					(*s).magic = m_261623;
					goto LA10;
				}
				LA16: ;
				res_261648 += ((NI) 1);
			} LA12: ;
		}
	} LA10: ;
	{
		if (!((*s).magic == ((NU16) 0))) goto LA20;
		message_166188((*n).info, ((NU16) 237), v);
	}
	LA20: ;
	}BeforeRet: ;
}

N_NIMCALL(Tlib191831*, getlib_261867)(Tcontext245023* c, NU8 kind, Tnode191813* path) {
	Tlib191831* result;
	Tlib191831* it;
	Tlistentry130022* LOC12;
{	result = 0;
	it = ((Tlib191831*) ((*c).libs.head));
	{
		while (1) {
			if (!!((it == NIM_NIL))) goto LA2;
			{
				if (!((*it).kind == kind)) goto LA5;
				{
					NIM_BOOL LOC9;
					LOC9 = 0;
					LOC9 = exprstructuralequivalent_220149((*it).path, path);
					if (!LOC9) goto LA10;
					result = it;
					goto BeforeRet;
				}
				LA10: ;
			}
			LA5: ;
			it = ((Tlib191831*) ((*it).Sup.next));
		} LA2: ;
	}
	result = newlib_245199(kind);
	asgnRefNoCycle((void**) (&(*result).path), path);
	LOC12 = 0;
	LOC12 = &result->Sup;
	append_130053((&(*c).libs), LOC12);
	{
		if (!((*path).kind >= ((NU8) 20) && (*path).kind <= ((NU8) 22))) goto LA15;
		(*result).isoverriden = isdynliboverride_156481((*path).kindU.S3.strval);
	}
	LA15: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode191813*, expectdynlibnode_261921)(Tcontext245023* c, Tnode191813* n) {
	Tnode191813* result;
	result = 0;
	{
		if (!!(((*n).kind == ((NU8) 34)))) goto LA3;
		localerror_166155((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3031));
		result = newemptystrnode_261439(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_166155((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3031));
			result = newemptystrnode_261439(n);
		}
		LA16: ;
	}
	LA1: ;
	return result;
}

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

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

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

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

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

N_NIMCALL(void, processdynlib_261986)(Tcontext245023* c, Tnode191813* n, Tsym191843* sym) {
	{
		NIM_BOOL LOC3;
		Tnode191813* 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_261921(c, n);
		asgnRef((void**) (&(*((Toptionentry245005*) ((*c).optionstack.tail))).dynlib), getlib_261867(c, ((NU8) 1), LOC7));
	}
	goto LA1;
	LA5: ;
	{
		{
			Tlib191831* lib;
			Tnode191813* LOC13;
			if (!((*n).kind == ((NU8) 34))) goto LA11;
			LOC13 = 0;
			LOC13 = expectdynlibnode_261921(c, n);
			lib = getlib_261867(c, ((NU8) 1), LOC13);
			{
				if (!!((*lib).isoverriden)) goto LA16;
				addtolib_245205(lib, sym);
				(*sym).loc.flags |= ((NI16)1)<<((((NU8) 4))%(sizeof(NI16)*8));
			}
			LA16: ;
		}
		goto LA9;
		LA11: ;
		{
			(*sym).loc.flags |= ((NI16)1)<<((((NU8) 5))%(sizeof(NI16)*8));
		}
		LA9: ;
		{
			NIM_BOOL LOC21;
			NIM_BOOL LOC22;
			LOC21 = 0;
			LOC22 = 0;
			LOC22 = ((520192 &(1<<(((*sym).kind)&31)))!=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_263030)(Tsym191843* s) {
	makeexternexport_261262(s, ((NimStringDesc*) &TMP3032), (*s).info);
	(*s).flags |= ((NI32)1)<<((((NU8) 16))%(sizeof(NI32)*8));
	(*s).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
	registercompilerproc_239042(s);
}

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

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

N_NIMCALL(void, deprecatedstmt_263062)(Tcontext245023* c, Tnode191813* pragma_263065) {
	Tnode191813* pragma;
{	pragma = HEX5BHEX5D_192244(pragma_263065, ((NI) 1));
	{
		if (!!(((*pragma).kind == ((NU8) 41)))) goto LA3;
		localerror_166166((*pragma).info, ((NimStringDesc*) &TMP3035));
		goto BeforeRet;
	}
	LA3: ;
	{
		Tnode191813* n_263076;
		n_263076 = 0;
		{
			NI i_263117;
			NI HEX3Atmp_263119;
			NI LOC7;
			NI res_263121;
			i_263117 = 0;
			HEX3Atmp_263119 = 0;
			LOC7 = 0;
			LOC7 = len_192097(pragma);
			HEX3Atmp_263119 = (LOC7 - 1);
			res_263121 = ((NI) 0);
			{
				while (1) {
					if (!(res_263121 <= HEX3Atmp_263119)) goto LA9;
					i_263117 = res_263121;
					n_263076 = (*pragma).kindU.S6.sons->data[i_263117];
					{
						Tsym191843* dest;
						Tnode191813* LOC14;
						Tident168021* src;
						Tnode191813* LOC15;
						Tsym191843* alias;
						Tnode191813* LOC16;
						if (!((*n_263076).kind == ((NU8) 34) || (*n_263076).kind == ((NU8) 33))) goto LA12;
						LOC14 = 0;
						LOC14 = HEX5BHEX5D_192244(n_263076, ((NI) 1));
						dest = qualifiedlookup_250864(c, LOC14, 2);
						LOC15 = 0;
						LOC15 = HEX5BHEX5D_192244(n_263076, ((NI) 0));
						src = considerquotedident_250010(LOC15);
						LOC16 = 0;
						LOC16 = HEX5BHEX5D_192244(n_263076, ((NI) 0));
						alias = newsym_192656(((NU8) 25), src, dest, (*LOC16).info);
						(*alias).flags |= ((NI32)1)<<((((NU8) 1))%(sizeof(NI32)*8));
						{
							if (!(((*dest).flags &(1<<((((NU8) 16))&31)))!=0)) goto LA19;
							markcompilerproc_263030(alias);
						}
						LA19: ;
						addinterfacedecl_250736(c, alias);
					}
					goto LA10;
					LA12: ;
					{
						localerror_166166((*n_263076).info, ((NimStringDesc*) &TMP3037));
					}
					LA10: ;
					res_263121 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(void, typeborrow_262989)(Tsym191843* sym, Tnode191813* n) {
	{
		Tnode191813* it;
		if (!((*n).kind == ((NU8) 34))) goto LA3;
		it = (*n).kindU.S6.sons->data[((NI) 1)];
		{
			if (!!(((*it).kind == ((NU8) 53)))) goto LA7;
			localerror_166166((*n).info, ((NimStringDesc*) &TMP3038));
		}
		LA7: ;
	}
	LA3: ;
	(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 27))%(sizeof(NI32)*8));
}

static N_INLINE(NIM_BOOL, isroutine_196764)(Tsym191843* s) {
	NIM_BOOL result;
	result = 0;
	result = ((520192 &(1<<(((*s).kind)&31)))!=0);
	return result;
}

N_NIMCALL(void, processdefine_262421)(Tcontext245023* c, Tnode191813* 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_169013((*(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident).s);
		message_166188((*n).info, ((NU16) 234), ((NimStringDesc*) &TMP3039));
	}
	goto LA1;
	LA5: ;
	{
		invalidpragma_261078(n);
	}
	LA1: ;
}

N_NIMCALL(void, processundef_262452)(Tcontext245023* c, Tnode191813* 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_169022((*(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident).s);
		message_166188((*n).info, ((NU16) 234), ((NimStringDesc*) &TMP3040));
	}
	goto LA1;
	LA5: ;
	{
		invalidpragma_261078(n);
	}
	LA1: ;
}

N_NIMCALL(void, processcompile_262490)(Tcontext245023* c, Tnode191813* n) {
	NimStringDesc* s;
	NimStringDesc* found;
	NimStringDesc* trunc;
	NimStringDesc* LOC5;
	s = expectstrlit_261474(c, n);
	found = findfile_156339(s);
	{
		if (!((found) && (found)->Sup.len == 0)) goto LA3;
		found = copyString(s);
	}
	LA3: ;
	trunc = noschangeFileExt(found, ((NimStringDesc*) &TMP3031));
	addexternalfiletocompile_172465(found);
	LOC5 = 0;
	LOC5 = completecfilepath_171912(trunc, NIM_FALSE);
	addfiletolink_171954(LOC5);
}

N_NIMCALL(void, processcommonlink_262503)(Tcontext245023* c, Tnode191813* n, NU8 feature) {
	NimStringDesc* f;
	NimStringDesc* found;
	f = expectstrlit_261474(c, n);
	{
		TY119589 LOC3;
		memset((void*)(&LOC3), 0, sizeof(LOC3));
		nossplitFile(f, (&LOC3));
		if (!((LOC3.Field2) && (LOC3.Field2)->Sup.len == 0)) goto LA4;
		f = nosaddFileExt(f, Cc_171434[(ccompiler_171455)- 1].Field1);
	}
	LA4: ;
	found = findfile_156339(f);
	{
		if (!((found) && (found)->Sup.len == 0)) goto LA8;
		found = copyString(f);
	}
	LA8: ;
	switch (feature) {
	case ((NU8) 0):
	{
		addfiletolink_171954(found);
	}
	break;
	case ((NU8) 1):
	{
		NimStringDesc* LOC12;
		NimStringDesc* LOC13;
		LOC12 = 0;
		LOC12 = completecfilepath_171912(found, NIM_FALSE);
		LOC13 = 0;
		LOC13 = HEX2F_119292(libpath_155233, LOC12);
		addfiletolink_171954(LOC13);
	}
	break;
	default:
	{
		internalerror_166199((*n).info, ((NimStringDesc*) &TMP3041));
	}
	break;
	}
}

N_NIMCALL(void, pragmabreakpoint_262516)(Tcontext245023* c, Tnode191813* n) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = getoptionalstr_261511(c, n, ((NimStringDesc*) &TMP3031));
}

N_NIMCALL(void, pragmawatchpoint_262526)(Tcontext245023* c, Tnode191813* 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_261078(n);
	}
	LA1: ;
}

N_NIMCALL(void, processnote_262084)(Tcontext245023* c, Tnode191813* n) {
{	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NIM_BOOL LOC6;
		NIM_BOOL LOC7;
		NI LOC9;
		NU16 nk;
		NU16 LOC16;
		Tnode191813* x;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC6 = 0;
		LOC7 = 0;
		LOC7 = ((*n).kind == ((NU8) 34));
		if (!(LOC7)) goto LA8;
		LOC9 = 0;
		LOC9 = sonslen_194403(n);
		LOC7 = (LOC9 == ((NI) 2));
		LA8: ;
		LOC6 = LOC7;
		if (!(LOC6)) goto LA10;
		LOC6 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 42));
		LA10: ;
		LOC5 = LOC6;
		if (!(LOC5)) goto LA11;
		LOC5 = ((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2));
		LA11: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA12;
		LOC4 = ((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2));
		LA12: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA13;
		LOC3 = ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2));
		LA13: ;
		if (!LOC3) goto LA14;
		nk = 0;
		LOC16 = 0;
		LOC16 = whichkeyword_173386((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident);
		switch (LOC16) {
		case ((NU16) 112):
		{
			NI x;
			x = findstr_173344(TMP3043, 17, (*(*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident).s);
			{
				if (!(((NI) 0) <= x)) goto LA20;
				nk = ((NU16) ((NI)(x + ((NI) 261))));
			}
			goto LA18;
			LA20: ;
			{
				invalidpragma_261078(n);
				goto BeforeRet;
			}
			LA18: ;
		}
		break;
		case ((NU16) 111):
		{
			NI x;
			x = findstr_173344(TMP3061, 31, (*(*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident).s);
			{
				if (!(((NI) 0) <= x)) goto LA26;
				nk = ((NU16) ((NI)(x + ((NI) 230))));
			}
			goto LA24;
			LA26: ;
			{
				invalidpragma_261078(n);
				goto BeforeRet;
			}
			LA24: ;
		}
		break;
		default:
		{
			invalidpragma_261078(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 LOC32;
			LOC32 = 0;
			LOC32 = ((*x).kind == ((NU8) 6));
			if (!(LOC32)) goto LA33;
			LOC32 = !(((*x).kindU.S1.intval == IL64(0)));
			LA33: ;
			if (!LOC32) goto LA34;
			gnotes_165014 |= ((NI64)1)<<(((nk- 230))%(sizeof(NI64)*8));
		}
		goto LA30;
		LA34: ;
		{
			gnotes_165014 &= ~(((NI64)1) << (((nk- 230)) % (sizeof(NI64)*8)));
		}
		LA30: ;
	}
	goto LA1;
	LA14: ;
	{
		invalidpragma_261078(n);
	}
	LA1: ;
	}BeforeRet: ;
}

N_NIMCALL(void, onoff_261736)(Tcontext245023* c, Tnode191813* n, NU32 op) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_261703(c, n);
		if (!LOC3) goto LA4;
		goptions_155126 = (goptions_155126 | op);
	}
	goto LA1;
	LA4: ;
	{
		goptions_155126 = (goptions_155126 & ~ op);
	}
	LA1: ;
}

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

N_NIMCALL(void, processcallconv_261835)(Tcontext245023* c, Tnode191813* 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_173386((*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident);
		switch (sw) {
		case ((NU16) 129) ... ((NU16) 138):
		{
			(*((Toptionentry245005*) ((*c).optionstack.tail))).defaultcc = wordtocallconv_261666(sw);
		}
		break;
		default:
		{
			localerror_166155((*n).info, ((NU16) 100), ((NimStringDesc*) &TMP3031));
		}
		break;
		}
	}
	goto LA1;
	LA5: ;
	{
		localerror_166155((*n).info, ((NU16) 100), ((NimStringDesc*) &TMP3031));
	}
	LA1: ;
}

N_NIMCALL(NIM_BOOL, processoption_262209)(Tcontext245023* c, Tnode191813* 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_262084(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_173386((*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident);
		switch (sw) {
		case ((NU16) 141):
		{
			onoff_261736(c, n, 1022);
		}
		break;
		case ((NU16) 82):
		{
			onoff_261736(c, n, 2);
		}
		break;
		case ((NU16) 170):
		{
			onoff_261736(c, n, 4);
		}
		break;
		case ((NU16) 142):
		{
			onoff_261736(c, n, 8);
		}
		break;
		case ((NU16) 143):
		{
			onoff_261736(c, n, 16);
		}
		break;
		case ((NU16) 144):
		{
			onoff_261736(c, n, 32);
		}
		break;
		case ((NU16) 145):
		{
			onoff_261736(c, n, 64);
		}
		break;
		case ((NU16) 146):
		{
			onoff_261736(c, n, 384);
		}
		break;
		case ((NU16) 147):
		{
			onoff_261736(c, n, 128);
		}
		break;
		case ((NU16) 148):
		{
			onoff_261736(c, n, 256);
		}
		break;
		case ((NU16) 149):
		{
			onoff_261736(c, n, 512);
		}
		break;
		case ((NU16) 151):
		{
			onoff_261736(c, n, 2048);
		}
		break;
		case ((NU16) 152):
		{
			onoff_261736(c, n, 4096);
		}
		break;
		case ((NU16) 126):
		{
			processcallconv_261835(c, n);
		}
		break;
		case ((NU16) 118):
		{
			onoff_261736(c, n, 1024);
		}
		break;
		case ((NU16) 119):
		{
			onoff_261736(c, n, 32768);
		}
		break;
		case ((NU16) 120):
		{
			onoff_261736(c, n, 65536);
		}
		break;
		case ((NU16) 128):
		{
			onoff_261736(c, n, 131072);
		}
		break;
		case ((NU16) 81):
		{
			onoff_261736(c, n, 524288);
		}
		break;
		case ((NU16) 255):
		{
			onoff_261736(c, n, 262144);
		}
		break;
		case ((NU16) 106):
		{
			processdynlib_261986(c, n, NIM_NIL);
		}
		break;
		case ((NU16) 153):
		{
			{
				if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2)))) goto LA36;
				invalidpragma_261078(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*) &TMP3092))) goto LA40;
				if (eqStrings(LOC39, ((NimStringDesc*) &TMP3093))) goto LA41;
				if (eqStrings(LOC39, ((NimStringDesc*) &TMP3094))) goto LA42;
				goto LA43;
				LA40: ;
				{
					goptions_155126 |= ((NI32)1)<<((((NU8) 13))%(sizeof(NI32)*8));
					goptions_155126 &= ~(((NI32)1) << ((((NU8) 14)) % (sizeof(NI32)*8)));
				}
				goto LA44;
				LA41: ;
				{
					goptions_155126 &= ~(((NI32)1) << ((((NU8) 13)) % (sizeof(NI32)*8)));
					goptions_155126 |= ((NI32)1)<<((((NU8) 14))%(sizeof(NI32)*8));
				}
				goto LA44;
				LA42: ;
				{
					goptions_155126 &= ~(((NI32)1) << ((((NU8) 13)) % (sizeof(NI32)*8)));
					goptions_155126 &= ~(((NI32)1) << ((((NU8) 14)) % (sizeof(NI32)*8)));
				}
				goto LA44;
				LA43: ;
				{
					localerror_166155((*n).info, ((NU16) 27), ((NimStringDesc*) &TMP3031));
				}
				LA44: ;
			}
			LA34: ;
		}
		break;
		case ((NU16) 188):
		{
			onoff_261736(c, n, 1048576);
		}
		break;
		case ((NU16) 150):
		{
			onoff_261736(c, n, 2097152);
		}
		break;
		default:
		{
			result = NIM_TRUE;
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, processpush_262344)(Tcontext245023* c, Tnode191813* n, NI start) {
	Toptionentry245005* x;
	Toptionentry245005* y;
	Tlistentry130022* LOC5;
	{
		if (!((*(*n).kindU.S6.sons->data[(NI)(start - ((NI) 1))]).kind == ((NU8) 34))) goto LA3;
		localerror_166155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3042));
	}
	LA3: ;
	x = newoptionentry_245194();
	y = ((Toptionentry245005*) ((*c).optionstack.tail));
	(*x).options = goptions_155126;
	(*x).defaultcc = (*y).defaultcc;
	asgnRef((void**) (&(*x).dynlib), (*y).dynlib);
	(*x).notes = gnotes_165014;
	LOC5 = 0;
	LOC5 = &x->Sup;
	append_130053((&(*c).optionstack), LOC5);
	{
		NI i_262374;
		NI HEX3Atmp_262388;
		NI LOC7;
		NI res_262391;
		i_262374 = 0;
		HEX3Atmp_262388 = 0;
		LOC7 = 0;
		LOC7 = sonslen_194403(n);
		HEX3Atmp_262388 = (NI)(LOC7 - ((NI) 1));
		res_262391 = start;
		{
			while (1) {
				if (!(res_262391 <= HEX3Atmp_262388)) goto LA9;
				i_262374 = res_262391;
				{
					NIM_BOOL LOC12;
					LOC12 = 0;
					LOC12 = processoption_262209(c, (*n).kindU.S6.sons->data[i_262374]);
					if (!LOC12) goto LA13;
					{
						if (!(*x).otherpragmas == 0) goto LA17;
						asgnRefNoCycle((void**) (&(*x).otherpragmas), newnodei_193351(((NU8) 90), (*n).info));
					}
					LA17: ;
					add_192164((*x).otherpragmas, (*n).kindU.S6.sons->data[i_262374]);
				}
				LA13: ;
				res_262391 += ((NI) 1);
			} LA9: ;
		}
	}
}

N_NIMCALL(void, processpop_262410)(Tcontext245023* c, Tnode191813* n) {
	{
		if (!((*c).optionstack.counter <= ((NI) 1))) goto LA3;
		localerror_166155((*n).info, ((NU16) 31), ((NimStringDesc*) &TMP3031));
	}
	goto LA1;
	LA3: ;
	{
		goptions_155126 = (*((Toptionentry245005*) ((*c).optionstack.tail))).options;
		gnotes_165014 = (*((Toptionentry245005*) ((*c).optionstack.tail))).notes;
		remove_130639((&(*c).optionstack), (*c).optionstack.tail);
	}
	LA1: ;
}

N_NIMCALL(void, processpragma_262740)(Tcontext245023* c, Tnode191813* n, NI i) {
	Tnode191813* it;
	Tsym191843* userpragma;
	Tnode191813* body;
	it = (*n).kindU.S6.sons->data[i];
	{
		if (!!(((*it).kind == ((NU8) 34)))) goto LA3;
		invalidpragma_261078(n);
	}
	goto LA1;
	LA3: ;
	{
		if (!!(((*(*it).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2)))) goto LA6;
		invalidpragma_261078(n);
	}
	goto LA1;
	LA6: ;
	{
		if (!!(((*(*it).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2)))) goto LA9;
		invalidpragma_261078(n);
	}
	goto LA1;
	LA9: ;
	LA1: ;
	userpragma = newsym_192656(((NU8) 18), (*(*it).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident, NIM_NIL, (*it).info);
	body = newnodei_193351(((NU8) 90), (*n).info);
	{
		NI j_262790;
		NI HEX3Atmp_262795;
		NI HEX3Atmp_262796;
		NI LOC12;
		NI res_262799;
		j_262790 = 0;
		HEX3Atmp_262795 = 0;
		HEX3Atmp_262796 = 0;
		HEX3Atmp_262795 = (NI)(i + ((NI) 1));
		LOC12 = 0;
		LOC12 = sonslen_194403(n);
		HEX3Atmp_262796 = (NI)(LOC12 - ((NI) 1));
		res_262799 = HEX3Atmp_262795;
		{
			while (1) {
				if (!(res_262799 <= HEX3Atmp_262796)) goto LA14;
				j_262790 = res_262799;
				addson_193819(body, (*n).kindU.S6.sons->data[j_262790]);
				res_262799 += ((NI) 1);
			} LA14: ;
		}
	}
	asgnRefNoCycle((void**) (&(*userpragma).ast), body);
	strtableadd_199103((&(*c).userpragmas), userpragma);
}

N_NIMCALL(void, processcodegendecl_261532)(Tcontext245023* c, Tnode191813* n, Tsym191843* sym) {
	asgnRefNoCycle((void**) (&(*sym).constraint), getstrlitnode_261450(c, n));
}

N_NIMCALL(Tnode191813*, semasmoremit_262547)(Tcontext245023* con, Tnode191813* n, NIM_CHAR marker) {
	Tnode191813* result;
{	result = 0;
	switch ((*(*n).kindU.S6.sons->data[((NI) 1)]).kind) {
	case ((NU8) 20):
	case ((NU8) 21):
	case ((NU8) 22):
	{
		NU8 LOC2;
		Tnodeseq191807* 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 = (Tnodeseq191807*) newSeq((&NTI191807), 0);
		result = newnode_193607(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_166155((*n).info, ((NU16) 32), ((NimStringDesc*) &TMP3031));
			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: ;
				{
					Tnode191813* LOC24;
					if (!!(((sub) && (sub)->Sup.len == 0))) goto LA22;
					LOC24 = 0;
					LOC24 = newstrnode_192644(((NU8) 20), sub);
					addson_193819(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: ;
				{
					Tsym191843* e;
					Tident168021* LOC38;
					if (!!(((sub) && (sub)->Sup.len == 0))) goto LA36;
					LOC38 = 0;
					LOC38 = getident_168463(sub);
					e = searchinscopes_250205(con, LOC38);
					{
						Tnode191813* LOC47;
						if (!!((e == NIM_NIL))) goto LA41;
						{
							if (!((*e).kind == ((NU8) 23))) goto LA45;
							loadstub_236639(e);
						}
						LA45: ;
						LOC47 = 0;
						LOC47 = newsymnode_193325(e);
						addson_193819(result, LOC47);
					}
					goto LA39;
					LA41: ;
					{
						Tnode191813* LOC49;
						LOC49 = 0;
						LOC49 = newstrnode_192644(((NU8) 20), sub);
						addson_193819(result, LOC49);
					}
					LA39: ;
				}
				goto LA34;
				LA36: ;
				{
					NimStringDesc* LOC51;
					Tnode191813* LOC52;
					LOC51 = 0;
					LOC51 = nimCharToStr(marker);
					LOC52 = 0;
					LOC52 = newstrnode_192644(((NU8) 20), LOC51);
					addson_193819(result, LOC52);
				}
				LA34: ;
				{
					if (!(c < ((NI) 0))) goto LA55;
					goto LA13;
				}
				LA55: ;
				a = (NI)(c + ((NI) 1));
			}
		} LA13: ;
	}
	break;
	default:
	{
		Tnodeseq191807* LOC58;
		illformedastlocal_246239(n);
		LOC58 = 0;
		LOC58 = (Tnodeseq191807*) newSeq((&NTI191807), 0);
		result = newnode_193607(((NU8) 89), (*n).info, LOC58, NIM_NIL);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, pragmaemit_262605)(Tcontext245023* c, Tnode191813* n) {
	Tnode191813* LOC1;
	LOC1 = 0;
	LOC1 = getstrlitnode_261450(c, n);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semasmoremit_262547(c, n, 96));
}

N_NIMCALL(void, pragmaunroll_262634)(Tcontext245023* c, Tnode191813* n) {
	{
		if (!((*(*c).p).nestedloopcounter <= ((NI) 0))) goto LA3;
		invalidpragma_261078(n);
	}
	goto LA1;
	LA3: ;
	{
		NI unrollfactor;
		if (!((*n).kind == ((NU8) 34))) goto LA6;
		unrollfactor = expectintlit_261486(c, n);
		{
			if (!((NU32)(unrollfactor) < (NU32)(((NI) 32)))) goto LA10;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), newintnode_192608(((NU8) 6), ((NI64) (unrollfactor))));
		}
		goto LA8;
		LA10: ;
		{
			invalidpragma_261078(n);
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	LA1: ;
}

N_NIMCALL(void, pragmaline_262664)(Tcontext245023* c, Tnode191813* n) {
	{
		Tnode191813* 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)];
		{
			Tnode191813* x;
			Tnode191813* 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_166155((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3031));
			}
			goto LA17;
			LA19: ;
			{
				if (!!(((*y).kind == ((NU8) 6)))) goto LA22;
				localerror_166155((*n).info, ((NU16) 7), ((NimStringDesc*) &TMP3031));
			}
			goto LA17;
			LA22: ;
			{
				(*n).info.fileindex = fileinfoidx_164854((*x).kindU.S3.strval);
				(*n).info.line = ((NI16) ((*y).kindU.S1.intval));
			}
			LA17: ;
		}
		goto LA5;
		LA7: ;
		{
			localerror_166155((*n).info, ((NU16) 188), ((NimStringDesc*) &TMP3095));
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		(*n).info = getinfocontext_165237(((NI) -1));
	}
	LA1: ;
}

N_NIMCALL(void, processexc_262822)(Tcontext245023* c, Tnode191813* x) {
	Ttype191849* t;
	Ttype191849* LOC1;
	LOC1 = 0;
	LOC1 = (*c).semtypenode(c, x, NIM_NIL);
	t = skiptypes_195167(LOC1, IL64(211106247215360));
	{
		if (!!(((*t).kind == ((NU8) 17)))) goto LA4;
		localerror_166155((*x).info, ((NU16) 4), ((NimStringDesc*) &TMP3096));
	}
	LA4: ;
	asgnRefNoCycle((void**) (&(*x).typ), t);
}

N_NIMCALL(void, pragmaraisesortags_262818)(Tcontext245023* c, Tnode191813* n) {
	{
		Tnode191813* 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_262822(c, it);
		}
		goto LA5;
		LA7: ;
		{
			{
				Tnode191813* e_262858;
				e_262858 = 0;
				{
					NI i_262863;
					NI HEX3Atmp_262865;
					NI LOC12;
					NI res_262867;
					i_262863 = 0;
					HEX3Atmp_262865 = 0;
					LOC12 = 0;
					LOC12 = len_192097(it);
					HEX3Atmp_262865 = (LOC12 - 1);
					res_262867 = ((NI) 0);
					{
						while (1) {
							if (!(res_262867 <= HEX3Atmp_262865)) goto LA14;
							i_262863 = res_262867;
							e_262858 = (*it).kindU.S6.sons->data[i_262863];
							processexc_262822(c, e_262858);
							res_262867 += ((NI) 1);
						} LA14: ;
					}
				}
			}
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		invalidpragma_261078(n);
	}
	LA1: ;
}

N_NIMCALL(void, pragmalockstmt_262891)(Tcontext245023* c, Tnode191813* it) {
	{
		if (!!(((*it).kind == ((NU8) 34)))) goto LA3;
		invalidpragma_261078(it);
	}
	goto LA1;
	LA3: ;
	{
		Tnode191813* n;
		n = HEX5BHEX5D_192244(it, ((NI) 1));
		{
			if (!!(((*n).kind == ((NU8) 41)))) goto LA8;
			localerror_166155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3097));
		}
		goto LA6;
		LA8: ;
		{
			{
				NI i_262933;
				NI HEX3Atmp_262937;
				NI LOC12;
				NI res_262940;
				i_262933 = 0;
				HEX3Atmp_262937 = 0;
				LOC12 = 0;
				LOC12 = len_192097(n);
				HEX3Atmp_262937 = (LOC12 - 1);
				res_262940 = ((NI) 0);
				{
					while (1) {
						if (!(res_262940 <= HEX3Atmp_262937)) goto LA14;
						i_262933 = res_262940;
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_262933]), (*c).semexpr(c, (*n).kindU.S6.sons->data[i_262933], 0));
						res_262940 += ((NI) 1);
					} LA14: ;
				}
			}
		}
		LA6: ;
	}
	LA1: ;
}

N_NIMCALL(NI16, pragmalocks_262959)(Tcontext245023* c, Tnode191813* it) {
	NI16 result;
	result = 0;
	{
		if (!!(((*it).kind == ((NU8) 34)))) goto LA3;
		invalidpragma_261078(it);
	}
	goto LA1;
	LA3: ;
	{
		{
			Tnode191813* LOC8;
			NI x;
			LOC8 = 0;
			LOC8 = HEX5BHEX5D_192244(it, ((NI) 1));
			if (!!(((*LOC8).kind == ((NU8) 23)))) goto LA9;
			x = expectintlit_261486(c, it);
			{
				NIM_BOOL LOC13;
				Tnode191813* LOC17;
				LOC13 = 0;
				LOC13 = (x < ((NI) 0));
				if (LOC13) goto LA14;
				LOC13 = (((NI) 1000) < x);
				LA14: ;
				if (!LOC13) goto LA15;
				LOC17 = 0;
				LOC17 = HEX5BHEX5D_192244(it, ((NI) 1));
				localerror_166166((*LOC17).info, ((NimStringDesc*) &TMP3098));
			}
			goto LA11;
			LA15: ;
			{
				result = ((NI16) (x));
			}
			LA11: ;
		}
		LA9: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym191843*, pragmaguard_263142)(Tcontext245023* c, Tnode191813* it, NU8 kind) {
	Tsym191843* result;
	Tnode191813* n;
{	result = 0;
	{
		if (!!(((*it).kind == ((NU8) 34)))) goto LA3;
		invalidpragma_261078(it);
		goto BeforeRet;
	}
	LA3: ;
	n = HEX5BHEX5D_192244(it, ((NI) 1));
	{
		if (!((*n).kind == ((NU8) 3))) goto LA7;
		result = (*n).kindU.S4.sym;
	}
	goto LA5;
	LA7: ;
	{
		if (!(kind == ((NU8) 19))) goto LA10;
		result = qualifiedlookup_250864(c, n, 0);
		{
			NIM_BOOL LOC14;
			NIM_BOOL LOC15;
			Tident168021* LOC20;
			LOC14 = 0;
			LOC15 = 0;
			LOC15 = result == 0;
			if (LOC15) goto LA16;
			LOC15 = !(((768 &(1<<(((*result).kind)&31)))!=0));
			LA16: ;
			LOC14 = LOC15;
			if (LOC14) goto LA17;
			LOC14 = !((((*result).flags &(1<<((((NU8) 3))&31)))!=0));
			LA17: ;
			if (!LOC14) goto LA18;
			LOC20 = 0;
			LOC20 = considerquotedident_250010(n);
			result = newsym_192656(((NU8) 0), LOC20, NIM_NIL, (*n).info);
		}
		LA18: ;
	}
	goto LA5;
	LA10: ;
	{
		result = qualifiedlookup_250864(c, n, 2);
	}
	LA5: ;
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(NIM_BOOL, singlepragma_263216)(Tcontext245023* c, Tsym191843* sym, Tnode191813* n, NI i, Tspecialwords173012 validpragmas) {
	NIM_BOOL result;
	Tnode191813* it;
	Tnode191813* key;
	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: ;
	{
		Tsym191843* userpragma;
		if (!((*key).kind == ((NU8) 2))) goto LA8;
		userpragma = strtableget_199111((*c).userpragmas, (*key).kindU.S5.ident);
		{
			if (!!((userpragma == NIM_NIL))) goto LA12;
			(*c).instcounter += ((NI) 1);
			{
				if (!(((NI) 100) < (*c).instcounter)) goto LA16;
				globalerror_166134((*it).info, ((NU16) 25), (*(*userpragma).name).s);
			}
			LA16: ;
			pragma_261069(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_173386((*key).kindU.S5.ident);
			{
				if (!((validpragmas[k/8] &(1<<(k%8)))!=0)) goto LA21;
				switch (k) {
				case ((NU16) 93):
				{
					NimStringDesc* LOC24;
					LOC24 = 0;
					LOC24 = getoptionalstr_261511(c, it, ((NimStringDesc*) &TMP3032));
					makeexternexport_261262(sym, LOC24, (*it).info);
					(*sym).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
				}
				break;
				case ((NU16) 92):
				{
					NimStringDesc* LOC26;
					LOC26 = 0;
					LOC26 = getoptionalstr_261511(c, it, ((NimStringDesc*) &TMP3032));
					makeexternimport_261208(sym, LOC26);
				}
				break;
				case ((NU16) 91):
				{
					NimStringDesc* LOC28;
					LOC28 = 0;
					LOC28 = getoptionalstr_261511(c, it, ((NimStringDesc*) &TMP3032));
					processimportcompilerproc_261284(sym, LOC28);
				}
				break;
				case ((NU16) 205):
				{
					NimStringDesc* LOC30;
					LOC30 = 0;
					LOC30 = expectstrlit_261474(c, it);
					setexternname_261176(sym, LOC30);
				}
				break;
				case ((NU16) 84):
				{
					{
						if (!((393216 &(1<<(((*sym).kind)&31)))!=0)) goto LA34;
						(*sym).flags |= ((NI32)1)<<((((NU8) 25))%(sizeof(NI32)*8));
					}
					goto LA32;
					LA34: ;
					{
						invalidpragma_261078(it);
					}
					LA32: ;
				}
				break;
				case ((NU16) 183):
				{
					{
						if (!((*sym).kind == ((NU8) 18))) goto LA40;
						(*sym).flags |= ((NI32)1)<<((((NU8) 9))%(sizeof(NI32)*8));
					}
					goto LA38;
					LA40: ;
					{
						invalidpragma_261078(it);
					}
					LA38: ;
				}
				break;
				case ((NU16) 89):
				{
					NimStringDesc* LOC44;
					LOC44 = 0;
					LOC44 = getoptionalstr_261511(c, it, ((NimStringDesc*) &TMP3032));
					processimportcpp_261327(sym, LOC44);
				}
				break;
				case ((NU16) 90):
				{
					NimStringDesc* LOC46;
					LOC46 = 0;
					LOC46 = getoptionalstr_261511(c, it, ((NimStringDesc*) &TMP3032));
					processimportobjc_261383(sym, LOC46);
				}
				break;
				case ((NU16) 96):
				{
					NI align;
					{
						if (!((*sym).typ == NIM_NIL)) goto LA50;
						invalidpragma_261078(it);
					}
					LA50: ;
					align = expectintlit_261486(c, it);
					{
						NIM_BOOL LOC54;
						NIM_BOOL LOC55;
						NIM_BOOL LOC56;
						LOC54 = 0;
						LOC55 = 0;
						LOC56 = 0;
						LOC56 = ispoweroftwo_150521(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_166155((*it).info, ((NU16) 98), ((NimStringDesc*) &TMP3031));
					}
					goto LA52;
					LA59: ;
					{
						(*(*sym).typ).align = ((NI16) (align));
					}
					LA52: ;
				}
				break;
				case ((NU16) 157):
				{
					NI size;
					{
						if (!((*sym).typ == NIM_NIL)) goto LA65;
						invalidpragma_261078(it);
					}
					LA65: ;
					size = expectintlit_261486(c, it);
					{
						NIM_BOOL LOC69;
						NIM_BOOL LOC70;
						NIM_BOOL LOC71;
						LOC69 = 0;
						LOC70 = 0;
						LOC71 = 0;
						LOC71 = ispoweroftwo_150521(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_166155((*it).info, ((NU16) 98), ((NimStringDesc*) &TMP3031));
					}
					goto LA67;
					LA74: ;
					{
						(*(*sym).typ).size = ((NI64) (size));
					}
					LA67: ;
				}
				break;
				case ((NU16) 97):
				{
					noval_262616(it);
					(*sym).loc.flags |= ((NI16)1)<<((((NU8) 3))%(sizeof(NI16)*8));
				}
				break;
				case ((NU16) 98):
				case ((NU16) 187):
				{
					noval_262616(it);
					{
						if (!!((sym == NIM_NIL))) goto LA81;
						{
							NIM_BOOL LOC85;
							LOC85 = 0;
							LOC85 = (k == ((NU16) 98));
							if (!(LOC85)) goto LA86;
							LOC85 = ((520192 &(1<<(((*sym).kind)&31)))!=0);
							LA86: ;
							if (!LOC85) goto LA87;
							invalidpragma_261078(it);
						}
						goto LA83;
						LA87: ;
						{
							(*sym).flags |= ((NI32)1)<<((((NU8) 9))%(sizeof(NI32)*8));
						}
						LA83: ;
					}
					LA81: ;
				}
				break;
				case ((NU16) 238):
				{
					noval_262616(it);
					(*sym).flags |= ((NI32)1)<<((((NU8) 7))%(sizeof(NI32)*8));
				}
				break;
				case ((NU16) 219):
				{
					noval_262616(it);
					(*sym).flags |= ((NI32)1)<<((((NU8) 8))%(sizeof(NI32)*8));
				}
				break;
				case ((NU16) 185):
				{
					noval_262616(it);
					(*sym).flags |= ((NI32)1)<<((((NU8) 22))%(sizeof(NI32)*8));
				}
				break;
				case ((NU16) 160):
				{
					pragmadeadcodeelim_261771(c, it);
				}
				break;
				case ((NU16) 162):
				{
					pragmanoforward_261803(c, it);
				}
				break;
				case ((NU16) 78):
				{
					processmagic_261544(c, it, sym);
				}
				break;
				case ((NU16) 164):
				{
					noval_262616(it);
					(*sym).flags |= ((NI32)1)<<((((NU8) 23))%(sizeof(NI32)*8));
					(*sym).loc.flags |= ((NI16)1)<<((((NU8) 3))%(sizeof(NI16)*8));
				}
				break;
				case ((NU16) 189):
				{
					noval_262616(it);
					(*sym).flags |= ((NI32)1)<<((((NU8) 3))%(sizeof(NI32)*8));
					(*sym).flags |= ((NI32)1)<<((((NU8) 9))%(sizeof(NI32)*8));
				}
				break;
				case ((NU16) 104):
				{
					noval_262616(it);
				}
				break;
				case ((NU16) 85):
				{
					noval_262616(it);
					(*sym).flags |= ((NI32)1)<<((((NU8) 24))%(sizeof(NI32)*8));
				}
				break;
				case ((NU16) 100):
				{
					Tlib191831* lib;
					Tnode191813* LOC101;
					LOC101 = 0;
					LOC101 = getstrlitnode_261450(c, it);
					lib = getlib_261867(c, ((NU8) 0), LOC101);
					addtolib_245205(lib, sym);
					(*sym).flags |= ((NI32)1)<<((((NU8) 5))%(sizeof(NI32)*8));
					(*sym).loc.flags |= ((NI16)1)<<((((NU8) 6))%(sizeof(NI16)*8));
					(*sym).loc.flags |= ((NI16)1)<<((((NU8) 3))%(sizeof(NI16)*8));
					{
						if (!((*sym).loc.r == NIM_NIL)) goto LA104;
						asgnRefNoCycle((void**) (&(*sym).loc.r), rope_162320((*(*sym).name).s));
					}
					LA104: ;
				}
				break;
				case ((NU16) 86):
				{
					(*sym).flags |= ((NI32)1)<<((((NU8) 30))%(sizeof(NI32)*8));
					{
						NimStringDesc* LOC109;
						LOC109 = 0;
						LOC109 = nsuNormalize((*(*sym).name).s);
						if (!!(eqStrings(LOC109, ((NimStringDesc*) &TMP3033)))) goto LA110;
						localerror_166155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3034));
					}
					LA110: ;
				}
				break;
				case ((NU16) 88):
				{
					(*sym).flags |= ((NI32)1)<<((((NU8) 30))%(sizeof(NI32)*8));
				}
				break;
				case ((NU16) 101):
				{
					noval_262616(it);
					(*sym).flags |= ((NI32)1)<<((((NU8) 10))%(sizeof(NI32)*8));
					{
						if (!!(((*sym).typ == NIM_NIL))) goto LA116;
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 1))%(sizeof(NI32)*8));
					}
					LA116: ;
				}
				break;
				case ((NU16) 99):
				{
					noval_262616(it);
					(*sym).flags |= ((NI32)1)<<((((NU8) 11))%(sizeof(NI32)*8));
				}
				break;
				case ((NU16) 103):
				{
					noval_262616(it);
					(*sym).flags |= ((NI32)1)<<((((NU8) 14))%(sizeof(NI32)*8));
				}
				break;
				case ((NU16) 106):
				{
					processdynlib_261986(c, it, sym);
				}
				break;
				case ((NU16) 107):
				{
					noval_262616(it);
					{
						if (!!((((*sym).flags &(1<<((((NU8) 2))&31)))!=0))) goto LA124;
						markcompilerproc_263030(sym);
					}
					LA124: ;
				}
				break;
				case ((NU16) 108):
				{
					noval_262616(it);
					(*sym).flags |= ((NI32)1)<<((((NU8) 17))%(sizeof(NI32)*8));
				}
				break;
				case ((NU16) 124):
				{
					{
						if (!((*it).kind == ((NU8) 34))) goto LA130;
						deprecatedstmt_263062(c, it);
					}
					goto LA128;
					LA130: ;
					{
						if (!!((sym == NIM_NIL))) goto LA133;
						(*sym).flags |= ((NI32)1)<<((((NU8) 19))%(sizeof(NI32)*8));
					}
					goto LA128;
					LA133: ;
					{
						(*(*c).module).flags |= ((NI32)1)<<((((NU8) 19))%(sizeof(NI32)*8));
					}
					LA128: ;
				}
				break;
				case ((NU16) 125):
				{
					noval_262616(it);
					{
						if (!((*sym).typ == NIM_NIL)) goto LA139;
						invalidpragma_261078(it);
					}
					goto LA137;
					LA139: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
					}
					LA137: ;
				}
				break;
				case ((NU16) 168):
				{
					{
						if (!((*sym).kind == ((NU8) 7))) goto LA145;
						typeborrow_262989(sym, it);
					}
					goto LA143;
					LA145: ;
					{
						noval_262616(it);
						(*sym).flags |= ((NI32)1)<<((((NU8) 26))%(sizeof(NI32)*8));
					}
					LA143: ;
				}
				break;
				case ((NU16) 80):
				{
					noval_262616(it);
					{
						if (!((*sym).typ == NIM_NIL)) goto LA151;
						invalidpragma_261078(it);
					}
					goto LA149;
					LA151: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 2))%(sizeof(NI32)*8));
					}
					LA149: ;
				}
				break;
				case ((NU16) 184):
				{
					noval_262616(it);
					{
						NIM_BOOL LOC157;
						LOC157 = 0;
						LOC157 = ((*sym).typ == NIM_NIL);
						if (LOC157) goto LA158;
						LOC157 = (((*(*sym).typ).flags &(1<<((((NU8) 2))&31)))!=0);
						LA158: ;
						if (!LOC157) goto LA159;
						invalidpragma_261078(it);
					}
					goto LA155;
					LA159: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 3))%(sizeof(NI32)*8));
					}
					LA155: ;
				}
				break;
				case ((NU16) 173):
				{
					noval_262616(it);
					{
						if (!((*sym).typ == NIM_NIL)) goto LA165;
						invalidpragma_261078(it);
					}
					goto LA163;
					LA165: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 4))%(sizeof(NI32)*8));
					}
					LA163: ;
				}
				break;
				case ((NU16) 174):
				{
					noval_262616(it);
					{
						if (!((*sym).typ == NIM_NIL)) goto LA171;
						invalidpragma_261078(it);
					}
					goto LA169;
					LA171: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 6))%(sizeof(NI32)*8));
					}
					LA169: ;
				}
				break;
				case ((NU16) 79):
				{
					noval_262616(it);
					(*sym).flags |= ((NI32)1)<<((((NU8) 22))%(sizeof(NI32)*8));
					(*sym).flags |= ((NI32)1)<<((((NU8) 17))%(sizeof(NI32)*8));
					{
						if (!!(((*sym).typ == NIM_NIL))) goto LA177;
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 7))%(sizeof(NI32)*8));
					}
					LA177: ;
				}
				break;
				case ((NU16) 102):
				{
					noval_262616(it);
					{
						if (!!(((*sym).kind == ((NU8) 7)))) goto LA182;
						(*sym).flags |= ((NI32)1)<<((((NU8) 22))%(sizeof(NI32)*8));
					}
					LA182: ;
					{
						if (!!(((*sym).typ == NIM_NIL))) goto LA186;
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 7))%(sizeof(NI32)*8));
					}
					goto LA184;
					LA186: ;
					{
						invalidpragma_261078(it);
					}
					LA184: ;
				}
				break;
				case ((NU16) 234):
				{
					noval_262616(it);
					{
						if (!((*sym).typ == NIM_NIL)) goto LA192;
						invalidpragma_261078(it);
					}
					goto LA190;
					LA192: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 21))%(sizeof(NI32)*8));
					}
					LA190: ;
				}
				break;
				case ((NU16) 112):
				{
					NimStringDesc* LOC196;
					LOC196 = 0;
					LOC196 = expectstrlit_261474(c, it);
					message_166188((*it).info, ((NU16) 277), LOC196);
				}
				break;
				case ((NU16) 111):
				{
					NimStringDesc* LOC198;
					LOC198 = 0;
					LOC198 = expectstrlit_261474(c, it);
					message_166188((*it).info, ((NU16) 260), LOC198);
				}
				break;
				case ((NU16) 110):
				{
					{
						NIM_BOOL LOC202;
						LOC202 = 0;
						LOC202 = !((sym == NIM_NIL));
						if (!(LOC202)) goto LA203;
						LOC202 = isroutine_196764(sym);
						LA203: ;
						if (!LOC202) goto LA204;
						noval_262616(it);
						(*sym).flags |= ((NI32)1)<<((((NU8) 20))%(sizeof(NI32)*8));
					}
					goto LA200;
					LA204: ;
					{
						NimStringDesc* LOC207;
						LOC207 = 0;
						LOC207 = expectstrlit_261474(c, it);
						localerror_166155((*it).info, ((NU16) 229), LOC207);
					}
					LA200: ;
				}
				break;
				case ((NU16) 109):
				{
					NimStringDesc* LOC209;
					LOC209 = 0;
					LOC209 = expectstrlit_261474(c, it);
					fatal_166123((*it).info, ((NU16) 229), LOC209);
				}
				break;
				case ((NU16) 116):
				{
					processdefine_262421(c, it);
				}
				break;
				case ((NU16) 117):
				{
					processundef_262452(c, it);
				}
				break;
				case ((NU16) 122):
				{
					processcompile_262490(c, it);
				}
				break;
				case ((NU16) 121):
				{
					processcommonlink_262503(c, it, ((NU8) 0));
				}
				break;
				case ((NU16) 123):
				{
					processcommonlink_262503(c, it, ((NU8) 1));
				}
				break;
				case ((NU16) 167):
				{
					NimStringDesc* LOC216;
					LOC216 = 0;
					LOC216 = expectstrlit_261474(c, it);
					addlinkoption_171856(LOC216);
				}
				break;
				case ((NU16) 166):
				{
					NimStringDesc* LOC218;
					LOC218 = 0;
					LOC218 = expectstrlit_261474(c, it);
					addcompileoption_171866(LOC218);
				}
				break;
				case ((NU16) 127):
				{
					pragmabreakpoint_262516(c, it);
				}
				break;
				case ((NU16) 171):
				{
					pragmawatchpoint_262526(c, it);
				}
				break;
				case ((NU16) 114):
				{
					processpush_262344(c, n, (NI)(i + ((NI) 1)));
					result = NIM_TRUE;
				}
				break;
				case ((NU16) 115):
				{
					processpop_262410(c, it);
				}
				break;
				case ((NU16) 163):
				{
					processpragma_262740(c, n, i);
					result = NIM_TRUE;
				}
				break;
				case ((NU16) 169):
				{
					noval_262616(it);
					{
						if (!!((sym == NIM_NIL))) goto LA227;
						(*sym).flags |= ((NI32)1)<<((((NU8) 29))%(sizeof(NI32)*8));
					}
					LA227: ;
				}
				break;
				case ((NU16) 165):
				{
					noval_262616(it);
					{
						if (!!((sym == NIM_NIL))) goto LA232;
						(*sym).flags |= ((NI32)1)<<((((NU8) 12))%(sizeof(NI32)*8));
					}
					LA232: ;
				}
				break;
				case ((NU16) 190):
				{
					processcodegendecl_261532(c, it, sym);
				}
				break;
				case ((NU16) 141):
				case ((NU16) 82):
				case ((NU16) 170):
				case ((NU16) 142):
				case ((NU16) 143):
				case ((NU16) 144):
				case ((NU16) 145):
				case ((NU16) 149):
				case ((NU16) 151):
				case ((NU16) 152):
				case ((NU16) 118):
				case ((NU16) 119):
				case ((NU16) 120):
				case ((NU16) 153):
				case ((NU16) 126):
				case ((NU16) 128):
				case ((NU16) 81):
				case ((NU16) 146):
				case ((NU16) 147):
				case ((NU16) 148):
				case ((NU16) 150):
				{
					{
						NIM_BOOL LOC238;
						LOC238 = 0;
						LOC238 = processoption_262209(c, it);
						if (!LOC238) goto LA239;
						localerror_166155((*it).info, ((NU16) 149), ((NimStringDesc*) &TMP3031));
					}
					LA239: ;
				}
				break;
				case ((NU16) 129) ... ((NU16) 138):
				{
					{
						if (!((*sym).typ == NIM_NIL)) goto LA244;
						invalidpragma_261078(it);
					}
					goto LA242;
					LA244: ;
					{
						(*(*sym).typ).callconv = wordtocallconv_261666(k);
					}
					LA242: ;
				}
				break;
				case ((NU16) 186):
				{
					pragmaemit_262605(c, it);
				}
				break;
				case ((NU16) 175):
				{
					pragmaunroll_262634(c, it);
				}
				break;
				case ((NU16) 176):
				case ((NU16) 177):
				{
					noval_262616(it);
				}
				break;
				case ((NU16) 158):
				{
					noval_262616(it);
				}
				break;
				case ((NU16) 94):
				{
					noval_262616(it);
					{
						if (!((*sym).typ == NIM_NIL)) goto LA254;
						invalidpragma_261078(it);
					}
					goto LA252;
					LA254: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
					}
					LA252: ;
				}
				break;
				case ((NU16) 191):
				{
					noval_262616(it);
					{
						if (!((*sym).typ == NIM_NIL)) goto LA260;
						invalidpragma_261078(it);
					}
					goto LA258;
					LA260: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
					}
					LA258: ;
				}
				break;
				case ((NU16) 233):
				{
					noval_262616(it);
					{
						if (!((*sym).typ == NIM_NIL)) goto LA266;
						invalidpragma_261078(it);
					}
					goto LA264;
					LA266: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 1))%(sizeof(NI32)*8));
					}
					LA264: ;
				}
				break;
				case ((NU16) 95):
				{
					noval_262616(it);
					{
						if (!((*sym).typ == NIM_NIL)) goto LA272;
						invalidpragma_261078(it);
					}
					goto LA270;
					LA272: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 17))%(sizeof(NI32)*8));
					}
					LA270: ;
				}
				break;
				case ((NU16) 255):
				{
					noval_262616(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_262209(c, it);
							if (!LOC284) goto LA285;
							localerror_166155((*it).info, ((NU16) 149), ((NimStringDesc*) &TMP3031));
						}
						LA285: ;
					}
					goto LA276;
					LA280: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 13))%(sizeof(NI32)*8));
					}
					LA276: ;
				}
				break;
				case ((NU16) 254):
				{
					noval_262616(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_261078(it);
					}
					goto LA289;
					LA293: ;
					{
						(*(*sym).typ).flags |= ((NI32)1)<<((((NU8) 12))%(sizeof(NI32)*8));
					}
					LA289: ;
				}
				break;
				case ((NU16) 182):
				case ((NU16) 181):
				{
					noval_262616(it);
					{
						if (!(sym == NIM_NIL)) goto LA299;
						invalidpragma_261078(it);
					}
					LA299: ;
				}
				break;
				case ((NU16) 113):
				{
					pragmaline_262664(c, it);
				}
				break;
				case ((NU16) 154):
				case ((NU16) 159):
				{
					pragmaraisesortags_262818(c, it);
				}
				break;
				case ((NU16) 193):
				{
					{
						if (!(sym == NIM_NIL)) goto LA306;
						pragmalockstmt_262891(c, it);
					}
					goto LA304;
					LA306: ;
					{
						if (!((*sym).typ == NIM_NIL)) goto LA309;
						invalidpragma_261078(it);
					}
					goto LA304;
					LA309: ;
					{
						(*(*sym).typ).locklevel = pragmalocks_262959(c, it);
					}
					LA304: ;
				}
				break;
				case ((NU16) 192):
				{
					{
						NIM_BOOL LOC315;
						LOC315 = 0;
						LOC315 = (sym == NIM_NIL);
						if (LOC315) goto LA316;
						LOC315 = !(((525056 &(1<<(((*sym).kind)&31)))!=0));
						LA316: ;
						if (!LOC315) goto LA317;
						invalidpragma_261078(it);
					}
					goto LA313;
					LA317: ;
					{
						asgnRefNoCycle((void**) (&(*sym).kindU.S4.guard), pragmaguard_263142(c, it, (*sym).kind));
					}
					LA313: ;
				}
				break;
				case ((NU16) 209):
				{
					{
						NIM_BOOL LOC323;
						LOC323 = 0;
						LOC323 = (sym == NIM_NIL);
						if (LOC323) goto LA324;
						LOC323 = !(((768 &(1<<(((*sym).kind)&31)))!=0));
						LA324: ;
						if (!LOC323) goto LA325;
						invalidpragma_261078(it);
					}
					goto LA321;
					LA325: ;
					{
						(*sym).flags |= ((NI32)1)<<((((NU8) 30))%(sizeof(NI32)*8));
					}
					LA321: ;
				}
				break;
				case ((NU16) 178):
				{
					{
						if (!!(((*it).kind == ((NU8) 34)))) goto LA331;
						localerror_166155((*it).info, ((NU16) 60), ((NimStringDesc*) &TMP3031));
					}
					goto LA329;
					LA331: ;
					{
						asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), (*c).semexpr(c, (*it).kindU.S6.sons->data[((NI) 1)], 0));
					}
					LA329: ;
				}
				break;
				case ((NU16) 179):
				{
					noval_262616(it);
					{
						NIM_BOOL LOC337;
						LOC337 = 0;
						LOC337 = istoplevel_246269(c);
						if (!LOC337) goto LA338;
						(*(*c).module).flags |= ((NI32)1)<<((((NU8) 30))%(sizeof(NI32)*8));
					}
					goto LA335;
					LA338: ;
					{
						localerror_166166((*it).info, ((NimStringDesc*) &TMP3099));
					}
					LA335: ;
				}
				break;
				default:
				{
					invalidpragma_261078(it);
				}
				break;
				}
			}
			goto LA19;
			LA21: ;
			{
				invalidpragma_261078(it);
			}
			LA19: ;
		}
		LA10: ;
	}
	goto LA6;
	LA8: ;
	{
		processnote_262084(c, it);
	}
	LA6: ;
	return result;
}

N_NIMCALL(void, pragmarec_265063)(Tcontext245023* c, Tsym191843* sym, Tnode191813* n, Tspecialwords173012 validpragmas) {
{	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		NI i_265093;
		NI HEX3Atmp_265106;
		NI LOC6;
		NI res_265109;
		i_265093 = 0;
		HEX3Atmp_265106 = 0;
		LOC6 = 0;
		LOC6 = sonslen_194403(n);
		HEX3Atmp_265106 = (NI)(LOC6 - ((NI) 1));
		res_265109 = ((NI) 0);
		{
			while (1) {
				if (!(res_265109 <= HEX3Atmp_265106)) goto LA8;
				i_265093 = res_265109;
				{
					if (!((*(*n).kindU.S6.sons->data[i_265093]).kind == ((NU8) 90))) goto LA11;
					pragmarec_265063(c, sym, (*n).kindU.S6.sons->data[i_265093], validpragmas);
				}
				goto LA9;
				LA11: ;
				{
					NIM_BOOL LOC14;
					LOC14 = 0;
					LOC14 = singlepragma_263216(c, sym, n, i_265093, validpragmas);
					if (!LOC14) goto LA15;
					goto LA5;
				}
				goto LA9;
				LA15: ;
				LA9: ;
				res_265109 += ((NI) 1);
			} LA8: ;
		}
	} LA5: ;
	}BeforeRet: ;
}

N_NIMCALL(void, implicitpragmas_264505)(Tcontext245023* c, Tsym191843* sym, Tnode191813* n, Tspecialwords173012 validpragmas) {
	{
		NIM_BOOL LOC3;
		Toptionentry245005* it;
		Tlib191831* lib;
		LOC3 = 0;
		LOC3 = !((sym == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*sym).kind == ((NU8) 6)));
		LA4: ;
		if (!LOC3) goto LA5;
		it = ((Toptionentry245005*) ((*c).optionstack.head));
		{
			while (1) {
				Tnode191813* o;
				if (!!((it == NIM_NIL))) goto LA8;
				o = (*it).otherpragmas;
				{
					if (!!(o == 0)) goto LA11;
					pushinfocontext_165192((*n).info);
					{
						NI i_264567;
						NI HEX3Atmp_264670;
						NI LOC14;
						NI res_264673;
						i_264567 = 0;
						HEX3Atmp_264670 = 0;
						LOC14 = 0;
						LOC14 = sonslen_194403(o);
						HEX3Atmp_264670 = (NI)(LOC14 - ((NI) 1));
						res_264673 = ((NI) 0);
						{
							while (1) {
								if (!(res_264673 <= HEX3Atmp_264670)) goto LA16;
								i_264567 = res_264673;
								{
									NIM_BOOL LOC19;
									LOC19 = 0;
									LOC19 = singlepragma_263216(c, sym, o, i_264567, validpragmas);
									if (!LOC19) goto LA20;
									internalerror_166199((*n).info, ((NimStringDesc*) &TMP3100));
								}
								LA20: ;
								res_264673 += ((NI) 1);
							} LA16: ;
						}
					}
					popinfocontext_165211();
				}
				LA11: ;
				it = ((Toptionentry245005*) ((*it).Sup.next));
			} LA8: ;
		}
		{
			NIM_BOOL LOC24;
			LOC24 = 0;
			LOC24 = (((*sym).loc.flags &(1<<((((NU8) 5))&15)))!=0);
			if (!(LOC24)) goto LA25;
			LOC24 = !((((*sym).flags &(1<<((((NU8) 6))&31)))!=0));
			LA25: ;
			if (!LOC24) goto LA26;
			localerror_166155((*n).info, ((NU16) 79), ((NimStringDesc*) &TMP3031));
		}
		LA26: ;
		lib = (*((Toptionentry245005*) ((*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 &(1<<((((NU8) 5))&31)))!=0);
			LA32: ;
			LOC30 = LOC31;
			if (!(LOC30)) goto LA33;
			LOC30 = !((lib == NIM_NIL));
			LA33: ;
			if (!LOC30) goto LA34;
			(*sym).loc.flags |= ((NI16)1)<<((((NU8) 4))%(sizeof(NI16)*8));
			addtolib_245205(lib, sym);
			{
				if (!((*sym).loc.r == NIM_NIL)) goto LA38;
				asgnRefNoCycle((void**) (&(*sym).loc.r), rope_162320((*(*sym).name).s));
			}
			LA38: ;
		}
		LA34: ;
	}
	LA5: ;
}

N_NIMCALL(void, pragma_261069)(Tcontext245023* c, Tsym191843* sym, Tnode191813* n, Tspecialwords173012 validpragmas) {
{	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	pragmarec_265063(c, sym, n, validpragmas);
	implicitpragmas_264505(c, sym, n, validpragmas);
	}BeforeRet: ;
}

N_NIMCALL(NIM_BOOL, haspragma_264698)(Tnode191813* n, NU16 pragma) {
	NIM_BOOL result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (n == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = HEX3DHEX3D_264718((*n).kindU.S6.sons, NIM_NIL);
		LA4: ;
		if (!LOC3) goto LA5;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA5: ;
	{
		Tnode191813* p_265011;
		Tnodeseq191807* HEX3Atmp_265042;
		NI i_265045;
		NI L_265047;
		p_265011 = 0;
		HEX3Atmp_265042 = 0;
		HEX3Atmp_265042 = (*n).kindU.S6.sons;
		i_265045 = ((NI) 0);
		L_265047 = (HEX3Atmp_265042 ? HEX3Atmp_265042->Sup.len : 0);
		{
			while (1) {
				Tnode191813* key;
				if (!(i_265045 < L_265047)) goto LA9;
				p_265011 = HEX3Atmp_265042->data[i_265045];
				{
					if (!((*p_265011).kind == ((NU8) 34))) goto LA12;
					key = HEX5BHEX5D_192244(p_265011, ((NI) 0));
				}
				goto LA10;
				LA12: ;
				{
					key = p_265011;
				}
				LA10: ;
				{
					NIM_BOOL LOC17;
					NU16 LOC19;
					LOC17 = 0;
					LOC17 = ((*key).kind == ((NU8) 2));
					if (!(LOC17)) goto LA18;
					LOC19 = 0;
					LOC19 = whichkeyword_173386((*key).kindU.S5.ident);
					LOC17 = (LOC19 == pragma);
					LA18: ;
					if (!LOC17) goto LA20;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA20: ;
				i_265045 += ((NI) 1);
			} LA9: ;
		}
	}
	result = NIM_FALSE;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_CHAR, pragmaasm_261088)(Tcontext245023* c, Tnode191813* n) {
	NIM_CHAR result;
	result = 0;
	result = 0;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		{
			NI i_261117;
			NI HEX3Atmp_261154;
			NI LOC6;
			NI res_261157;
			i_261117 = 0;
			HEX3Atmp_261154 = 0;
			LOC6 = 0;
			LOC6 = sonslen_194403(n);
			HEX3Atmp_261154 = (NI)(LOC6 - ((NI) 1));
			res_261157 = ((NI) 0);
			{
				while (1) {
					Tnode191813* it;
					if (!(res_261157 <= HEX3Atmp_261154)) goto LA8;
					i_261117 = res_261157;
					it = (*n).kindU.S6.sons->data[i_261117];
					{
						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_173386((*(*it).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident);
						switch (LOC15) {
						case ((NU16) 172):
						{
							{
								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_261078(it);
							}
							LA17: ;
						}
						break;
						default:
						{
							invalidpragma_261078(it);
						}
						break;
						}
					}
					goto LA9;
					LA13: ;
					{
						invalidpragma_261078(it);
					}
					LA9: ;
					res_261157 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	LA3: ;
	return result;
}
NIM_EXTERNC N_NOINLINE(void, nimsrc_pragmasInit)(void) {
}

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

