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

#include <string.h>
typedef struct tcontext289021 tcontext289021;
typedef struct tsym224846 tsym224846;
typedef struct tnode224816 tnode224816;
typedef struct ttype224852 ttype224852;
typedef struct tlineinfo194539 tlineinfo194539;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tident199021 tident199021;
typedef struct tnodeseq224810 tnodeseq224810;
typedef struct tstrtable224820 tstrtable224820;
typedef struct tsymseq224818 tsymseq224818;
typedef struct tpasscontext285005 tpasscontext285005;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tscope224840 tscope224840;
typedef struct tproccon289011 tproccon289011;
typedef struct intset221056 intset221056;
typedef struct ttrunk221052 ttrunk221052;
typedef struct ttrunkseq221054 ttrunkseq221054;
typedef struct tlinkedlist126028 tlinkedlist126028;
typedef struct tlistentry126022 tlistentry126022;
typedef struct tidtable224864 tidtable224864;
typedef struct tidpairseq224862 tidpairseq224862;
typedef struct tidpair224860 tidpair224860;
typedef struct tidobj199015 tidobj199015;
typedef struct tctx288048 tctx288048;
typedef struct TY289133 TY289133;
typedef struct tinstantiationpair289013 tinstantiationpair289013;
typedef struct tinstantiation224836 tinstantiation224836;
typedef struct ttypeseq224848 ttypeseq224848;
typedef struct TY224947 TY224947;
typedef struct tloc224830 tloc224830;
typedef struct trope176009 trope176009;
typedef struct tlib224834 tlib224834;
typedef struct tcell44935 tcell44935;
typedef struct tcellseq44951 tcellseq44951;
typedef struct tgcheap47016 tgcheap47016;
typedef struct tcellset44947 tcellset44947;
typedef struct tpagedesc44943 tpagedesc44943;
typedef struct tmemregion27210 tmemregion27210;
typedef struct tsmallchunk26440 tsmallchunk26440;
typedef struct tllchunk27204 tllchunk27204;
typedef struct tbigchunk26442 tbigchunk26442;
typedef struct tintset26417 tintset26417;
typedef struct ttrunk26413 ttrunk26413;
typedef struct tavlnode27208 tavlnode27208;
typedef struct tgcstat47014 tgcstat47014;
typedef struct toptionentry289005 toptionentry289005;
typedef struct TY116604 TY116604;
typedef struct tinfocc201016 tinfocc201016;
typedef struct TY288250 TY288250;
typedef struct TY195414 TY195414;
typedef struct pprocHEX3Aobjecttype288230 pprocHEX3Aobjecttype288230;
typedef struct TY288269 TY288269;
typedef struct TY288270 TY288270;
typedef struct vmargs288042 vmargs288042;
typedef struct TY224936 TY224936;
typedef struct tbasechunk26438 tbasechunk26438;
typedef struct tfreecell26430 tfreecell26430;
typedef struct TY288231 TY288231;
typedef struct tblock288030 tblock288030;
typedef struct TY288211 TY288211;
typedef struct TY288237 TY288237;
typedef NU8 tspecialwords203012[32];
struct  tlineinfo194539  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tnode224816  {
ttype224852* Typ;
tlineinfo194539 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym224846* Sym;
} S4;
struct {tident199021* Ident;
} S5;
struct {tnodeseq224810* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
struct  tstrtable224820  {
NI Counter;
tsymseq224818* Data;
};
typedef N_NIMCALL_PTR(void, TY3089) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3094) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3089 marker;
TY3094 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tpasscontext285005  {
  TNimObject Sup;
NIM_BOOL Fromcache;
};
struct  intset221056  {
NI Counter;
NI Max;
ttrunk221052* Head;
ttrunkseq221054* Data;
};
struct  tlinkedlist126028  {
tlistentry126022* Head;
tlistentry126022* Tail;
NI Counter;
};
struct  tidpair224860  {
tidobj199015* Key;
TNimObject* Val;
};
struct  tidtable224864  {
NI Counter;
tidpairseq224862* Data;
};
typedef N_NIMCALL_PTR(tnode224816*, TY289064) (tcontext289021* c, tnode224816* n);
typedef N_NIMCALL_PTR(tnode224816*, TY289069) (tcontext289021* c, tnode224816* n, NU16 flags);
typedef N_NIMCALL_PTR(tnode224816*, TY289077) (tcontext289021* c, tnode224816* n, NU16 flags);
typedef N_NIMCALL_PTR(tnode224816*, TY289085) (tcontext289021* c, tnode224816* n);
typedef N_NIMCALL_PTR(tnode224816*, TY289090) (tcontext289021* c, tnode224816* n, NU16 flags);
typedef N_NIMCALL_PTR(tnode224816*, TY289098) (tcontext289021* c, tnode224816* n);
typedef N_NIMCALL_PTR(tnode224816*, TY289103) (tcontext289021* c, tnode224816* n, tnode224816* norig, NU32 filter);
typedef N_NIMCALL_PTR(ttype224852*, TY289110) (tcontext289021* c, tnode224816* n, ttype224852* prev);
typedef struct {
N_NIMCALL_PTR(tnode224816*, ClPrc) (tcontext289021* c, tidtable224864 pt, tnode224816* n, void* ClEnv);
void* ClEnv;
} TY289116;
typedef struct {
N_NIMCALL_PTR(tsym224846*, ClPrc) (tcontext289021* c, tsym224846* fn, tidtable224864 pt, tlineinfo194539 info, void* ClEnv);
void* ClEnv;
} TY289122;
struct  tinstantiationpair289013  {
tsym224846* Genericsym;
tinstantiation224836* Inst;
};
typedef N_NIMCALL_PTR(tsym224846*, TY289138) (tcontext289021* c, tsym224846* dc, ttype224852* t, tlineinfo194539 info);
struct  tcontext289021  {
  tpasscontext285005 Sup;
tsym224846* Module;
tscope224840* Currentscope;
tscope224840* Importtable;
tscope224840* Toplevelscope;
tproccon289011* P;
tsymseq224818* Friendmodules;
NI Instcounter;
intset221056 Ambiguoussymbols;
NI Intypeclass;
NI Ingenericcontext;
NI Inunrolledcontext;
NI Incompilescontext;
NI Ingenericinst;
tsymseq224818* Converters;
tsymseq224818* Patterns;
tlinkedlist126028 Optionstack;
tidtable224864 Symmapping;
tlinkedlist126028 Libs;
TY289064 Semconstexpr;
TY289069 Semexpr;
TY289077 Semtryexpr;
TY289085 Semtryconstexpr;
TY289090 Semoperand;
TY289098 Semconstboolexpr;
TY289103 Semoverloadedcall;
TY289110 Semtypenode;
TY289116 Seminferredlambda;
TY289122 Semgenerateinstance;
intset221056 Includedfiles;
tstrtable224820 Userpragmas;
tctx288048* Evalcontext;
intset221056 Unknownidents;
TY289133* Generics;
NI Lastgenericidx;
NI Hloloopdetector;
NI Inparallelstmt;
TY289138 Instdeepcopy;
};
struct  tidobj199015  {
  TNimObject Sup;
NI Id;
};
struct  tloc224830  {
NU8 K;
NU8 S;
NU8 Flags;
ttype224852* T;
trope176009* R;
trope176009* Heaproot;
};
struct  tsym224846  {
  tidobj199015 Sup;
NU8 Kind;
union {
struct {ttypeseq224848* Typeinstcache;
tscope224840* Typscope;
} S1;
struct {TY224947* Procinstcache;
tscope224840* Scope;
} S2;
struct {TY224947* Usedgenerics;
tstrtable224820 Tab;
} S3;
struct {tsym224846* Guard;
} S4;
} kindU;
NU16 Magic;
ttype224852* Typ;
tident199021* Name;
tlineinfo194539 Info;
tsym224846* Owner;
NU32 Flags;
tnode224816* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc224830 Loc;
tlib224834* Annex;
tnode224816* Constraint;
};
struct  tident199021  {
  tidobj199015 Sup;
NimStringDesc* S;
tident199021* Next;
NI H;
};
struct  tcell44935  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq44951  {
NI Len;
NI Cap;
tcell44935** D;
};
struct  tcellset44947  {
NI Counter;
NI Max;
tpagedesc44943* Head;
tpagedesc44943** Data;
};
typedef tsmallchunk26440* TY27222[512];
typedef ttrunk26413* ttrunkbuckets26415[256];
struct  tintset26417  {
ttrunkbuckets26415 Data;
};
struct  tmemregion27210  {
NI Minlargeobj;
NI Maxlargeobj;
TY27222 Freesmallchunks;
tllchunk27204* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk26442* Freechunkslist;
tintset26417 Chunkstarts;
tavlnode27208* Root;
tavlnode27208* Deleted;
tavlnode27208* Last;
tavlnode27208* Freeavlnodes;
};
struct  tgcstat47014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap47016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq44951 Zct;
tcellseq44951 Decstack;
tcellset44947 Cycleroots;
tcellseq44951 Tempstack;
NI Recgclock;
tmemregion27210 Region;
tgcstat47014 Stat;
};
struct  ttype224852  {
  tidobj199015 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq224848* Sons;
tnode224816* N;
tsym224846* Owner;
tsym224846* Sym;
tsym224846* Destructor;
tsym224846* Deepcopy;
NI64 Size;
NI16 Align;
NI16 Locklevel;
tloc224830 Loc;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  tlistentry126022  {
  TNimObject Sup;
tlistentry126022* Prev;
tlistentry126022* Next;
};
struct  tlib224834  {
  tlistentry126022 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope176009* Name;
tnode224816* Path;
};
struct  toptionentry289005  {
  tlistentry126022 Sup;
NU32 Options;
NU8 Defaultcc;
tlib224834* Dynlib;
NU64 Notes;
tnode224816* Otherpragmas;
};
struct TY116604 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
struct tinfocc201016 {
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 tinfocc201016 TY201435[12];
typedef NimStringDesc* TY194500[17];
typedef NimStringDesc* TY194495[29];
struct  tproccon289011  {
tsym224846* Owner;
tsym224846* Resultsym;
NI Nestedloopcounter;
NI Nestedblockcounter;
NI Intrystmt;
tproccon289011* Next;
};
struct  tscope224840  {
NI Depthlevel;
tstrtable224820 Symbols;
tnodeseq224810* Usingsyms;
tscope224840* Parent;
};
typedef NI TY26420[16];
struct  ttrunk221052  {
ttrunk221052* Next;
NI Key;
TY26420 Bits;
};
struct  vmargs288042  {
NI Ra;
NI Rb;
NI Rc;
void* Slots;
tnode224816* Currentexception;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (vmargs288042* args, void* ClEnv);
void* ClEnv;
} vmcallback288044;
struct TY288270 {
NimStringDesc* Field0;
vmcallback288044 Field1;
};
struct  tctx288048  {
  tpasscontext285005 Sup;
TY288250* Code;
TY195414* Debug;
tnode224816* Globals;
tnode224816* Constants;
ttypeseq224848* Types;
tnode224816* Currentexceptiona;
tnode224816* Currentexceptionb;
NI Exceptioninstr;
pprocHEX3Aobjecttype288230* Prc;
tsym224846* Module;
tnode224816* Callsite;
NU8 Mode;
NU8 Features;
NIM_BOOL Traceactive;
NI Loopiterations;
tlineinfo194539 Comesfromheuristic;
TY288269* Callbacks;
NimStringDesc* Errorflag;
};
struct  tinstantiation224836  {
tsym224846* Sym;
ttypeseq224848* Concretetypes;
TY224936* Usedby;
};
struct  trope176009  {
  TNimObject Sup;
trope176009* Left;
trope176009* Right;
NI Length;
NimStringDesc* Data;
};
struct  tpagedesc44943  {
tpagedesc44943* Next;
NI Key;
TY26420 Bits;
};
struct  tbasechunk26438  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk26440  {
  tbasechunk26438 Sup;
tsmallchunk26440* Next;
tsmallchunk26440* Prev;
tfreecell26430* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk27204  {
NI Size;
NI Acc;
tllchunk27204* Next;
};
struct  tbigchunk26442  {
  tbasechunk26438 Sup;
tbigchunk26442* Next;
tbigchunk26442* Prev;
NI Align;
NF Data;
};
struct  ttrunk26413  {
ttrunk26413* Next;
NI Key;
TY26420 Bits;
};
typedef tavlnode27208* TY27214[2];
struct  tavlnode27208  {
TY27214 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  tblock288030  {
tsym224846* Label;
TY288211* Fixups;
};
struct TY288237 {
NIM_BOOL Field0;
NU8 Field1;
};
typedef TY288237 TY288234[256];
struct  pprocHEX3Aobjecttype288230  {
TY288231* Blocks;
tsym224846* Sym;
TY288234 Slots;
NI Maxslots;
};
struct  tfreecell26430  {
tfreecell26430* Next;
NI Zerofield;
};
struct tnodeseq224810 {
  TGenericSeq Sup;
  tnode224816* data[SEQ_DECL_SIZE];
};
struct tsymseq224818 {
  TGenericSeq Sup;
  tsym224846* data[SEQ_DECL_SIZE];
};
struct ttrunkseq221054 {
  TGenericSeq Sup;
  ttrunk221052* data[SEQ_DECL_SIZE];
};
struct tidpairseq224862 {
  TGenericSeq Sup;
  tidpair224860 data[SEQ_DECL_SIZE];
};
struct TY289133 {
  TGenericSeq Sup;
  tinstantiationpair289013 data[SEQ_DECL_SIZE];
};
struct ttypeseq224848 {
  TGenericSeq Sup;
  ttype224852* data[SEQ_DECL_SIZE];
};
struct TY224947 {
  TGenericSeq Sup;
  tinstantiation224836* data[SEQ_DECL_SIZE];
};
struct TY288250 {
  TGenericSeq Sup;
  NU32 data[SEQ_DECL_SIZE];
};
struct TY195414 {
  TGenericSeq Sup;
  tlineinfo194539 data[SEQ_DECL_SIZE];
};
struct TY288269 {
  TGenericSeq Sup;
  TY288270 data[SEQ_DECL_SIZE];
};
struct TY224936 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct TY288211 {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
struct TY288231 {
  TGenericSeq Sup;
  tblock288030 data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, pragmarec_315076)(tcontext289021* c, tsym224846* sym, tnode224816* n, tspecialwords203012 validpragmas);
static N_INLINE(NI, sonslen_225249)(tnode224816* n);
N_NIMCALL(NIM_BOOL, singlepragma_312664)(tcontext289021* c, tsym224846* sym, tnode224816* n, NI i, tspecialwords203012 validpragmas);
N_NIMCALL(tsym224846*, strtableget_234111)(tstrtable224820 t, tident199021* name);
N_NIMCALL(void, globalerror_196934)(tlineinfo194539 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, pragma_309079)(tcontext289021* c, tsym224846* sym, tnode224816* n, tspecialwords203012 validpragmas);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tcell44935*, usrtocell_48646)(void* usr);
static N_INLINE(void, rtladdzct_50204)(tcell44935* c);
N_NOINLINE(void, addzct_48617)(tcellseq44951* s, tcell44935* c);
N_NIMCALL(NU8, whichkeyword_203382)(tident199021* id);
N_NIMCALL(void, makeexternexport_309382)(tsym224846* s, NimStringDesc* extname, tlineinfo194539 info);
N_NIMCALL(void, setexternname_309280)(tsym224846* s, NimStringDesc* extname);
N_NIMCALL(trope176009*, torope_176076)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(NIM_BOOL, contains_97245)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, getoptionalstr_309832)(tcontext289021* c, tnode224816* n, NimStringDesc* defaultstr);
N_NIMCALL(NimStringDesc*, expectstrlit_309717)(tcontext289021* c, tnode224816* n);
N_NIMCALL(tnode224816*, getstrlitnode_309641)(tcontext289021* c, tnode224816* n);
N_NIMCALL(void, localerror_196955)(tlineinfo194539 info, NU16 msg, NimStringDesc* arg);
N_NOINLINE(tnode224816*, newemptystrnode_309617)(tnode224816* n);
N_NIMCALL(tnode224816*, newnodeit_225145)(NU8 kind, tlineinfo194539 info, ttype224852* typ);
N_NIMCALL(ttype224852*, getsystype_281030)(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_309315)(tsym224846* s, NimStringDesc* extname);
N_NIMCALL(void, processimportcompilerproc_309409)(tsym224846* s, NimStringDesc* extname);
N_NIMCALL(void, invalidpragma_309088)(tnode224816* n);
N_NIMCALL(NimStringDesc*, rendertree_249058)(tnode224816* n, NU8 renderflags);
N_NIMCALL(void, processimportcpp_309467)(tsym224846* s, NimStringDesc* extname);
N_NIMCALL(tsym224846*, getmodule_234243)(tsym224846* s);
N_NIMCALL(void, processimportobjc_309542)(tsym224846* s, NimStringDesc* extname);
N_NIMCALL(NI, expectintlit_309742)(tcontext289021* c, tnode224816* n);
N_NIMCALL(NIM_BOOL, ispoweroftwo_145518)(NI x);
N_NIMCALL(void, noval_311762)(tnode224816* n);
N_NIMCALL(void, pragmadeadcodeelim_310172)(tcontext289021* c, tnode224816* n);
N_NIMCALL(NIM_BOOL, isturnedon_310055)(tcontext289021* c, tnode224816* n);
N_NIMCALL(void, pragmanoforward_310214)(tcontext289021* c, tnode224816* n);
N_NIMCALL(void, processmagic_309864)(tcontext289021* c, tnode224816* n, tsym224846* s);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI start);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI first);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_80907, TNimType* typ);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, message_196976)(tlineinfo194539 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(tlib224834*, getlib_310327)(tcontext289021* c, NU8 kind, tnode224816* path);
N_NIMCALL(NIM_BOOL, exprstructuralequivalent_260184)(tnode224816* a, tnode224816* b);
N_NIMCALL(tlib224834*, newlib_289187)(NU8 kind);
N_NIMCALL(void, append_126053)(tlinkedlist126028* list, tlistentry126022* entry);
N_NIMCALL(NIM_BOOL, isdynliboverride_169490)(NimStringDesc* lib);
N_NIMCALL(void, addtolib_289193)(tlib224834* lib, tsym224846* sym);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(void, processdynlib_310513)(tcontext289021* c, tnode224816* n, tsym224846* sym);
N_NIMCALL(tnode224816*, expectdynlibnode_310402)(tcontext289021* c, tnode224816* n);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_51025)(tcell44935* c);
static N_INLINE(NIM_BOOL, canbecycleroot_48667)(tcell44935* c);
static N_INLINE(void, rtladdcycleroot_49429)(tcell44935* c);
N_NOINLINE(void, incl_45671)(tcellset44947* s, tcell44935* cell);
static N_INLINE(void, decref_50604)(tcell44935* c);
N_NIMCALL(void, markcompilerproc_312441)(tsym224846* s);
N_NIMCALL(void, registercompilerproc_281042)(tsym224846* s);
N_NIMCALL(void, deprecatedstmt_312482)(tcontext289021* c, tnode224816* pragma_312485);
static N_INLINE(tnode224816*, HEX5BHEX5D_225698)(tnode224816* n, NI i);
N_NIMCALL(void, localerror_196966)(tlineinfo194539 info, NimStringDesc* arg);
static N_INLINE(NI, len_225364)(tnode224816* n);
N_NIMCALL(tsym224846*, qualifiedlookup_295122)(tcontext289021* c, tnode224816* n, NU8 flags);
N_NIMCALL(tident199021*, considerquotedident_294010)(tnode224816* n);
N_NIMCALL(tsym224846*, newsym_225074)(NU8 symkind, tident199021* name, tsym224846* owner, tlineinfo194539 info);
N_NIMCALL(void, addinterfacedecl_294845)(tcontext289021* c, tsym224846* sym);
N_NIMCALL(void, typeborrow_312382)(tsym224846* sym, tnode224816* n);
static N_INLINE(NIM_BOOL, isroutine_231780)(tsym224846* s);
N_NIMCALL(void, fatal_196923)(tlineinfo194539 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, processdefine_311379)(tcontext289021* c, tnode224816* n);
N_NIMCALL(void, definesymbol_200009)(NimStringDesc* symbol);
N_NIMCALL(void, processundef_311449)(tcontext289021* c, tnode224816* n);
N_NIMCALL(void, undefsymbol_200027)(NimStringDesc* symbol);
N_NIMCALL(void, processcompile_311526)(tcontext289021* c, tnode224816* n);
N_NIMCALL(NimStringDesc*, findfile_169356)(NimStringDesc* f);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(void, addexternalfiletocompile_202399)(NimStringDesc* filename);
N_NIMCALL(void, addfiletolink_201897)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, completecfilepath_201855)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(void, processcommonlink_311539)(tcontext289021* c, tnode224816* n, NU8 feature);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY116604* Result);
N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, HEX2F_116299)(NimStringDesc* head, NimStringDesc* tail);
N_NIMCALL(void, internalerror_196987)(tlineinfo194539 info, NimStringDesc* errmsg);
N_NIMCALL(void, addlinkoption_201798)(NimStringDesc* option);
N_NIMCALL(void, addcompileoption_201809)(NimStringDesc* option);
N_NIMCALL(void, pragmabreakpoint_311552)(tcontext289021* c, tnode224816* n);
N_NIMCALL(void, pragmawatchpoint_311585)(tcontext289021* c, tnode224816* n);
N_NIMCALL(void, processpush_311264)(tcontext289021* c, tnode224816* n, NI start);
N_NIMCALL(toptionentry289005*, newoptionentry_289182)(void);
N_NIMCALL(NIM_BOOL, processoption_311002)(tcontext289021* c, tnode224816* n);
N_NIMCALL(void, processnote_310631)(tcontext289021* c, tnode224816* n);
N_NIMCALL(NI, findstr_203342)(NimStringDesc** a, NI aLen0, NimStringDesc* s);
N_NIMCALL(void, onoff_310127)(tcontext289021* c, tnode224816* n, NU32 op);
N_NIMCALL(void, processcallconv_310256)(tcontext289021* c, tnode224816* n);
N_NIMCALL(NU8, wordtocallconv_310018)(NU8 sw);
N_NIMCALL(tnode224816*, newnodei_225138)(NU8 kind, tlineinfo194539 info);
N_NIMCALL(void, add_225498)(tnode224816* father, tnode224816* son);
N_NIMCALL(void, processpop_311368)(tcontext289021* c, tnode224816* n);
N_NIMCALL(void, remove_126652)(tlinkedlist126028* list, tlistentry126022* entry);
N_NIMCALL(void, processpragma_312016)(tcontext289021* c, tnode224816* n, NI i);
N_NIMCALL(void, addson_225287)(tnode224816* father, tnode224816* son);
N_NIMCALL(void, strtableadd_234103)(tstrtable224820* t, tsym224846* n);
N_NIMCALL(void, processcodegendecl_309853)(tcontext289021* c, tnode224816* n, tsym224846* sym);
N_NIMCALL(void, pragmaemit_311738)(tcontext289021* c, tnode224816* n);
N_NIMCALL(tnode224816*, semasmoremit_311632)(tcontext289021* con, tnode224816* n, NIM_CHAR marker);
N_NIMCALL(tnode224816*, newnode_227207)(NU8 kind, tlineinfo194539 info, tnodeseq224810* sons, ttype224852* 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_74828, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(tnode224816*, newstrnode_225118)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(tsym224846*, searchinscopes_294312)(tcontext289021* c, tident199021* s);
N_NIMCALL(tident199021*, getident_199472)(NimStringDesc* identifier);
N_NIMCALL(void, loadstub_278261)(tsym224846* s);
N_NIMCALL(tnode224816*, newsymnode_225132)(tsym224846* sym);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
N_NIMCALL(void, illformedast_290406)(tnode224816* n);
N_NIMCALL(void, pragmaunroll_311780)(tcontext289021* c, tnode224816* n);
N_NIMCALL(tnode224816*, newintnode_225096)(NU8 kind, NI64 intval);
N_NIMCALL(void, pragmaline_311823)(tcontext289021* c, tnode224816* n);
N_NIMCALL(NI32, fileinfoidx_194747)(NimStringDesc* filename);
N_NIMCALL(tlineinfo194539, getinfocontext_195992)(NI index);
N_NIMCALL(void, pragmaraisesortags_312169)(tcontext289021* c, tnode224816* n);
N_NIMCALL(void, processexc_312173)(tcontext289021* c, tnode224816* x);
N_NIMCALL(ttype224852*, skiptypes_229245)(ttype224852* t, NU64 kinds);
N_NIMCALL(void, pragmalockstmt_312256)(tcontext289021* c, tnode224816* it);
N_NIMCALL(NI16, pragmalocks_312350)(tcontext289021* c, tnode224816* it);
N_NIMCALL(tsym224846*, pragmaguard_312570)(tcontext289021* c, tnode224816* it, NU8 kind);
static N_INLINE(NIM_BOOL, istoplevel_290437)(tcontext289021* c);
N_NIMCALL(void, implicitpragmas_314398)(tcontext289021* c, tsym224846* sym, tnode224816* n, tspecialwords203012 validpragmas);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_314667)(tnodeseq224810* x_314673, tnodeseq224810* y_314678);
STRING_LITERAL(TMP2925, "", 0);
STRING_LITERAL(TMP2926, "$1", 2);
STRING_LITERAL(TMP2927, "destroy", 7);
STRING_LITERAL(TMP2928, "destructor has to be named \'destroy\'", 36);
STRING_LITERAL(TMP2929, "list of key:value pairs expected", 32);
STRING_LITERAL(TMP2931, "key:value pair expected", 23);
STRING_LITERAL(TMP2932, "a type can only borrow `.` for now", 34);
STRING_LITERAL(TMP2933, "define", 6);
STRING_LITERAL(TMP2934, "undef", 5);
extern NIM_CONST TY201435 cc_201434;
STRING_LITERAL(TMP2935, "processCommonLink", 17);
STRING_LITERAL(TMP2936, "\':\' after \'push\' not supported", 30);
STRING_LITERAL(TMP2938, "Success", 7);
STRING_LITERAL(TMP2939, "SuccessX", 8);
STRING_LITERAL(TMP2940, "LineTooLong", 11);
STRING_LITERAL(TMP2941, "XDeclaredButNotUsed", 19);
STRING_LITERAL(TMP2942, "ConvToBaseNotNeeded", 19);
STRING_LITERAL(TMP2943, "ConvFromXtoItselfNotNeeded", 26);
STRING_LITERAL(TMP2944, "ExprAlwaysX", 11);
STRING_LITERAL(TMP2945, "QuitCalled", 10);
STRING_LITERAL(TMP2946, "Processing", 10);
STRING_LITERAL(TMP2947, "CodeBegin", 9);
STRING_LITERAL(TMP2948, "CodeEnd", 7);
STRING_LITERAL(TMP2949, "Conf", 4);
STRING_LITERAL(TMP2950, "Path", 4);
STRING_LITERAL(TMP2951, "CondTrue", 8);
STRING_LITERAL(TMP2952, "Name", 4);
STRING_LITERAL(TMP2953, "Pattern", 7);
STRING_LITERAL(TMP2954, "User", 4);
NIM_CONST TY194500 TMP2937 = {((NimStringDesc*) &TMP2938),
((NimStringDesc*) &TMP2939),
((NimStringDesc*) &TMP2940),
((NimStringDesc*) &TMP2941),
((NimStringDesc*) &TMP2942),
((NimStringDesc*) &TMP2943),
((NimStringDesc*) &TMP2944),
((NimStringDesc*) &TMP2945),
((NimStringDesc*) &TMP2946),
((NimStringDesc*) &TMP2947),
((NimStringDesc*) &TMP2948),
((NimStringDesc*) &TMP2949),
((NimStringDesc*) &TMP2950),
((NimStringDesc*) &TMP2951),
((NimStringDesc*) &TMP2952),
((NimStringDesc*) &TMP2953),
((NimStringDesc*) &TMP2954)}
;
STRING_LITERAL(TMP2956, "CannotOpenFile", 14);
STRING_LITERAL(TMP2957, "OctalEscape", 11);
STRING_LITERAL(TMP2958, "XIsNeverRead", 12);
STRING_LITERAL(TMP2959, "XmightNotBeenInit", 17);
STRING_LITERAL(TMP2960, "Deprecated", 10);
STRING_LITERAL(TMP2961, "ConfigDeprecated", 16);
STRING_LITERAL(TMP2962, "SmallLshouldNotBeUsed", 21);
STRING_LITERAL(TMP2963, "UnknownMagic", 12);
STRING_LITERAL(TMP2964, "RedefinitionOfLabel", 19);
STRING_LITERAL(TMP2965, "UnknownSubstitutionX", 20);
STRING_LITERAL(TMP2966, "LanguageXNotSupported", 21);
STRING_LITERAL(TMP2967, "FieldXNotSupported", 18);
STRING_LITERAL(TMP2968, "CommentXIgnored", 15);
STRING_LITERAL(TMP2969, "NilStmt", 7);
STRING_LITERAL(TMP2970, "AnalysisLoophole", 16);
STRING_LITERAL(TMP2971, "DifferentHeaps", 14);
STRING_LITERAL(TMP2972, "WriteToForeignHeap", 18);
STRING_LITERAL(TMP2973, "UnsafeCode", 10);
STRING_LITERAL(TMP2974, "EachIdentIsTuple", 16);
STRING_LITERAL(TMP2975, "ShadowIdent", 11);
STRING_LITERAL(TMP2976, "ProveInit", 9);
STRING_LITERAL(TMP2977, "ProveField", 10);
STRING_LITERAL(TMP2978, "ProveIndex", 10);
STRING_LITERAL(TMP2979, "GcUnsafe", 8);
STRING_LITERAL(TMP2980, "GcUnsafe2", 9);
STRING_LITERAL(TMP2981, "Uninit", 6);
STRING_LITERAL(TMP2982, "GcMem", 5);
STRING_LITERAL(TMP2983, "LockLevel", 9);
NIM_CONST TY194495 TMP2955 = {((NimStringDesc*) &TMP2956),
((NimStringDesc*) &TMP2957),
((NimStringDesc*) &TMP2958),
((NimStringDesc*) &TMP2959),
((NimStringDesc*) &TMP2960),
((NimStringDesc*) &TMP2961),
((NimStringDesc*) &TMP2962),
((NimStringDesc*) &TMP2963),
((NimStringDesc*) &TMP2964),
((NimStringDesc*) &TMP2965),
((NimStringDesc*) &TMP2966),
((NimStringDesc*) &TMP2967),
((NimStringDesc*) &TMP2968),
((NimStringDesc*) &TMP2969),
((NimStringDesc*) &TMP2970),
((NimStringDesc*) &TMP2971),
((NimStringDesc*) &TMP2972),
((NimStringDesc*) &TMP2973),
((NimStringDesc*) &TMP2974),
((NimStringDesc*) &TMP2975),
((NimStringDesc*) &TMP2976),
((NimStringDesc*) &TMP2977),
((NimStringDesc*) &TMP2978),
((NimStringDesc*) &TMP2979),
((NimStringDesc*) &TMP2980),
((NimStringDesc*) &TMP2981),
((NimStringDesc*) &TMP2982),
((NimStringDesc*) &TMP2983),
((NimStringDesc*) &TMP2954)}
;
STRING_LITERAL(TMP2984, "speed", 5);
STRING_LITERAL(TMP2985, "size", 4);
STRING_LITERAL(TMP2986, "none", 4);
STRING_LITERAL(TMP2987, "tuple", 5);
STRING_LITERAL(TMP2988, "invalid type for raises/tags list", 33);
STRING_LITERAL(TMP2989, "locks pragma takes a list of expressions", 40);
STRING_LITERAL(TMP2990, "integer must be within 0..1000", 30);
STRING_LITERAL(TMP2991, "\'experimental\' pragma only valid as toplevel statement", 54);
STRING_LITERAL(TMP2992, "implicitPragmas", 15);
extern tgcheap47016 gch_47044;
extern NU8 gcmd_168120;
extern NIM_BOOL gmixedmode_201462;
extern TNimType NTI224532; /* TMagic */
extern NU32 gglobaloptions_168118;
extern NU8 ccompiler_201461;
extern NimStringDesc* libpath_168233;
extern NU32 goptions_168116;
extern NU64 gnotes_195305;
extern TNimType NTI224810; /* TNodeSeq */

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

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

static N_INLINE(void, rtladdzct_50204)(tcell44935* c) {
	addzct_48617((&gch_47044.Zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tcell44935* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_48646(src);
		(*c).Refcount += 8;
	}
	LA3: ;
	{
		tcell44935* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_48646((*dest));
		{
			(*c).Refcount -= 8;
			if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA11;
			rtladdzct_50204(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

N_NIMCALL(void, setexternname_309280)(tsym224846* s, NimStringDesc* extname) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = nsuFormatSingleElem(extname, (*(*s).Name).S);
	asgnRefNoCycle((void**) (&(*s).Loc.R), torope_176076(LOC1));
	{
		NIM_BOOL LOC4;
		NIM_BOOL LOC6;
		LOC4 = 0;
		LOC4 = (gcmd_168120 == ((NU8) 7));
		if (!(LOC4)) goto LA5;
		LOC6 = 0;
		LOC6 = contains_97245(extname, 36);
		LOC4 = !(LOC6);
		LA5: ;
		if (!LOC4) goto LA7;
		(*s).Loc.Flags |= ((NI8)1)<<((((NU8) 1))%(sizeof(NI8)*8));
	}
	LA7: ;
}

N_NIMCALL(void, makeexternexport_309382)(tsym224846* s, NimStringDesc* extname, tlineinfo194539 info) {
	setexternname_309280(s, extname);
	(*s).Flags |= ((NI32)1)<<((((NU8) 6))%(sizeof(NI32)*8));
}

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

N_NOINLINE(tnode224816*, newemptystrnode_309617)(tnode224816* n) {
	tnode224816* result;
	ttype224852* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getsystype_281030(((NU8) 28));
	result = newnodeit_225145(((NU8) 20), (*n).Info, LOC1);
	LOC2 = 0;
	LOC2 = (*result).kindU.S3.Strval; (*result).kindU.S3.Strval = copyStringRC1(((NimStringDesc*) &TMP2925));
	if (LOC2) nimGCunrefNoCycle(LOC2);
	return result;
}

N_NIMCALL(tnode224816*, getstrlitnode_309641)(tcontext289021* c, tnode224816* n) {
	tnode224816* result;
	result = 0;
	{
		if (!!(((*n).Kind == ((NU8) 34)))) goto LA3;
		localerror_196955((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2925));
		result = newemptystrnode_309617(n);
	}
	goto LA1;
	LA3: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.Sons->data[1]), (*c).Semconstexpr(c, (*n).kindU.S6.Sons->data[1]));
		switch ((*(*n).kindU.S6.Sons->data[1]).Kind) {
		case ((NU8) 20):
		case ((NU8) 21):
		case ((NU8) 22):
		{
			result = (*n).kindU.S6.Sons->data[1];
		}
		break;
		default:
		{
			localerror_196955((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2925));
			result = newemptystrnode_309617(n);
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(NimStringDesc*, expectstrlit_309717)(tcontext289021* c, tnode224816* n) {
	NimStringDesc* result;
	tnode224816* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getstrlitnode_309641(c, n);
	result = copyString((*LOC1).kindU.S3.Strval);
	return result;
}

N_NIMCALL(NimStringDesc*, getoptionalstr_309832)(tcontext289021* c, tnode224816* n, NimStringDesc* defaultstr) {
	NimStringDesc* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		result = expectstrlit_309717(c, n);
	}
	goto LA1;
	LA3: ;
	{
		result = copyString(defaultstr);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, makeexternimport_309315)(tsym224846* s, NimStringDesc* extname) {
	setexternname_309280(s, extname);
	(*s).Flags |= ((NI32)1)<<((((NU8) 5))%(sizeof(NI32)*8));
	(*s).Flags &= ~(((NI32)1) << ((((NU8) 4)) % (sizeof(NI32)*8)));
}

N_NIMCALL(void, processimportcompilerproc_309409)(tsym224846* s, NimStringDesc* extname) {
	setexternname_309280(s, extname);
	(*s).Flags |= ((NI32)1)<<((((NU8) 5))%(sizeof(NI32)*8));
	(*s).Flags &= ~(((NI32)1) << ((((NU8) 4)) % (sizeof(NI32)*8)));
	(*s).Loc.Flags |= ((NI8)1)<<((((NU8) 7))%(sizeof(NI8)*8));
}

N_NIMCALL(void, invalidpragma_309088)(tnode224816* n) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = rendertree_249058(n, 4);
	localerror_196955((*n).Info, ((NU16) 162), LOC1);
}

N_NIMCALL(void, processimportcpp_309467)(tsym224846* s, NimStringDesc* extname) {
	tsym224846* m;
	setexternname_309280(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_234243(s);
	(*m).Flags |= ((NI32)1)<<((((NU8) 27))%(sizeof(NI32)*8));
	gmixedmode_201462 = NIM_TRUE;
}

N_NIMCALL(void, processimportobjc_309542)(tsym224846* s, NimStringDesc* extname) {
	tsym224846* m;
	setexternname_309280(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_234243(s);
	(*m).Flags |= ((NI32)1)<<((((NU8) 28))%(sizeof(NI32)*8));
}

N_NIMCALL(NI, expectintlit_309742)(tcontext289021* c, tnode224816* n) {
	NI result;
	result = 0;
	{
		if (!!(((*n).Kind == ((NU8) 34)))) goto LA3;
		localerror_196955((*n).Info, ((NU16) 7), ((NimStringDesc*) &TMP2925));
	}
	goto LA1;
	LA3: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.Sons->data[1]), (*c).Semconstexpr(c, (*n).kindU.S6.Sons->data[1]));
		switch ((*(*n).kindU.S6.Sons->data[1]).Kind) {
		case ((NU8) 6) ... ((NU8) 10):
		{
			result = ((NI) ((*(*n).kindU.S6.Sons->data[1]).kindU.S1.Intval));
		}
		break;
		default:
		{
			localerror_196955((*n).Info, ((NU16) 7), ((NimStringDesc*) &TMP2925));
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, noval_311762)(tnode224816* n) {
	{
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		invalidpragma_309088(n);
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, isturnedon_310055)(tcontext289021* c, tnode224816* n) {
	NIM_BOOL result;
	result = 0;
	{
		tnode224816* x;
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		x = (*c).Semconstboolexpr(c, (*n).kindU.S6.Sons->data[1]);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.Sons->data[1]), x);
		{
			if (!((*x).Kind == ((NU8) 6))) goto LA7;
			result = !(((*x).kindU.S1.Intval == IL64(0)));
			goto BeforeRet;
		}
		LA7: ;
	}
	LA3: ;
	localerror_196955((*n).Info, ((NU16) 26), ((NimStringDesc*) &TMP2925));
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, pragmadeadcodeelim_310172)(tcontext289021* c, tnode224816* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_310055(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_310214)(tcontext289021* c, tnode224816* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_310055(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)), (NI32)((*a).Sup.len * 1));
	LOC11 = (LOC13 == ((NI32) 0));
	LA12: ;
	result = LOC11;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, processmagic_309864)(tcontext289021* c, tnode224816* n, tsym224846* s) {
	NimStringDesc* v;
	{
		if (!!(((*n).Kind == ((NU8) 34)))) goto LA3;
		localerror_196955((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2925));
		goto BeforeRet;
	}
	LA3: ;
	v = 0;
	{
		if (!((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 2))) goto LA7;
		v = copyString((*(*(*n).kindU.S6.Sons->data[1]).kindU.S5.Ident).S);
	}
	goto LA5;
	LA7: ;
	{
		v = expectstrlit_309717(c, n);
	}
	LA5: ;
	{
		NU16 m_309978;
		NU16 res_310001;
		m_309978 = 0;
		res_310001 = ((NU16) 0);
		{
			while (1) {
				if (!(res_310001 <= ((NU16) 263))) goto LA12;
				m_309978 = res_310001;
				{
					NimStringDesc* LOC15;
					LOC15 = 0;
					LOC15 = copyStr(reprEnum(m_309978, (&NTI224532)), 1);
					if (!eqStrings(LOC15, v)) goto LA16;
					(*s).Magic = m_309978;
					goto LA10;
				}
				LA16: ;
				res_310001 += 1;
			} LA12: ;
		}
	} LA10: ;
	{
		if (!((*s).Magic == ((NU16) 0))) goto LA20;
		message_196976((*n).Info, ((NU16) 237), v);
	}
	LA20: ;
	BeforeRet: ;
}

N_NIMCALL(tlib224834*, getlib_310327)(tcontext289021* c, NU8 kind, tnode224816* path) {
	tlib224834* result;
	tlib224834* it;
	tlistentry126022* LOC12;
	result = 0;
	it = ((tlib224834*) ((*c).Libs.Head));
	{
		while (1) {
			if (!!((it == NIM_NIL))) goto LA2;
			{
				if (!((*it).Kind == kind)) goto LA5;
				{
					NIM_BOOL LOC9;
					LOC9 = 0;
					LOC9 = exprstructuralequivalent_260184((*it).Path, path);
					if (!LOC9) goto LA10;
					result = it;
					goto BeforeRet;
				}
				LA10: ;
			}
			LA5: ;
			it = ((tlib224834*) ((*it).Sup.Next));
		} LA2: ;
	}
	result = newlib_289187(kind);
	asgnRefNoCycle((void**) (&(*result).Path), path);
	LOC12 = 0;
	LOC12 = &result->Sup;
	append_126053((&(*c).Libs), LOC12);
	{
		if (!((*path).Kind >= ((NU8) 20) && (*path).Kind <= ((NU8) 22))) goto LA15;
		(*result).Isoverriden = isdynliboverride_169490((*path).kindU.S3.Strval);
	}
	LA15: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode224816*, expectdynlibnode_310402)(tcontext289021* c, tnode224816* n) {
	tnode224816* result;
	result = 0;
	{
		if (!!(((*n).Kind == ((NU8) 34)))) goto LA3;
		localerror_196955((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2925));
		result = newemptystrnode_309617(n);
	}
	goto LA1;
	LA3: ;
	{
		result = (*c).Semexpr(c, (*n).kindU.S6.Sons->data[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_196955((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2925));
			result = newemptystrnode_309617(n);
		}
		LA16: ;
	}
	LA1: ;
	return result;
}

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

static N_INLINE(void, rtladdcycleroot_49429)(tcell44935* c) {
	{
		if (!!((((NI) ((NI)((*c).Refcount & 3))) == 3))) goto LA3;
		(*c).Refcount = (NI)((NI)((*c).Refcount & -4) | 3);
		incl_45671((&gch_47044.Cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_51025)(tcell44935* c) {
	(*c).Refcount = (NI)((NU32)((*c).Refcount) + (NU32)(8));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_48667(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_49429(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_50604)(tcell44935* c) {
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		rtladdzct_50204(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_48667(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_49429(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tcell44935* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_48646(src);
		incref_51025(LOC5);
	}
	LA3: ;
	{
		tcell44935* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_48646((*dest));
		decref_50604(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

N_NIMCALL(void, processdynlib_310513)(tcontext289021* c, tnode224816* n, tsym224846* sym) {
	{
		NIM_BOOL LOC3;
		tnode224816* 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_310402(c, n);
		asgnRef((void**) (&(*((toptionentry289005*) ((*c).Optionstack.Tail))).Dynlib), getlib_310327(c, ((NU8) 1), LOC7));
	}
	goto LA1;
	LA5: ;
	{
		{
			tlib224834* lib;
			tnode224816* LOC13;
			if (!((*n).Kind == ((NU8) 34))) goto LA11;
			LOC13 = 0;
			LOC13 = expectdynlibnode_310402(c, n);
			lib = getlib_310327(c, ((NU8) 1), LOC13);
			{
				if (!!((*lib).Isoverriden)) goto LA16;
				addtolib_289193(lib, sym);
				(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 4))%(sizeof(NI8)*8));
			}
			LA16: ;
		}
		goto LA9;
		LA11: ;
		{
			(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 5))%(sizeof(NI8)*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_312441)(tsym224846* s) {
	makeexternexport_309382(s, ((NimStringDesc*) &TMP2926), (*s).Info);
	(*s).Flags |= ((NI32)1)<<((((NU8) 16))%(sizeof(NI32)*8));
	(*s).Flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
	registercompilerproc_281042(s);
}

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

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

N_NIMCALL(void, deprecatedstmt_312482)(tcontext289021* c, tnode224816* pragma_312485) {
	tnode224816* pragma;
	pragma = HEX5BHEX5D_225698(pragma_312485, 1);
	{
		if (!!(((*pragma).Kind == ((NU8) 41)))) goto LA3;
		localerror_196966((*pragma).Info, ((NimStringDesc*) &TMP2929));
		goto BeforeRet;
	}
	LA3: ;
	{
		tnode224816* n_312496;
		n_312496 = 0;
		{
			NI i_312547;
			NI HEX3Atmp_312549;
			NI LOC7;
			NI res_312551;
			i_312547 = 0;
			HEX3Atmp_312549 = 0;
			LOC7 = 0;
			LOC7 = len_225364(pragma);
			HEX3Atmp_312549 = (LOC7 - 1);
			res_312551 = 0;
			{
				while (1) {
					if (!(res_312551 <= HEX3Atmp_312549)) goto LA9;
					i_312547 = res_312551;
					n_312496 = (*pragma).kindU.S6.Sons->data[i_312547];
					{
						tsym224846* dest;
						tnode224816* LOC14;
						tident199021* src;
						tnode224816* LOC15;
						tsym224846* alias;
						tnode224816* LOC16;
						if (!((*n_312496).Kind == ((NU8) 34) || (*n_312496).Kind == ((NU8) 33))) goto LA12;
						LOC14 = 0;
						LOC14 = HEX5BHEX5D_225698(n_312496, 1);
						dest = qualifiedlookup_295122(c, LOC14, 2);
						LOC15 = 0;
						LOC15 = HEX5BHEX5D_225698(n_312496, 0);
						src = considerquotedident_294010(LOC15);
						LOC16 = 0;
						LOC16 = HEX5BHEX5D_225698(n_312496, 0);
						alias = newsym_225074(((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_312441(alias);
						}
						LA19: ;
						addinterfacedecl_294845(c, alias);
					}
					goto LA10;
					LA12: ;
					{
						localerror_196966((*n_312496).Info, ((NimStringDesc*) &TMP2931));
					}
					LA10: ;
					res_312551 += 1;
				} LA9: ;
			}
		}
	}
	BeforeRet: ;
}

N_NIMCALL(void, typeborrow_312382)(tsym224846* sym, tnode224816* n) {
	{
		tnode224816* it;
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		it = (*n).kindU.S6.Sons->data[1];
		{
			if (!!(((*it).Kind == ((NU8) 53)))) goto LA7;
			localerror_196966((*n).Info, ((NimStringDesc*) &TMP2932));
		}
		LA7: ;
	}
	LA3: ;
	(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 27))%(sizeof(NI32)*8));
}

static N_INLINE(NIM_BOOL, isroutine_231780)(tsym224846* s) {
	NIM_BOOL result;
	result = 0;
	result = ((520192 &(1<<(((*s).Kind)&31)))!=0);
	return result;
}

N_NIMCALL(void, processdefine_311379)(tcontext289021* c, tnode224816* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).Kind == ((NU8) 34));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 2));
		LA4: ;
		if (!LOC3) goto LA5;
		definesymbol_200009((*(*(*n).kindU.S6.Sons->data[1]).kindU.S5.Ident).S);
		message_196976((*n).Info, ((NU16) 234), ((NimStringDesc*) &TMP2933));
	}
	goto LA1;
	LA5: ;
	{
		invalidpragma_309088(n);
	}
	LA1: ;
}

N_NIMCALL(void, processundef_311449)(tcontext289021* c, tnode224816* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).Kind == ((NU8) 34));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 2));
		LA4: ;
		if (!LOC3) goto LA5;
		undefsymbol_200027((*(*(*n).kindU.S6.Sons->data[1]).kindU.S5.Ident).S);
		message_196976((*n).Info, ((NU16) 234), ((NimStringDesc*) &TMP2934));
	}
	goto LA1;
	LA5: ;
	{
		invalidpragma_309088(n);
	}
	LA1: ;
}

N_NIMCALL(void, processcompile_311526)(tcontext289021* c, tnode224816* n) {
	NimStringDesc* s;
	NimStringDesc* found;
	NimStringDesc* trunc;
	NimStringDesc* LOC5;
	s = expectstrlit_309717(c, n);
	found = findfile_169356(s);
	{
		if (!((found) && (found)->Sup.len == 0)) goto LA3;
		found = copyString(s);
	}
	LA3: ;
	trunc = noschangeFileExt(found, ((NimStringDesc*) &TMP2925));
	addexternalfiletocompile_202399(found);
	LOC5 = 0;
	LOC5 = completecfilepath_201855(trunc, NIM_FALSE);
	addfiletolink_201897(LOC5);
}

N_NIMCALL(void, processcommonlink_311539)(tcontext289021* c, tnode224816* n, NU8 feature) {
	NimStringDesc* f;
	NimStringDesc* found;
	f = expectstrlit_309717(c, n);
	{
		TY116604 LOC3;
		memset((void*)(&LOC3), 0, sizeof(LOC3));
		nossplitFile(f, (&LOC3));
		if (!((LOC3.Field2) && (LOC3.Field2)->Sup.len == 0)) goto LA4;
		f = nosaddFileExt(f, cc_201434[(ccompiler_201461)- 1].Field1);
	}
	LA4: ;
	found = findfile_169356(f);
	{
		if (!((found) && (found)->Sup.len == 0)) goto LA8;
		found = copyString(f);
	}
	LA8: ;
	switch (feature) {
	case ((NU8) 0):
	{
		addfiletolink_201897(found);
	}
	break;
	case ((NU8) 1):
	{
		NimStringDesc* LOC12;
		NimStringDesc* LOC13;
		LOC12 = 0;
		LOC12 = completecfilepath_201855(found, NIM_FALSE);
		LOC13 = 0;
		LOC13 = HEX2F_116299(libpath_168233, LOC12);
		addfiletolink_201897(LOC13);
	}
	break;
	default:
	{
		internalerror_196987((*n).Info, ((NimStringDesc*) &TMP2935));
	}
	break;
	}
}

N_NIMCALL(void, pragmabreakpoint_311552)(tcontext289021* c, tnode224816* n) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = getoptionalstr_309832(c, n, ((NimStringDesc*) &TMP2925));
}

N_NIMCALL(void, pragmawatchpoint_311585)(tcontext289021* c, tnode224816* n) {
	{
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.Sons->data[1]), (*c).Semexpr(c, (*n).kindU.S6.Sons->data[1], 0));
	}
	goto LA1;
	LA3: ;
	{
		invalidpragma_309088(n);
	}
	LA1: ;
}

N_NIMCALL(void, processnote_310631)(tcontext289021* c, tnode224816* n) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NIM_BOOL LOC6;
		NIM_BOOL LOC7;
		NI LOC9;
		NU16 nk;
		NU8 LOC16;
		tnode224816* x;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC6 = 0;
		LOC7 = 0;
		LOC7 = ((*n).Kind == ((NU8) 34));
		if (!(LOC7)) goto LA8;
		LOC9 = 0;
		LOC9 = sonslen_225249(n);
		LOC7 = (LOC9 == 2);
		LA8: ;
		LOC6 = LOC7;
		if (!(LOC6)) goto LA10;
		LOC6 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 42));
		LA10: ;
		LOC5 = LOC6;
		if (!(LOC5)) goto LA11;
		LOC5 = ((*(*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1]).Kind == ((NU8) 2));
		LA11: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA12;
		LOC4 = ((*(*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[0]).Kind == ((NU8) 2));
		LA12: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA13;
		LOC3 = ((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 2));
		LA13: ;
		if (!LOC3) goto LA14;
		nk = 0;
		LOC16 = 0;
		LOC16 = whichkeyword_203382((*(*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[0]).kindU.S5.Ident);
		switch (LOC16) {
		case ((NU8) 110):
		{
			NI x;
			x = findstr_203342(TMP2937, 17, (*(*(*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1]).kindU.S5.Ident).S);
			{
				if (!(0 <= x)) goto LA20;
				nk = ((NU16) ((NI32)(x + 259)));
			}
			goto LA18;
			LA20: ;
			{
				invalidpragma_309088(n);
				goto BeforeRet;
			}
			LA18: ;
		}
		break;
		case ((NU8) 109):
		{
			NI x;
			x = findstr_203342(TMP2955, 29, (*(*(*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1]).kindU.S5.Ident).S);
			{
				if (!(0 <= x)) goto LA26;
				nk = ((NU16) ((NI32)(x + 230)));
			}
			goto LA24;
			LA26: ;
			{
				invalidpragma_309088(n);
				goto BeforeRet;
			}
			LA24: ;
		}
		break;
		default:
		{
			invalidpragma_309088(n);
			goto BeforeRet;
		}
		break;
		}
		x = (*c).Semconstboolexpr(c, (*n).kindU.S6.Sons->data[1]);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.Sons->data[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_195305 |= ((NI64)1)<<(((nk- 230))%(sizeof(NI64)*8));
		}
		goto LA30;
		LA34: ;
		{
			gnotes_195305 &= ~(((NI64)1) << (((nk- 230)) % (sizeof(NI64)*8)));
		}
		LA30: ;
	}
	goto LA1;
	LA14: ;
	{
		invalidpragma_309088(n);
	}
	LA1: ;
	BeforeRet: ;
}

N_NIMCALL(void, onoff_310127)(tcontext289021* c, tnode224816* n, NU32 op) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_310055(c, n);
		if (!LOC3) goto LA4;
		goptions_168116 = (goptions_168116 | op);
	}
	goto LA1;
	LA4: ;
	{
		goptions_168116 = (goptions_168116 & ~ op);
	}
	LA1: ;
}

N_NIMCALL(NU8, wordtocallconv_310018)(NU8 sw) {
	NU8 result;
	result = 0;
	result = ((NU8) ((NI32)(((NI) ((NI32)(0 + ((NI) (sw))))) - 127)));
	return result;
}

N_NIMCALL(void, processcallconv_310256)(tcontext289021* c, tnode224816* n) {
	{
		NIM_BOOL LOC3;
		NU8 sw;
		LOC3 = 0;
		LOC3 = ((*n).Kind == ((NU8) 34));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 2));
		LA4: ;
		if (!LOC3) goto LA5;
		sw = whichkeyword_203382((*(*n).kindU.S6.Sons->data[1]).kindU.S5.Ident);
		switch (sw) {
		case ((NU8) 127) ... ((NU8) 136):
		{
			(*((toptionentry289005*) ((*c).Optionstack.Tail))).Defaultcc = wordtocallconv_310018(sw);
		}
		break;
		default:
		{
			localerror_196955((*n).Info, ((NU16) 100), ((NimStringDesc*) &TMP2925));
		}
		break;
		}
	}
	goto LA1;
	LA5: ;
	{
		localerror_196955((*n).Info, ((NU16) 100), ((NimStringDesc*) &TMP2925));
	}
	LA1: ;
}

N_NIMCALL(NIM_BOOL, processoption_311002)(tcontext289021* c, tnode224816* 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[0]).Kind == ((NU8) 42))) goto LA6;
		processnote_310631(c, n);
	}
	goto LA1;
	LA6: ;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 2)))) goto LA9;
		result = NIM_TRUE;
	}
	goto LA1;
	LA9: ;
	{
		NU8 sw;
		sw = whichkeyword_203382((*(*n).kindU.S6.Sons->data[0]).kindU.S5.Ident);
		switch (sw) {
		case ((NU8) 139):
		{
			onoff_310127(c, n, 1022);
		}
		break;
		case ((NU8) 81):
		{
			onoff_310127(c, n, 2);
		}
		break;
		case ((NU8) 168):
		{
			onoff_310127(c, n, 4);
		}
		break;
		case ((NU8) 140):
		{
			onoff_310127(c, n, 8);
		}
		break;
		case ((NU8) 141):
		{
			onoff_310127(c, n, 16);
		}
		break;
		case ((NU8) 142):
		{
			onoff_310127(c, n, 32);
		}
		break;
		case ((NU8) 143):
		{
			onoff_310127(c, n, 64);
		}
		break;
		case ((NU8) 144):
		{
			onoff_310127(c, n, 384);
		}
		break;
		case ((NU8) 145):
		{
			onoff_310127(c, n, 128);
		}
		break;
		case ((NU8) 146):
		{
			onoff_310127(c, n, 256);
		}
		break;
		case ((NU8) 147):
		{
			onoff_310127(c, n, 512);
		}
		break;
		case ((NU8) 149):
		{
			onoff_310127(c, n, 2048);
		}
		break;
		case ((NU8) 150):
		{
			onoff_310127(c, n, 4096);
		}
		break;
		case ((NU8) 124):
		{
			processcallconv_310256(c, n);
		}
		break;
		case ((NU8) 116):
		{
			onoff_310127(c, n, 1024);
		}
		break;
		case ((NU8) 117):
		{
			onoff_310127(c, n, 32768);
		}
		break;
		case ((NU8) 118):
		{
			onoff_310127(c, n, 65536);
		}
		break;
		case ((NU8) 126):
		{
			onoff_310127(c, n, 131072);
		}
		break;
		case ((NU8) 80):
		{
			onoff_310127(c, n, 524288);
		}
		break;
		case ((NU8) 253):
		{
			onoff_310127(c, n, 262144);
		}
		break;
		case ((NU8) 104):
		{
			processdynlib_310513(c, n, NIM_NIL);
		}
		break;
		case ((NU8) 151):
		{
			{
				if (!!(((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 2)))) goto LA36;
				invalidpragma_309088(n);
			}
			goto LA34;
			LA36: ;
			{
				NimStringDesc* LOC39;
				LOC39 = 0;
				LOC39 = nsuNormalize((*(*(*n).kindU.S6.Sons->data[1]).kindU.S5.Ident).S);
				if (eqStrings(LOC39, ((NimStringDesc*) &TMP2984))) goto LA40;
				if (eqStrings(LOC39, ((NimStringDesc*) &TMP2985))) goto LA41;
				if (eqStrings(LOC39, ((NimStringDesc*) &TMP2986))) goto LA42;
				goto LA43;
				LA40: ;
				{
					goptions_168116 |= ((NI32)1)<<((((NU8) 13))%(sizeof(NI32)*8));
					goptions_168116 &= ~(((NI32)1) << ((((NU8) 14)) % (sizeof(NI32)*8)));
				}
				goto LA44;
				LA41: ;
				{
					goptions_168116 &= ~(((NI32)1) << ((((NU8) 13)) % (sizeof(NI32)*8)));
					goptions_168116 |= ((NI32)1)<<((((NU8) 14))%(sizeof(NI32)*8));
				}
				goto LA44;
				LA42: ;
				{
					goptions_168116 &= ~(((NI32)1) << ((((NU8) 13)) % (sizeof(NI32)*8)));
					goptions_168116 &= ~(((NI32)1) << ((((NU8) 14)) % (sizeof(NI32)*8)));
				}
				goto LA44;
				LA43: ;
				{
					localerror_196955((*n).Info, ((NU16) 27), ((NimStringDesc*) &TMP2925));
				}
				LA44: ;
			}
			LA34: ;
		}
		break;
		case ((NU8) 186):
		{
			onoff_310127(c, n, 1048576);
		}
		break;
		case ((NU8) 148):
		{
			onoff_310127(c, n, 2097152);
		}
		break;
		default:
		{
			result = NIM_TRUE;
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, processpush_311264)(tcontext289021* c, tnode224816* n, NI start) {
	toptionentry289005* x;
	toptionentry289005* y;
	tlistentry126022* LOC5;
	{
		if (!((*(*n).kindU.S6.Sons->data[(NI32)(start - 1)]).Kind == ((NU8) 34))) goto LA3;
		localerror_196955((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP2936));
	}
	LA3: ;
	x = newoptionentry_289182();
	y = ((toptionentry289005*) ((*c).Optionstack.Tail));
	(*x).Options = goptions_168116;
	(*x).Defaultcc = (*y).Defaultcc;
	asgnRef((void**) (&(*x).Dynlib), (*y).Dynlib);
	(*x).Notes = gnotes_195305;
	LOC5 = 0;
	LOC5 = &x->Sup;
	append_126053((&(*c).Optionstack), LOC5);
	{
		NI i_311307;
		NI HEX3Atmp_311348;
		NI LOC7;
		NI res_311351;
		i_311307 = 0;
		HEX3Atmp_311348 = 0;
		LOC7 = 0;
		LOC7 = sonslen_225249(n);
		HEX3Atmp_311348 = (NI32)(LOC7 - 1);
		res_311351 = start;
		{
			while (1) {
				if (!(res_311351 <= HEX3Atmp_311348)) goto LA9;
				i_311307 = res_311351;
				{
					NIM_BOOL LOC12;
					LOC12 = 0;
					LOC12 = processoption_311002(c, (*n).kindU.S6.Sons->data[i_311307]);
					if (!LOC12) goto LA13;
					{
						if (!(*x).Otherpragmas == 0) goto LA17;
						asgnRefNoCycle((void**) (&(*x).Otherpragmas), newnodei_225138(((NU8) 90), (*n).Info));
					}
					LA17: ;
					add_225498((*x).Otherpragmas, (*n).kindU.S6.Sons->data[i_311307]);
				}
				LA13: ;
				res_311351 += 1;
			} LA9: ;
		}
	}
}

N_NIMCALL(void, processpop_311368)(tcontext289021* c, tnode224816* n) {
	{
		if (!((*c).Optionstack.Counter <= 1)) goto LA3;
		localerror_196955((*n).Info, ((NU16) 31), ((NimStringDesc*) &TMP2925));
	}
	goto LA1;
	LA3: ;
	{
		goptions_168116 = (*((toptionentry289005*) ((*c).Optionstack.Tail))).Options;
		gnotes_195305 = (*((toptionentry289005*) ((*c).Optionstack.Tail))).Notes;
		remove_126652((&(*c).Optionstack), (*c).Optionstack.Tail);
	}
	LA1: ;
}

N_NIMCALL(void, processpragma_312016)(tcontext289021* c, tnode224816* n, NI i) {
	tnode224816* it;
	tsym224846* userpragma;
	tnode224816* body;
	it = (*n).kindU.S6.Sons->data[i];
	{
		if (!!(((*it).Kind == ((NU8) 34)))) goto LA3;
		invalidpragma_309088(n);
	}
	goto LA1;
	LA3: ;
	{
		if (!!(((*(*it).kindU.S6.Sons->data[0]).Kind == ((NU8) 2)))) goto LA6;
		invalidpragma_309088(n);
	}
	goto LA1;
	LA6: ;
	{
		if (!!(((*(*it).kindU.S6.Sons->data[1]).Kind == ((NU8) 2)))) goto LA9;
		invalidpragma_309088(n);
	}
	goto LA1;
	LA9: ;
	LA1: ;
	userpragma = newsym_225074(((NU8) 18), (*(*it).kindU.S6.Sons->data[1]).kindU.S5.Ident, NIM_NIL, (*it).Info);
	body = newnodei_225138(((NU8) 90), (*n).Info);
	{
		NI j_312131;
		NI HEX3Atmp_312148;
		NI HEX3Atmp_312149;
		NI LOC12;
		NI res_312152;
		j_312131 = 0;
		HEX3Atmp_312148 = 0;
		HEX3Atmp_312149 = 0;
		HEX3Atmp_312148 = (NI32)(i + 1);
		LOC12 = 0;
		LOC12 = sonslen_225249(n);
		HEX3Atmp_312149 = (NI32)(LOC12 - 1);
		res_312152 = HEX3Atmp_312148;
		{
			while (1) {
				if (!(res_312152 <= HEX3Atmp_312149)) goto LA14;
				j_312131 = res_312152;
				addson_225287(body, (*n).kindU.S6.Sons->data[j_312131]);
				res_312152 += 1;
			} LA14: ;
		}
	}
	asgnRefNoCycle((void**) (&(*userpragma).Ast), body);
	strtableadd_234103((&(*c).Userpragmas), userpragma);
}

N_NIMCALL(void, processcodegendecl_309853)(tcontext289021* c, tnode224816* n, tsym224846* sym) {
	asgnRefNoCycle((void**) (&(*sym).Constraint), getstrlitnode_309641(c, n));
}

N_NIMCALL(tnode224816*, semasmoremit_311632)(tcontext289021* con, tnode224816* n, NIM_CHAR marker) {
	tnode224816* result;
	result = 0;
	switch ((*(*n).kindU.S6.Sons->data[1]).Kind) {
	case ((NU8) 20):
	case ((NU8) 21):
	case ((NU8) 22):
	{
		NU8 LOC2;
		tnodeseq224810* LOC8;
		NimStringDesc* str;
		NI a;
		LOC2 = 0;
		{
			if (!((*n).Kind == ((NU8) 89))) goto LA5;
			LOC2 = ((NU8) 89);
		}
		goto LA3;
		LA5: ;
		{
			LOC2 = ((NU8) 151);
		}
		LA3: ;
		LOC8 = 0;
		LOC8 = (tnodeseq224810*) newSeq((&NTI224810), 0);
		result = newnode_227207(LOC2, (*n).Info, LOC8, NIM_NIL);
		str = copyString((*(*n).kindU.S6.Sons->data[1]).kindU.S3.Strval);
		{
			if (!((str) && (str)->Sup.len == 0)) goto LA11;
			localerror_196955((*n).Info, ((NU16) 32), ((NimStringDesc*) &TMP2925));
			goto BeforeRet;
		}
		LA11: ;
		a = 0;
		{
			while (1) {
				NI b;
				NimStringDesc* sub;
				NI c;
				b = nsuFindChar(str, marker, a);
				{
					if (!(b < 0)) goto LA17;
					sub = copyStr(str, a);
				}
				goto LA15;
				LA17: ;
				{
					sub = copyStrLast(str, a, (NI32)(b - 1));
				}
				LA15: ;
				{
					tnode224816* LOC24;
					if (!!(((sub) && (sub)->Sup.len == 0))) goto LA22;
					LOC24 = 0;
					LOC24 = newstrnode_225118(((NU8) 20), sub);
					addson_225287(result, LOC24);
				}
				LA22: ;
				{
					if (!(b < 0)) goto LA27;
					goto LA13;
				}
				LA27: ;
				c = nsuFindChar(str, marker, (NI32)(b + 1));
				{
					if (!(c < 0)) goto LA31;
					sub = copyStr(str, (NI32)(b + 1));
				}
				goto LA29;
				LA31: ;
				{
					sub = copyStrLast(str, (NI32)(b + 1), (NI32)(c - 1));
				}
				LA29: ;
				{
					tsym224846* e;
					tident199021* LOC38;
					if (!!(((sub) && (sub)->Sup.len == 0))) goto LA36;
					LOC38 = 0;
					LOC38 = getident_199472(sub);
					e = searchinscopes_294312(con, LOC38);
					{
						tnode224816* LOC47;
						if (!!((e == NIM_NIL))) goto LA41;
						{
							if (!((*e).Kind == ((NU8) 23))) goto LA45;
							loadstub_278261(e);
						}
						LA45: ;
						LOC47 = 0;
						LOC47 = newsymnode_225132(e);
						addson_225287(result, LOC47);
					}
					goto LA39;
					LA41: ;
					{
						tnode224816* LOC49;
						LOC49 = 0;
						LOC49 = newstrnode_225118(((NU8) 20), sub);
						addson_225287(result, LOC49);
					}
					LA39: ;
				}
				goto LA34;
				LA36: ;
				{
					NimStringDesc* LOC51;
					tnode224816* LOC52;
					LOC51 = 0;
					LOC51 = nimCharToStr(marker);
					LOC52 = 0;
					LOC52 = newstrnode_225118(((NU8) 20), LOC51);
					addson_225287(result, LOC52);
				}
				LA34: ;
				{
					if (!(c < 0)) goto LA55;
					goto LA13;
				}
				LA55: ;
				a = (NI32)(c + 1);
			}
		} LA13: ;
	}
	break;
	default:
	{
		illformedast_290406(n);
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, pragmaemit_311738)(tcontext289021* c, tnode224816* n) {
	tnode224816* LOC1;
	LOC1 = 0;
	LOC1 = getstrlitnode_309641(c, n);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.Sons->data[1]), semasmoremit_311632(c, n, 96));
}

N_NIMCALL(void, pragmaunroll_311780)(tcontext289021* c, tnode224816* n) {
	{
		if (!((*(*c).P).Nestedloopcounter <= 0)) goto LA3;
		invalidpragma_309088(n);
	}
	goto LA1;
	LA3: ;
	{
		NI unrollfactor;
		if (!((*n).Kind == ((NU8) 34))) goto LA6;
		unrollfactor = expectintlit_309742(c, n);
		{
			if (!((NU32)(unrollfactor) < (NU32)(32))) goto LA10;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.Sons->data[1]), newintnode_225096(((NU8) 6), ((NI64) (unrollfactor))));
		}
		goto LA8;
		LA10: ;
		{
			invalidpragma_309088(n);
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	LA1: ;
}

N_NIMCALL(void, pragmaline_311823)(tcontext289021* c, tnode224816* n) {
	{
		tnode224816* a;
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.Sons->data[1]), (*c).Semconstexpr(c, (*n).kindU.S6.Sons->data[1]));
		a = (*n).kindU.S6.Sons->data[1];
		{
			tnode224816* x;
			tnode224816* y;
			if (!((*a).Kind == ((NU8) 37))) goto LA7;
			x = (*a).kindU.S6.Sons->data[0];
			y = (*a).kindU.S6.Sons->data[1];
			{
				if (!((*x).Kind == ((NU8) 34))) goto LA11;
				x = (*x).kindU.S6.Sons->data[1];
			}
			LA11: ;
			{
				if (!((*y).Kind == ((NU8) 34))) goto LA15;
				y = (*y).kindU.S6.Sons->data[1];
			}
			LA15: ;
			{
				if (!!(((*x).Kind == ((NU8) 20)))) goto LA19;
				localerror_196955((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2925));
			}
			goto LA17;
			LA19: ;
			{
				if (!!(((*y).Kind == ((NU8) 6)))) goto LA22;
				localerror_196955((*n).Info, ((NU16) 7), ((NimStringDesc*) &TMP2925));
			}
			goto LA17;
			LA22: ;
			{
				(*n).Info.Fileindex = fileinfoidx_194747((*x).kindU.S3.Strval);
				(*n).Info.Line = ((NI16) ((*y).kindU.S1.Intval));
			}
			LA17: ;
		}
		goto LA5;
		LA7: ;
		{
			localerror_196955((*n).Info, ((NU16) 188), ((NimStringDesc*) &TMP2987));
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		(*n).Info = getinfocontext_195992(-1);
	}
	LA1: ;
}

N_NIMCALL(void, processexc_312173)(tcontext289021* c, tnode224816* x) {
	ttype224852* t;
	ttype224852* LOC1;
	LOC1 = 0;
	LOC1 = (*c).Semtypenode(c, x, NIM_NIL);
	t = skiptypes_229245(LOC1, IL64(211106247215360));
	{
		if (!!(((*t).Kind == ((NU8) 17)))) goto LA4;
		localerror_196955((*x).Info, ((NU16) 4), ((NimStringDesc*) &TMP2988));
	}
	LA4: ;
	asgnRefNoCycle((void**) (&(*x).Typ), t);
}

N_NIMCALL(void, pragmaraisesortags_312169)(tcontext289021* c, tnode224816* n) {
	{
		tnode224816* it;
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		it = (*n).kindU.S6.Sons->data[1];
		{
			if (!!(((*it).Kind == ((NU8) 39) || (*it).Kind == ((NU8) 41)))) goto LA7;
			processexc_312173(c, it);
		}
		goto LA5;
		LA7: ;
		{
			{
				tnode224816* e_312225;
				e_312225 = 0;
				{
					NI i_312230;
					NI HEX3Atmp_312232;
					NI LOC12;
					NI res_312234;
					i_312230 = 0;
					HEX3Atmp_312232 = 0;
					LOC12 = 0;
					LOC12 = len_225364(it);
					HEX3Atmp_312232 = (LOC12 - 1);
					res_312234 = 0;
					{
						while (1) {
							if (!(res_312234 <= HEX3Atmp_312232)) goto LA14;
							i_312230 = res_312234;
							e_312225 = (*it).kindU.S6.Sons->data[i_312230];
							processexc_312173(c, e_312225);
							res_312234 += 1;
						} LA14: ;
					}
				}
			}
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		invalidpragma_309088(n);
	}
	LA1: ;
}

N_NIMCALL(void, pragmalockstmt_312256)(tcontext289021* c, tnode224816* it) {
	{
		if (!!(((*it).Kind == ((NU8) 34)))) goto LA3;
		invalidpragma_309088(it);
	}
	goto LA1;
	LA3: ;
	{
		tnode224816* n;
		n = HEX5BHEX5D_225698(it, 1);
		{
			if (!!(((*n).Kind == ((NU8) 41)))) goto LA8;
			localerror_196955((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP2989));
		}
		goto LA6;
		LA8: ;
		{
			{
				NI i_312300;
				NI HEX3Atmp_312330;
				NI LOC12;
				NI res_312333;
				i_312300 = 0;
				HEX3Atmp_312330 = 0;
				LOC12 = 0;
				LOC12 = len_225364(n);
				HEX3Atmp_312330 = (LOC12 - 1);
				res_312333 = 0;
				{
					while (1) {
						if (!(res_312333 <= HEX3Atmp_312330)) goto LA14;
						i_312300 = res_312333;
						asgnRefNoCycle((void**) (&(*n).kindU.S6.Sons->data[i_312300]), (*c).Semexpr(c, (*n).kindU.S6.Sons->data[i_312300], 0));
						res_312333 += 1;
					} LA14: ;
				}
			}
		}
		LA6: ;
	}
	LA1: ;
}

N_NIMCALL(NI16, pragmalocks_312350)(tcontext289021* c, tnode224816* it) {
	NI16 result;
	result = 0;
	{
		if (!!(((*it).Kind == ((NU8) 34)))) goto LA3;
		invalidpragma_309088(it);
	}
	goto LA1;
	LA3: ;
	{
		{
			tnode224816* LOC8;
			NI x;
			LOC8 = 0;
			LOC8 = HEX5BHEX5D_225698(it, 1);
			if (!!(((*LOC8).Kind == ((NU8) 23)))) goto LA9;
			x = expectintlit_309742(c, it);
			{
				NIM_BOOL LOC13;
				tnode224816* LOC17;
				LOC13 = 0;
				LOC13 = (x < 0);
				if (LOC13) goto LA14;
				LOC13 = (1000 < x);
				LA14: ;
				if (!LOC13) goto LA15;
				LOC17 = 0;
				LOC17 = HEX5BHEX5D_225698(it, 1);
				localerror_196966((*LOC17).Info, ((NimStringDesc*) &TMP2990));
			}
			goto LA11;
			LA15: ;
			{
				result = ((NI16) (x));
			}
			LA11: ;
		}
		LA9: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tsym224846*, pragmaguard_312570)(tcontext289021* c, tnode224816* it, NU8 kind) {
	tsym224846* result;
	tnode224816* n;
	result = 0;
	{
		if (!!(((*it).Kind == ((NU8) 34)))) goto LA3;
		invalidpragma_309088(it);
		goto BeforeRet;
	}
	LA3: ;
	n = HEX5BHEX5D_225698(it, 1);
	{
		if (!((*n).Kind == ((NU8) 3))) goto LA7;
		result = (*n).kindU.S4.Sym;
	}
	goto LA5;
	LA7: ;
	{
		if (!(kind == ((NU8) 19))) goto LA10;
		result = qualifiedlookup_295122(c, n, 0);
		{
			NIM_BOOL LOC14;
			NIM_BOOL LOC15;
			tident199021* 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_294010(n);
			result = newsym_225074(((NU8) 0), LOC20, NIM_NIL, (*n).Info);
		}
		LA18: ;
	}
	goto LA5;
	LA10: ;
	{
		result = qualifiedlookup_295122(c, n, 2);
	}
	LA5: ;
	BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, istoplevel_290437)(tcontext289021* c) {
	NIM_BOOL result;
	result = 0;
	result = ((*(*c).Currentscope).Depthlevel <= 2);
	return result;
}

N_NIMCALL(NIM_BOOL, singlepragma_312664)(tcontext289021* c, tsym224846* sym, tnode224816* n, NI i, tspecialwords203012 validpragmas) {
	NIM_BOOL result;
	tnode224816* it;
	tnode224816* key;
	result = 0;
	it = (*n).kindU.S6.Sons->data[i];
	{
		if (!((*it).Kind == ((NU8) 34))) goto LA3;
		key = (*it).kindU.S6.Sons->data[0];
	}
	goto LA1;
	LA3: ;
	{
		key = it;
	}
	LA1: ;
	{
		tsym224846* userpragma;
		if (!((*key).Kind == ((NU8) 2))) goto LA8;
		userpragma = strtableget_234111((*c).Userpragmas, (*key).kindU.S5.Ident);
		{
			if (!!((userpragma == NIM_NIL))) goto LA12;
			(*c).Instcounter += 1;
			{
				if (!(100 < (*c).Instcounter)) goto LA16;
				globalerror_196934((*it).Info, ((NU16) 25), (*(*userpragma).Name).S);
			}
			LA16: ;
			pragma_309079(c, sym, (*userpragma).Ast, validpragmas);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.Sons->data[i]), (*userpragma).Ast);
			(*c).Instcounter -= 1;
		}
		goto LA10;
		LA12: ;
		{
			NU8 k;
			k = whichkeyword_203382((*key).kindU.S5.Ident);
			{
				if (!((validpragmas[k/8] &(1<<(k%8)))!=0)) goto LA21;
				switch (k) {
				case ((NU8) 91):
				{
					NimStringDesc* LOC24;
					LOC24 = 0;
					LOC24 = getoptionalstr_309832(c, it, ((NimStringDesc*) &TMP2926));
					makeexternexport_309382(sym, LOC24, (*it).Info);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
				}
				break;
				case ((NU8) 90):
				{
					NimStringDesc* LOC26;
					LOC26 = 0;
					LOC26 = getoptionalstr_309832(c, it, ((NimStringDesc*) &TMP2926));
					makeexternimport_309315(sym, LOC26);
				}
				break;
				case ((NU8) 89):
				{
					NimStringDesc* LOC28;
					LOC28 = 0;
					LOC28 = getoptionalstr_309832(c, it, ((NimStringDesc*) &TMP2926));
					processimportcompilerproc_309409(sym, LOC28);
				}
				break;
				case ((NU8) 203):
				{
					NimStringDesc* LOC30;
					LOC30 = 0;
					LOC30 = expectstrlit_309717(c, it);
					setexternname_309280(sym, LOC30);
				}
				break;
				case ((NU8) 83):
				{
					{
						if (!((393216 &(1<<(((*sym).Kind)&31)))!=0)) goto LA34;
						(*sym).Flags |= ((NI32)1)<<((((NU8) 25))%(sizeof(NI32)*8));
					}
					goto LA32;
					LA34: ;
					{
						invalidpragma_309088(it);
					}
					LA32: ;
				}
				break;
				case ((NU8) 181):
				{
					{
						if (!((*sym).Kind == ((NU8) 18))) goto LA40;
						(*sym).Flags |= ((NI32)1)<<((((NU8) 9))%(sizeof(NI32)*8));
					}
					goto LA38;
					LA40: ;
					{
						invalidpragma_309088(it);
					}
					LA38: ;
				}
				break;
				case ((NU8) 87):
				{
					NimStringDesc* LOC44;
					LOC44 = 0;
					LOC44 = getoptionalstr_309832(c, it, ((NimStringDesc*) &TMP2926));
					processimportcpp_309467(sym, LOC44);
				}
				break;
				case ((NU8) 88):
				{
					NimStringDesc* LOC46;
					LOC46 = 0;
					LOC46 = getoptionalstr_309832(c, it, ((NimStringDesc*) &TMP2926));
					processimportobjc_309542(sym, LOC46);
				}
				break;
				case ((NU8) 94):
				{
					NI align;
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA50;
						invalidpragma_309088(it);
					}
					LA50: ;
					align = expectintlit_309742(c, it);
					{
						NIM_BOOL LOC54;
						NIM_BOOL LOC55;
						NIM_BOOL LOC56;
						LOC54 = 0;
						LOC55 = 0;
						LOC56 = 0;
						LOC56 = ispoweroftwo_145518(align);
						LOC55 = !(LOC56);
						if (!(LOC55)) goto LA57;
						LOC55 = !((align == 0));
						LA57: ;
						LOC54 = LOC55;
						if (LOC54) goto LA58;
						LOC54 = ((NU64)(IL64(32767)) < (NU64)(((NI64) (align))));
						LA58: ;
						if (!LOC54) goto LA59;
						localerror_196955((*it).Info, ((NU16) 98), ((NimStringDesc*) &TMP2925));
					}
					goto LA52;
					LA59: ;
					{
						(*(*sym).Typ).Align = ((NI16) (align));
					}
					LA52: ;
				}
				break;
				case ((NU8) 155):
				{
					NI size;
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA65;
						invalidpragma_309088(it);
					}
					LA65: ;
					size = expectintlit_309742(c, it);
					{
						NIM_BOOL LOC69;
						NIM_BOOL LOC70;
						NIM_BOOL LOC71;
						LOC69 = 0;
						LOC70 = 0;
						LOC71 = 0;
						LOC71 = ispoweroftwo_145518(size);
						LOC70 = !(LOC71);
						if (LOC70) goto LA72;
						LOC70 = (size <= 0);
						LA72: ;
						LOC69 = LOC70;
						if (LOC69) goto LA73;
						LOC69 = (8 < size);
						LA73: ;
						if (!LOC69) goto LA74;
						localerror_196955((*it).Info, ((NU16) 98), ((NimStringDesc*) &TMP2925));
					}
					goto LA67;
					LA74: ;
					{
						(*(*sym).Typ).Size = ((NI64) (size));
					}
					LA67: ;
				}
				break;
				case ((NU8) 95):
				{
					noval_311762(it);
					(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 3))%(sizeof(NI8)*8));
				}
				break;
				case ((NU8) 96):
				case ((NU8) 185):
				{
					noval_311762(it);
					{
						if (!!((sym == NIM_NIL))) goto LA81;
						{
							NIM_BOOL LOC85;
							LOC85 = 0;
							LOC85 = (k == ((NU8) 96));
							if (!(LOC85)) goto LA86;
							LOC85 = ((520192 &(1<<(((*sym).Kind)&31)))!=0);
							LA86: ;
							if (!LOC85) goto LA87;
							invalidpragma_309088(it);
						}
						goto LA83;
						LA87: ;
						{
							(*sym).Flags |= ((NI32)1)<<((((NU8) 9))%(sizeof(NI32)*8));
						}
						LA83: ;
					}
					LA81: ;
				}
				break;
				case ((NU8) 236):
				{
					noval_311762(it);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 7))%(sizeof(NI32)*8));
				}
				break;
				case ((NU8) 217):
				{
					noval_311762(it);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 8))%(sizeof(NI32)*8));
				}
				break;
				case ((NU8) 183):
				{
					noval_311762(it);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 22))%(sizeof(NI32)*8));
				}
				break;
				case ((NU8) 158):
				{
					pragmadeadcodeelim_310172(c, it);
				}
				break;
				case ((NU8) 160):
				{
					pragmanoforward_310214(c, it);
				}
				break;
				case ((NU8) 77):
				{
					processmagic_309864(c, it, sym);
				}
				break;
				case ((NU8) 162):
				{
					noval_311762(it);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 23))%(sizeof(NI32)*8));
					(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 3))%(sizeof(NI8)*8));
				}
				break;
				case ((NU8) 187):
				{
					noval_311762(it);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 3))%(sizeof(NI32)*8));
					(*sym).Flags |= ((NI32)1)<<((((NU8) 9))%(sizeof(NI32)*8));
				}
				break;
				case ((NU8) 102):
				{
					noval_311762(it);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 24))%(sizeof(NI32)*8));
				}
				break;
				case ((NU8) 98):
				{
					tlib224834* lib;
					tnode224816* LOC100;
					LOC100 = 0;
					LOC100 = getstrlitnode_309641(c, it);
					lib = getlib_310327(c, ((NU8) 0), LOC100);
					addtolib_289193(lib, sym);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 5))%(sizeof(NI32)*8));
					(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 6))%(sizeof(NI8)*8));
					(*sym).Loc.Flags |= ((NI8)1)<<((((NU8) 3))%(sizeof(NI8)*8));
					{
						if (!((*sym).Loc.R == NIM_NIL)) goto LA103;
						asgnRefNoCycle((void**) (&(*sym).Loc.R), torope_176076((*(*sym).Name).S));
					}
					LA103: ;
				}
				break;
				case ((NU8) 84):
				{
					(*sym).Flags |= ((NI32)1)<<((((NU8) 30))%(sizeof(NI32)*8));
					{
						NimStringDesc* LOC108;
						LOC108 = 0;
						LOC108 = nsuNormalize((*(*sym).Name).S);
						if (!!(eqStrings(LOC108, ((NimStringDesc*) &TMP2927)))) goto LA109;
						localerror_196955((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP2928));
					}
					LA109: ;
				}
				break;
				case ((NU8) 86):
				{
					(*sym).Flags |= ((NI32)1)<<((((NU8) 30))%(sizeof(NI32)*8));
				}
				break;
				case ((NU8) 99):
				{
					noval_311762(it);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 10))%(sizeof(NI32)*8));
					{
						if (!!(((*sym).Typ == NIM_NIL))) goto LA115;
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 1))%(sizeof(NI32)*8));
					}
					LA115: ;
				}
				break;
				case ((NU8) 97):
				{
					noval_311762(it);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 11))%(sizeof(NI32)*8));
				}
				break;
				case ((NU8) 101):
				{
					noval_311762(it);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 14))%(sizeof(NI32)*8));
				}
				break;
				case ((NU8) 104):
				{
					processdynlib_310513(c, it, sym);
				}
				break;
				case ((NU8) 105):
				{
					noval_311762(it);
					{
						if (!!((((*sym).Flags &(1<<((((NU8) 2))&31)))!=0))) goto LA123;
						markcompilerproc_312441(sym);
					}
					LA123: ;
				}
				break;
				case ((NU8) 106):
				{
					noval_311762(it);
					(*sym).Flags |= ((NI32)1)<<((((NU8) 17))%(sizeof(NI32)*8));
				}
				break;
				case ((NU8) 122):
				{
					{
						if (!((*it).Kind == ((NU8) 34))) goto LA129;
						deprecatedstmt_312482(c, it);
					}
					goto LA127;
					LA129: ;
					{
						if (!!((sym == NIM_NIL))) goto LA132;
						(*sym).Flags |= ((NI32)1)<<((((NU8) 19))%(sizeof(NI32)*8));
					}
					goto LA127;
					LA132: ;
					{
						(*(*c).Module).Flags |= ((NI32)1)<<((((NU8) 19))%(sizeof(NI32)*8));
					}
					LA127: ;
				}
				break;
				case ((NU8) 123):
				{
					noval_311762(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA138;
						invalidpragma_309088(it);
					}
					goto LA136;
					LA138: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
					}
					LA136: ;
				}
				break;
				case ((NU8) 166):
				{
					{
						if (!((*sym).Kind == ((NU8) 7))) goto LA144;
						typeborrow_312382(sym, it);
					}
					goto LA142;
					LA144: ;
					{
						noval_311762(it);
						(*sym).Flags |= ((NI32)1)<<((((NU8) 26))%(sizeof(NI32)*8));
					}
					LA142: ;
				}
				break;
				case ((NU8) 79):
				{
					noval_311762(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA150;
						invalidpragma_309088(it);
					}
					goto LA148;
					LA150: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 2))%(sizeof(NI32)*8));
					}
					LA148: ;
				}
				break;
				case ((NU8) 182):
				{
					noval_311762(it);
					{
						NIM_BOOL LOC156;
						LOC156 = 0;
						LOC156 = ((*sym).Typ == NIM_NIL);
						if (LOC156) goto LA157;
						LOC156 = (((*(*sym).Typ).Flags &(1<<((((NU8) 2))&31)))!=0);
						LA157: ;
						if (!LOC156) goto LA158;
						invalidpragma_309088(it);
					}
					goto LA154;
					LA158: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 3))%(sizeof(NI32)*8));
					}
					LA154: ;
				}
				break;
				case ((NU8) 171):
				{
					noval_311762(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA164;
						invalidpragma_309088(it);
					}
					goto LA162;
					LA164: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 4))%(sizeof(NI32)*8));
					}
					LA162: ;
				}
				break;
				case ((NU8) 172):
				{
					noval_311762(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA170;
						invalidpragma_309088(it);
					}
					goto LA168;
					LA170: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 6))%(sizeof(NI32)*8));
					}
					LA168: ;
				}
				break;
				case ((NU8) 78):
				{
					noval_311762(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 LA176;
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 7))%(sizeof(NI32)*8));
					}
					LA176: ;
				}
				break;
				case ((NU8) 100):
				{
					{
						if (!((gglobaloptions_168118 &(1<<((((NU8) 27))&31)))!=0)) goto LA181;
						noval_311762(it);
						{
							if (!!(((*sym).Kind == ((NU8) 7)))) goto LA185;
							(*sym).Flags |= ((NI32)1)<<((((NU8) 22))%(sizeof(NI32)*8));
						}
						LA185: ;
						{
							if (!!(((*sym).Typ == NIM_NIL))) goto LA189;
							(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 7))%(sizeof(NI32)*8));
						}
						goto LA187;
						LA189: ;
						{
							invalidpragma_309088(it);
						}
						LA187: ;
					}
					LA181: ;
				}
				break;
				case ((NU8) 232):
				{
					noval_311762(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA195;
						invalidpragma_309088(it);
					}
					goto LA193;
					LA195: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 21))%(sizeof(NI32)*8));
					}
					LA193: ;
				}
				break;
				case ((NU8) 110):
				{
					NimStringDesc* LOC199;
					LOC199 = 0;
					LOC199 = expectstrlit_309717(c, it);
					message_196976((*it).Info, ((NU16) 275), LOC199);
				}
				break;
				case ((NU8) 109):
				{
					NimStringDesc* LOC201;
					LOC201 = 0;
					LOC201 = expectstrlit_309717(c, it);
					message_196976((*it).Info, ((NU16) 258), LOC201);
				}
				break;
				case ((NU8) 108):
				{
					{
						NIM_BOOL LOC205;
						LOC205 = 0;
						LOC205 = !((sym == NIM_NIL));
						if (!(LOC205)) goto LA206;
						LOC205 = isroutine_231780(sym);
						LA206: ;
						if (!LOC205) goto LA207;
						noval_311762(it);
						(*sym).Flags |= ((NI32)1)<<((((NU8) 20))%(sizeof(NI32)*8));
					}
					goto LA203;
					LA207: ;
					{
						NimStringDesc* LOC210;
						LOC210 = 0;
						LOC210 = expectstrlit_309717(c, it);
						localerror_196955((*it).Info, ((NU16) 229), LOC210);
					}
					LA203: ;
				}
				break;
				case ((NU8) 107):
				{
					NimStringDesc* LOC212;
					LOC212 = 0;
					LOC212 = expectstrlit_309717(c, it);
					fatal_196923((*it).Info, ((NU16) 229), LOC212);
				}
				break;
				case ((NU8) 114):
				{
					processdefine_311379(c, it);
				}
				break;
				case ((NU8) 115):
				{
					processundef_311449(c, it);
				}
				break;
				case ((NU8) 120):
				{
					processcompile_311526(c, it);
				}
				break;
				case ((NU8) 119):
				{
					processcommonlink_311539(c, it, ((NU8) 0));
				}
				break;
				case ((NU8) 121):
				{
					processcommonlink_311539(c, it, ((NU8) 1));
				}
				break;
				case ((NU8) 165):
				{
					NimStringDesc* LOC219;
					LOC219 = 0;
					LOC219 = expectstrlit_309717(c, it);
					addlinkoption_201798(LOC219);
				}
				break;
				case ((NU8) 164):
				{
					NimStringDesc* LOC221;
					LOC221 = 0;
					LOC221 = expectstrlit_309717(c, it);
					addcompileoption_201809(LOC221);
				}
				break;
				case ((NU8) 125):
				{
					pragmabreakpoint_311552(c, it);
				}
				break;
				case ((NU8) 169):
				{
					pragmawatchpoint_311585(c, it);
				}
				break;
				case ((NU8) 112):
				{
					processpush_311264(c, n, (NI32)(i + 1));
					result = NIM_TRUE;
				}
				break;
				case ((NU8) 113):
				{
					processpop_311368(c, it);
				}
				break;
				case ((NU8) 161):
				{
					processpragma_312016(c, n, i);
					result = NIM_TRUE;
				}
				break;
				case ((NU8) 167):
				{
					noval_311762(it);
					{
						if (!!((sym == NIM_NIL))) goto LA230;
						(*sym).Flags |= ((NI32)1)<<((((NU8) 29))%(sizeof(NI32)*8));
					}
					LA230: ;
				}
				break;
				case ((NU8) 163):
				{
					noval_311762(it);
					{
						if (!!((sym == NIM_NIL))) goto LA235;
						(*sym).Flags |= ((NI32)1)<<((((NU8) 12))%(sizeof(NI32)*8));
					}
					LA235: ;
				}
				break;
				case ((NU8) 188):
				{
					processcodegendecl_309853(c, it, sym);
				}
				break;
				case ((NU8) 139):
				case ((NU8) 81):
				case ((NU8) 168):
				case ((NU8) 140):
				case ((NU8) 141):
				case ((NU8) 142):
				case ((NU8) 143):
				case ((NU8) 147):
				case ((NU8) 149):
				case ((NU8) 150):
				case ((NU8) 116):
				case ((NU8) 117):
				case ((NU8) 118):
				case ((NU8) 151):
				case ((NU8) 124):
				case ((NU8) 126):
				case ((NU8) 80):
				case ((NU8) 144):
				case ((NU8) 145):
				case ((NU8) 146):
				case ((NU8) 148):
				{
					{
						NIM_BOOL LOC241;
						LOC241 = 0;
						LOC241 = processoption_311002(c, it);
						if (!LOC241) goto LA242;
						localerror_196955((*it).Info, ((NU16) 149), ((NimStringDesc*) &TMP2925));
					}
					LA242: ;
				}
				break;
				case ((NU8) 127) ... ((NU8) 136):
				{
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA247;
						invalidpragma_309088(it);
					}
					goto LA245;
					LA247: ;
					{
						(*(*sym).Typ).Callconv = wordtocallconv_310018(k);
					}
					LA245: ;
				}
				break;
				case ((NU8) 184):
				{
					pragmaemit_311738(c, it);
				}
				break;
				case ((NU8) 173):
				{
					pragmaunroll_311780(c, it);
				}
				break;
				case ((NU8) 174):
				case ((NU8) 175):
				{
					noval_311762(it);
				}
				break;
				case ((NU8) 156):
				{
					noval_311762(it);
				}
				break;
				case ((NU8) 92):
				{
					noval_311762(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA257;
						invalidpragma_309088(it);
					}
					goto LA255;
					LA257: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
					}
					LA255: ;
				}
				break;
				case ((NU8) 189):
				{
					noval_311762(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA263;
						invalidpragma_309088(it);
					}
					goto LA261;
					LA263: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
					}
					LA261: ;
				}
				break;
				case ((NU8) 231):
				{
					noval_311762(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA269;
						invalidpragma_309088(it);
					}
					goto LA267;
					LA269: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 1))%(sizeof(NI32)*8));
					}
					LA267: ;
				}
				break;
				case ((NU8) 93):
				{
					noval_311762(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA275;
						invalidpragma_309088(it);
					}
					goto LA273;
					LA275: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 17))%(sizeof(NI32)*8));
					}
					LA273: ;
				}
				break;
				case ((NU8) 253):
				{
					noval_311762(it);
					{
						NIM_BOOL LOC281;
						LOC281 = 0;
						LOC281 = (sym == NIM_NIL);
						if (LOC281) goto LA282;
						LOC281 = ((*sym).Typ == NIM_NIL);
						LA282: ;
						if (!LOC281) goto LA283;
						{
							NIM_BOOL LOC287;
							LOC287 = 0;
							LOC287 = processoption_311002(c, it);
							if (!LOC287) goto LA288;
							localerror_196955((*it).Info, ((NU16) 149), ((NimStringDesc*) &TMP2925));
						}
						LA288: ;
					}
					goto LA279;
					LA283: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 13))%(sizeof(NI32)*8));
					}
					LA279: ;
				}
				break;
				case ((NU8) 252):
				{
					noval_311762(it);
					{
						NIM_BOOL LOC294;
						LOC294 = 0;
						LOC294 = !(((*sym).Kind == ((NU8) 7)));
						if (LOC294) goto LA295;
						LOC294 = ((*sym).Typ == NIM_NIL);
						LA295: ;
						if (!LOC294) goto LA296;
						invalidpragma_309088(it);
					}
					goto LA292;
					LA296: ;
					{
						(*(*sym).Typ).Flags |= ((NI32)1)<<((((NU8) 12))%(sizeof(NI32)*8));
					}
					LA292: ;
				}
				break;
				case ((NU8) 180):
				case ((NU8) 179):
				{
					noval_311762(it);
					{
						if (!(sym == NIM_NIL)) goto LA302;
						invalidpragma_309088(it);
					}
					LA302: ;
				}
				break;
				case ((NU8) 111):
				{
					pragmaline_311823(c, it);
				}
				break;
				case ((NU8) 152):
				case ((NU8) 157):
				{
					pragmaraisesortags_312169(c, it);
				}
				break;
				case ((NU8) 191):
				{
					{
						if (!(sym == NIM_NIL)) goto LA309;
						pragmalockstmt_312256(c, it);
					}
					goto LA307;
					LA309: ;
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA312;
						invalidpragma_309088(it);
					}
					goto LA307;
					LA312: ;
					{
						(*(*sym).Typ).Locklevel = pragmalocks_312350(c, it);
					}
					LA307: ;
				}
				break;
				case ((NU8) 190):
				{
					{
						NIM_BOOL LOC318;
						LOC318 = 0;
						LOC318 = (sym == NIM_NIL);
						if (LOC318) goto LA319;
						LOC318 = !(((525056 &(1<<(((*sym).Kind)&31)))!=0));
						LA319: ;
						if (!LOC318) goto LA320;
						invalidpragma_309088(it);
					}
					goto LA316;
					LA320: ;
					{
						asgnRefNoCycle((void**) (&(*sym).kindU.S4.Guard), pragmaguard_312570(c, it, (*sym).Kind));
					}
					LA316: ;
				}
				break;
				case ((NU8) 176):
				{
					{
						if (!!(((*it).Kind == ((NU8) 34)))) goto LA326;
						localerror_196955((*it).Info, ((NU16) 60), ((NimStringDesc*) &TMP2925));
					}
					goto LA324;
					LA326: ;
					{
						asgnRefNoCycle((void**) (&(*it).kindU.S6.Sons->data[1]), (*c).Semexpr(c, (*it).kindU.S6.Sons->data[1], 0));
					}
					LA324: ;
				}
				break;
				case ((NU8) 177):
				{
					noval_311762(it);
					{
						NIM_BOOL LOC332;
						LOC332 = 0;
						LOC332 = istoplevel_290437(c);
						if (!LOC332) goto LA333;
						(*(*c).Module).Flags |= ((NI32)1)<<((((NU8) 30))%(sizeof(NI32)*8));
					}
					goto LA330;
					LA333: ;
					{
						localerror_196966((*it).Info, ((NimStringDesc*) &TMP2991));
					}
					LA330: ;
				}
				break;
				default:
				{
					invalidpragma_309088(it);
				}
				break;
				}
			}
			goto LA19;
			LA21: ;
			{
				invalidpragma_309088(it);
			}
			LA19: ;
		}
		LA10: ;
	}
	goto LA6;
	LA8: ;
	{
		processnote_310631(c, it);
	}
	LA6: ;
	return result;
}

N_NIMCALL(void, pragmarec_315076)(tcontext289021* c, tsym224846* sym, tnode224816* n, tspecialwords203012 validpragmas) {
	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		NI i_315111;
		NI HEX3Atmp_315150;
		NI LOC6;
		NI res_315153;
		i_315111 = 0;
		HEX3Atmp_315150 = 0;
		LOC6 = 0;
		LOC6 = sonslen_225249(n);
		HEX3Atmp_315150 = (NI32)(LOC6 - 1);
		res_315153 = 0;
		{
			while (1) {
				if (!(res_315153 <= HEX3Atmp_315150)) goto LA8;
				i_315111 = res_315153;
				{
					if (!((*(*n).kindU.S6.Sons->data[i_315111]).Kind == ((NU8) 90))) goto LA11;
					pragmarec_315076(c, sym, (*n).kindU.S6.Sons->data[i_315111], validpragmas);
				}
				goto LA9;
				LA11: ;
				{
					NIM_BOOL LOC14;
					LOC14 = 0;
					LOC14 = singlepragma_312664(c, sym, n, i_315111, validpragmas);
					if (!LOC14) goto LA15;
					goto LA5;
				}
				goto LA9;
				LA15: ;
				LA9: ;
				res_315153 += 1;
			} LA8: ;
		}
	} LA5: ;
	BeforeRet: ;
}

N_NIMCALL(void, implicitpragmas_314398)(tcontext289021* c, tsym224846* sym, tnode224816* n, tspecialwords203012 validpragmas) {
	{
		NIM_BOOL LOC3;
		toptionentry289005* it;
		tlib224834* lib;
		LOC3 = 0;
		LOC3 = !((sym == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*sym).Kind == ((NU8) 6)));
		LA4: ;
		if (!LOC3) goto LA5;
		it = ((toptionentry289005*) ((*c).Optionstack.Head));
		{
			while (1) {
				tnode224816* o;
				if (!!((it == NIM_NIL))) goto LA8;
				o = (*it).Otherpragmas;
				{
					if (!!(o == 0)) goto LA11;
					{
						NI i_314472;
						NI HEX3Atmp_314602;
						NI LOC14;
						NI res_314605;
						i_314472 = 0;
						HEX3Atmp_314602 = 0;
						LOC14 = 0;
						LOC14 = sonslen_225249(o);
						HEX3Atmp_314602 = (NI32)(LOC14 - 1);
						res_314605 = 0;
						{
							while (1) {
								if (!(res_314605 <= HEX3Atmp_314602)) goto LA16;
								i_314472 = res_314605;
								{
									NIM_BOOL LOC19;
									LOC19 = 0;
									LOC19 = singlepragma_312664(c, sym, o, i_314472, validpragmas);
									if (!LOC19) goto LA20;
									internalerror_196987((*n).Info, ((NimStringDesc*) &TMP2992));
								}
								LA20: ;
								res_314605 += 1;
							} LA16: ;
						}
					}
				}
				LA11: ;
				it = ((toptionentry289005*) ((*it).Sup.Next));
			} LA8: ;
		}
		{
			NIM_BOOL LOC24;
			LOC24 = 0;
			LOC24 = (((*sym).Loc.Flags &(1<<((((NU8) 5))&7)))!=0);
			if (!(LOC24)) goto LA25;
			LOC24 = !((((*sym).Flags &(1<<((((NU8) 6))&31)))!=0));
			LA25: ;
			if (!LOC24) goto LA26;
			localerror_196955((*n).Info, ((NU16) 79), ((NimStringDesc*) &TMP2925));
		}
		LA26: ;
		lib = (*((toptionentry289005*) ((*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 |= ((NI8)1)<<((((NU8) 4))%(sizeof(NI8)*8));
			addtolib_289193(lib, sym);
			{
				if (!((*sym).Loc.R == NIM_NIL)) goto LA38;
				asgnRefNoCycle((void**) (&(*sym).Loc.R), torope_176076((*(*sym).Name).S));
			}
			LA38: ;
		}
		LA34: ;
	}
	LA5: ;
}

N_NIMCALL(void, pragma_309079)(tcontext289021* c, tsym224846* sym, tnode224816* n, tspecialwords203012 validpragmas) {
	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	pragmarec_315076(c, sym, n, validpragmas);
	implicitpragmas_314398(c, sym, n, validpragmas);
	BeforeRet: ;
}

N_NIMCALL(NIM_BOOL, haspragma_314628)(tnode224816* n, NU8 pragma) {
	NIM_BOOL result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (n == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = HEX3DHEX3D_314667((*n).kindU.S6.Sons, NIM_NIL);
		LA4: ;
		if (!LOC3) goto LA5;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA5: ;
	{
		tnode224816* p_315011;
		tnodeseq224810* HEX3Atmp_315055;
		NI i_315058;
		NI l_315060;
		p_315011 = 0;
		HEX3Atmp_315055 = 0;
		HEX3Atmp_315055 = (*n).kindU.S6.Sons;
		i_315058 = 0;
		l_315060 = HEX3Atmp_315055->Sup.len;
		{
			while (1) {
				tnode224816* key;
				if (!(i_315058 < l_315060)) goto LA9;
				p_315011 = HEX3Atmp_315055->data[i_315058];
				{
					if (!((*p_315011).Kind == ((NU8) 34))) goto LA12;
					key = HEX5BHEX5D_225698(p_315011, 0);
				}
				goto LA10;
				LA12: ;
				{
					key = p_315011;
				}
				LA10: ;
				{
					NIM_BOOL LOC17;
					NU8 LOC19;
					LOC17 = 0;
					LOC17 = ((*key).Kind == ((NU8) 2));
					if (!(LOC17)) goto LA18;
					LOC19 = 0;
					LOC19 = whichkeyword_203382((*key).kindU.S5.Ident);
					LOC17 = (LOC19 == pragma);
					LA18: ;
					if (!LOC17) goto LA20;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA20: ;
				i_315058 += 1;
			} LA9: ;
		}
	}
	result = NIM_FALSE;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_CHAR, pragmaasm_309098)(tcontext289021* c, tnode224816* n) {
	NIM_CHAR result;
	result = 0;
	result = 0;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		{
			NI i_309132;
			NI HEX3Atmp_309260;
			NI LOC6;
			NI res_309263;
			i_309132 = 0;
			HEX3Atmp_309260 = 0;
			LOC6 = 0;
			LOC6 = sonslen_225249(n);
			HEX3Atmp_309260 = (NI32)(LOC6 - 1);
			res_309263 = 0;
			{
				while (1) {
					tnode224816* it;
					if (!(res_309263 <= HEX3Atmp_309260)) goto LA8;
					i_309132 = res_309263;
					it = (*n).kindU.S6.Sons->data[i_309132];
					{
						NIM_BOOL LOC11;
						NU8 LOC15;
						LOC11 = 0;
						LOC11 = ((*it).Kind == ((NU8) 34));
						if (!(LOC11)) goto LA12;
						LOC11 = ((*(*it).kindU.S6.Sons->data[0]).Kind == ((NU8) 2));
						LA12: ;
						if (!LOC11) goto LA13;
						LOC15 = 0;
						LOC15 = whichkeyword_203382((*(*it).kindU.S6.Sons->data[0]).kindU.S5.Ident);
						switch (LOC15) {
						case ((NU8) 170):
						{
							{
								if (!((*(*it).kindU.S6.Sons->data[1]).Kind == ((NU8) 5))) goto LA19;
								result = ((NIM_CHAR) (((NI) (((NI) ((*(*it).kindU.S6.Sons->data[1]).kindU.S1.Intval))))));
							}
							goto LA17;
							LA19: ;
							{
								invalidpragma_309088(it);
							}
							LA17: ;
						}
						break;
						default:
						{
							invalidpragma_309088(it);
						}
						break;
						}
					}
					goto LA9;
					LA13: ;
					{
						invalidpragma_309088(it);
					}
					LA9: ;
					res_309263 += 1;
				} LA8: ;
			}
		}
	}
	LA3: ;
	return result;
}
NIM_EXTERNC N_NOINLINE(void, HEX00_pragmasInit)(void) {
}

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

