/* Generated by Nimrod Compiler v0.9.5 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
/* Compiled for: Linux, i386, gcc */
/* Command for C compiler:
   gcc -c  -w -O3 -fno-strict-aliasing  -I/build/nimrod/src/nimrod/lib -o compiler/nimcache/pragmas.o compiler/nimcache/pragmas.c */
#define NIM_INTBITS 32
#include "nimbase.h"

#include <string.h>
typedef struct tcontext250019 tcontext250019;
typedef struct tsym188833 tsym188833;
typedef struct tnode188803 tnode188803;
typedef struct ttype188837 ttype188837;
typedef struct tlineinfo163527 tlineinfo163527;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tident167019 tident167019;
typedef struct tnodeseq188797 tnodeseq188797;
typedef struct tstrtable188807 tstrtable188807;
typedef struct tsymseq188805 tsymseq188805;
typedef struct tpasscontext246003 tpasscontext246003;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tscope188827 tscope188827;
typedef struct tproccon250009 tproccon250009;
typedef struct tintset185047 tintset185047;
typedef struct ttrunk185043 ttrunk185043;
typedef struct ttrunkseq185045 ttrunkseq185045;
typedef struct tlinkedlist118023 tlinkedlist118023;
typedef struct tlistentry118017 tlistentry118017;
typedef struct tidtable188849 tidtable188849;
typedef struct tidpairseq188847 tidpairseq188847;
typedef struct tidpair188845 tidpair188845;
typedef struct tidobj167013 tidobj167013;
typedef struct tctx249037 tctx249037;
typedef struct TY250131 TY250131;
typedef struct tinstantiationpair250011 tinstantiationpair250011;
typedef struct tinstantiation188823 tinstantiation188823;
typedef struct ttypeseq188835 ttypeseq188835;
typedef struct TY188933 TY188933;
typedef struct tloc188817 tloc188817;
typedef struct trope145007 trope145007;
typedef struct tlib188821 tlib188821;
typedef struct tcell41090 tcell41090;
typedef struct tcellseq41106 tcellseq41106;
typedef struct tgcheap43016 tgcheap43016;
typedef struct tcellset41102 tcellset41102;
typedef struct tpagedesc41098 tpagedesc41098;
typedef struct tmemregion23410 tmemregion23410;
typedef struct tsmallchunk22638 tsmallchunk22638;
typedef struct tllchunk23404 tllchunk23404;
typedef struct tbigchunk22640 tbigchunk22640;
typedef struct tintset22615 tintset22615;
typedef struct ttrunk22611 ttrunk22611;
typedef struct tavlnode23408 tavlnode23408;
typedef struct tgcstat43014 tgcstat43014;
typedef struct toptionentry250003 toptionentry250003;
typedef struct TY108700 TY108700;
typedef struct tinfocc169014 tinfocc169014;
typedef struct TY249229 TY249229;
typedef struct TY164208 TY164208;
typedef struct pprocHEX3Aobjecttype249216 pprocHEX3Aobjecttype249216;
typedef struct TY188922 TY188922;
typedef struct tbasechunk22636 tbasechunk22636;
typedef struct tfreecell22628 tfreecell22628;
typedef struct TY249217 TY249217;
typedef struct tblock249023 tblock249023;
typedef struct TY249198 TY249198;
typedef struct TY249223 TY249223;
typedef NU8 tspecialwords171011[32];
struct  tlineinfo163527  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tnode188803  {
ttype188837* Typ;
tlineinfo163527 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym188833* Sym;
} S4;
struct {tident167019* Ident;
} S5;
struct {tnodeseq188797* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
struct  tstrtable188807  {
NI Counter;
tsymseq188805* Data;
};
typedef N_NIMCALL_PTR(void, TY2289) (void* p, NI op);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY2289 marker;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tpasscontext246003  {
  TNimObject Sup;
NIM_BOOL Fromcache;
};
struct  tintset185047  {
NI Counter;
NI Max;
ttrunk185043* Head;
ttrunkseq185045* Data;
};
struct  tlinkedlist118023  {
tlistentry118017* Head;
tlistentry118017* Tail;
NI Counter;
};
struct  tidpair188845  {
tidobj167013* Key;
TNimObject* Val;
};
struct  tidtable188849  {
NI Counter;
tidpairseq188847* Data;
};
typedef N_NIMCALL_PTR(tnode188803*, TY250061) (tcontext250019* c, tnode188803* n);
typedef N_NIMCALL_PTR(tnode188803*, TY250066) (tcontext250019* c, tnode188803* n, NU16 flags);
typedef N_NIMCALL_PTR(tnode188803*, TY250074) (tcontext250019* c, tnode188803* n, NU16 flags, NIM_BOOL buffererrors);
typedef N_NIMCALL_PTR(tnode188803*, TY250083) (tcontext250019* c, tnode188803* n);
typedef N_NIMCALL_PTR(tnode188803*, TY250088) (tcontext250019* c, tnode188803* n, NU16 flags);
typedef N_NIMCALL_PTR(tnode188803*, TY250096) (tcontext250019* c, tnode188803* n);
typedef N_NIMCALL_PTR(tnode188803*, TY250101) (tcontext250019* c, tnode188803* n, tnode188803* norig, NU32 filter);
typedef N_NIMCALL_PTR(ttype188837*, TY250108) (tcontext250019* c, tnode188803* n, ttype188837* prev);
typedef struct {
N_NIMCALL_PTR(tnode188803*, ClPrc) (tcontext250019* c, tidtable188849 pt, tnode188803* n, void* ClEnv);
void* ClEnv;
} TY250114;
typedef struct {
N_NIMCALL_PTR(tsym188833*, ClPrc) (tcontext250019* c, tsym188833* fn, tidtable188849 pt, tlineinfo163527 info, void* ClEnv);
void* ClEnv;
} TY250120;
struct  tinstantiationpair250011  {
tsym188833* Genericsym;
tinstantiation188823* Inst;
};
struct  tcontext250019  {
  tpasscontext246003 Sup;
tsym188833* Module;
tscope188827* Currentscope;
tscope188827* Importtable;
tscope188827* Toplevelscope;
tproccon250009* P;
tsym188833* Friendmodule;
NI Instcounter;
tintset185047 Ambiguoussymbols;
NI Intypeclass;
NI Ingenericcontext;
NI Inunrolledcontext;
NI Incompilescontext;
NI Ingenericinst;
tsymseq188805* Converters;
tsymseq188805* Patterns;
tlinkedlist118023 Optionstack;
tidtable188849 Symmapping;
tlinkedlist118023 Libs;
TY250061 Semconstexpr;
TY250066 Semexpr;
TY250074 Semtryexpr;
TY250083 Semtryconstexpr;
TY250088 Semoperand;
TY250096 Semconstboolexpr;
TY250101 Semoverloadedcall;
TY250108 Semtypenode;
TY250114 Seminferredlambda;
TY250120 Semgenerateinstance;
tintset185047 Includedfiles;
tstrtable188807 Userpragmas;
tctx249037* Evalcontext;
tintset185047 Unknownidents;
TY250131* Generics;
NI Lastgenericidx;
NI Hloloopdetector;
};
struct  tidobj167013  {
  TNimObject Sup;
NI Id;
};
struct  tloc188817  {
NU8 K;
NU8 S;
NU8 Flags;
ttype188837* T;
trope145007* R;
trope145007* Heaproot;
NI A;
};
struct  tsym188833  {
  tidobj167013 Sup;
NU8 Kind;
union {
struct {ttypeseq188835* Typeinstcache;
tscope188827* Typscope;
} S1;
struct {TY188933* Procinstcache;
tscope188827* Scope;
} S2;
struct {TY188933* Usedgenerics;
tstrtable188807 Tab;
} S3;
} kindU;
NU16 Magic;
ttype188837* Typ;
tident167019* Name;
tlineinfo163527 Info;
tsym188833* Owner;
NU32 Flags;
tnode188803* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc188817 Loc;
tlib188821* Annex;
tnode188803* Constraint;
};
struct  tident167019  {
  tidobj167013 Sup;
NimStringDesc* S;
tident167019* Next;
NI H;
};
struct  tcell41090  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq41106  {
NI Len;
NI Cap;
tcell41090** D;
};
struct  tcellset41102  {
NI Counter;
NI Max;
tpagedesc41098* Head;
tpagedesc41098** Data;
};
typedef tsmallchunk22638* TY23422[512];
typedef ttrunk22611* ttrunkbuckets22613[256];
struct  tintset22615  {
ttrunkbuckets22613 Data;
};
struct  tmemregion23410  {
NI Minlargeobj;
NI Maxlargeobj;
TY23422 Freesmallchunks;
tllchunk23404* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk22640* Freechunkslist;
tintset22615 Chunkstarts;
tavlnode23408* Root;
tavlnode23408* Deleted;
tavlnode23408* Last;
tavlnode23408* Freeavlnodes;
};
struct  tgcstat43014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap43016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq41106 Zct;
tcellseq41106 Decstack;
tcellset41102 Cycleroots;
tcellseq41106 Tempstack;
NI Recgclock;
tmemregion23410 Region;
tgcstat43014 Stat;
};
struct  ttype188837  {
  tidobj167013 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq188835* Sons;
tnode188803* N;
tsym188833* Destructor;
tsym188833* Owner;
tsym188833* Sym;
NI64 Size;
NI Align;
tloc188817 Loc;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  tlistentry118017  {
  TNimObject Sup;
tlistentry118017* Prev;
tlistentry118017* Next;
};
struct  tlib188821  {
  tlistentry118017 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope145007* Name;
tnode188803* Path;
};
struct  toptionentry250003  {
  tlistentry118017 Sup;
NU32 Options;
NU8 Defaultcc;
tlib188821* Dynlib;
NU64 Notes;
tnode188803* Otherpragmas;
};
struct TY108700 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
struct tinfocc169014 {
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 tinfocc169014 TY169403[12];
typedef NimStringDesc* TY163492[16];
typedef NimStringDesc* TY163486[27];
struct  tproccon250009  {
tsym188833* Owner;
tsym188833* Resultsym;
NI Nestedloopcounter;
NI Nestedblockcounter;
NI Intrystmt;
tproccon250009* Next;
};
struct  tscope188827  {
NI Depthlevel;
tstrtable188807 Symbols;
tnodeseq188797* Usingsyms;
tscope188827* Parent;
};
typedef NI TY22618[16];
struct  ttrunk185043  {
ttrunk185043* Next;
NI Key;
TY22618 Bits;
};
struct  tctx249037  {
  tpasscontext246003 Sup;
TY249229* Code;
TY164208* Debug;
tnode188803* Globals;
tnode188803* Constants;
ttypeseq188835* Types;
tnode188803* Currentexceptiona;
tnode188803* Currentexceptionb;
NI Exceptioninstr;
pprocHEX3Aobjecttype249216* Prc;
tsym188833* Module;
tnode188803* Callsite;
NU8 Mode;
NU8 Features;
NIM_BOOL Traceactive;
NI Loopiterations;
};
struct  tinstantiation188823  {
tsym188833* Sym;
ttypeseq188835* Concretetypes;
TY188922* Usedby;
};
struct  trope145007  {
  TNimObject Sup;
trope145007* Left;
trope145007* Right;
NI Length;
NimStringDesc* Data;
};
struct  tpagedesc41098  {
tpagedesc41098* Next;
NI Key;
TY22618 Bits;
};
struct  tbasechunk22636  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk22638  {
  tbasechunk22636 Sup;
tsmallchunk22638* Next;
tsmallchunk22638* Prev;
tfreecell22628* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk23404  {
NI Size;
NI Acc;
tllchunk23404* Next;
};
struct  tbigchunk22640  {
  tbasechunk22636 Sup;
tbigchunk22640* Next;
tbigchunk22640* Prev;
NI Align;
NF Data;
};
struct  ttrunk22611  {
ttrunk22611* Next;
NI Key;
TY22618 Bits;
};
typedef tavlnode23408* TY23414[2];
struct  tavlnode23408  {
TY23414 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  tblock249023  {
tsym188833* Label;
TY249198* Fixups;
};
struct TY249223 {
NIM_BOOL Field0;
NU8 Field1;
};
typedef TY249223 TY249220[256];
struct  pprocHEX3Aobjecttype249216  {
TY249217* Blocks;
tsym188833* Sym;
TY249220 Slots;
NI Maxslots;
};
struct  tfreecell22628  {
tfreecell22628* Next;
NI Zerofield;
};
struct tnodeseq188797 {
  TGenericSeq Sup;
  tnode188803* data[SEQ_DECL_SIZE];
};
struct tsymseq188805 {
  TGenericSeq Sup;
  tsym188833* data[SEQ_DECL_SIZE];
};
struct ttrunkseq185045 {
  TGenericSeq Sup;
  ttrunk185043* data[SEQ_DECL_SIZE];
};
struct tidpairseq188847 {
  TGenericSeq Sup;
  tidpair188845 data[SEQ_DECL_SIZE];
};
struct TY250131 {
  TGenericSeq Sup;
  tinstantiationpair250011 data[SEQ_DECL_SIZE];
};
struct ttypeseq188835 {
  TGenericSeq Sup;
  ttype188837* data[SEQ_DECL_SIZE];
};
struct TY188933 {
  TGenericSeq Sup;
  tinstantiation188823* data[SEQ_DECL_SIZE];
};
struct TY249229 {
  TGenericSeq Sup;
  NU32 data[SEQ_DECL_SIZE];
};
struct TY164208 {
  TGenericSeq Sup;
  tlineinfo163527 data[SEQ_DECL_SIZE];
};
struct TY188922 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct TY249198 {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
struct TY249217 {
  TGenericSeq Sup;
  tblock249023 data[SEQ_DECL_SIZE];
};
static N_INLINE(NI, sonslen_189181)(tnode188803* n);
N_NIMCALL(NIM_BOOL, singlepragma_270197)(tcontext250019* c, tsym188833* sym, tnode188803* n, NI i, tspecialwords171011 validpragmas);
N_NIMCALL(tsym188833*, strtableget_197084)(tstrtable188807 t, tident167019* name);
N_NIMCALL(void, globalerror_165558)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, pragma_267073)(tcontext250019* c, tsym188833* sym, tnode188803* n, tspecialwords171011 validpragmas);
N_NIMCALL(NU8, whichkeyword_171360)(tident167019* id);
N_NIMCALL(void, makeexternexport_267345)(tsym188833* s, NimStringDesc* extname, tlineinfo163527 info);
N_NIMCALL(void, setexternname_267255)(tsym188833* s, NimStringDesc* extname);
N_NIMCALL(trope145007*, torope_145058)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tcell41090*, usrtocell_44443)(void* usr);
static N_INLINE(void, rtladdzct_46002)(tcell41090* c);
N_NOINLINE(void, addzct_44418)(tcellseq41106* s, tcell41090* c);
N_NIMCALL(NIM_BOOL, contains_90244)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, getoptionalstr_267729)(tcontext250019* c, tnode188803* n, NimStringDesc* defaultstr);
N_NIMCALL(NimStringDesc*, expectstrlit_267622)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, getstrlitnode_267550)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, localerror_165571)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NOINLINE(tnode188803*, newemptystrnode_267530)(tnode188803* n);
N_NIMCALL(tnode188803*, newnodeit_189104)(NU8 kind, tlineinfo163527 info, ttype188837* typ);
N_NIMCALL(ttype188837*, getsystype_242024)(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_267286)(tsym188833* s, NimStringDesc* extname);
N_NIMCALL(void, processimportcompilerproc_267368)(tsym188833* s, NimStringDesc* extname);
N_NIMCALL(void, invalidpragma_267081)(tnode188803* n);
N_NIMCALL(NimStringDesc*, rendertree_211051)(tnode188803* n, NU8 renderflags);
N_NIMCALL(void, processimportcpp_267422)(tsym188833* s, NimStringDesc* extname);
N_NIMCALL(void, processimportobjc_267476)(tsym188833* s, NimStringDesc* extname);
N_NIMCALL(NI, expectintlit_267643)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NIM_BOOL, ispoweroftwo_133278)(NI x);
N_NIMCALL(void, noval_269525)(tnode188803* n);
N_NIMCALL(void, pragmadeadcodeelim_268031)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NIM_BOOL, isturnedon_267922)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, pragmanoforward_268069)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, processmagic_267753)(tcontext250019* c, tnode188803* n, tsym188833* s);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI start);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI first);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_75880, TNimType* typ);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, message_165584)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(tlib188821*, getlib_268174)(tcontext250019* c, NU8 kind, tnode188803* path);
N_NIMCALL(NIM_BOOL, exprstructuralequivalent_221150)(tnode188803* a, tnode188803* b);
N_NIMCALL(tlib188821*, newlib_250161)(NU8 kind);
N_NIMCALL(void, append_118042)(tlinkedlist118023* list, tlistentry118017* entry);
N_NIMCALL(NIM_BOOL, isdynliboverride_138374)(NimStringDesc* lib);
N_NIMCALL(void, addtolib_250165)(tlib188821* lib, tsym188833* sym);
N_NIMCALL(void, processdynlib_268346)(tcontext250019* c, tnode188803* n, tsym188833* sym);
N_NIMCALL(tnode188803*, expectdynlibnode_268239)(tcontext250019* c, tnode188803* n);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_46827)(tcell41090* c);
static N_INLINE(NIM_BOOL, canbecycleroot_44462)(tcell41090* c);
static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c);
N_NOINLINE(void, incl_41855)(tcellset41102* s, tcell41090* cell);
static N_INLINE(void, decref_46402)(tcell41090* c);
N_NIMCALL(void, registercompilerproc_242032)(tsym188833* s);
N_NIMCALL(void, typeborrow_270142)(tsym188833* sym, tnode188803* n);
N_NIMCALL(void, localerror_165578)(tlineinfo163527 info, NimStringDesc* arg);
static N_INLINE(NIM_BOOL, isroutine_195040)(tsym188833* s);
N_NIMCALL(void, fatal_165551)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, processdefine_269182)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, definesymbol_168006)(NimStringDesc* symbol);
N_NIMCALL(void, processundef_269248)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, undefsymbol_168011)(NimStringDesc* symbol);
N_NIMCALL(void, processcompile_269319)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NimStringDesc*, findfile_138306)(NimStringDesc* f);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(void, addexternalfiletocompile_170407)(NimStringDesc* filename);
N_NIMCALL(void, addfiletolink_169779)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, completecfilepath_169753)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(void, processcommonlink_269328)(tcontext250019* c, tnode188803* n, NU8 feature);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY108700* Result);
N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, HEX2F_108477)(NimStringDesc* head, NimStringDesc* tail);
N_NIMCALL(void, internalerror_165591)(tlineinfo163527 info, NimStringDesc* errmsg);
N_NIMCALL(void, addlinkoption_169700)(NimStringDesc* option);
N_NIMCALL(void, addcompileoption_169707)(NimStringDesc* option);
N_NIMCALL(void, pragmabreakpoint_269337)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, pragmawatchpoint_269366)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, processpush_269085)(tcontext250019* c, tnode188803* n, NI start);
N_NIMCALL(toptionentry250003*, newoptionentry_250158)(void);
N_NIMCALL(NIM_BOOL, processoption_268827)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, processnote_268460)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NI, findstr_171334)(NimStringDesc** a, NI aLen0, NimStringDesc* s);
N_NIMCALL(void, onoff_267990)(tcontext250019* c, tnode188803* n, NU32 op);
N_NIMCALL(void, processcallconv_268107)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NU8, wordtocallconv_267889)(NU8 sw);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(tnode188803*, newnodei_189099)(NU8 kind, tlineinfo163527 info);
N_NIMCALL(void, add_189390)(tnode188803* father, tnode188803* son);
N_NIMCALL(void, processpop_269175)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, remove_118652)(tlinkedlist118023* list, tlistentry118017* entry);
N_NIMCALL(void, processpragma_269767)(tcontext250019* c, tnode188803* n, NI i);
N_NIMCALL(tsym188833*, newsym_189053)(NU8 symkind, tident167019* name, tsym188833* owner, tlineinfo163527 info);
N_NIMCALL(void, addson_189207)(tnode188803* father, tnode188803* son);
N_NIMCALL(void, strtableadd_197078)(tstrtable188807* t, tsym188833* n);
N_NIMCALL(void, processcodegendecl_267746)(tcontext250019* c, tnode188803* n, tsym188833* sym);
N_NIMCALL(void, pragmaemit_269505)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semasmoremit_269409)(tcontext250019* con, tnode188803* n, NIM_CHAR marker);
N_NIMCALL(tnode188803*, newnode_191003)(NU8 kind, tlineinfo163527 info, tnodeseq188797* sons, ttype188837* 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_70624, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(tnode188803*, newstrnode_189085)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(tsym188833*, searchinscopes_252216)(tcontext250019* c, tident167019* s);
N_NIMCALL(tident167019*, getident_167456)(NimStringDesc* identifier);
N_NIMCALL(void, loadstub_239239)(tsym188833* s);
N_NIMCALL(tnode188803*, newsymnode_189095)(tsym188833* sym);
N_NIMCALL(void, illformedast_251203)(tnode188803* n);
N_NIMCALL(void, pragmaunroll_269539)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, newintnode_189069)(NU8 kind, NI64 intval);
N_NIMCALL(void, pragmaline_269578)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NI32, fileinfoidx_163721)(NimStringDesc* filename);
N_NIMCALL(tlineinfo163527, getinfocontext_164751)(NI index);
N_NIMCALL(void, pragmaraisesortags_269906)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, processexc_269910)(tcontext250019* c, tnode188803* x);
N_NIMCALL(ttype188837*, skiptypes_192793)(ttype188837* t, NU64 kinds);
static N_INLINE(NI, len_189264)(tnode188803* n);
N_NIMCALL(void, pragmauses_269973)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, processexc_269977)(tcontext250019* c, tnode188803* x);
N_NIMCALL(tident167019*, consideracc_252006)(tnode188803* n);
N_NIMCALL(void, implicitpragmas_271915)(tcontext250019* c, tsym188833* sym, tnode188803* n, tspecialwords171011 validpragmas);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_272164)(tnodeseq188797* x_272170, tnodeseq188797* y_272175);
static N_INLINE(tnode188803*, HEX5BHEX5D_189694)(tnode188803* n, NI i);
STRING_LITERAL(TMP2713, "", 0);
STRING_LITERAL(TMP2714, "$1", 2);
STRING_LITERAL(TMP2715, "a type can only borrow `.` for now", 34);
STRING_LITERAL(TMP2716, "define", 6);
STRING_LITERAL(TMP2717, "undef", 5);
extern NIM_CONST TY169403 cc_169402;
STRING_LITERAL(TMP2718, "processCommonLink", 17);
STRING_LITERAL(TMP2719, "\':\' after \'push\' not supported", 30);
STRING_LITERAL(TMP2721, "Success", 7);
STRING_LITERAL(TMP2722, "SuccessX", 8);
STRING_LITERAL(TMP2723, "LineTooLong", 11);
STRING_LITERAL(TMP2724, "XDeclaredButNotUsed", 19);
STRING_LITERAL(TMP2725, "ConvToBaseNotNeeded", 19);
STRING_LITERAL(TMP2726, "ConvFromXtoItselfNotNeeded", 26);
STRING_LITERAL(TMP2727, "ExprAlwaysX", 11);
STRING_LITERAL(TMP2728, "QuitCalled", 10);
STRING_LITERAL(TMP2729, "Processing", 10);
STRING_LITERAL(TMP2730, "CodeBegin", 9);
STRING_LITERAL(TMP2731, "CodeEnd", 7);
STRING_LITERAL(TMP2732, "Conf", 4);
STRING_LITERAL(TMP2733, "Path", 4);
STRING_LITERAL(TMP2734, "CondTrue", 8);
STRING_LITERAL(TMP2735, "Pattern", 7);
STRING_LITERAL(TMP2736, "User", 4);
NIM_CONST TY163492 TMP2720 = {((NimStringDesc*) &TMP2721),
((NimStringDesc*) &TMP2722),
((NimStringDesc*) &TMP2723),
((NimStringDesc*) &TMP2724),
((NimStringDesc*) &TMP2725),
((NimStringDesc*) &TMP2726),
((NimStringDesc*) &TMP2727),
((NimStringDesc*) &TMP2728),
((NimStringDesc*) &TMP2729),
((NimStringDesc*) &TMP2730),
((NimStringDesc*) &TMP2731),
((NimStringDesc*) &TMP2732),
((NimStringDesc*) &TMP2733),
((NimStringDesc*) &TMP2734),
((NimStringDesc*) &TMP2735),
((NimStringDesc*) &TMP2736)}
;
STRING_LITERAL(TMP2738, "CannotOpenFile", 14);
STRING_LITERAL(TMP2739, "OctalEscape", 11);
STRING_LITERAL(TMP2740, "XIsNeverRead", 12);
STRING_LITERAL(TMP2741, "XmightNotBeenInit", 17);
STRING_LITERAL(TMP2742, "Deprecated", 10);
STRING_LITERAL(TMP2743, "ConfigDeprecated", 16);
STRING_LITERAL(TMP2744, "SmallLshouldNotBeUsed", 21);
STRING_LITERAL(TMP2745, "UnknownMagic", 12);
STRING_LITERAL(TMP2746, "RedefinitionOfLabel", 19);
STRING_LITERAL(TMP2747, "UnknownSubstitutionX", 20);
STRING_LITERAL(TMP2748, "LanguageXNotSupported", 21);
STRING_LITERAL(TMP2749, "CommentXIgnored", 15);
STRING_LITERAL(TMP2750, "NilStmt", 7);
STRING_LITERAL(TMP2751, "AnalysisLoophole", 16);
STRING_LITERAL(TMP2752, "DifferentHeaps", 14);
STRING_LITERAL(TMP2753, "WriteToForeignHeap", 18);
STRING_LITERAL(TMP2754, "UnsafeCode", 10);
STRING_LITERAL(TMP2755, "EachIdentIsTuple", 16);
STRING_LITERAL(TMP2756, "ShadowIdent", 11);
STRING_LITERAL(TMP2757, "ProveInit", 9);
STRING_LITERAL(TMP2758, "ProveField", 10);
STRING_LITERAL(TMP2759, "ProveIndex", 10);
STRING_LITERAL(TMP2760, "GcUnsafe", 8);
STRING_LITERAL(TMP2761, "GcUnsafe2", 9);
STRING_LITERAL(TMP2762, "Uninit", 6);
STRING_LITERAL(TMP2763, "GcMem", 5);
NIM_CONST TY163486 TMP2737 = {((NimStringDesc*) &TMP2738),
((NimStringDesc*) &TMP2739),
((NimStringDesc*) &TMP2740),
((NimStringDesc*) &TMP2741),
((NimStringDesc*) &TMP2742),
((NimStringDesc*) &TMP2743),
((NimStringDesc*) &TMP2744),
((NimStringDesc*) &TMP2745),
((NimStringDesc*) &TMP2746),
((NimStringDesc*) &TMP2747),
((NimStringDesc*) &TMP2748),
((NimStringDesc*) &TMP2749),
((NimStringDesc*) &TMP2750),
((NimStringDesc*) &TMP2751),
((NimStringDesc*) &TMP2752),
((NimStringDesc*) &TMP2753),
((NimStringDesc*) &TMP2754),
((NimStringDesc*) &TMP2755),
((NimStringDesc*) &TMP2756),
((NimStringDesc*) &TMP2757),
((NimStringDesc*) &TMP2758),
((NimStringDesc*) &TMP2759),
((NimStringDesc*) &TMP2760),
((NimStringDesc*) &TMP2761),
((NimStringDesc*) &TMP2762),
((NimStringDesc*) &TMP2763),
((NimStringDesc*) &TMP2736)}
;
STRING_LITERAL(TMP2764, "speed", 5);
STRING_LITERAL(TMP2765, "size", 4);
STRING_LITERAL(TMP2766, "none", 4);
STRING_LITERAL(TMP2767, "tuple", 5);
STRING_LITERAL(TMP2768, "invalid type for raises/tags list", 33);
STRING_LITERAL(TMP2769, "*", 1);
STRING_LITERAL(TMP2770, "\'$1\' is not a global variable", 29);
STRING_LITERAL(TMP2771, "implicitPragmas", 15);
extern tgcheap43016 gch_43044;
extern NU8 gcmd_137113;
extern TNimType NTI188521; /* TMagic */
extern NU32 gglobaloptions_137111;
extern NU8 ccompiler_169425;
extern NimStringDesc* libpath_137205;
extern NU32 goptions_137108;
extern NU64 gnotes_164181;
extern TNimType NTI188797; /* TNodeSeq */
extern tsym188833* anyglobal_189730;

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

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

static N_INLINE(void, rtladdzct_46002)(tcell41090* c) {
	addzct_44418(&gch_43044.Zct, c);
}

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

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

N_NIMCALL(void, makeexternexport_267345)(tsym188833* s, NimStringDesc* extname, tlineinfo163527 info) {
	setexternname_267255(s, extname);
	(*s).Flags |=((NI32)(1)<<((((NU8) 6))%(sizeof(NI32)*8)));
}

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

N_NOINLINE(tnode188803*, newemptystrnode_267530)(tnode188803* n) {
	tnode188803* result;
	ttype188837* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getsystype_242024(((NU8) 28));
	result = newnodeit_189104(((NU8) 20), (*n).Info, LOC1);
	LOC2 = 0;
	LOC2 = (*result).kindU.S3.Strval; (*result).kindU.S3.Strval = copyStringRC1(((NimStringDesc*) &TMP2713));
	if (LOC2) nimGCunrefNoCycle(LOC2);
	return result;
}

N_NIMCALL(tnode188803*, getstrlitnode_267550)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		if (!!(((*n).Kind == ((NU8) 34)))) goto LA3;
		localerror_165571((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2713));
		result = newemptystrnode_267530(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_165571((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2713));
			result = newemptystrnode_267530(n);
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(NimStringDesc*, expectstrlit_267622)(tcontext250019* c, tnode188803* n) {
	NimStringDesc* result;
	tnode188803* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getstrlitnode_267550(c, n);
	result = copyString((*LOC1).kindU.S3.Strval);
	return result;
}

N_NIMCALL(NimStringDesc*, getoptionalstr_267729)(tcontext250019* c, tnode188803* n, NimStringDesc* defaultstr) {
	NimStringDesc* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		result = expectstrlit_267622(c, n);
	}
	goto LA1;
	LA3: ;
	{
		result = copyString(defaultstr);
	}
	LA1: ;
	return result;
}

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

N_NIMCALL(void, processimportcompilerproc_267368)(tsym188833* s, NimStringDesc* extname) {
	setexternname_267255(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_267081)(tnode188803* n) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = rendertree_211051(n, 4);
	localerror_165571((*n).Info, ((NU16) 162), LOC1);
}

N_NIMCALL(void, processimportcpp_267422)(tsym188833* s, NimStringDesc* extname) {
	setexternname_267255(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)));
}

N_NIMCALL(void, processimportobjc_267476)(tsym188833* s, NimStringDesc* extname) {
	setexternname_267255(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)));
}

N_NIMCALL(NI, expectintlit_267643)(tcontext250019* c, tnode188803* n) {
	NI result;
	result = 0;
	{
		if (!!(((*n).Kind == ((NU8) 34)))) goto LA3;
		localerror_165571((*n).Info, ((NU16) 7), ((NimStringDesc*) &TMP2713));
	}
	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_165571((*n).Info, ((NU16) 7), ((NimStringDesc*) &TMP2713));
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, noval_269525)(tnode188803* n) {
	{
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		invalidpragma_267081(n);
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, isturnedon_267922)(tcontext250019* c, tnode188803* n) {
	NIM_BOOL result;
	result = 0;
	{
		tnode188803* 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 == 0));
			goto BeforeRet;
		}
		LA7: ;
	}
	LA3: ;
	localerror_165571((*n).Info, ((NU16) 26), ((NimStringDesc*) &TMP2713));
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, pragmadeadcodeelim_268031)(tcontext250019* c, tnode188803* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_267922(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_268069)(tcontext250019* c, tnode188803* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_267922(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_267753)(tcontext250019* c, tnode188803* n, tsym188833* s) {
	NimStringDesc* v;
	NU16 m_267863;
	NU16 res_267884;
	{
		if (!!(((*n).Kind == ((NU8) 34)))) goto LA3;
		localerror_165571((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2713));
		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_267622(c, n);
	}
	LA5: ;
	m_267863 = 0;
	res_267884 = ((NU16) 0);
	while (1) {
		if (!(res_267884 <= ((NU16) 264))) goto LA10;
		m_267863 = res_267884;
		{
			NimStringDesc* LOC13;
			LOC13 = 0;
			LOC13 = copyStr(reprEnum(m_267863, (&NTI188521)), 1);
			if (!eqStrings(LOC13, v)) goto LA14;
			(*s).Magic = m_267863;
			goto LA10;
		}
		LA14: ;
		res_267884 += 1;
	} LA10: ;
	{
		if (!((*s).Magic == ((NU16) 0))) goto LA18;
		message_165584((*n).Info, ((NU16) 237), v);
	}
	LA18: ;
	BeforeRet: ;
}

N_NIMCALL(tlib188821*, getlib_268174)(tcontext250019* c, NU8 kind, tnode188803* path) {
	tlib188821* result;
	tlib188821* it;
	result = 0;
	it = ((tlib188821*) ((*c).Libs.Head));
	while (1) {
		if (!!((it == NIM_NIL))) goto LA1;
		{
			if (!((*it).Kind == kind)) goto LA4;
			{
				NIM_BOOL LOC8;
				LOC8 = 0;
				LOC8 = exprstructuralequivalent_221150((*it).Path, path);
				if (!LOC8) goto LA9;
				result = it;
				goto BeforeRet;
			}
			LA9: ;
		}
		LA4: ;
		it = ((tlib188821*) ((*it).Sup.Next));
	} LA1: ;
	result = newlib_250161(kind);
	asgnRefNoCycle((void**) &(*result).Path, path);
	append_118042(&(*c).Libs, &result->Sup);
	{
		if (!((*path).Kind >= ((NU8) 20) && (*path).Kind <= ((NU8) 22))) goto LA13;
		(*result).Isoverriden = isdynliboverride_138374((*path).kindU.S3.Strval);
	}
	LA13: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, expectdynlibnode_268239)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		if (!!(((*n).Kind == ((NU8) 34)))) goto LA3;
		localerror_165571((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2713));
		result = newemptystrnode_267530(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_165571((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2713));
			result = newemptystrnode_267530(n);
		}
		LA16: ;
	}
	LA1: ;
	return result;
}

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

static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c) {
	{
		if (!!((((NI) ((NI)((*c).Refcount & 3))) == 3))) goto LA3;
		(*c).Refcount = (NI)((NI)((*c).Refcount & -4) | 3);
		incl_41855(&gch_43044.Cycleroots, c);
	}
	LA3: ;
}

static N_INLINE(void, incref_46827)(tcell41090* c) {
	(*c).Refcount = (NI)((NU32)((*c).Refcount) + (NU32)(8));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_44462(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_45235(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_46402)(tcell41090* c) {
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		rtladdzct_46002(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_44462(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_45235(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tcell41090* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_44443(src);
		incref_46827(LOC5);
	}
	LA3: ;
	{
		tcell41090* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_44443((*dest));
		decref_46402(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

N_NIMCALL(void, processdynlib_268346)(tcontext250019* c, tnode188803* n, tsym188833* sym) {
	{
		NIM_BOOL LOC3;
		tnode188803* 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_268239(c, n);
		asgnRef((void**) &(*((toptionentry250003*) ((*c).Optionstack.Tail))).Dynlib, getlib_268174(c, ((NU8) 1), LOC7));
	}
	goto LA1;
	LA5: ;
	{
		{
			tlib188821* lib;
			tnode188803* LOC13;
			if (!((*n).Kind == ((NU8) 34))) goto LA11;
			LOC13 = 0;
			LOC13 = expectdynlibnode_268239(c, n);
			lib = getlib_268174(c, ((NU8) 1), LOC13);
			{
				if (!!((*lib).Isoverriden)) goto LA16;
				addtolib_250165(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, typeborrow_270142)(tsym188833* sym, tnode188803* n) {
	{
		tnode188803* it;
		if (!((*n).Kind == ((NU8) 34))) goto LA3;
		it = (*n).kindU.S6.Sons->data[1];
		{
			if (!!(((*it).Kind == ((NU8) 53)))) goto LA7;
			localerror_165578((*n).Info, ((NimStringDesc*) &TMP2715));
		}
		LA7: ;
	}
	LA3: ;
	(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 27))%(sizeof(NI32)*8)));
}

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

N_NIMCALL(void, processdefine_269182)(tcontext250019* c, tnode188803* 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_168006((*(*(*n).kindU.S6.Sons->data[1]).kindU.S5.Ident).S);
		message_165584((*n).Info, ((NU16) 234), ((NimStringDesc*) &TMP2716));
	}
	goto LA1;
	LA5: ;
	{
		invalidpragma_267081(n);
	}
	LA1: ;
}

N_NIMCALL(void, processundef_269248)(tcontext250019* c, tnode188803* 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_168011((*(*(*n).kindU.S6.Sons->data[1]).kindU.S5.Ident).S);
		message_165584((*n).Info, ((NU16) 234), ((NimStringDesc*) &TMP2717));
	}
	goto LA1;
	LA5: ;
	{
		invalidpragma_267081(n);
	}
	LA1: ;
}

N_NIMCALL(void, processcompile_269319)(tcontext250019* c, tnode188803* n) {
	NimStringDesc* s;
	NimStringDesc* found;
	NimStringDesc* trunc;
	NimStringDesc* LOC5;
	s = expectstrlit_267622(c, n);
	found = findfile_138306(s);
	{
		if (!((found) && (found)->Sup.len == 0)) goto LA3;
		found = copyString(s);
	}
	LA3: ;
	trunc = noschangeFileExt(found, ((NimStringDesc*) &TMP2713));
	addexternalfiletocompile_170407(found);
	LOC5 = 0;
	LOC5 = completecfilepath_169753(trunc, NIM_FALSE);
	addfiletolink_169779(LOC5);
}

N_NIMCALL(void, processcommonlink_269328)(tcontext250019* c, tnode188803* n, NU8 feature) {
	NimStringDesc* f;
	NimStringDesc* found;
	f = expectstrlit_267622(c, n);
	{
		TY108700 LOC3;
		memset((void*)&LOC3, 0, sizeof(LOC3));
		nossplitFile(f, &LOC3);
		if (!((LOC3.Field2) && (LOC3.Field2)->Sup.len == 0)) goto LA4;
		f = nosaddFileExt(f, cc_169402[(ccompiler_169425)- 1].Field1);
	}
	LA4: ;
	found = findfile_138306(f);
	{
		if (!((found) && (found)->Sup.len == 0)) goto LA8;
		found = copyString(f);
	}
	LA8: ;
	switch (feature) {
	case ((NU8) 0):
	{
		addfiletolink_169779(found);
	}
	break;
	case ((NU8) 1):
	{
		NimStringDesc* LOC12;
		NimStringDesc* LOC13;
		LOC12 = 0;
		LOC12 = completecfilepath_169753(found, NIM_FALSE);
		LOC13 = 0;
		LOC13 = HEX2F_108477(libpath_137205, LOC12);
		addfiletolink_169779(LOC13);
	}
	break;
	default:
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2718));
	}
	break;
	}
}

N_NIMCALL(void, pragmabreakpoint_269337)(tcontext250019* c, tnode188803* n) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = getoptionalstr_267729(c, n, ((NimStringDesc*) &TMP2713));
}

N_NIMCALL(void, pragmawatchpoint_269366)(tcontext250019* c, tnode188803* 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_267081(n);
	}
	LA1: ;
}

N_NIMCALL(void, processnote_268460)(tcontext250019* c, tnode188803* n) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NIM_BOOL LOC6;
		NIM_BOOL LOC7;
		NI LOC9;
		NU16 nk;
		NU8 LOC16;
		tnode188803* x;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC6 = 0;
		LOC7 = 0;
		LOC7 = ((*n).Kind == ((NU8) 34));
		if (!(LOC7)) goto LA8;
		LOC9 = 0;
		LOC9 = sonslen_189181(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_171360((*(*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[0]).kindU.S5.Ident);
		switch (LOC16) {
		case ((NU8) 108):
		{
			NI x;
			x = findstr_171334(TMP2720, 16, (*(*(*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1]).kindU.S5.Ident).S);
			{
				if (!(0 <= x)) goto LA20;
				nk = ((NU16) ((NI32)(x + 257)));
			}
			goto LA18;
			LA20: ;
			{
				invalidpragma_267081(n);
				goto BeforeRet;
			}
			LA18: ;
		}
		break;
		case ((NU8) 107):
		{
			NI x;
			x = findstr_171334(TMP2737, 27, (*(*(*(*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_267081(n);
				goto BeforeRet;
			}
			LA24: ;
		}
		break;
		default:
		{
			invalidpragma_267081(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 == 0));
			LA33: ;
			if (!LOC32) goto LA34;
			gnotes_164181 |=((NI64)(1)<<(((nk- 230))%(sizeof(NI64)*8)));
		}
		goto LA30;
		LA34: ;
		{
			gnotes_164181 &= ~((NI64)(1) << (((nk- 230)) % (sizeof(NI64)*8)));
		}
		LA30: ;
	}
	goto LA1;
	LA14: ;
	{
		invalidpragma_267081(n);
	}
	LA1: ;
	BeforeRet: ;
}

N_NIMCALL(void, onoff_267990)(tcontext250019* c, tnode188803* n, NU32 op) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isturnedon_267922(c, n);
		if (!LOC3) goto LA4;
		goptions_137108 = (goptions_137108 | op);
	}
	goto LA1;
	LA4: ;
	{
		goptions_137108 = (goptions_137108 & ~ op);
	}
	LA1: ;
}

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

N_NIMCALL(void, processcallconv_268107)(tcontext250019* c, tnode188803* 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_171360((*(*n).kindU.S6.Sons->data[1]).kindU.S5.Ident);
		switch (sw) {
		case ((NU8) 125) ... ((NU8) 134):
		{
			(*((toptionentry250003*) ((*c).Optionstack.Tail))).Defaultcc = wordtocallconv_267889(sw);
		}
		break;
		default:
		{
			localerror_165571((*n).Info, ((NU16) 100), ((NimStringDesc*) &TMP2713));
		}
		break;
		}
	}
	goto LA1;
	LA5: ;
	{
		localerror_165571((*n).Info, ((NU16) 100), ((NimStringDesc*) &TMP2713));
	}
	LA1: ;
}

N_NIMCALL(NIM_BOOL, processoption_268827)(tcontext250019* c, tnode188803* 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_268460(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_171360((*(*n).kindU.S6.Sons->data[0]).kindU.S5.Ident);
		switch (sw) {
		case ((NU8) 137):
		{
			onoff_267990(c, n, 1022);
		}
		break;
		case ((NU8) 80):
		{
			onoff_267990(c, n, 2);
		}
		break;
		case ((NU8) 166):
		{
			onoff_267990(c, n, 4);
		}
		break;
		case ((NU8) 138):
		{
			onoff_267990(c, n, 8);
		}
		break;
		case ((NU8) 139):
		{
			onoff_267990(c, n, 16);
		}
		break;
		case ((NU8) 140):
		{
			onoff_267990(c, n, 32);
		}
		break;
		case ((NU8) 141):
		{
			onoff_267990(c, n, 64);
		}
		break;
		case ((NU8) 142):
		{
			onoff_267990(c, n, 384);
		}
		break;
		case ((NU8) 143):
		{
			onoff_267990(c, n, 128);
		}
		break;
		case ((NU8) 144):
		{
			onoff_267990(c, n, 256);
		}
		break;
		case ((NU8) 145):
		{
			onoff_267990(c, n, 512);
		}
		break;
		case ((NU8) 147):
		{
			onoff_267990(c, n, 2048);
		}
		break;
		case ((NU8) 148):
		{
			onoff_267990(c, n, 4096);
		}
		break;
		case ((NU8) 122):
		{
			processcallconv_268107(c, n);
		}
		break;
		case ((NU8) 114):
		{
			onoff_267990(c, n, 1024);
		}
		break;
		case ((NU8) 115):
		{
			onoff_267990(c, n, 32768);
		}
		break;
		case ((NU8) 116):
		{
			onoff_267990(c, n, 65536);
		}
		break;
		case ((NU8) 124):
		{
			onoff_267990(c, n, 131072);
		}
		break;
		case ((NU8) 79):
		{
			onoff_267990(c, n, 524288);
		}
		break;
		case ((NU8) 250):
		{
			onoff_267990(c, n, 262144);
		}
		break;
		case ((NU8) 102):
		{
			processdynlib_268346(c, n, NIM_NIL);
		}
		break;
		case ((NU8) 149):
		{
			{
				if (!!(((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 2)))) goto LA36;
				invalidpragma_267081(n);
			}
			goto LA34;
			LA36: ;
			{
				NimStringDesc* LOC39;
				LOC39 = 0;
				LOC39 = nsuNormalize((*(*(*n).kindU.S6.Sons->data[1]).kindU.S5.Ident).S);
				if (eqStrings(LOC39, ((NimStringDesc*) &TMP2764))) goto LA40;
				if (eqStrings(LOC39, ((NimStringDesc*) &TMP2765))) goto LA41;
				if (eqStrings(LOC39, ((NimStringDesc*) &TMP2766))) goto LA42;
				goto LA43;
				LA40: ;
				{
					goptions_137108 |=((NI32)(1)<<((((NU8) 13))%(sizeof(NI32)*8)));
					goptions_137108 &= ~((NI32)(1) << ((((NU8) 14)) % (sizeof(NI32)*8)));
				}
				goto LA44;
				LA41: ;
				{
					goptions_137108 &= ~((NI32)(1) << ((((NU8) 13)) % (sizeof(NI32)*8)));
					goptions_137108 |=((NI32)(1)<<((((NU8) 14))%(sizeof(NI32)*8)));
				}
				goto LA44;
				LA42: ;
				{
					goptions_137108 &= ~((NI32)(1) << ((((NU8) 13)) % (sizeof(NI32)*8)));
					goptions_137108 &= ~((NI32)(1) << ((((NU8) 14)) % (sizeof(NI32)*8)));
				}
				goto LA44;
				LA43: ;
				{
					localerror_165571((*n).Info, ((NU16) 27), ((NimStringDesc*) &TMP2713));
				}
				LA44: ;
			}
			LA34: ;
		}
		break;
		case ((NU8) 183):
		{
			onoff_267990(c, n, 1048576);
		}
		break;
		case ((NU8) 146):
		{
			onoff_267990(c, n, 2097152);
		}
		break;
		default:
		{
			result = NIM_TRUE;
		}
		break;
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, processpush_269085)(tcontext250019* c, tnode188803* n, NI start) {
	toptionentry250003* x;
	toptionentry250003* y;
	NI i_269128;
	NI HEX3Atmp_269168;
	NI LOC5;
	NI res_269170;
	{
		if (!((*(*n).kindU.S6.Sons->data[(NI32)(start - 1)]).Kind == ((NU8) 34))) goto LA3;
		localerror_165571((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP2719));
	}
	LA3: ;
	x = newoptionentry_250158();
	y = ((toptionentry250003*) ((*c).Optionstack.Tail));
	(*x).Options = goptions_137108;
	(*x).Defaultcc = (*y).Defaultcc;
	asgnRef((void**) &(*x).Dynlib, (*y).Dynlib);
	(*x).Notes = gnotes_164181;
	append_118042(&(*c).Optionstack, &x->Sup);
	i_269128 = 0;
	HEX3Atmp_269168 = 0;
	LOC5 = 0;
	LOC5 = sonslen_189181(n);
	HEX3Atmp_269168 = (NI32)(LOC5 - 1);
	res_269170 = start;
	while (1) {
		if (!(res_269170 <= HEX3Atmp_269168)) goto LA6;
		i_269128 = res_269170;
		{
			NIM_BOOL LOC9;
			LOC9 = 0;
			LOC9 = processoption_268827(c, (*n).kindU.S6.Sons->data[i_269128]);
			if (!LOC9) goto LA10;
			{
				if (!(*x).Otherpragmas == 0) goto LA14;
				asgnRefNoCycle((void**) &(*x).Otherpragmas, newnodei_189099(((NU8) 90), (*n).Info));
			}
			LA14: ;
			add_189390((*x).Otherpragmas, (*n).kindU.S6.Sons->data[i_269128]);
		}
		LA10: ;
		res_269170 += 1;
	} LA6: ;
}

N_NIMCALL(void, processpop_269175)(tcontext250019* c, tnode188803* n) {
	{
		if (!((*c).Optionstack.Counter <= 1)) goto LA3;
		localerror_165571((*n).Info, ((NU16) 31), ((NimStringDesc*) &TMP2713));
	}
	goto LA1;
	LA3: ;
	{
		goptions_137108 = (*((toptionentry250003*) ((*c).Optionstack.Tail))).Options;
		gnotes_164181 = (*((toptionentry250003*) ((*c).Optionstack.Tail))).Notes;
		remove_118652(&(*c).Optionstack, (*c).Optionstack.Tail);
	}
	LA1: ;
}

N_NIMCALL(void, processpragma_269767)(tcontext250019* c, tnode188803* n, NI i) {
	tnode188803* it;
	tsym188833* userpragma;
	tnode188803* body;
	NI j_269882;
	NI HEX3Atmp_269898;
	NI HEX3Atmp_269899;
	NI LOC11;
	NI res_269901;
	it = (*n).kindU.S6.Sons->data[i];
	{
		if (!!(((*it).Kind == ((NU8) 34)))) goto LA3;
		invalidpragma_267081(n);
	}
	goto LA1;
	LA3: ;
	{
		if (!!(((*(*it).kindU.S6.Sons->data[0]).Kind == ((NU8) 2)))) goto LA6;
		invalidpragma_267081(n);
	}
	goto LA1;
	LA6: ;
	{
		if (!!(((*(*it).kindU.S6.Sons->data[1]).Kind == ((NU8) 2)))) goto LA9;
		invalidpragma_267081(n);
	}
	goto LA1;
	LA9: ;
	LA1: ;
	userpragma = newsym_189053(((NU8) 18), (*(*it).kindU.S6.Sons->data[1]).kindU.S5.Ident, NIM_NIL, (*it).Info);
	body = newnodei_189099(((NU8) 90), (*n).Info);
	j_269882 = 0;
	HEX3Atmp_269898 = 0;
	HEX3Atmp_269899 = 0;
	HEX3Atmp_269898 = (NI32)(i + 1);
	LOC11 = 0;
	LOC11 = sonslen_189181(n);
	HEX3Atmp_269899 = (NI32)(LOC11 - 1);
	res_269901 = HEX3Atmp_269898;
	while (1) {
		if (!(res_269901 <= HEX3Atmp_269899)) goto LA12;
		j_269882 = res_269901;
		addson_189207(body, (*n).kindU.S6.Sons->data[j_269882]);
		res_269901 += 1;
	} LA12: ;
	asgnRefNoCycle((void**) &(*userpragma).Ast, body);
	strtableadd_197078(&(*c).Userpragmas, userpragma);
}

N_NIMCALL(void, processcodegendecl_267746)(tcontext250019* c, tnode188803* n, tsym188833* sym) {
	asgnRefNoCycle((void**) &(*sym).Constraint, getstrlitnode_267550(c, n));
}

N_NIMCALL(tnode188803*, semasmoremit_269409)(tcontext250019* con, tnode188803* n, NIM_CHAR marker) {
	tnode188803* result;
	result = 0;
	switch ((*(*n).kindU.S6.Sons->data[1]).Kind) {
	case ((NU8) 20):
	case ((NU8) 21):
	case ((NU8) 22):
	{
		NU8 LOC2;
		tnodeseq188797* LOC8;
		NimStringDesc* str;
		NI a;
		LOC2 = 0;
		{
			if (!((*n).Kind == ((NU8) 89))) goto LA5;
			LOC2 = ((NU8) 89);
		}
		goto LA3;
		LA5: ;
		{
			LOC2 = ((NU8) 150);
		}
		LA3: ;
		LOC8 = 0;
		LOC8 = (tnodeseq188797*) newSeq((&NTI188797), 0);
		result = newnode_191003(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_165571((*n).Info, ((NU16) 32), ((NimStringDesc*) &TMP2713));
			goto BeforeRet;
		}
		LA11: ;
		a = 0;
		while (1) {
			NI b;
			NimStringDesc* sub;
			NI c;
			b = nsuFindChar(str, marker, a);
			{
				if (!(b < 0)) goto LA16;
				sub = copyStr(str, a);
			}
			goto LA14;
			LA16: ;
			{
				sub = copyStrLast(str, a, (NI32)(b - 1));
			}
			LA14: ;
			{
				tnode188803* LOC23;
				if (!!(((sub) && (sub)->Sup.len == 0))) goto LA21;
				LOC23 = 0;
				LOC23 = newstrnode_189085(((NU8) 20), sub);
				addson_189207(result, LOC23);
			}
			LA21: ;
			{
				if (!(b < 0)) goto LA26;
				goto LA13;
			}
			LA26: ;
			c = nsuFindChar(str, marker, (NI32)(b + 1));
			{
				if (!(c < 0)) goto LA30;
				sub = copyStr(str, (NI32)(b + 1));
			}
			goto LA28;
			LA30: ;
			{
				sub = copyStrLast(str, (NI32)(b + 1), (NI32)(c - 1));
			}
			LA28: ;
			{
				tsym188833* e;
				tident167019* LOC37;
				if (!!(((sub) && (sub)->Sup.len == 0))) goto LA35;
				LOC37 = 0;
				LOC37 = getident_167456(sub);
				e = searchinscopes_252216(con, LOC37);
				{
					tnode188803* LOC46;
					if (!!((e == NIM_NIL))) goto LA40;
					{
						if (!((*e).Kind == ((NU8) 23))) goto LA44;
						loadstub_239239(e);
					}
					LA44: ;
					LOC46 = 0;
					LOC46 = newsymnode_189095(e);
					addson_189207(result, LOC46);
				}
				goto LA38;
				LA40: ;
				{
					tnode188803* LOC48;
					LOC48 = 0;
					LOC48 = newstrnode_189085(((NU8) 20), sub);
					addson_189207(result, LOC48);
				}
				LA38: ;
			}
			LA35: ;
			{
				if (!(c < 0)) goto LA51;
				goto LA13;
			}
			LA51: ;
			a = (NI32)(c + 1);
		} LA13: ;
	}
	break;
	default:
	{
		illformedast_251203(n);
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, pragmaemit_269505)(tcontext250019* c, tnode188803* n) {
	tnode188803* LOC1;
	LOC1 = 0;
	LOC1 = getstrlitnode_267550(c, n);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], semasmoremit_269409(c, n, 96));
}

N_NIMCALL(void, pragmaunroll_269539)(tcontext250019* c, tnode188803* n) {
	{
		if (!((*(*c).P).Nestedloopcounter <= 0)) goto LA3;
		invalidpragma_267081(n);
	}
	goto LA1;
	LA3: ;
	{
		NI unrollfactor;
		if (!((*n).Kind == ((NU8) 34))) goto LA6;
		unrollfactor = expectintlit_267643(c, n);
		{
			if (!((NU32)(unrollfactor) < (NU32)(32))) goto LA10;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], newintnode_189069(((NU8) 6), ((NI64) (unrollfactor))));
		}
		goto LA8;
		LA10: ;
		{
			invalidpragma_267081(n);
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	LA1: ;
}

N_NIMCALL(void, pragmaline_269578)(tcontext250019* c, tnode188803* n) {
	{
		tnode188803* 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];
		{
			tnode188803* x;
			tnode188803* 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_165571((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2713));
			}
			goto LA17;
			LA19: ;
			{
				if (!!(((*y).Kind == ((NU8) 6)))) goto LA22;
				localerror_165571((*n).Info, ((NU16) 7), ((NimStringDesc*) &TMP2713));
			}
			goto LA17;
			LA22: ;
			{
				(*n).Info.Fileindex = fileinfoidx_163721((*x).kindU.S3.Strval);
				(*n).Info.Line = ((NI16) ((*y).kindU.S1.Intval));
			}
			LA17: ;
		}
		goto LA5;
		LA7: ;
		{
			localerror_165571((*n).Info, ((NU16) 188), ((NimStringDesc*) &TMP2767));
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		(*n).Info = getinfocontext_164751(-1);
	}
	LA1: ;
}

N_NIMCALL(void, processexc_269910)(tcontext250019* c, tnode188803* x) {
	ttype188837* t;
	ttype188837* LOC1;
	LOC1 = 0;
	LOC1 = (*c).Semtypenode(c, x, NIM_NIL);
	t = skiptypes_192793(LOC1, IL64(211106247215360));
	{
		if (!!(((*t).Kind == ((NU8) 17)))) goto LA4;
		localerror_165571((*x).Info, ((NU16) 4), ((NimStringDesc*) &TMP2768));
	}
	LA4: ;
	asgnRefNoCycle((void**) &(*x).Typ, t);
}

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

N_NIMCALL(void, pragmaraisesortags_269906)(tcontext250019* c, tnode188803* n) {
	{
		tnode188803* 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_269910(c, it);
		}
		goto LA5;
		LA7: ;
		{
			tnode188803* e_269963;
			NI i_269965;
			NI HEX3Atmp_269967;
			NI LOC10;
			NI res_269969;
			e_269963 = 0;
			i_269965 = 0;
			HEX3Atmp_269967 = 0;
			LOC10 = 0;
			LOC10 = len_189264(it);
			HEX3Atmp_269967 = LOC10 - 1;
			res_269969 = 0;
			while (1) {
				if (!(res_269969 <= HEX3Atmp_269967)) goto LA11;
				i_269965 = res_269969;
				e_269963 = (*it).kindU.S6.Sons->data[i_269965];
				processexc_269910(c, e_269963);
				res_269969 += 1;
			} LA11: ;
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		invalidpragma_267081(n);
	}
	LA1: ;
}

N_NIMCALL(tnode188803*, processexc_269977)(tcontext250019* c, tnode188803* x) {
	tnode188803* result;
	result = 0;
	{
		if (!((*x).Kind == ((NU8) 53) || (*x).Kind == ((NU8) 2) || (*x).Kind == ((NU8) 3) || (*x).Kind == ((NU8) 57) || (*x).Kind == ((NU8) 56))) goto LA3;
		{
			tident167019* LOC7;
			LOC7 = 0;
			LOC7 = consideracc_252006(x);
			if (!eqStrings((*LOC7).S, ((NimStringDesc*) &TMP2769))) goto LA8;
			result = newsymnode_189095(anyglobal_189730);
			goto BeforeRet;
		}
		LA8: ;
	}
	LA3: ;
	result = (*c).Semexpr(c, x, 0);
	{
		NIM_BOOL LOC12;
		NimStringDesc* LOC16;
		NimStringDesc* LOC17;
		LOC12 = 0;
		LOC12 = !(((*result).Kind == ((NU8) 3)));
		if (LOC12) goto LA13;
		LOC12 = !((((*(*result).kindU.S4.Sym).Flags &(1<<((((NU8) 3))&31)))!=0));
		LA13: ;
		if (!LOC12) goto LA14;
		LOC16 = 0;
		LOC16 = rendertree_211051(result, 0);
		LOC17 = 0;
		LOC17 = nsuFormatSingleElem(((NimStringDesc*) &TMP2770), LOC16);
		localerror_165578((*x).Info, LOC17);
		result = newsymnode_189095(anyglobal_189730);
	}
	LA14: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, pragmauses_269973)(tcontext250019* c, tnode188803* n) {
	{
		tnode188803* 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;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], processexc_269977(c, it));
		}
		goto LA5;
		LA7: ;
		{
			NI i_270106;
			NI HEX3Atmp_270135;
			NI LOC10;
			NI res_270137;
			i_270106 = 0;
			HEX3Atmp_270135 = 0;
			LOC10 = 0;
			LOC10 = len_189264(it);
			HEX3Atmp_270135 = LOC10 - 1;
			res_270137 = 0;
			while (1) {
				if (!(res_270137 <= HEX3Atmp_270135)) goto LA11;
				i_270106 = res_270137;
				asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[i_270106], processexc_269977(c, (*it).kindU.S6.Sons->data[i_270106]));
				res_270137 += 1;
			} LA11: ;
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		invalidpragma_267081(n);
	}
	LA1: ;
}

N_NIMCALL(NIM_BOOL, singlepragma_270197)(tcontext250019* c, tsym188833* sym, tnode188803* n, NI i, tspecialwords171011 validpragmas) {
	NIM_BOOL result;
	tnode188803* it;
	tnode188803* 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: ;
	{
		tsym188833* userpragma;
		if (!((*key).Kind == ((NU8) 2))) goto LA8;
		userpragma = strtableget_197084((*c).Userpragmas, (*key).kindU.S5.Ident);
		{
			if (!!((userpragma == NIM_NIL))) goto LA12;
			(*c).Instcounter += 1;
			{
				if (!(100 < (*c).Instcounter)) goto LA16;
				globalerror_165558((*it).Info, ((NU16) 25), (*(*userpragma).Name).S);
			}
			LA16: ;
			pragma_267073(c, sym, (*userpragma).Ast, validpragmas);
			(*c).Instcounter -= 1;
		}
		goto LA10;
		LA12: ;
		{
			NU8 k;
			k = whichkeyword_171360((*key).kindU.S5.Ident);
			{
				if (!((validpragmas[k/8] &(1<<(k%8)))!=0)) goto LA21;
				switch (k) {
				case ((NU8) 89):
				{
					NimStringDesc* LOC24;
					LOC24 = 0;
					LOC24 = getoptionalstr_267729(c, it, ((NimStringDesc*) &TMP2714));
					makeexternexport_267345(sym, LOC24, (*it).Info);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
				}
				break;
				case ((NU8) 88):
				{
					NimStringDesc* LOC26;
					LOC26 = 0;
					LOC26 = getoptionalstr_267729(c, it, ((NimStringDesc*) &TMP2714));
					makeexternimport_267286(sym, LOC26);
				}
				break;
				case ((NU8) 87):
				{
					NimStringDesc* LOC28;
					LOC28 = 0;
					LOC28 = getoptionalstr_267729(c, it, ((NimStringDesc*) &TMP2714));
					processimportcompilerproc_267368(sym, LOC28);
				}
				break;
				case ((NU8) 200):
				{
					NimStringDesc* LOC30;
					LOC30 = 0;
					LOC30 = expectstrlit_267622(c, it);
					setexternname_267255(sym, LOC30);
				}
				break;
				case ((NU8) 82):
				{
					{
						if (!((393216 &(1<<(((*sym).Kind)&31)))!=0)) goto LA34;
						(*sym).Flags |=((NI32)(1)<<((((NU8) 25))%(sizeof(NI32)*8)));
					}
					goto LA32;
					LA34: ;
					{
						invalidpragma_267081(it);
					}
					LA32: ;
				}
				break;
				case ((NU8) 178):
				{
					{
						if (!((*sym).Kind == ((NU8) 18))) goto LA40;
						(*sym).Flags |=((NI32)(1)<<((((NU8) 9))%(sizeof(NI32)*8)));
					}
					goto LA38;
					LA40: ;
					{
						invalidpragma_267081(it);
					}
					LA38: ;
				}
				break;
				case ((NU8) 85):
				{
					NimStringDesc* LOC44;
					LOC44 = 0;
					LOC44 = getoptionalstr_267729(c, it, ((NimStringDesc*) &TMP2714));
					processimportcpp_267422(sym, LOC44);
				}
				break;
				case ((NU8) 86):
				{
					NimStringDesc* LOC46;
					LOC46 = 0;
					LOC46 = getoptionalstr_267729(c, it, ((NimStringDesc*) &TMP2714));
					processimportobjc_267476(sym, LOC46);
				}
				break;
				case ((NU8) 92):
				{
					NI align;
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA50;
						invalidpragma_267081(it);
					}
					LA50: ;
					align = expectintlit_267643(c, it);
					{
						NIM_BOOL LOC54;
						NIM_BOOL LOC55;
						LOC54 = 0;
						LOC55 = 0;
						LOC55 = ispoweroftwo_133278(align);
						LOC54 = !(LOC55);
						if (!(LOC54)) goto LA56;
						LOC54 = !((align == 0));
						LA56: ;
						if (!LOC54) goto LA57;
						localerror_165571((*it).Info, ((NU16) 98), ((NimStringDesc*) &TMP2713));
					}
					goto LA52;
					LA57: ;
					{
						(*(*sym).Typ).Align = align;
					}
					LA52: ;
				}
				break;
				case ((NU8) 153):
				{
					NI size;
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA63;
						invalidpragma_267081(it);
					}
					LA63: ;
					size = expectintlit_267643(c, it);
					{
						NIM_BOOL LOC67;
						NIM_BOOL LOC68;
						NIM_BOOL LOC69;
						LOC67 = 0;
						LOC68 = 0;
						LOC69 = 0;
						LOC69 = ispoweroftwo_133278(size);
						LOC68 = !(LOC69);
						if (LOC68) goto LA70;
						LOC68 = (size <= 0);
						LA70: ;
						LOC67 = LOC68;
						if (LOC67) goto LA71;
						LOC67 = (8 < size);
						LA71: ;
						if (!LOC67) goto LA72;
						localerror_165571((*it).Info, ((NU16) 98), ((NimStringDesc*) &TMP2713));
					}
					goto LA65;
					LA72: ;
					{
						(*(*sym).Typ).Size = ((NI64) (size));
					}
					LA65: ;
				}
				break;
				case ((NU8) 93):
				{
					noval_269525(it);
					(*sym).Loc.Flags |=((NI8)(1)<<((((NU8) 3))%(sizeof(NI8)*8)));
				}
				break;
				case ((NU8) 94):
				case ((NU8) 182):
				{
					noval_269525(it);
					{
						if (!!((sym == NIM_NIL))) goto LA79;
						{
							NIM_BOOL LOC83;
							LOC83 = 0;
							LOC83 = (k == ((NU8) 94));
							if (!(LOC83)) goto LA84;
							LOC83 = ((520192 &(1<<(((*sym).Kind)&31)))!=0);
							LA84: ;
							if (!LOC83) goto LA85;
							invalidpragma_267081(it);
						}
						goto LA81;
						LA85: ;
						{
							(*sym).Flags |=((NI32)(1)<<((((NU8) 9))%(sizeof(NI32)*8)));
						}
						LA81: ;
					}
					LA79: ;
				}
				break;
				case ((NU8) 233):
				{
					noval_269525(it);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 7))%(sizeof(NI32)*8)));
				}
				break;
				case ((NU8) 214):
				{
					noval_269525(it);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 8))%(sizeof(NI32)*8)));
				}
				break;
				case ((NU8) 180):
				{
					noval_269525(it);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 22))%(sizeof(NI32)*8)));
				}
				break;
				case ((NU8) 156):
				{
					pragmadeadcodeelim_268031(c, it);
				}
				break;
				case ((NU8) 158):
				{
					pragmanoforward_268069(c, it);
				}
				break;
				case ((NU8) 76):
				{
					processmagic_267753(c, it, sym);
				}
				break;
				case ((NU8) 160):
				{
					noval_269525(it);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 23))%(sizeof(NI32)*8)));
					(*sym).Loc.Flags |=((NI8)(1)<<((((NU8) 3))%(sizeof(NI8)*8)));
				}
				break;
				case ((NU8) 184):
				{
					noval_269525(it);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 3))%(sizeof(NI32)*8)));
					(*sym).Flags |=((NI32)(1)<<((((NU8) 9))%(sizeof(NI32)*8)));
				}
				break;
				case ((NU8) 100):
				{
					noval_269525(it);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 24))%(sizeof(NI32)*8)));
				}
				break;
				case ((NU8) 96):
				{
					tlib188821* lib;
					tnode188803* LOC98;
					LOC98 = 0;
					LOC98 = getstrlitnode_267550(c, it);
					lib = getlib_268174(c, ((NU8) 0), LOC98);
					addtolib_250165(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 LA101;
						asgnRefNoCycle((void**) &(*sym).Loc.R, torope_145058((*(*sym).Name).S));
					}
					LA101: ;
				}
				break;
				case ((NU8) 83):
				{
					{
						if (!((*(*sym).Typ).Sons->Sup.len == 2)) goto LA106;
						(*sym).Flags |=((NI32)(1)<<((((NU8) 30))%(sizeof(NI32)*8)));
					}
					goto LA104;
					LA106: ;
					{
						invalidpragma_267081(it);
					}
					LA104: ;
				}
				break;
				case ((NU8) 97):
				{
					noval_269525(it);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 10))%(sizeof(NI32)*8)));
					{
						if (!!(((*sym).Typ == NIM_NIL))) goto LA112;
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 1))%(sizeof(NI32)*8)));
					}
					LA112: ;
				}
				break;
				case ((NU8) 95):
				{
					noval_269525(it);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 11))%(sizeof(NI32)*8)));
				}
				break;
				case ((NU8) 99):
				{
					noval_269525(it);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 14))%(sizeof(NI32)*8)));
				}
				break;
				case ((NU8) 102):
				{
					processdynlib_268346(c, it, sym);
				}
				break;
				case ((NU8) 103):
				{
					noval_269525(it);
					makeexternexport_267345(sym, ((NimStringDesc*) &TMP2714), (*it).Info);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 16))%(sizeof(NI32)*8)));
					(*sym).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
					registercompilerproc_242032(sym);
				}
				break;
				case ((NU8) 104):
				{
					noval_269525(it);
					(*sym).Flags |=((NI32)(1)<<((((NU8) 17))%(sizeof(NI32)*8)));
				}
				break;
				case ((NU8) 120):
				{
					noval_269525(it);
					{
						if (!!((sym == NIM_NIL))) goto LA122;
						(*sym).Flags |=((NI32)(1)<<((((NU8) 19))%(sizeof(NI32)*8)));
					}
					goto LA120;
					LA122: ;
					{
						(*(*c).Module).Flags |=((NI32)(1)<<((((NU8) 19))%(sizeof(NI32)*8)));
					}
					LA120: ;
				}
				break;
				case ((NU8) 121):
				{
					noval_269525(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA128;
						invalidpragma_267081(it);
					}
					goto LA126;
					LA128: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
					}
					LA126: ;
				}
				break;
				case ((NU8) 164):
				{
					{
						if (!((*sym).Kind == ((NU8) 7))) goto LA134;
						typeborrow_270142(sym, it);
					}
					goto LA132;
					LA134: ;
					{
						noval_269525(it);
						(*sym).Flags |=((NI32)(1)<<((((NU8) 26))%(sizeof(NI32)*8)));
					}
					LA132: ;
				}
				break;
				case ((NU8) 78):
				{
					noval_269525(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA140;
						invalidpragma_267081(it);
					}
					goto LA138;
					LA140: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 2))%(sizeof(NI32)*8)));
					}
					LA138: ;
				}
				break;
				case ((NU8) 179):
				{
					noval_269525(it);
					{
						NIM_BOOL LOC146;
						LOC146 = 0;
						LOC146 = ((*sym).Typ == NIM_NIL);
						if (LOC146) goto LA147;
						LOC146 = (((*(*sym).Typ).Flags &(1<<((((NU8) 2))&31)))!=0);
						LA147: ;
						if (!LOC146) goto LA148;
						invalidpragma_267081(it);
					}
					goto LA144;
					LA148: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 3))%(sizeof(NI32)*8)));
					}
					LA144: ;
				}
				break;
				case ((NU8) 169):
				{
					noval_269525(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA154;
						invalidpragma_267081(it);
					}
					goto LA152;
					LA154: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 4))%(sizeof(NI32)*8)));
					}
					LA152: ;
				}
				break;
				case ((NU8) 170):
				{
					noval_269525(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA160;
						invalidpragma_267081(it);
					}
					goto LA158;
					LA160: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 6))%(sizeof(NI32)*8)));
					}
					LA158: ;
				}
				break;
				case ((NU8) 77):
				{
					noval_269525(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 LA166;
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 7))%(sizeof(NI32)*8)));
					}
					LA166: ;
				}
				break;
				case ((NU8) 98):
				{
					{
						if (!((gglobaloptions_137111 &(1<<((((NU8) 27))&31)))!=0)) goto LA171;
						noval_269525(it);
						{
							if (!!(((*sym).Kind == ((NU8) 7)))) goto LA175;
							(*sym).Flags |=((NI32)(1)<<((((NU8) 22))%(sizeof(NI32)*8)));
						}
						LA175: ;
						{
							if (!!(((*sym).Typ == NIM_NIL))) goto LA179;
							(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 7))%(sizeof(NI32)*8)));
						}
						goto LA177;
						LA179: ;
						{
							invalidpragma_267081(it);
						}
						LA177: ;
					}
					LA171: ;
				}
				break;
				case ((NU8) 229):
				{
					noval_269525(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA185;
						invalidpragma_267081(it);
					}
					goto LA183;
					LA185: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 21))%(sizeof(NI32)*8)));
					}
					LA183: ;
				}
				break;
				case ((NU8) 108):
				{
					NimStringDesc* LOC189;
					LOC189 = 0;
					LOC189 = expectstrlit_267622(c, it);
					message_165584((*it).Info, ((NU16) 272), LOC189);
				}
				break;
				case ((NU8) 107):
				{
					NimStringDesc* LOC191;
					LOC191 = 0;
					LOC191 = expectstrlit_267622(c, it);
					message_165584((*it).Info, ((NU16) 256), LOC191);
				}
				break;
				case ((NU8) 106):
				{
					{
						NIM_BOOL LOC195;
						LOC195 = 0;
						LOC195 = !((sym == NIM_NIL));
						if (!(LOC195)) goto LA196;
						LOC195 = isroutine_195040(sym);
						LA196: ;
						if (!LOC195) goto LA197;
						noval_269525(it);
						(*sym).Flags |=((NI32)(1)<<((((NU8) 20))%(sizeof(NI32)*8)));
					}
					goto LA193;
					LA197: ;
					{
						NimStringDesc* LOC200;
						LOC200 = 0;
						LOC200 = expectstrlit_267622(c, it);
						localerror_165571((*it).Info, ((NU16) 229), LOC200);
					}
					LA193: ;
				}
				break;
				case ((NU8) 105):
				{
					NimStringDesc* LOC202;
					LOC202 = 0;
					LOC202 = expectstrlit_267622(c, it);
					fatal_165551((*it).Info, ((NU16) 229), LOC202);
				}
				break;
				case ((NU8) 112):
				{
					processdefine_269182(c, it);
				}
				break;
				case ((NU8) 113):
				{
					processundef_269248(c, it);
				}
				break;
				case ((NU8) 118):
				{
					processcompile_269319(c, it);
				}
				break;
				case ((NU8) 117):
				{
					processcommonlink_269328(c, it, ((NU8) 0));
				}
				break;
				case ((NU8) 119):
				{
					processcommonlink_269328(c, it, ((NU8) 1));
				}
				break;
				case ((NU8) 163):
				{
					NimStringDesc* LOC209;
					LOC209 = 0;
					LOC209 = expectstrlit_267622(c, it);
					addlinkoption_169700(LOC209);
				}
				break;
				case ((NU8) 162):
				{
					NimStringDesc* LOC211;
					LOC211 = 0;
					LOC211 = expectstrlit_267622(c, it);
					addcompileoption_169707(LOC211);
				}
				break;
				case ((NU8) 123):
				{
					pragmabreakpoint_269337(c, it);
				}
				break;
				case ((NU8) 167):
				{
					pragmawatchpoint_269366(c, it);
				}
				break;
				case ((NU8) 110):
				{
					processpush_269085(c, n, (NI32)(i + 1));
					result = NIM_TRUE;
				}
				break;
				case ((NU8) 111):
				{
					processpop_269175(c, it);
				}
				break;
				case ((NU8) 159):
				{
					processpragma_269767(c, n, i);
					result = NIM_TRUE;
				}
				break;
				case ((NU8) 165):
				{
					noval_269525(it);
					{
						if (!!((sym == NIM_NIL))) goto LA220;
						(*sym).Flags |=((NI32)(1)<<((((NU8) 29))%(sizeof(NI32)*8)));
					}
					LA220: ;
				}
				break;
				case ((NU8) 161):
				{
					noval_269525(it);
					{
						if (!!((sym == NIM_NIL))) goto LA225;
						(*sym).Flags |=((NI32)(1)<<((((NU8) 12))%(sizeof(NI32)*8)));
					}
					LA225: ;
				}
				break;
				case ((NU8) 185):
				{
					processcodegendecl_267746(c, it, sym);
				}
				break;
				case ((NU8) 137):
				case ((NU8) 80):
				case ((NU8) 166):
				case ((NU8) 138):
				case ((NU8) 139):
				case ((NU8) 140):
				case ((NU8) 141):
				case ((NU8) 145):
				case ((NU8) 147):
				case ((NU8) 148):
				case ((NU8) 114):
				case ((NU8) 115):
				case ((NU8) 116):
				case ((NU8) 149):
				case ((NU8) 122):
				case ((NU8) 124):
				case ((NU8) 79):
				case ((NU8) 142):
				case ((NU8) 143):
				case ((NU8) 144):
				case ((NU8) 146):
				{
					{
						NIM_BOOL LOC231;
						LOC231 = 0;
						LOC231 = processoption_268827(c, it);
						if (!LOC231) goto LA232;
						localerror_165571((*it).Info, ((NU16) 149), ((NimStringDesc*) &TMP2713));
					}
					LA232: ;
				}
				break;
				case ((NU8) 125) ... ((NU8) 134):
				{
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA237;
						invalidpragma_267081(it);
					}
					goto LA235;
					LA237: ;
					{
						(*(*sym).Typ).Callconv = wordtocallconv_267889(k);
					}
					LA235: ;
				}
				break;
				case ((NU8) 181):
				{
					pragmaemit_269505(c, it);
				}
				break;
				case ((NU8) 171):
				{
					pragmaunroll_269539(c, it);
				}
				break;
				case ((NU8) 172):
				case ((NU8) 173):
				{
					noval_269525(it);
				}
				break;
				case ((NU8) 154):
				{
					noval_269525(it);
				}
				break;
				case ((NU8) 90):
				{
					noval_269525(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA247;
						invalidpragma_267081(it);
					}
					goto LA245;
					LA247: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
					}
					LA245: ;
				}
				break;
				case ((NU8) 186):
				{
					noval_269525(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA253;
						invalidpragma_267081(it);
					}
					goto LA251;
					LA253: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
					}
					LA251: ;
				}
				break;
				case ((NU8) 228):
				{
					noval_269525(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA259;
						invalidpragma_267081(it);
					}
					goto LA257;
					LA259: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 1))%(sizeof(NI32)*8)));
					}
					LA257: ;
				}
				break;
				case ((NU8) 91):
				{
					noval_269525(it);
					{
						if (!((*sym).Typ == NIM_NIL)) goto LA265;
						invalidpragma_267081(it);
					}
					goto LA263;
					LA265: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 17))%(sizeof(NI32)*8)));
					}
					LA263: ;
				}
				break;
				case ((NU8) 250):
				{
					noval_269525(it);
					{
						NIM_BOOL LOC271;
						LOC271 = 0;
						LOC271 = (sym == NIM_NIL);
						if (LOC271) goto LA272;
						LOC271 = ((*sym).Typ == NIM_NIL);
						LA272: ;
						if (!LOC271) goto LA273;
						{
							NIM_BOOL LOC277;
							LOC277 = 0;
							LOC277 = processoption_268827(c, it);
							if (!LOC277) goto LA278;
							localerror_165571((*it).Info, ((NU16) 149), ((NimStringDesc*) &TMP2713));
						}
						LA278: ;
					}
					goto LA269;
					LA273: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 13))%(sizeof(NI32)*8)));
					}
					LA269: ;
				}
				break;
				case ((NU8) 249):
				{
					noval_269525(it);
					{
						NIM_BOOL LOC284;
						LOC284 = 0;
						LOC284 = !(((*sym).Kind == ((NU8) 7)));
						if (LOC284) goto LA285;
						LOC284 = ((*sym).Typ == NIM_NIL);
						LA285: ;
						if (!LOC284) goto LA286;
						invalidpragma_267081(it);
					}
					goto LA282;
					LA286: ;
					{
						(*(*sym).Typ).Flags |=((NI32)(1)<<((((NU8) 12))%(sizeof(NI32)*8)));
					}
					LA282: ;
				}
				break;
				case ((NU8) 177):
				case ((NU8) 176):
				{
					noval_269525(it);
					{
						if (!(sym == NIM_NIL)) goto LA292;
						invalidpragma_267081(it);
					}
					LA292: ;
				}
				break;
				case ((NU8) 109):
				{
					pragmaline_269578(c, it);
				}
				break;
				case ((NU8) 150):
				case ((NU8) 155):
				{
					pragmaraisesortags_269906(c, it);
				}
				break;
				case ((NU8) 188):
				{
					pragmauses_269973(c, it);
				}
				break;
				case ((NU8) 210):
				{
					{
						if (!(sym == NIM_NIL)) goto LA300;
						invalidpragma_267081(it);
					}
					goto LA298;
					LA300: ;
					{
						(*sym).Position = expectintlit_267643(c, it);
					}
					LA298: ;
				}
				break;
				case ((NU8) 174):
				{
					{
						if (!!(((*it).Kind == ((NU8) 34)))) goto LA306;
						localerror_165571((*it).Info, ((NU16) 60), ((NimStringDesc*) &TMP2713));
					}
					goto LA304;
					LA306: ;
					{
						asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[1], (*c).Semexpr(c, (*it).kindU.S6.Sons->data[1], 0));
					}
					LA304: ;
				}
				break;
				default:
				{
					invalidpragma_267081(it);
				}
				break;
				}
			}
			goto LA19;
			LA21: ;
			{
				invalidpragma_267081(it);
			}
			LA19: ;
		}
		LA10: ;
	}
	goto LA6;
	LA8: ;
	{
		processnote_268460(c, it);
	}
	LA6: ;
	return result;
}

N_NIMCALL(void, implicitpragmas_271915)(tcontext250019* c, tsym188833* sym, tnode188803* n, tspecialwords171011 validpragmas) {
	{
		NIM_BOOL LOC3;
		toptionentry250003* it;
		tlib188821* lib;
		LOC3 = 0;
		LOC3 = !((sym == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*sym).Kind == ((NU8) 6)));
		LA4: ;
		if (!LOC3) goto LA5;
		it = ((toptionentry250003*) ((*c).Optionstack.Head));
		while (1) {
			tnode188803* o;
			if (!!((it == NIM_NIL))) goto LA7;
			o = (*it).Otherpragmas;
			{
				NI i_271989;
				NI HEX3Atmp_272117;
				NI LOC12;
				NI res_272119;
				if (!!(o == 0)) goto LA10;
				i_271989 = 0;
				HEX3Atmp_272117 = 0;
				LOC12 = 0;
				LOC12 = sonslen_189181(o);
				HEX3Atmp_272117 = (NI32)(LOC12 - 1);
				res_272119 = 0;
				while (1) {
					if (!(res_272119 <= HEX3Atmp_272117)) goto LA13;
					i_271989 = res_272119;
					{
						NIM_BOOL LOC16;
						LOC16 = 0;
						LOC16 = singlepragma_270197(c, sym, o, i_271989, validpragmas);
						if (!LOC16) goto LA17;
						internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2771));
					}
					LA17: ;
					res_272119 += 1;
				} LA13: ;
			}
			LA10: ;
			it = ((toptionentry250003*) ((*it).Sup.Next));
		} LA7: ;
		{
			NIM_BOOL LOC21;
			LOC21 = 0;
			LOC21 = (((*sym).Loc.Flags &(1<<((((NU8) 5))&7)))!=0);
			if (!(LOC21)) goto LA22;
			LOC21 = !((((*sym).Flags &(1<<((((NU8) 6))&31)))!=0));
			LA22: ;
			if (!LOC21) goto LA23;
			localerror_165571((*n).Info, ((NU16) 79), ((NimStringDesc*) &TMP2713));
		}
		LA23: ;
		lib = (*((toptionentry250003*) ((*c).Optionstack.Tail))).Dynlib;
		{
			NIM_BOOL LOC27;
			NIM_BOOL LOC28;
			LOC27 = 0;
			LOC28 = 0;
			LOC28 = ((80 & (*sym).Loc.Flags) == 0);
			if (!(LOC28)) goto LA29;
			LOC28 = (((*sym).Flags &(1<<((((NU8) 5))&31)))!=0);
			LA29: ;
			LOC27 = LOC28;
			if (!(LOC27)) goto LA30;
			LOC27 = !((lib == NIM_NIL));
			LA30: ;
			if (!LOC27) goto LA31;
			(*sym).Loc.Flags |=((NI8)(1)<<((((NU8) 4))%(sizeof(NI8)*8)));
			addtolib_250165(lib, sym);
			{
				if (!((*sym).Loc.R == NIM_NIL)) goto LA35;
				asgnRefNoCycle((void**) &(*sym).Loc.R, torope_145058((*(*sym).Name).S));
			}
			LA35: ;
		}
		LA31: ;
	}
	LA5: ;
}

N_NIMCALL(void, pragma_267073)(tcontext250019* c, tsym188833* sym, tnode188803* n, tspecialwords171011 validpragmas) {
	NI i_272489;
	NI HEX3Atmp_272490;
	NI LOC5;
	NI res_272492;
	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	i_272489 = 0;
	HEX3Atmp_272490 = 0;
	LOC5 = 0;
	LOC5 = sonslen_189181(n);
	HEX3Atmp_272490 = (NI32)(LOC5 - 1);
	res_272492 = 0;
	while (1) {
		if (!(res_272492 <= HEX3Atmp_272490)) goto LA6;
		i_272489 = res_272492;
		{
			NIM_BOOL LOC9;
			LOC9 = 0;
			LOC9 = singlepragma_270197(c, sym, n, i_272489, validpragmas);
			if (!LOC9) goto LA10;
			goto LA6;
		}
		LA10: ;
		res_272492 += 1;
	} LA6: ;
	implicitpragmas_271915(c, sym, n, validpragmas);
	BeforeRet: ;
}

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

N_NIMCALL(NIM_BOOL, haspragma_272125)(tnode188803* n, NU8 pragma) {
	NIM_BOOL result;
	tnode188803* p_272403;
	tnodeseq188797* HEX3Atmp_272446;
	NI i_272448;
	NI l_272450;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (n == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = HEX3DHEX3D_272164((*n).kindU.S6.Sons, NIM_NIL);
		LA4: ;
		if (!LOC3) goto LA5;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA5: ;
	p_272403 = 0;
	HEX3Atmp_272446 = 0;
	HEX3Atmp_272446 = (*n).kindU.S6.Sons;
	i_272448 = 0;
	l_272450 = HEX3Atmp_272446->Sup.len;
	while (1) {
		tnode188803* key;
		if (!(i_272448 < l_272450)) goto LA7;
		p_272403 = HEX3Atmp_272446->data[i_272448];
		{
			if (!((*p_272403).Kind == ((NU8) 34))) goto LA10;
			key = HEX5BHEX5D_189694(p_272403, 0);
		}
		goto LA8;
		LA10: ;
		{
			key = p_272403;
		}
		LA8: ;
		{
			NIM_BOOL LOC15;
			NU8 LOC17;
			LOC15 = 0;
			LOC15 = ((*key).Kind == ((NU8) 2));
			if (!(LOC15)) goto LA16;
			LOC17 = 0;
			LOC17 = whichkeyword_171360((*key).kindU.S5.Ident);
			LOC15 = (LOC17 == pragma);
			LA16: ;
			if (!LOC15) goto LA18;
			result = NIM_TRUE;
			goto BeforeRet;
		}
		LA18: ;
		i_272448 += 1;
	} LA7: ;
	result = NIM_FALSE;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_CHAR, pragmaasm_267087)(tcontext250019* c, tnode188803* n) {
	NIM_CHAR result;
	result = 0;
	result = 0;
	{
		NI i_267121;
		NI HEX3Atmp_267248;
		NI LOC5;
		NI res_267250;
		if (!!((n == NIM_NIL))) goto LA3;
		i_267121 = 0;
		HEX3Atmp_267248 = 0;
		LOC5 = 0;
		LOC5 = sonslen_189181(n);
		HEX3Atmp_267248 = (NI32)(LOC5 - 1);
		res_267250 = 0;
		while (1) {
			tnode188803* it;
			if (!(res_267250 <= HEX3Atmp_267248)) goto LA6;
			i_267121 = res_267250;
			it = (*n).kindU.S6.Sons->data[i_267121];
			{
				NIM_BOOL LOC9;
				NU8 LOC13;
				LOC9 = 0;
				LOC9 = ((*it).Kind == ((NU8) 34));
				if (!(LOC9)) goto LA10;
				LOC9 = ((*(*it).kindU.S6.Sons->data[0]).Kind == ((NU8) 2));
				LA10: ;
				if (!LOC9) goto LA11;
				LOC13 = 0;
				LOC13 = whichkeyword_171360((*(*it).kindU.S6.Sons->data[0]).kindU.S5.Ident);
				switch (LOC13) {
				case ((NU8) 168):
				{
					{
						if (!((*(*it).kindU.S6.Sons->data[1]).Kind == ((NU8) 5))) goto LA17;
						result = ((NIM_CHAR) (((NI) (((NI) ((*(*it).kindU.S6.Sons->data[1]).kindU.S1.Intval))))));
					}
					goto LA15;
					LA17: ;
					{
						invalidpragma_267081(it);
					}
					LA15: ;
				}
				break;
				default:
				{
					invalidpragma_267081(it);
				}
				break;
				}
			}
			goto LA7;
			LA11: ;
			{
				invalidpragma_267081(it);
			}
			LA7: ;
			res_267250 += 1;
		} LA6: ;
	}
	LA3: ;
	return result;
}
N_NOINLINE(void, pragmasInit)(void) {
}

N_NOINLINE(void, pragmasDatInit)(void) {
}

