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

#include <string.h>
typedef struct Tsym190843 Tsym190843;
typedef struct Tnode190813 Tnode190813;
typedef struct Tidobj167015 Tidobj167015;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Ttypeseq190845 Ttypeseq190845;
typedef struct Tscope190837 Tscope190837;
typedef struct TY190944 TY190944;
typedef struct Tstrtable190817 Tstrtable190817;
typedef struct Tsymseq190815 Tsymseq190815;
typedef struct Ttype190849 Ttype190849;
typedef struct Tident167021 Tident167021;
typedef struct Tlineinfo163338 Tlineinfo163338;
typedef struct Tloc190827 Tloc190827;
typedef struct Ropeobj161009 Ropeobj161009;
typedef struct Tlib190831 Tlib190831;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tnodeseq190807 Tnodeseq190807;
typedef struct Intset187056 Intset187056;
typedef struct Ttrunk187052 Ttrunk187052;
typedef struct Ttrunkseq187054 Ttrunkseq187054;
typedef struct TY86345 TY86345;
typedef struct Teffects324008 Teffects324008;
typedef struct TY297595 TY297595;
typedef struct Tcell46347 Tcell46347;
typedef struct Tcellseq46363 Tcellseq46363;
typedef struct Tgcheap48216 Tgcheap48216;
typedef struct Tcellset46359 Tcellset46359;
typedef struct Tpagedesc46355 Tpagedesc46355;
typedef struct Tmemregion28210 Tmemregion28210;
typedef struct Tsmallchunk27440 Tsmallchunk27440;
typedef struct Tllchunk28204 Tllchunk28204;
typedef struct Tbigchunk27442 Tbigchunk27442;
typedef struct Tintset27417 Tintset27417;
typedef struct Ttrunk27413 Ttrunk27413;
typedef struct Tavlnode28208 Tavlnode28208;
typedef struct Tgcstat48214 Tgcstat48214;
typedef struct TY224854 TY224854;
typedef struct TY224855 TY224855;
typedef struct Tinstantiation190833 Tinstantiation190833;
typedef struct Tlistentry130022 Tlistentry130022;
typedef struct Tbasechunk27438 Tbasechunk27438;
typedef struct Tfreecell27430 Tfreecell27430;
typedef struct TY190933 TY190933;
typedef N_NIMCALL_PTR(void, TY3289) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3294) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3289 marker;
TY3294 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj167015  {
  TNimObject Sup;
NI id;
};
struct  Tstrtable190817  {
NI counter;
Tsymseq190815* data;
};
struct  Tlineinfo163338  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tloc190827  {
NU8 k;
NU8 s;
NU16 flags;
Ttype190849* t;
Ropeobj161009* r;
Ropeobj161009* heaproot;
};
struct  Tsym190843  {
  Tidobj167015 Sup;
NU8 kind;
union{
struct {Ttypeseq190845* typeinstcache;
Tscope190837* typscope;
} S1;
struct {TY190944* procinstcache;
Tsym190843* gcunsafetyreason;
} S2;
struct {TY190944* usedgenerics;
Tstrtable190817 tab;
} S3;
struct {Tsym190843* guard;
} S4;
} kindU;
NU16 magic;
Ttype190849* typ;
Tident167021* name;
Tlineinfo163338 info;
Tsym190843* owner;
NU32 flags;
Tnode190813* ast;
NU32 options;
NI position;
NI offset;
Tloc190827 loc;
Tlib190831* annex;
Tnode190813* constraint;
};
struct  Ttype190849  {
  Tidobj167015 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq190845* sons;
Tnode190813* n;
Tsym190843* owner;
Tsym190843* sym;
Tsym190843* destructor;
Tsym190843* deepcopy;
Tsym190843* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc190827 loc;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tnode190813  {
Ttype190849* typ;
Tlineinfo163338 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym190843* sym;
} S4;
struct {Tident167021* ident;
} S5;
struct {Tnodeseq190807* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
typedef N_NIMCALL_PTR(NIM_BOOL, TY329074) (Tnode190813* a, Tnode190813* b);
struct  Intset187056  {
NI counter;
NI max;
Ttrunk187052* head;
Ttrunkseq187054* data;
};
struct  Tident167021  {
  Tidobj167015 Sup;
NimStringDesc* s;
Tident167021* next;
NI h;
};
typedef NimStringDesc* TY154965[2];
struct TY86345 {
NimStringDesc* Field0;
NI Field1;
};
struct  Teffects324008  {
Tnode190813* exc;
Tnode190813* tags;
NI bottom;
NI intrystmt;
Tsym190843* owner;
TY297595* init;
Tnodeseq190807* guards;
Tnodeseq190807* locked;
NIM_BOOL gcunsafe;
NIM_BOOL isrecursive;
NIM_BOOL istoplevel;
NI16 maxlocklevel;
NI16 currlocklevel;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  Tcell46347  {
NI refcount;
TNimType* typ;
};
struct  Tcellseq46363  {
NI len;
NI cap;
Tcell46347** d;
};
struct  Tcellset46359  {
NI counter;
NI max;
Tpagedesc46355* head;
Tpagedesc46355** data;
};
typedef Tsmallchunk27440* TY28222[512];
typedef Ttrunk27413* Ttrunkbuckets27415[256];
struct  Tintset27417  {
Ttrunkbuckets27415 data;
};
struct  Tmemregion28210  {
NI minlargeobj;
NI maxlargeobj;
TY28222 freesmallchunks;
Tllchunk28204* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Tbigchunk27442* freechunkslist;
Tintset27417 chunkstarts;
Tavlnode28208* root;
Tavlnode28208* deleted;
Tavlnode28208* last;
Tavlnode28208* freeavlnodes;
};
struct  Tgcstat48214  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Tgcheap48216  {
void* stackbottom;
NI cyclethreshold;
Tcellseq46363 zct;
Tcellseq46363 decstack;
Tcellset46359 cycleroots;
Tcellseq46363 tempstack;
NI recgclock;
Tmemregion28210 region;
Tgcstat48214 stat;
};
typedef NU8 TY432644[20];
struct TY224855 {
NI Field0;
NI Field1;
};
typedef Tnode190813* TY245103[2];
typedef NimStringDesc* TY172335[257];
struct  Tscope190837  {
NI depthlevel;
Tstrtable190817 symbols;
Tnodeseq190807* usingsyms;
Tscope190837* parent;
};
struct  Ropeobj161009  {
  TNimObject Sup;
Ropeobj161009* left;
Ropeobj161009* right;
NI length;
NimStringDesc* data;
};
struct  Tlistentry130022  {
  TNimObject Sup;
Tlistentry130022* prev;
Tlistentry130022* next;
};
struct  Tlib190831  {
  Tlistentry130022 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj161009* name;
Tnode190813* path;
};
typedef NI TY27420[16];
struct  Ttrunk187052  {
Ttrunk187052* next;
NI key;
TY27420 bits;
};
struct  Tpagedesc46355  {
Tpagedesc46355* next;
NI key;
TY27420 bits;
};
struct  Tbasechunk27438  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Tsmallchunk27440  {
  Tbasechunk27438 Sup;
Tsmallchunk27440* next;
Tsmallchunk27440* prev;
Tfreecell27430* freelist;
NI free;
NI acc;
NF data;
};
struct  Tllchunk28204  {
NI size;
NI acc;
Tllchunk28204* next;
};
struct  Tbigchunk27442  {
  Tbasechunk27438 Sup;
Tbigchunk27442* next;
Tbigchunk27442* prev;
NI align;
NF data;
};
struct  Ttrunk27413  {
Ttrunk27413* next;
NI key;
TY27420 bits;
};
typedef Tavlnode28208* TY28214[2];
struct  Tavlnode28208  {
TY28214 link;
NI key;
NI upperbound;
NI level;
};
struct  Tinstantiation190833  {
Tsym190843* sym;
Ttypeseq190845* concretetypes;
TY190933* usedby;
};
struct  Tfreecell27430  {
Tfreecell27430* next;
NI zerofield;
};
struct Tnodeseq190807 {
  TGenericSeq Sup;
  Tnode190813* data[SEQ_DECL_SIZE];
};
struct TY297595 {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
struct TY224854 {
  TGenericSeq Sup;
  TY224855 data[SEQ_DECL_SIZE];
};
struct Ttypeseq190845 {
  TGenericSeq Sup;
  Ttype190849* data[SEQ_DECL_SIZE];
};
struct TY190944 {
  TGenericSeq Sup;
  Tinstantiation190833* data[SEQ_DECL_SIZE];
};
struct Tsymseq190815 {
  TGenericSeq Sup;
  Tsym190843* data[SEQ_DECL_SIZE];
};
struct Ttrunkseq187054 {
  TGenericSeq Sup;
  Ttrunk187052* data[SEQ_DECL_SIZE];
};
struct TY190933 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
static N_INLINE(NI, len_191097)(Tnode190813* n);
N_NIMCALL(Tnode190813*, effectspec_326661)(Tnode190813* n, NU16 effecttype);
N_NIMCALL(NI, sonslen_193403)(Tnode190813* n);
N_NIMCALL(NU16, whichpragma_219673)(Tnode190813* n);
N_NIMCALL(Tnode190813*, newnodei_192351)(NU8 kind, Tlineinfo163338 info);
N_NIMCALL(void, add_191164)(Tnode190813* father, Tnode190813* son);
N_NIMCALL(void, checkraisesspec_329068)(Tnode190813* spec, Tnode190813* real, NimStringDesc* msg, NIM_BOOL hints, TY329074 effectpredicate);
N_NIMCALL(void, initintset_187927)(Intset187056* Result);
N_NOINLINE(void, chckNil)(void* p);
static N_INLINE(Tnode190813*, HEX5BHEX5D_191244)(Tnode190813* n, NI i);
N_NIMCALL(void, incl_187856)(Intset187056* s, NI key);
N_NIMCALL(void, pushinfocontext_164192)(Tlineinfo163338 info);
N_NIMCALL(void, localerror_165155)(Tlineinfo163338 info, NU16 msg, NimStringDesc* arg);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, typetostring_220032)(Ttype190849* typ, NU8 prefer);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(void, popinfocontext_164211)(void);
N_NIMCALL(NIM_BOOL, contains_187829)(Intset187056 s, NI key);
N_NIMCALL(void, message_165188)(Tlineinfo163338 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, rendertree_212058)(Tnode190813* n, NU8 renderflags);
N_NIMCALL(NIM_BOOL, subtyperelation_329041)(Tnode190813* spec, Tnode190813* real);
N_NIMCALL(NI, safeinheritancediff_229388)(Ttype190849* a, Ttype190849* b);
N_NIMCALL(Ttype190849*, exctype_325169)(Tnode190813* n);
N_NIMCALL(Ttype190849*, getebase_325148)(void);
N_NIMCALL(Tsym190843*, getcompilerproc_238036)(NimStringDesc* name);
N_NIMCALL(Ttype190849*, systypefromname_238213)(NimStringDesc* name);
N_NIMCALL(Ttype190849*, skiptypes_194167)(Ttype190849* t, NU64 kinds);
N_NIMCALL(void, localerror_165166)(Tlineinfo163338 info, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
N_NIMCALL(NimStringDesc*, HEX24_193096)(NI16 x);
N_NIMCALL(void, internalerror_165218)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_165306)(TY86345 x);
N_NIMCALL(void, initeffects_329504)(Tnode190813* effects, Tsym190843* s, Teffects324008* t);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
static N_INLINE(Tcell46347*, usrtocell_49846)(void* usr);
static N_INLINE(void, rtladdzct_51404)(Tcell46347* c);
N_NOINLINE(void, addzct_49817)(Tcellseq46363* s, Tcell46347* c);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, track_325843)(Teffects324008* tracked, Tnode190813* n);
N_NIMCALL(void, usevar_324829)(Teffects324008* a, Tnode190813* n);
N_NIMCALL(NIM_BOOL, islocalvar_324069)(Teffects324008* a, Tsym190843* s);
static N_INLINE(NIM_BOOL, contains_324838)(NI* a, NI aLen0, NI item);
static N_INLINE(NI, find_324848)(NI* a, NI aLen0, NI item);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(void, guardglobal_324229)(Teffects324008* a, Tnode190813* n, Tsym190843* guard);
static N_INLINE(NIM_BOOL, isgcedmem_194235)(Ttype190849* t);
N_NIMCALL(void, markgcunsafe_324702)(Teffects324008* a, Tsym190843* reason);
N_NIMCALL(void, addeffect_325257)(Teffects324008* a, Tnode190813* e, NIM_BOOL uselineinfo);
N_NIMCALL(NIM_BOOL, sametype_225092)(Ttype190849* a, Ttype190849* b, NU8 flags);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_164789)(Tlineinfo163338 a, Tlineinfo163338 b);
N_NIMCALL(void, throws_325116)(Tnode190813* tracked, Tnode190813* n);
static N_INLINE(NI, safelen_191125)(Tnode190813* n);
N_NIMCALL(void, mergelocklevels_326997)(Teffects324008* tracked, Tnode190813* n, NI16 locklevel);
N_NIMCALL(NI16, getlocklevel_326947)(Tsym190843* s);
N_NIMCALL(void, propagateeffects_327012)(Teffects324008* tracked, Tnode190813* n, Tsym190843* s);
N_NIMCALL(void, mergeeffects_325515)(Teffects324008* a, Tnode190813* b, Tnode190813* comesfrom);
N_NIMCALL(Tnode190813*, createraise_325197)(Tnode190813* n);
N_NIMCALL(Tnode190813*, newnode_191401)(NU8 kind);
N_NIMCALL(void, mergetags_325571)(Teffects324008* a, Tnode190813* b, Tnode190813* comesfrom);
N_NIMCALL(void, addtag_325457)(Teffects324008* a, Tnode190813* e, NIM_BOOL uselineinfo);
N_NIMCALL(Tnode190813*, createtag_325216)(Tnode190813* n);
N_NIMCALL(void, warnaboutgcunsafe_324693)(Tnode190813* n);
N_NIMCALL(NIM_BOOL, isforwardedproc_326579)(Tnode190813* n);
N_NIMCALL(NIM_BOOL, isindirectcall_326513)(Tnode190813* n, Tsym190843* owner);
N_NIMCALL(void, assumetheworst_327177)(Teffects324008* tracked, Tnode190813* n, Ttype190849* op);
N_NIMCALL(NIM_BOOL, importedfromc_326916)(Tnode190813* n);
N_NIMCALL(void, markgcunsafe_324723)(Teffects324008* a, Tnode190813* reason);
N_NIMCALL(Tsym190843*, newsym_191656)(NU8 symkind, Tident167021* name, Tsym190843* owner, Tlineinfo163338 info);
N_NIMCALL(Tident167021*, getident_167463)(NimStringDesc* identifier);
N_NIMCALL(void, trackoperand_327232)(Teffects324008* tracked, Tnode190813* n, Ttype190849* paramtype);
N_NIMCALL(Tnode190813*, skipconvandclosure_198305)(Tnode190813* n);
N_NIMCALL(Tnode190813*, skipconv_229935)(Tnode190813* n);
N_NIMCALL(NIM_BOOL, isownedprocvar_327189)(Tnode190813* n, Tsym190843* owner);
N_NIMCALL(void, notnilcheck_327078)(Teffects324008* tracked, Tnode190813* n_327081, Ttype190849* paramtype);
N_NIMCALL(NIM_BOOL, containsnode_195365)(Tnode190813* n, TY432644 kinds);
N_NIMCALL(NU8, impliesnotnil_322251)(Tnodeseq190807* facts, Tnode190813* arg);
N_NIMCALL(Ttype190849*, paramtype_328229)(Ttype190849* op, NI i);
N_NIMCALL(NI, len_193377)(Ttype190849* n);
N_NIMCALL(void, initvarvianew_324646)(Teffects324008* a, Tnode190813* n);
N_NIMCALL(void, initvar_324515)(Teffects324008* a, Tnode190813* n, NIM_BOOL volatilecheck);
static N_INLINE(void, makevolatile_324468)(Teffects324008* a, Tsym190843* s);
N_NIMCALL(Tsym190843*, getmodule_198243)(Tsym190843* s);
N_NIMCALL(void, guarddotaccess_324287)(Teffects324008* a, Tnode190813* n);
N_NIMCALL(Tsym190843*, lookupinrecord_198236)(Tnode190813* n, Tident167021* field);
N_NIMCALL(Tnode190813*, newnodei_192407)(NU8 kind, Tlineinfo163338 info, NI children);
N_NIMCALL(Tnode190813*, newsymnode_192325)(Tsym190843* sym);
N_NIMCALL(NIM_BOOL, sametree_321290)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(void, checkfieldaccess_323809)(Tnodeseq190807* m, Tnode190813* n);
N_NIMCALL(void, tracktrystmt_325850)(Teffects324008* tracked, Tnode190813* n);
N_NIMCALL(void, addtointersection_325039)(TY224854** inter, NI s);
N_NIMCALL(void, catchesall_325814)(Teffects324008* tracked);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, catches_325686)(Teffects324008* tracked, Ttype190849* e_325689);
N_NIMCALL(void, trackpragmastmt_326610)(Teffects324008* tracked, Tnode190813* n);
N_NIMCALL(void, listeffects_325627)(Teffects324008* a);
N_NIMCALL(void, invalidatefacts_321487)(Tnodeseq190807** m, Tnode190813* n);
N_NIMCALL(void, addasgnfact_323486)(Tnodeseq190807** m, Tnode190813* key, Tnode190813* value);
N_NIMCALL(Tnode190813*, lastson_193431)(Tnode190813* n);
N_NIMCALL(void, trackcase_327452)(Teffects324008* tracked, Tnode190813* n);
N_NIMCALL(NIM_BOOL, interestingcaseexpr_320234)(Tnode190813* m);
N_NIMCALL(void, addcasebranchfacts_323537)(Tnodeseq190807** m, Tnode190813* n, NI i);
N_NIMCALL(NIM_BOOL, breaksblock_327395)(Tnode190813* n);
N_NIMCALL(void, trackif_327756)(Teffects324008* tracked, Tnode190813* n);
N_NIMCALL(void, addfact_321220)(Tnodeseq190807** m, Tnode190813* n_321224);
N_NIMCALL(void, addfactneg_321254)(Tnodeseq190807** m, Tnode190813* n_321258);
N_NIMCALL(void, trackblock_328109)(Teffects324008* tracked, Tnode190813* n);
N_NIMCALL(NIM_BOOL, hassubnodewith_195439)(Tnode190813* n, NU8 kind);
N_NIMCALL(NIM_BOOL, istrue_328188)(Tnode190813* n);
N_NIMCALL(void, adddiscriminantfact_323459)(Tnodeseq190807** m, Tnode190813* n);
N_NIMCALL(void, locklocations_324167)(Teffects324008* a, Tnode190813* pragma);
N_NIMCALL(NI16, getlocklevel_324114)(Ttype190849* t_324116);
static N_INLINE(NIM_BOOL, isemptytype_195933)(Ttype190849* t);
N_NIMCALL(void, listgcunsafety_324755)(Tsym190843* s, NIM_BOOL onlywarning);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(Tnode190813*, newnode_192607)(NU8 kind, Tlineinfo163338 info, Tnodeseq190807* sons, Ttype190849* typ);
N_NIMCALL(Tnode190813*, documenteffect_326736)(Tnode190813* n, Tnode190813* x, NU16 effecttype, NI idx);
N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s, NimStringDesc* prefix);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI start);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI first);
N_NIMCALL(Tnode190813*, newidentnode_192313)(Tident167021* ident, Tlineinfo163338 info);
STRING_LITERAL(TMP3267, "can raise an unlisted exception: ", 33);
STRING_LITERAL(TMP3268, "Exception", 9);
STRING_LITERAL(TMP3269, "Exception", 9);
STRING_LITERAL(TMP3270, "E_Base", 6);
STRING_LITERAL(TMP3271, "can have an unlisted effect: ", 29);
STRING_LITERAL(TMP3272, "base method is GC-safe, but \'$1\' is not", 39);
STRING_LITERAL(TMP3273, "base method has lock level $1, but dispatcher has $2", 52);
STRING_LITERAL(TMP3314, "sempass2.nim", 12);
NIM_CONST TY86345 TMP3313 = {((NimStringDesc*) &TMP3314),
((NI) 854)}
;
STRING_LITERAL(TMP3315, "unguarded access: ", 18);
STRING_LITERAL(TMP3316, "expected lock level < ", 22);
STRING_LITERAL(TMP3317, " but got lock level ", 20);
STRING_LITERAL(TMP3318, "RootEffect", 10);
STRING_LITERAL(TMP3319, "RootEffect", 10);
STRING_LITERAL(TMP3320, "TEffect", 7);
STRING_LITERAL(TMP3321, "<unknown>", 9);
NIM_CONST TY86345 TMP3322 = {((NimStringDesc*) &TMP3314),
((NI) 521)}
;
static NIM_CONST TY432644 TMP3323 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3333, "cannot prove \'$1\' is not nil", 28);
STRING_LITERAL(TMP3334, "\'$1\' is provably nil", 20);
STRING_LITERAL(TMP3335, "invalid guard field: ", 21);
STRING_LITERAL(TMP3336, "locks pragma without argument", 29);
STRING_LITERAL(TMP3337, "invalid lock level: ", 20);
STRING_LITERAL(TMP3338, "multi-lock requires the same static lock level for every operan"
"d", 64);
STRING_LITERAL(TMP3339, "invalid nested locking", 22);
STRING_LITERAL(TMP3340, "result", 6);
STRING_LITERAL(TMP3341, "\'$#\' is not GC-safe as it accesses \'$#\' which is a global using"
" GC\'ed memory", 76);
STRING_LITERAL(TMP3342, "\'$#\' is not GC-safe as it calls \'$#\'", 36);
NIM_CONST TY86345 TMP3343 = {((NimStringDesc*) &TMP3314),
((NI) 226)}
;
STRING_LITERAL(TMP3344, "\'$#\' is not GC-safe as it performs an indirect call here", 56);
STRING_LITERAL(TMP3345, "declared lock level is $1, but real lock level is $2", 52);
NIM_CONST TY86345 TMP3384 = {((NimStringDesc*) &TMP3314),
((NI) 827)}
;
NIM_CONST TY86345 TMP3385 = {((NimStringDesc*) &TMP3314),
((NI) 833)}
;
STRING_LITERAL(TMP4771, "ref ", 4);
extern NIM_CONST TY172335 specialwords_172334;
extern TNimType NTI190807; /* TNodeSeq */
extern Tgcheap48216 gch_48244;
extern TNimType NTI297595; /* seq[int] */
extern NU8 gcmd_154130;
extern NU64 gnotes_164014;
extern TNimType NTI224854; /* seq[tuple[a: int, b: int]] */
extern NU32 gglobaloptions_154128;

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

N_NIMCALL(Tnode190813*, effectspec_326661)(Tnode190813* n, NU16 effecttype) {
	Tnode190813* result;
{	result = 0;
	{
		NI i_326678;
		NI HEX3Atmp_326714;
		NI LOC2;
		NI res_326717;
		i_326678 = 0;
		HEX3Atmp_326714 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_326714 = (NI)(LOC2 - ((NI) 1));
		res_326717 = ((NI) 0);
		{
			while (1) {
				Tnode190813* it;
				if (!(res_326717 <= HEX3Atmp_326714)) goto LA4;
				i_326678 = res_326717;
				it = (*n).kindU.S6.sons->data[i_326678];
				{
					NIM_BOOL LOC7;
					NU16 LOC9;
					LOC7 = 0;
					LOC7 = ((*it).kind == ((NU8) 34));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = whichpragma_219673(it);
					LOC7 = (LOC9 == effecttype);
					LA8: ;
					if (!LOC7) goto LA10;
					result = (*it).kindU.S6.sons->data[((NI) 1)];
					{
						if (!!(((*result).kind == ((NU8) 39) || (*result).kind == ((NU8) 41)))) goto LA14;
						result = newnodei_192351(((NU8) 39), (*result).info);
						add_191164(result, (*it).kindU.S6.sons->data[((NI) 1)]);
					}
					LA14: ;
					goto BeforeRet;
				}
				LA10: ;
				res_326717 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
	return result;
}

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

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

N_NIMCALL(void, checkraisesspec_329068)(Tnode190813* spec, Tnode190813* real, NimStringDesc* msg, NIM_BOOL hints, TY329074 effectpredicate) {
	Intset187056 used;
	memset((void*)(&used), 0, sizeof(used));
	chckNil((void*)(&used));
	memset((void*)(&used), 0, sizeof(used));
	initintset_187927((&used));
	{
		Tnode190813* r_329080;
		r_329080 = 0;
		{
			NI i_329135;
			NI HEX3Atmp_329137;
			NI LOC3;
			NI res_329139;
			i_329135 = 0;
			HEX3Atmp_329137 = 0;
			LOC3 = 0;
			LOC3 = len_191097(real);
			HEX3Atmp_329137 = (LOC3 - 1);
			res_329139 = ((NI) 0);
			{
				while (1) {
					if (!(res_329139 <= HEX3Atmp_329137)) goto LA5;
					i_329135 = res_329139;
					r_329080 = (*real).kindU.S6.sons->data[i_329135];
					{
						NimStringDesc* LOC17;
						NimStringDesc* LOC18;
						{
							NI s_329101;
							NI HEX3Atmp_329125;
							NI LOC8;
							NI res_329128;
							s_329101 = 0;
							HEX3Atmp_329125 = 0;
							LOC8 = 0;
							LOC8 = len_191097(spec);
							HEX3Atmp_329125 = (LOC8 - 1);
							res_329128 = ((NI) 0);
							{
								while (1) {
									if (!(res_329128 <= HEX3Atmp_329125)) goto LA10;
									s_329101 = res_329128;
									{
										Tnode190813* LOC13;
										NIM_BOOL LOC14;
										LOC13 = 0;
										LOC13 = HEX5BHEX5D_191244(spec, s_329101);
										LOC14 = 0;
										LOC14 = effectpredicate(LOC13, r_329080);
										if (!LOC14) goto LA15;
										incl_187856((&used), s_329101);
										goto LA6;
									}
									LA15: ;
									res_329128 += ((NI) 1);
								} LA10: ;
							}
						}
						pushinfocontext_164192((*spec).info);
						LOC17 = 0;
						LOC18 = 0;
						LOC18 = typetostring_220032((*r_329080).typ, ((NU8) 0));
						LOC17 = rawNewString(msg->Sup.len + LOC18->Sup.len + 0);
appendString(LOC17, msg);
appendString(LOC17, LOC18);
						localerror_165155((*r_329080).info, ((NU16) 4), LOC17);
						popinfocontext_164211();
					} LA6: ;
					res_329139 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	{
		if (!hints) goto LA21;
		{
			NI s_329122;
			NI HEX3Atmp_329143;
			NI LOC24;
			NI res_329146;
			s_329122 = 0;
			HEX3Atmp_329143 = 0;
			LOC24 = 0;
			LOC24 = len_191097(spec);
			HEX3Atmp_329143 = (LOC24 - 1);
			res_329146 = ((NI) 0);
			{
				while (1) {
					if (!(res_329146 <= HEX3Atmp_329143)) goto LA26;
					s_329122 = res_329146;
					{
						NIM_BOOL LOC29;
						Tnode190813* LOC32;
						Tnode190813* LOC33;
						NimStringDesc* LOC34;
						LOC29 = 0;
						LOC29 = contains_187829(used, s_329122);
						if (!!(LOC29)) goto LA30;
						LOC32 = 0;
						LOC32 = HEX5BHEX5D_191244(spec, s_329122);
						LOC33 = 0;
						LOC33 = HEX5BHEX5D_191244(spec, s_329122);
						LOC34 = 0;
						LOC34 = rendertree_212058(LOC33, 0);
						message_165188((*LOC32).info, ((NU16) 264), LOC34);
					}
					LA30: ;
					res_329146 += ((NI) 1);
				} LA26: ;
			}
		}
	}
	LA21: ;
}

N_NIMCALL(Ttype190849*, getebase_325148)(void) {
	Ttype190849* result;
	result = 0;
	{
		Tsym190843* LOC3;
		LOC3 = 0;
		LOC3 = getcompilerproc_238036(((NimStringDesc*) &TMP3268));
		if (!!((LOC3 == NIM_NIL))) goto LA4;
		result = systypefromname_238213(((NimStringDesc*) &TMP3269));
	}
	goto LA1;
	LA4: ;
	{
		result = systypefromname_238213(((NimStringDesc*) &TMP3270));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, exctype_325169)(Tnode190813* n) {
	Ttype190849* result;
	Ttype190849* t;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 1));
		if (LOC3) goto LA4;
		LOC3 = (*n).typ == 0;
		LA4: ;
		if (!LOC3) goto LA5;
		t = getebase_325148();
	}
	goto LA1;
	LA5: ;
	{
		t = (*n).typ;
	}
	LA1: ;
	result = skiptypes_194167(t, IL64(211106247215360));
	return result;
}

N_NIMCALL(NIM_BOOL, subtyperelation_329041)(Tnode190813* spec, Tnode190813* real) {
	NIM_BOOL result;
	Ttype190849* LOC1;
	NI LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = exctype_325169(real);
	LOC2 = 0;
	LOC2 = safeinheritancediff_229388(LOC1, (*spec).typ);
	result = (LOC2 <= ((NI) 0));
	return result;
}

N_NIMCALL(void, checkmethodeffects_329189)(Tsym190843* disp, Tsym190843* branch) {
	Tnode190813* actual;
	Tnode190813* p;
	Tnode190813* raisesspec;
	Tnode190813* tagsspec;
{	actual = (*(*(*branch).typ).n).kindU.S6.sons->data[((NI) 0)];
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_191097(actual);
		if (!!((LOC3 == ((NI) 4)))) goto LA4;
		goto BeforeRet;
	}
	LA4: ;
	p = (*(*disp).ast).kindU.S6.sons->data[((NI) 4)];
	raisesspec = effectspec_326661(p, ((NU16) 154));
	{
		if (!!(raisesspec == 0)) goto LA8;
		checkraisesspec_329068(raisesspec, (*actual).kindU.S6.sons->data[((NI) 0)], ((NimStringDesc*) &TMP3267), NIM_FALSE, subtyperelation_329041);
	}
	LA8: ;
	tagsspec = effectspec_326661(p, ((NU16) 159));
	{
		if (!!(tagsspec == 0)) goto LA12;
		checkraisesspec_329068(tagsspec, (*actual).kindU.S6.sons->data[((NI) 3)], ((NimStringDesc*) &TMP3271), NIM_FALSE, subtyperelation_329041);
	}
	LA12: ;
	{
		NIM_BOOL LOC16;
		NimStringDesc* LOC20;
		LOC16 = 0;
		LOC16 = (((*disp).flags &(1<<((((NU8) 22))&31)))!=0);
		if (!(LOC16)) goto LA17;
		LOC16 = ((130 & (*(*branch).typ).flags) == 0);
		LA17: ;
		if (!LOC16) goto LA18;
		LOC20 = 0;
		LOC20 = nsuFormatSingleElem(((NimStringDesc*) &TMP3272), (*(*branch).name).s);
		localerror_165166((*branch).info, LOC20);
	}
	LA18: ;
	{
		TY154965 LOC25;
		NimStringDesc* LOC26;
		if (!((*(*disp).typ).locklevel < (*(*branch).typ).locklevel)) goto LA23;
		memset((void*)LOC25, 0, sizeof(LOC25));
		LOC25[0] = HEX24_193096((*(*branch).typ).locklevel);
		LOC25[1] = HEX24_193096((*(*disp).typ).locklevel);
		LOC26 = 0;
		LOC26 = nsuFormatOpenArray(((NimStringDesc*) &TMP3273), LOC25, 2);
		message_165188((*branch).info, ((NU16) 258), LOC26);
	}
	LA23: ;
	}BeforeRet: ;
}

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

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

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

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

N_NIMCALL(void, initeffects_329504)(Tnode190813* effects, Tsym190843* s, Teffects324008* t) {
	if ((*effects).kindU.S6.sons) nimGCunrefNoCycle((*effects).kindU.S6.sons);
	(*effects).kindU.S6.sons = (Tnodeseq190807*) newSeqRC1((&NTI190807), ((NI) 4));
	asgnRefNoCycle((void**) (&(*effects).kindU.S6.sons->data[((NI) 0)]), newnodei_192351(((NU8) 152), (*s).info));
	asgnRefNoCycle((void**) (&(*effects).kindU.S6.sons->data[((NI) 3)]), newnodei_192351(((NU8) 152), (*s).info));
	unsureAsgnRef((void**) (&(*t).exc), (*effects).kindU.S6.sons->data[((NI) 0)]);
	unsureAsgnRef((void**) (&(*t).tags), (*effects).kindU.S6.sons->data[((NI) 3)]);
	unsureAsgnRef((void**) (&(*t).owner), s);
	unsureAsgnRef((void**) (&(*t).init), (TY297595*) newSeq((&NTI297595), 0));
	unsureAsgnRef((void**) (&(*t).guards), (Tnodeseq190807*) newSeq((&NTI190807), 0));
	unsureAsgnRef((void**) (&(*t).locked), (Tnodeseq190807*) newSeq((&NTI190807), 0));
}

N_NIMCALL(NIM_BOOL, islocalvar_324069)(Teffects324008* a, Tsym190843* s) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((2304 &(1<<(((*s).kind)&31)))!=0);
	if (!(LOC2)) goto LA3;
	LOC2 = !((((*s).flags &(1<<((((NU8) 3))&31)))!=0));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = ((*s).owner == (*a).owner);
	LA4: ;
	result = LOC1;
	return result;
}

static N_INLINE(NI, find_324848)(NI* a, NI aLen0, NI item) {
	NI result;
{	result = 0;
	{
		NI i_324892;
		NI i_324905;
		i_324892 = 0;
		i_324905 = ((NI) 0);
		{
			while (1) {
				if (!(i_324905 < aLen0)) goto LA3;
				i_324892 = a[i_324905];
				{
					if (!(i_324892 == item)) goto LA6;
					goto BeforeRet;
				}
				LA6: ;
				result += ((NI) 1);
				i_324905 += ((NI) 1);
			} LA3: ;
		}
	}
	result = ((NI) -1);
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, contains_324838)(NI* a, NI aLen0, NI item) {
	NIM_BOOL result;
	NI LOC1;
{	result = 0;
	LOC1 = 0;
	LOC1 = find_324848(a, aLen0, item);
	result = (((NI) 0) <= LOC1);
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, guardglobal_324229)(Teffects324008* a, Tnode190813* n, Tsym190843* guard) {
{	{
		Tnode190813* L_324243;
		Tnodeseq190807* HEX3Atmp_324266;
		NI i_324269;
		NI L_324271;
		L_324243 = 0;
		HEX3Atmp_324266 = 0;
		HEX3Atmp_324266 = (*a).locked;
		i_324269 = ((NI) 0);
		L_324271 = (HEX3Atmp_324266 ? HEX3Atmp_324266->Sup.len : 0);
		{
			while (1) {
				if (!(i_324269 < L_324271)) goto LA3;
				L_324243 = HEX3Atmp_324266->data[i_324269];
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = ((*L_324243).kind == ((NU8) 3));
					if (!(LOC6)) goto LA7;
					LOC6 = ((*L_324243).kindU.S4.sym == guard);
					LA7: ;
					if (!LOC6) goto LA8;
					goto BeforeRet;
				}
				LA8: ;
				i_324269 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NimStringDesc* LOC14;
		NimStringDesc* LOC15;
		if (!!((*a).istoplevel)) goto LA12;
		LOC14 = 0;
		LOC15 = 0;
		LOC15 = rendertree_212058(n, 0);
		LOC14 = rawNewString(LOC15->Sup.len + 18);
appendString(LOC14, ((NimStringDesc*) &TMP3315));
appendString(LOC14, LOC15);
		localerror_165155((*n).info, ((NU16) 4), LOC14);
	}
	LA12: ;
	}BeforeRet: ;
}

static N_INLINE(NIM_BOOL, isgcedmem_194235)(Ttype190849* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 28) || (*t).kind == ((NU8) 22) || (*t).kind == ((NU8) 24));
	if (LOC1) goto LA2;
	LOC3 = 0;
	LOC3 = ((*t).kind == ((NU8) 25));
	if (!(LOC3)) goto LA4;
	LOC3 = ((*t).callconv == ((NU8) 8));
	LA4: ;
	LOC1 = LOC3;
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, markgcunsafe_324702)(Teffects324008* a, Tsym190843* reason) {
	(*a).gcunsafe = NIM_TRUE;
	{
		if (!((520192 &(1<<(((*(*a).owner).kind)&31)))!=0)) goto LA3;
		asgnRefNoCycle((void**) (&(*(*a).owner).kindU.S2.gcunsafetyreason), reason);
	}
	LA3: ;
}

N_NIMCALL(void, usevar_324829)(Teffects324008* a, Tnode190813* n) {
	Tsym190843* s;
	s = (*n).kindU.S4.sym;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = islocalvar_324069(a, s);
		if (!LOC3) goto LA4;
		{
			NIM_BOOL LOC8;
			LOC8 = 0;
			LOC8 = contains_324838((*a).init->data, (*a).init->Sup.len, (*s).Sup.id);
			if (!!(LOC8)) goto LA9;
			{
				if (!!(((196608 & (*(*s).typ).flags) == 0))) goto LA13;
				message_165188((*n).info, ((NU16) 250), (*(*s).name).s);
			}
			goto LA11;
			LA13: ;
			{
				message_165188((*n).info, ((NU16) 255), (*(*s).name).s);
			}
			LA11: ;
			(*a).init = (TY297595*) incrSeq(&((*a).init)->Sup, sizeof(NI));
			(*a).init->data[(*a).init->Sup.len-1] = (*s).Sup.id;
		}
		LA9: ;
	}
	LA4: ;
	{
		NIM_BOOL LOC18;
		LOC18 = 0;
		LOC18 = ((4194312 & (*s).flags) == 8);
		if (!(LOC18)) goto LA19;
		LOC18 = ((768 &(1<<(((*s).kind)&31)))!=0);
		LA19: ;
		if (!LOC18) goto LA20;
		{
			if (!!(((*s).kindU.S4.guard == NIM_NIL))) goto LA24;
			guardglobal_324229(a, n, (*s).kindU.S4.guard);
		}
		LA24: ;
		{
			NIM_BOOL LOC28;
			LOC28 = 0;
			LOC28 = (((*(*s).typ).flags &(1<<((((NU8) 20))&31)))!=0);
			if (LOC28) goto LA29;
			LOC28 = isgcedmem_194235((*s).typ);
			LA29: ;
			if (!LOC28) goto LA30;
			markgcunsafe_324702(a, s);
		}
		LA30: ;
	}
	LA20: ;
}

N_NIMCALL(void, throws_325116)(Tnode190813* tracked, Tnode190813* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).typ == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = !(((*(*n).typ).kind == ((NU8) 50)));
		LA4: ;
		if (!LOC3) goto LA5;
		add_191164(tracked, n);
	}
	LA5: ;
}

N_NIMCALL(void, addeffect_325257)(Teffects324008* a, Tnode190813* e, NIM_BOOL uselineinfo) {
	Tnode190813* aa;
{	aa = (*a).exc;
	{
		NI i_325421;
		NI HEX3Atmp_325434;
		NI HEX3Atmp_325435;
		NI LOC2;
		NI res_325438;
		i_325421 = 0;
		HEX3Atmp_325434 = 0;
		HEX3Atmp_325435 = 0;
		HEX3Atmp_325434 = (*a).bottom;
		LOC2 = 0;
		LOC2 = len_191097(aa);
		HEX3Atmp_325435 = (LOC2 - 1);
		res_325438 = HEX3Atmp_325434;
		{
			while (1) {
				if (!(res_325438 <= HEX3Atmp_325435)) goto LA4;
				i_325421 = res_325438;
				{
					Tnode190813* LOC7;
					Ttype190849* LOC8;
					Ttype190849* LOC9;
					NIM_BOOL LOC10;
					LOC7 = 0;
					LOC7 = HEX5BHEX5D_191244(aa, i_325421);
					LOC8 = 0;
					LOC8 = exctype_325169(LOC7);
					LOC9 = 0;
					LOC9 = exctype_325169(e);
					LOC10 = 0;
					LOC10 = sametype_225092(LOC8, LOC9, 0);
					if (!LOC10) goto LA11;
					{
						NIM_BOOL LOC15;
						LOC15 = 0;
						LOC15 = !(uselineinfo);
						if (LOC15) goto LA16;
						LOC15 = (gcmd_154130 == ((NU8) 8));
						LA16: ;
						if (!LOC15) goto LA17;
						goto BeforeRet;
					}
					goto LA13;
					LA17: ;
					{
						Tnode190813* LOC20;
						NIM_BOOL LOC21;
						LOC20 = 0;
						LOC20 = HEX5BHEX5D_191244(aa, i_325421);
						LOC21 = 0;
						LOC21 = HEX3DHEX3D_164789((*LOC20).info, (*e).info);
						if (!LOC21) goto LA22;
						goto BeforeRet;
					}
					goto LA13;
					LA22: ;
					LA13: ;
				}
				LA11: ;
				res_325438 += ((NI) 1);
			} LA4: ;
		}
	}
	throws_325116((*a).exc, e);
	}BeforeRet: ;
}

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

N_NIMCALL(void, mergelocklevels_326997)(Teffects324008* tracked, Tnode190813* n, NI16 locklevel) {
	{
		if (!((*tracked).currlocklevel <= locklevel)) goto LA3;
		{
			NimStringDesc* LOC9;
			NimStringDesc* LOC10;
			NimStringDesc* LOC11;
			if (!(((NI16) 0) < (*tracked).currlocklevel)) goto LA7;
			LOC9 = 0;
			LOC10 = 0;
			LOC10 = HEX24_193096((*tracked).currlocklevel);
			LOC11 = 0;
			LOC11 = HEX24_193096(locklevel);
			LOC9 = rawNewString(LOC10->Sup.len + LOC11->Sup.len + 42);
appendString(LOC9, ((NimStringDesc*) &TMP3316));
appendString(LOC9, LOC10);
appendString(LOC9, ((NimStringDesc*) &TMP3317));
appendString(LOC9, LOC11);
			localerror_165155((*n).info, ((NU16) 4), LOC9);
		}
		LA7: ;
		(*tracked).maxlocklevel = (((*tracked).maxlocklevel >= locklevel) ? (*tracked).maxlocklevel : locklevel);
	}
	LA3: ;
}

N_NIMCALL(NI16, getlocklevel_326947)(Tsym190843* s) {
	NI16 result;
	result = 0;
	result = (*(*s).typ).locklevel;
	{
		if (!(result == ((NI16) -1))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = !(((1056 & (*s).flags) == 0));
			if (LOC7) goto LA8;
			LOC7 = (((*(*s).typ).flags &(1<<((((NU8) 1))&31)))!=0);
			LA8: ;
			if (!LOC7) goto LA9;
			result = ((NI16) 0);
		}
		goto LA5;
		LA9: ;
		{
			result = ((NI16) 1001);
		}
		LA5: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode190813*, createraise_325197)(Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = newnode_191401(((NU8) 4));
	asgnRefNoCycle((void**) (&(*result).typ), getebase_325148());
	{
		if (!!(n == 0)) goto LA3;
		(*result).info = (*n).info;
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, mergeeffects_325515)(Teffects324008* a, Tnode190813* b, Tnode190813* comesfrom) {
	{
		Tnode190813* LOC5;
		if (!b == 0) goto LA3;
		LOC5 = 0;
		LOC5 = createraise_325197(comesfrom);
		addeffect_325257(a, LOC5, NIM_TRUE);
	}
	goto LA1;
	LA3: ;
	{
		{
			Tnode190813* effect_325529;
			effect_325529 = 0;
			{
				NI i_325546;
				NI HEX3Atmp_325548;
				NI LOC9;
				NI res_325550;
				i_325546 = 0;
				HEX3Atmp_325548 = 0;
				LOC9 = 0;
				LOC9 = len_191097(b);
				HEX3Atmp_325548 = (LOC9 - 1);
				res_325550 = ((NI) 0);
				{
					while (1) {
						if (!(res_325550 <= HEX3Atmp_325548)) goto LA11;
						i_325546 = res_325550;
						effect_325529 = (*b).kindU.S6.sons->data[i_325546];
						addeffect_325257(a, effect_325529, !((comesfrom == NIM_NIL)));
						res_325550 += ((NI) 1);
					} LA11: ;
				}
			}
		}
	}
	LA1: ;
}

N_NIMCALL(void, addtag_325457)(Teffects324008* a, Tnode190813* e, NIM_BOOL uselineinfo) {
	Tnode190813* aa;
{	aa = (*a).tags;
	{
		NI i_325482;
		NI HEX3Atmp_325493;
		NI LOC2;
		NI res_325496;
		i_325482 = 0;
		HEX3Atmp_325493 = 0;
		LOC2 = 0;
		LOC2 = len_191097(aa);
		HEX3Atmp_325493 = (LOC2 - 1);
		res_325496 = ((NI) 0);
		{
			while (1) {
				if (!(res_325496 <= HEX3Atmp_325493)) goto LA4;
				i_325482 = res_325496;
				{
					Tnode190813* LOC7;
					Ttype190849* LOC8;
					Ttype190849* LOC9;
					NIM_BOOL LOC10;
					LOC7 = 0;
					LOC7 = HEX5BHEX5D_191244(aa, i_325482);
					LOC8 = 0;
					LOC8 = skiptypes_194167((*LOC7).typ, IL64(211106247215360));
					LOC9 = 0;
					LOC9 = skiptypes_194167((*e).typ, IL64(211106247215360));
					LOC10 = 0;
					LOC10 = sametype_225092(LOC8, LOC9, 0);
					if (!LOC10) goto LA11;
					{
						NIM_BOOL LOC15;
						LOC15 = 0;
						LOC15 = !(uselineinfo);
						if (LOC15) goto LA16;
						LOC15 = (gcmd_154130 == ((NU8) 8));
						LA16: ;
						if (!LOC15) goto LA17;
						goto BeforeRet;
					}
					goto LA13;
					LA17: ;
					{
						Tnode190813* LOC20;
						NIM_BOOL LOC21;
						LOC20 = 0;
						LOC20 = HEX5BHEX5D_191244(aa, i_325482);
						LOC21 = 0;
						LOC21 = HEX3DHEX3D_164789((*LOC20).info, (*e).info);
						if (!LOC21) goto LA22;
						goto BeforeRet;
					}
					goto LA13;
					LA22: ;
					LA13: ;
				}
				LA11: ;
				res_325496 += ((NI) 1);
			} LA4: ;
		}
	}
	throws_325116((*a).tags, e);
	}BeforeRet: ;
}

N_NIMCALL(Tnode190813*, createtag_325216)(Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = newnode_191401(((NU8) 4));
	{
		Tsym190843* LOC3;
		LOC3 = 0;
		LOC3 = getcompilerproc_238036(((NimStringDesc*) &TMP3318));
		if (!!((LOC3 == NIM_NIL))) goto LA4;
		asgnRefNoCycle((void**) (&(*result).typ), systypefromname_238213(((NimStringDesc*) &TMP3319)));
	}
	goto LA1;
	LA4: ;
	{
		asgnRefNoCycle((void**) (&(*result).typ), systypefromname_238213(((NimStringDesc*) &TMP3320)));
	}
	LA1: ;
	{
		if (!!(n == 0)) goto LA9;
		(*result).info = (*n).info;
	}
	LA9: ;
	return result;
}

N_NIMCALL(void, mergetags_325571)(Teffects324008* a, Tnode190813* b, Tnode190813* comesfrom) {
	{
		Tnode190813* LOC5;
		if (!b == 0) goto LA3;
		LOC5 = 0;
		LOC5 = createtag_325216(comesfrom);
		addtag_325457(a, LOC5, NIM_TRUE);
	}
	goto LA1;
	LA3: ;
	{
		{
			Tnode190813* effect_325585;
			effect_325585 = 0;
			{
				NI i_325602;
				NI HEX3Atmp_325604;
				NI LOC9;
				NI res_325606;
				i_325602 = 0;
				HEX3Atmp_325604 = 0;
				LOC9 = 0;
				LOC9 = len_191097(b);
				HEX3Atmp_325604 = (LOC9 - 1);
				res_325606 = ((NI) 0);
				{
					while (1) {
						if (!(res_325606 <= HEX3Atmp_325604)) goto LA11;
						i_325602 = res_325606;
						effect_325585 = (*b).kindU.S6.sons->data[i_325602];
						addtag_325457(a, effect_325585, !((comesfrom == NIM_NIL)));
						res_325606 += ((NI) 1);
					} LA11: ;
				}
			}
		}
	}
	LA1: ;
}

N_NIMCALL(void, warnaboutgcunsafe_324693)(Tnode190813* n) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = rendertree_212058(n, 0);
	message_165188((*n).info, ((NU16) 253), LOC1);
}

N_NIMCALL(void, propagateeffects_327012)(Teffects324008* tracked, Tnode190813* n, Tsym190843* s) {
	Tnode190813* pragma;
	Tnode190813* spec;
	Tnode190813* tagspec;
	NI16 LOC11;
	pragma = (*(*s).ast).kindU.S6.sons->data[((NI) 4)];
	spec = effectspec_326661(pragma, ((NU16) 154));
	mergeeffects_325515(tracked, spec, n);
	tagspec = effectspec_326661(pragma, ((NU16) 159));
	mergetags_325571(tracked, tagspec, n);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((130 & (*(*s).typ).flags) == 0);
		if (!(LOC3)) goto LA4;
		LOC3 = !((((*s).flags &(1<<((((NU8) 5))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!((gnotes_164014 &(IL64(1)<<(((((NU16) 253)- 230))&IL64(63))))!=0)) goto LA9;
			warnaboutgcunsafe_324693(n);
		}
		LA9: ;
		markgcunsafe_324702(tracked, s);
	}
	LA5: ;
	LOC11 = 0;
	LOC11 = getlocklevel_326947(s);
	mergelocklevels_326997(tracked, n, LOC11);
}

N_NIMCALL(NIM_BOOL, isforwardedproc_326579)(Tnode190813* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*n).kind == ((NU8) 3));
	if (!(LOC1)) goto LA2;
	LOC1 = (((*(*n).kindU.S4.sym).flags &(1<<((((NU8) 4))&31)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NIM_BOOL, isindirectcall_326513)(Tnode190813* n, Tsym190843* owner) {
	NIM_BOOL result;
	result = 0;
	{
		if (!!(((*n).kind == ((NU8) 3)))) goto LA3;
		result = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC8;
		if (!((*(*n).kindU.S4.sym).kind == ((NU8) 3))) goto LA6;
		LOC8 = 0;
		LOC8 = !((owner == (*(*n).kindU.S4.sym).owner));
		if (LOC8) goto LA9;
		LOC8 = (owner == NIM_NIL);
		LA9: ;
		result = LOC8;
	}
	goto LA1;
	LA6: ;
	{
		if (!!(((520192 &(1<<(((*(*n).kindU.S4.sym).kind)&31)))!=0))) goto LA11;
		result = NIM_TRUE;
	}
	goto LA1;
	LA11: ;
	LA1: ;
	return result;
}

N_NIMCALL(void, assumetheworst_327177)(Teffects324008* tracked, Tnode190813* n, Ttype190849* op) {
	Tnode190813* LOC1;
	Tnode190813* LOC2;
	NI16 locklevel;
	LOC1 = 0;
	LOC1 = createraise_325197(n);
	addeffect_325257(tracked, LOC1, NIM_TRUE);
	LOC2 = 0;
	LOC2 = createtag_325216(n);
	addtag_325457(tracked, LOC2, NIM_TRUE);
	{
		if (!((*op).locklevel == ((NI16) -1))) goto LA5;
		locklevel = ((NI16) 1001);
	}
	goto LA3;
	LA5: ;
	{
		locklevel = (*op).locklevel;
	}
	LA3: ;
	mergelocklevels_326997(tracked, n, locklevel);
}

N_NIMCALL(NIM_BOOL, importedfromc_326916)(Tnode190813* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*n).kind == ((NU8) 3));
	if (!(LOC1)) goto LA2;
	LOC1 = (((*(*n).kindU.S4.sym).flags &(1<<((((NU8) 5))&31)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, markgcunsafe_324723)(Teffects324008* a, Tnode190813* reason) {
	(*a).gcunsafe = NIM_TRUE;
	{
		if (!((520192 &(1<<(((*(*a).owner).kind)&31)))!=0)) goto LA3;
		{
			if (!((*reason).kind == ((NU8) 3))) goto LA7;
			asgnRefNoCycle((void**) (&(*(*a).owner).kindU.S2.gcunsafetyreason), (*reason).kindU.S4.sym);
		}
		goto LA5;
		LA7: ;
		{
			Tident167021* LOC10;
			LOC10 = 0;
			LOC10 = getident_167463(((NimStringDesc*) &TMP3321));
			asgnRefNoCycle((void**) (&(*(*a).owner).kindU.S2.gcunsafetyreason), newsym_191656(((NU8) 0), LOC10, (*a).owner, (*reason).info));
		}
		LA5: ;
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, isownedprocvar_327189)(Tnode190813* n, Tsym190843* owner) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*n).kind == ((NU8) 3));
	if (!(LOC2)) goto LA3;
	LOC2 = ((*(*n).kindU.S4.sym).kind == ((NU8) 3));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = (owner == (*(*n).kindU.S4.sym).owner);
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, notnilcheck_327078)(Teffects324008* tracked, Tnode190813* n_327081, Ttype190849* paramtype) {
	Tnode190813* n;
{	n = skipconv_229935(n_327081);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NU8 LOC27;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC5 = !((paramtype == NIM_NIL));
		if (!(LOC5)) goto LA6;
		LOC5 = (((*paramtype).flags &(1<<((((NU8) 16))&31)))!=0);
		LA6: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA7;
		LOC4 = !(((*n).typ == NIM_NIL));
		LA7: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA8;
		LOC3 = !((((*(*n).typ).flags &(1<<((((NU8) 16))&31)))!=0));
		LA8: ;
		if (!LOC3) goto LA9;
		{
			if (!((*n).kind == ((NU8) 63))) goto LA13;
			{
				NIM_BOOL LOC17;
				LOC17 = 0;
				LOC17 = containsnode_195365(n, TMP3323);
				if (!!(LOC17)) goto LA18;
				goto BeforeRet;
			}
			LA18: ;
		}
		goto LA11;
		LA13: ;
		{
			NIM_BOOL LOC21;
			NIM_BOOL LOC22;
			LOC21 = 0;
			LOC22 = 0;
			LOC22 = ((*n).kind == ((NU8) 3));
			if (!(LOC22)) goto LA23;
			LOC22 = ((520192 &(1<<(((*(*n).kindU.S4.sym).kind)&31)))!=0);
			LA23: ;
			LOC21 = LOC22;
			if (LOC21) goto LA24;
			LOC21 = ((*n).kind >= ((NU8) 51) && (*n).kind <= ((NU8) 52) || (*n).kind >= ((NU8) 79) && (*n).kind <= ((NU8) 81) || (*n).kind == ((NU8) 84));
			LA24: ;
			if (!LOC21) goto LA25;
			goto BeforeRet;
		}
		goto LA11;
		LA25: ;
		LA11: ;
		LOC27 = 0;
		LOC27 = impliesnotnil_322251((*tracked).guards, n);
		switch (LOC27) {
		case ((NU8) 0):
		{
			NimStringDesc* LOC29;
			NimStringDesc* LOC30;
			LOC29 = 0;
			LOC29 = rendertree_212058(n, 0);
			LOC30 = 0;
			LOC30 = nsuFormatSingleElem(((NimStringDesc*) &TMP3333), LOC29);
			message_165188((*n).info, ((NU16) 4), LOC30);
		}
		break;
		case ((NU8) 1):
		{
			NimStringDesc* LOC32;
			NimStringDesc* LOC33;
			LOC32 = 0;
			LOC32 = rendertree_212058(n, 0);
			LOC33 = 0;
			LOC33 = nsuFormatSingleElem(((NimStringDesc*) &TMP3334), LOC32);
			message_165188((*n).info, ((NU16) 4), LOC33);
		}
		break;
		case ((NU8) 2):
		{
		}
		break;
		}
	}
	LA9: ;
	}BeforeRet: ;
}

N_NIMCALL(void, trackoperand_327232)(Teffects324008* tracked, Tnode190813* n, Ttype190849* paramtype) {
	Tnode190813* a;
	Ttype190849* op;
	a = skipconvandclosure_198305(n);
	op = (*a).typ;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		Tnode190813* effectlist;
		Tnode190813* s;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = !((op == NIM_NIL));
		if (!(LOC4)) goto LA5;
		LOC4 = ((*op).kind == ((NU8) 25));
		LA5: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA6;
		LOC3 = !(((*n).kind == ((NU8) 23)));
		LA6: ;
		if (!LOC3) goto LA7;
		{
			NimStringDesc* LOC13;
			if (!!(((*(*(*op).n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 152)))) goto LA11;
			LOC13 = 0;
			LOC13 = HEX24_165306(TMP3322);
			internalerror_165218(LOC13);
		}
		LA11: ;
		effectlist = (*(*op).n).kindU.S6.sons->data[((NI) 0)];
		s = skipconv_229935(n);
		{
			NIM_BOOL LOC16;
			LOC16 = 0;
			LOC16 = ((*s).kind == ((NU8) 3));
			if (!(LOC16)) goto LA17;
			LOC16 = ((520192 &(1<<(((*(*s).kindU.S4.sym).kind)&31)))!=0);
			LA17: ;
			if (!LOC16) goto LA18;
			propagateeffects_327012(tracked, n, (*s).kindU.S4.sym);
		}
		goto LA14;
		LA18: ;
		{
			NI LOC21;
			LOC21 = 0;
			LOC21 = len_191097(effectlist);
			if (!(LOC21 == ((NI) 0))) goto LA22;
			{
				NIM_BOOL LOC26;
				LOC26 = 0;
				LOC26 = isforwardedproc_326579(n);
				if (!LOC26) goto LA27;
				propagateeffects_327012(tracked, n, (*n).kindU.S4.sym);
			}
			goto LA24;
			LA27: ;
			{
				NIM_BOOL LOC30;
				LOC30 = 0;
				LOC30 = isownedprocvar_327189(a, (*tracked).owner);
				if (!!(LOC30)) goto LA31;
				assumetheworst_327177(tracked, n, op);
			}
			goto LA24;
			LA31: ;
			LA24: ;
			{
				NIM_BOOL LOC35;
				NIM_BOOL LOC37;
				LOC35 = 0;
				LOC35 = ((130 & (*op).flags) == 0);
				if (!(LOC35)) goto LA36;
				LOC37 = 0;
				LOC37 = isownedprocvar_327189(a, (*tracked).owner);
				LOC35 = !(LOC37);
				LA36: ;
				if (!LOC35) goto LA38;
				{
					if (!((gnotes_164014 &(IL64(1)<<(((((NU16) 253)- 230))&IL64(63))))!=0)) goto LA42;
					warnaboutgcunsafe_324693(n);
				}
				LA42: ;
				markgcunsafe_324723(tracked, a);
			}
			LA38: ;
		}
		goto LA14;
		LA22: ;
		{
			mergeeffects_325515(tracked, (*effectlist).kindU.S6.sons->data[((NI) 0)], n);
			mergetags_325571(tracked, (*effectlist).kindU.S6.sons->data[((NI) 3)], n);
			{
				if (!((130 & (*op).flags) == 0)) goto LA47;
				{
					if (!((gnotes_164014 &(IL64(1)<<(((((NU16) 253)- 230))&IL64(63))))!=0)) goto LA51;
					warnaboutgcunsafe_324693(n);
				}
				LA51: ;
				markgcunsafe_324723(tracked, a);
			}
			LA47: ;
		}
		LA14: ;
	}
	LA7: ;
	notnilcheck_327078(tracked, n, paramtype);
}

N_NIMCALL(Ttype190849*, paramtype_328229)(Ttype190849* op, NI i) {
	Ttype190849* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NI LOC5;
		LOC3 = 0;
		LOC3 = !((op == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = len_193377(op);
		LOC3 = (i < LOC5);
		LA4: ;
		if (!LOC3) goto LA6;
		result = (*op).sons->data[i];
	}
	LA6: ;
	return result;
}

static N_INLINE(void, makevolatile_324468)(Teffects324008* a, Tsym190843* s) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		Tsym190843* LOC7;
		LOC3 = 0;
		LOC3 = (((NI) 0) < (*a).intrystmt);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = (gcmd_154130 == ((NU8) 2));
		if (LOC5) goto LA6;
		LOC7 = 0;
		LOC7 = getmodule_198243((*a).owner);
		LOC5 = (((*LOC7).flags &(1<<((((NU8) 27))&31)))!=0);
		LA6: ;
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA8;
		(*s).flags |= ((NI32)1)<<((((NU8) 7))%(sizeof(NI32)*8));
	}
	LA8: ;
}

N_NIMCALL(void, initvar_324515)(Teffects324008* a, Tnode190813* n, NIM_BOOL volatilecheck) {
	Tsym190843* s;
{	{
		if (!!(((*n).kind == ((NU8) 3)))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	s = (*n).kindU.S4.sym;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = islocalvar_324069(a, s);
		if (!LOC7) goto LA8;
		{
			if (!volatilecheck) goto LA12;
			makevolatile_324468(a, s);
		}
		LA12: ;
		{
			NI x_324611;
			TY297595* HEX3Atmp_324625;
			NI i_324628;
			NI L_324630;
			x_324611 = 0;
			HEX3Atmp_324625 = 0;
			HEX3Atmp_324625 = (*a).init;
			i_324628 = ((NI) 0);
			L_324630 = (HEX3Atmp_324625 ? HEX3Atmp_324625->Sup.len : 0);
			{
				while (1) {
					if (!(i_324628 < L_324630)) goto LA16;
					x_324611 = HEX3Atmp_324625->data[i_324628];
					{
						if (!(x_324611 == (*s).Sup.id)) goto LA19;
						goto BeforeRet;
					}
					LA19: ;
					i_324628 += ((NI) 1);
				} LA16: ;
			}
		}
		(*a).init = (TY297595*) incrSeq(&((*a).init)->Sup, sizeof(NI));
		(*a).init->data[(*a).init->Sup.len-1] = (*s).Sup.id;
	}
	LA8: ;
	}BeforeRet: ;
}

N_NIMCALL(void, initvarvianew_324646)(Teffects324008* a, Tnode190813* n) {
	Tsym190843* s;
{	{
		if (!!(((*n).kind == ((NU8) 3)))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	s = (*n).kindU.S4.sym;
	{
		if (!(((196608 & (*(*s).typ).flags) & ~ 65536)==0)) goto LA7;
		initvar_324515(a, n, NIM_TRUE);
	}
	goto LA5;
	LA7: ;
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = islocalvar_324069(a, s);
		if (!LOC10) goto LA11;
		makevolatile_324468(a, s);
	}
	goto LA5;
	LA11: ;
	LA5: ;
	}BeforeRet: ;
}

N_NIMCALL(void, guarddotaccess_324287)(Teffects324008* a, Tnode190813* n) {
	Tnode190813* ri;
	Tsym190843* g;
{	ri = (*n).kindU.S6.sons->data[((NI) 1)];
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*ri).kind == ((NU8) 3)));
		if (LOC3) goto LA4;
		LOC3 = !(((*(*ri).kindU.S4.sym).kind == ((NU8) 19)));
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	g = (*(*ri).kindU.S4.sym).kindU.S4.guard;
	{
		NIM_BOOL LOC9;
		LOC9 = 0;
		LOC9 = g == 0;
		if (LOC9) goto LA10;
		LOC9 = (*a).istoplevel;
		LA10: ;
		if (!LOC9) goto LA11;
		goto BeforeRet;
	}
	LA11: ;
	{
		Tsym190843* field;
		Ttype190849* ty;
		if (!((*g).kind == ((NU8) 0))) goto LA15;
		field = NIM_NIL;
		ty = skiptypes_194167((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106247256320));
		{
			NIM_BOOL LOC19;
			LOC19 = 0;
			LOC19 = ((*ty).kind == ((NU8) 18));
			if (!(LOC19)) goto LA20;
			LOC19 = !((*ty).n == 0);
			LA20: ;
			if (!LOC19) goto LA21;
			field = lookupinrecord_198236((*ty).n, (*g).name);
		}
		goto LA17;
		LA21: ;
		{
			{
				while (1) {
					NIM_BOOL LOC26;
					LOC26 = 0;
					LOC26 = !((ty == NIM_NIL));
					if (!(LOC26)) goto LA27;
					LOC26 = ((*ty).kind == ((NU8) 17));
					LA27: ;
					if (!LOC26) goto LA25;
					field = lookupinrecord_198236((*ty).n, (*g).name);
					{
						if (!!((field == NIM_NIL))) goto LA30;
						goto LA24;
					}
					LA30: ;
					ty = (*ty).sons->data[((NI) 0)];
					{
						if (!(ty == NIM_NIL)) goto LA34;
						goto LA24;
					}
					LA34: ;
					ty = skiptypes_194167(ty, IL64(211106247256320));
				} LA25: ;
			} LA24: ;
		}
		LA17: ;
		{
			NimStringDesc* LOC40;
			if (!(field == NIM_NIL)) goto LA38;
			LOC40 = 0;
			LOC40 = rawNewString((*(*g).name).s->Sup.len + 21);
appendString(LOC40, ((NimStringDesc*) &TMP3335));
appendString(LOC40, (*(*g).name).s);
			localerror_165155((*n).info, ((NU16) 4), LOC40);
			goto BeforeRet;
		}
		LA38: ;
		g = field;
	}
	LA15: ;
	{
		Tnode190813* dot;
		NimStringDesc* LOC53;
		NimStringDesc* LOC54;
		if (!((*g).kind == ((NU8) 19))) goto LA43;
		dot = newnodei_192407(((NU8) 45), (*n).info, ((NI) 2));
		asgnRefNoCycle((void**) (&(*dot).kindU.S6.sons->data[((NI) 0)]), (*n).kindU.S6.sons->data[((NI) 0)]);
		asgnRefNoCycle((void**) (&(*dot).kindU.S6.sons->data[((NI) 1)]), newsymnode_192325(g));
		asgnRefNoCycle((void**) (&(*dot).typ), (*g).typ);
		{
			Tnode190813* L_324437;
			Tnodeseq190807* HEX3Atmp_324441;
			NI i_324444;
			NI L_324446;
			L_324437 = 0;
			HEX3Atmp_324441 = 0;
			HEX3Atmp_324441 = (*a).locked;
			i_324444 = ((NI) 0);
			L_324446 = (HEX3Atmp_324441 ? HEX3Atmp_324441->Sup.len : 0);
			{
				while (1) {
					if (!(i_324444 < L_324446)) goto LA47;
					L_324437 = HEX3Atmp_324441->data[i_324444];
					{
						NIM_BOOL LOC50;
						LOC50 = 0;
						LOC50 = sametree_321290(dot, L_324437);
						if (!LOC50) goto LA51;
						goto BeforeRet;
					}
					LA51: ;
					i_324444 += ((NI) 1);
				} LA47: ;
			}
		}
		LOC53 = 0;
		LOC54 = 0;
		LOC54 = rendertree_212058(n, 0);
		LOC53 = rawNewString(LOC54->Sup.len + 18);
appendString(LOC53, ((NimStringDesc*) &TMP3315));
appendString(LOC53, LOC54);
		localerror_165155((*n).info, ((NU16) 4), LOC53);
	}
	goto LA41;
	LA43: ;
	{
		guardglobal_324229(a, n, g);
	}
	LA41: ;
	}BeforeRet: ;
}

N_NIMCALL(void, addtointersection_325039)(TY224854** inter, NI s) {
	TY224855 LOC8;
{	{
		NI j_325070;
		NI HEX3Atmp_325094;
		NI res_325097;
		j_325070 = 0;
		HEX3Atmp_325094 = 0;
		HEX3Atmp_325094 = (((*inter) ? (*inter)->Sup.len : 0) - 1);
		res_325097 = ((NI) 0);
		{
			while (1) {
				if (!(res_325097 <= HEX3Atmp_325094)) goto LA3;
				j_325070 = res_325097;
				{
					if (!(s == (*inter)->data[j_325070].Field0)) goto LA6;
					(*inter)->data[j_325070].Field1 += ((NI) 1);
					goto BeforeRet;
				}
				LA6: ;
				res_325097 += ((NI) 1);
			} LA3: ;
		}
	}
	LOC8.Field0 = s;
	LOC8.Field1 = ((NI) 1);
	(*inter) = (TY224854*) incrSeq(&((*inter))->Sup, sizeof(TY224855));
	(*inter)->data[(*inter)->Sup.len-1] = LOC8;
	}BeforeRet: ;
}

N_NIMCALL(void, catchesall_325814)(Teffects324008* tracked) {
	{
		if (!!((*(*tracked).exc).kindU.S6.sons == 0)) goto LA3;
		(*(*tracked).exc).kindU.S6.sons = (Tnodeseq190807*) setLengthSeq(&((*(*tracked).exc).kindU.S6.sons)->Sup, sizeof(Tnode190813*), ((NI) ((*tracked).bottom)));
	}
	LA3: ;
}

N_NIMCALL(void, catches_325686)(Teffects324008* tracked, Ttype190849* e_325689) {
	Ttype190849* e;
	NI L;
	NI i;
	e = skiptypes_194167(e_325689, IL64(211106247215360));
	L = len_191097((*tracked).exc);
	i = (*tracked).bottom;
	{
		while (1) {
			if (!(i < L)) goto LA2;
			{
				Tnode190813* LOC5;
				Ttype190849* LOC6;
				NI LOC7;
				LOC5 = 0;
				LOC5 = HEX5BHEX5D_191244((*tracked).exc, i);
				LOC6 = 0;
				LOC6 = exctype_325169(LOC5);
				LOC7 = 0;
				LOC7 = safeinheritancediff_229388(LOC6, e);
				if (!(LOC7 <= ((NI) 0))) goto LA8;
				asgnRefNoCycle((void**) (&(*(*tracked).exc).kindU.S6.sons->data[i]), (*(*tracked).exc).kindU.S6.sons->data[(NI)(L - ((NI) 1))]);
				L -= ((NI) 1);
			}
			goto LA3;
			LA8: ;
			{
				i += ((NI) 1);
			}
			LA3: ;
		} LA2: ;
	}
	{
		if (!!((*(*tracked).exc).kindU.S6.sons == 0)) goto LA13;
		(*(*tracked).exc).kindU.S6.sons = (Tnodeseq190807*) setLengthSeq(&((*(*tracked).exc).kindU.S6.sons)->Sup, sizeof(Tnode190813*), ((NI) (L)));
	}
	goto LA11;
	LA13: ;
	{
	}
	LA11: ;
}

N_NIMCALL(void, tracktrystmt_325850)(Teffects324008* tracked, Tnode190813* n) {
	NI oldbottom;
	NI oldstate;
	TY224854* inter;
	NI branches;
	NIM_BOOL hasfinally;
	oldbottom = (*tracked).bottom;
	(*tracked).bottom = len_191097((*tracked).exc);
	oldstate = ((*tracked).init ? (*tracked).init->Sup.len : 0);
	inter = (TY224854*) newSeq((&NTI224854), 0);
	(*tracked).intrystmt += ((NI) 1);
	track_325843(tracked, (*n).kindU.S6.sons->data[((NI) 0)]);
	(*tracked).intrystmt -= ((NI) 1);
	{
		NI i_325927;
		NI HEX3Atmp_326425;
		NI res_326428;
		i_325927 = 0;
		HEX3Atmp_326425 = 0;
		HEX3Atmp_326425 = (((*tracked).init ? (*tracked).init->Sup.len : 0) - 1);
		res_326428 = oldstate;
		{
			while (1) {
				if (!(res_326428 <= HEX3Atmp_326425)) goto LA3;
				i_325927 = res_326428;
				addtointersection_325039((&inter), (*tracked).init->data[i_325927]);
				res_326428 += ((NI) 1);
			} LA3: ;
		}
	}
	branches = ((NI) 1);
	hasfinally = NIM_FALSE;
	{
		NI i_325950;
		NI HEX3Atmp_326449;
		NI LOC5;
		NI res_326452;
		i_325950 = 0;
		HEX3Atmp_326449 = 0;
		LOC5 = 0;
		LOC5 = len_191097(n);
		HEX3Atmp_326449 = (LOC5 - 1);
		res_326452 = ((NI) 1);
		{
			while (1) {
				Tnode190813* b;
				NI blen;
				if (!(res_326452 <= HEX3Atmp_326449)) goto LA7;
				i_325950 = res_326452;
				b = (*n).kindU.S6.sons->data[i_325950];
				blen = sonslen_193403(b);
				{
					if (!((*b).kind == ((NU8) 87))) goto LA10;
					branches += ((NI) 1);
					{
						if (!(blen == ((NI) 1))) goto LA14;
						catchesall_325814(tracked);
					}
					goto LA12;
					LA14: ;
					{
						{
							NI j_325984;
							NI HEX3Atmp_326434;
							NI res_326437;
							j_325984 = 0;
							HEX3Atmp_326434 = 0;
							HEX3Atmp_326434 = (NI)(blen - ((NI) 2));
							res_326437 = ((NI) 0);
							{
								while (1) {
									if (!(res_326437 <= HEX3Atmp_326434)) goto LA19;
									j_325984 = res_326437;
									catches_325686(tracked, (*(*b).kindU.S6.sons->data[j_325984]).typ);
									res_326437 += ((NI) 1);
								} LA19: ;
							}
						}
					}
					LA12: ;
					(*tracked).init = (TY297595*) setLengthSeq(&((*tracked).init)->Sup, sizeof(NI), ((NI) (oldstate)));
					track_325843(tracked, (*b).kindU.S6.sons->data[(NI)(blen - ((NI) 1))]);
					{
						NI i_326039;
						NI HEX3Atmp_326442;
						NI res_326445;
						i_326039 = 0;
						HEX3Atmp_326442 = 0;
						HEX3Atmp_326442 = (((*tracked).init ? (*tracked).init->Sup.len : 0) - 1);
						res_326445 = oldstate;
						{
							while (1) {
								if (!(res_326445 <= HEX3Atmp_326442)) goto LA22;
								i_326039 = res_326445;
								addtointersection_325039((&inter), (*tracked).init->data[i_326039]);
								res_326445 += ((NI) 1);
							} LA22: ;
						}
					}
				}
				goto LA8;
				LA10: ;
				{
					(*tracked).init = (TY297595*) setLengthSeq(&((*tracked).init)->Sup, sizeof(NI), ((NI) (oldstate)));
					track_325843(tracked, (*b).kindU.S6.sons->data[(NI)(blen - ((NI) 1))]);
					hasfinally = NIM_TRUE;
				}
				LA8: ;
				res_326452 += ((NI) 1);
			} LA7: ;
		}
	}
	(*tracked).bottom = oldbottom;
	{
		if (!!(hasfinally)) goto LA26;
		(*tracked).init = (TY297595*) setLengthSeq(&((*tracked).init)->Sup, sizeof(NI), ((NI) (oldstate)));
	}
	LA26: ;
	{
		NI id_326411;
		NI count_326412;
		NI i_326459;
		NI L_326461;
		id_326411 = 0;
		count_326412 = 0;
		i_326459 = ((NI) 0);
		L_326461 = (inter ? inter->Sup.len : 0);
		{
			while (1) {
				if (!(i_326459 < L_326461)) goto LA30;
				id_326411 = inter->data[i_326459].Field0;
				count_326412 = inter->data[i_326459].Field1;
				{
					if (!(count_326412 == branches)) goto LA33;
					(*tracked).init = (TY297595*) incrSeq(&((*tracked).init)->Sup, sizeof(NI));
					(*tracked).init->data[(*tracked).init->Sup.len-1] = id_326411;
				}
				LA33: ;
				i_326459 += ((NI) 1);
			} LA30: ;
		}
	}
}

N_NIMCALL(void, listeffects_325627)(Teffects324008* a) {
	{
		Tnode190813* e_325630;
		Tnode190813* HEX3Atmp_325633;
		e_325630 = 0;
		HEX3Atmp_325633 = 0;
		HEX3Atmp_325633 = (*a).exc;
		{
			NI i_325637;
			NI HEX3Atmp_325639;
			NI LOC3;
			NI res_325641;
			i_325637 = 0;
			HEX3Atmp_325639 = 0;
			LOC3 = 0;
			LOC3 = len_191097(HEX3Atmp_325633);
			HEX3Atmp_325639 = (LOC3 - 1);
			res_325641 = ((NI) 0);
			{
				while (1) {
					NimStringDesc* LOC6;
					if (!(res_325641 <= HEX3Atmp_325639)) goto LA5;
					i_325637 = res_325641;
					e_325630 = (*HEX3Atmp_325633).kindU.S6.sons->data[i_325637];
					LOC6 = 0;
					LOC6 = typetostring_220032((*e_325630).typ, ((NU8) 0));
					message_165188((*e_325630).info, ((NU16) 277), LOC6);
					res_325641 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	{
		Tnode190813* e_325631;
		Tnode190813* HEX3Atmp_325645;
		e_325631 = 0;
		HEX3Atmp_325645 = 0;
		HEX3Atmp_325645 = (*a).tags;
		{
			NI i_325649;
			NI HEX3Atmp_325651;
			NI LOC9;
			NI res_325653;
			i_325649 = 0;
			HEX3Atmp_325651 = 0;
			LOC9 = 0;
			LOC9 = len_191097(HEX3Atmp_325645);
			HEX3Atmp_325651 = (LOC9 - 1);
			res_325653 = ((NI) 0);
			{
				while (1) {
					NimStringDesc* LOC12;
					if (!(res_325653 <= HEX3Atmp_325651)) goto LA11;
					i_325649 = res_325653;
					e_325631 = (*HEX3Atmp_325645).kindU.S6.sons->data[i_325649];
					LOC12 = 0;
					LOC12 = typetostring_220032((*e_325631).typ, ((NU8) 0));
					message_165188((*e_325631).info, ((NU16) 277), LOC12);
					res_325653 += ((NI) 1);
				} LA11: ;
			}
		}
	}
}

N_NIMCALL(void, trackpragmastmt_326610)(Teffects324008* tracked, Tnode190813* n) {
	{
		NI i_326626;
		NI HEX3Atmp_326639;
		NI LOC2;
		NI res_326642;
		i_326626 = 0;
		HEX3Atmp_326639 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_326639 = (NI)(LOC2 - ((NI) 1));
		res_326642 = ((NI) 0);
		{
			while (1) {
				Tnode190813* it;
				if (!(res_326642 <= HEX3Atmp_326639)) goto LA4;
				i_326626 = res_326642;
				it = (*n).kindU.S6.sons->data[i_326626];
				{
					NU16 LOC7;
					LOC7 = 0;
					LOC7 = whichpragma_219673(it);
					if (!(LOC7 == ((NU16) 158))) goto LA8;
					listeffects_325627(tracked);
				}
				LA8: ;
				res_326642 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(NIM_BOOL, breaksblock_327395)(Tnode190813* n) {
	NIM_BOOL result;
{	result = 0;
	switch ((*n).kind) {
	case ((NU8) 115):
	case ((NU8) 126):
	{
		{
			Tnode190813* c_327399;
			c_327399 = 0;
			{
				NI i_327427;
				NI HEX3Atmp_327429;
				NI LOC4;
				NI res_327431;
				i_327427 = 0;
				HEX3Atmp_327429 = 0;
				LOC4 = 0;
				LOC4 = len_191097(n);
				HEX3Atmp_327429 = (LOC4 - 1);
				res_327431 = ((NI) 0);
				{
					while (1) {
						if (!(res_327431 <= HEX3Atmp_327429)) goto LA6;
						i_327427 = res_327431;
						c_327399 = (*n).kindU.S6.sons->data[i_327427];
						{
							NIM_BOOL LOC9;
							LOC9 = 0;
							LOC9 = breaksblock_327395(c_327399);
							if (!LOC9) goto LA10;
							result = NIM_TRUE;
							goto BeforeRet;
						}
						LA10: ;
						res_327431 += ((NI) 1);
					} LA6: ;
				}
			}
		}
	}
	break;
	case ((NU8) 110):
	case ((NU8) 109):
	case ((NU8) 108):
	{
		result = NIM_TRUE;
		goto BeforeRet;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	case ((NU8) 32):
	{
		{
			NIM_BOOL LOC16;
			LOC16 = 0;
			LOC16 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
			if (!(LOC16)) goto LA17;
			LOC16 = (((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags &(1<<((((NU8) 14))&31)))!=0);
			LA17: ;
			if (!LOC16) goto LA18;
			result = NIM_TRUE;
			goto BeforeRet;
		}
		LA18: ;
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, trackcase_327452)(Teffects324008* tracked, Tnode190813* n) {
	NI oldstate;
	NI oldfacts;
	NIM_BOOL stringcase;
	Ttype190849* LOC1;
	NIM_BOOL interesting;
	NIM_BOOL LOC2;
	NIM_BOOL LOC3;
	TY224854* inter;
	NI tocover;
	track_325843(tracked, (*n).kindU.S6.sons->data[((NI) 0)]);
	oldstate = ((*tracked).init ? (*tracked).init->Sup.len : 0);
	oldfacts = ((*tracked).guards ? (*tracked).guards->Sup.len : 0);
	LOC1 = 0;
	LOC1 = skiptypes_194167((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106242013184));
	stringcase = ((*LOC1).kind >= ((NU8) 36) && (*LOC1).kind <= ((NU8) 39) || (*LOC1).kind == ((NU8) 28));
	LOC2 = 0;
	LOC3 = 0;
	LOC3 = !(stringcase);
	if (!(LOC3)) goto LA4;
	LOC3 = interestingcaseexpr_320234((*n).kindU.S6.sons->data[((NI) 0)]);
	LA4: ;
	LOC2 = LOC3;
	if (!(LOC2)) goto LA5;
	LOC2 = ((gnotes_164014 &(IL64(1)<<(((((NU16) 251)- 230))&IL64(63))))!=0);
	LA5: ;
	interesting = LOC2;
	inter = (TY224854*) newSeq((&NTI224854), 0);
	tocover = ((NI) 0);
	{
		NI i_327550;
		NI HEX3Atmp_327701;
		NI LOC7;
		NI res_327704;
		i_327550 = 0;
		HEX3Atmp_327701 = 0;
		LOC7 = 0;
		LOC7 = len_191097(n);
		HEX3Atmp_327701 = (LOC7 - 1);
		res_327704 = ((NI) 1);
		{
			while (1) {
				Tnode190813* branch;
				if (!(res_327704 <= HEX3Atmp_327701)) goto LA9;
				i_327550 = res_327704;
				branch = (*n).kindU.S6.sons->data[i_327550];
				(*tracked).init = (TY297595*) setLengthSeq(&((*tracked).init)->Sup, sizeof(NI), ((NI) (oldstate)));
				{
					if (!interesting) goto LA12;
					(*tracked).guards = (Tnodeseq190807*) setLengthSeq(&((*tracked).guards)->Sup, sizeof(Tnode190813*), ((NI) (oldfacts)));
					addcasebranchfacts_323537((&(*tracked).guards), n, i_327550);
				}
				LA12: ;
				{
					NI i_327593;
					NI HEX3Atmp_327686;
					NI LOC15;
					NI res_327689;
					i_327593 = 0;
					HEX3Atmp_327686 = 0;
					LOC15 = 0;
					LOC15 = len_191097(branch);
					HEX3Atmp_327686 = (LOC15 - 1);
					res_327689 = ((NI) 0);
					{
						while (1) {
							if (!(res_327689 <= HEX3Atmp_327686)) goto LA17;
							i_327593 = res_327689;
							track_325843(tracked, (*branch).kindU.S6.sons->data[i_327593]);
							res_327689 += ((NI) 1);
						} LA17: ;
					}
				}
				{
					Tnode190813* LOC20;
					NIM_BOOL LOC21;
					LOC20 = 0;
					LOC20 = lastson_193431(branch);
					LOC21 = 0;
					LOC21 = breaksblock_327395(LOC20);
					if (!!(LOC21)) goto LA22;
					tocover += ((NI) 1);
				}
				LA22: ;
				{
					NI i_327631;
					NI HEX3Atmp_327694;
					NI res_327697;
					i_327631 = 0;
					HEX3Atmp_327694 = 0;
					HEX3Atmp_327694 = (((*tracked).init ? (*tracked).init->Sup.len : 0) - 1);
					res_327697 = oldstate;
					{
						while (1) {
							if (!(res_327697 <= HEX3Atmp_327694)) goto LA26;
							i_327631 = res_327697;
							addtointersection_325039((&inter), (*tracked).init->data[i_327631]);
							res_327697 += ((NI) 1);
						} LA26: ;
					}
				}
				res_327704 += ((NI) 1);
			} LA9: ;
		}
	}
	(*tracked).init = (TY297595*) setLengthSeq(&((*tracked).init)->Sup, sizeof(NI), ((NI) (oldstate)));
	{
		NIM_BOOL LOC29;
		Tnode190813* LOC31;
		LOC29 = 0;
		LOC29 = !(stringcase);
		if (LOC29) goto LA30;
		LOC31 = 0;
		LOC31 = lastson_193431(n);
		LOC29 = ((*LOC31).kind == ((NU8) 88));
		LA30: ;
		if (!LOC29) goto LA32;
		{
			NI id_327661;
			NI count_327662;
			NI i_327711;
			NI L_327713;
			id_327661 = 0;
			count_327662 = 0;
			i_327711 = ((NI) 0);
			L_327713 = (inter ? inter->Sup.len : 0);
			{
				while (1) {
					if (!(i_327711 < L_327713)) goto LA36;
					id_327661 = inter->data[i_327711].Field0;
					count_327662 = inter->data[i_327711].Field1;
					{
						if (!(tocover <= count_327662)) goto LA39;
						(*tracked).init = (TY297595*) incrSeq(&((*tracked).init)->Sup, sizeof(NI));
						(*tracked).init->data[(*tracked).init->Sup.len-1] = id_327661;
					}
					LA39: ;
					i_327711 += ((NI) 1);
				} LA36: ;
			}
		}
	}
	LA32: ;
	(*tracked).guards = (Tnodeseq190807*) setLengthSeq(&((*tracked).guards)->Sup, sizeof(Tnode190813*), ((NI) (oldfacts)));
}

N_NIMCALL(void, trackif_327756)(Teffects324008* tracked, Tnode190813* n) {
	NI oldfacts;
	NI oldstate;
	TY224854* inter;
	NI tocover;
	track_325843(tracked, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)]);
	oldfacts = ((*tracked).guards ? (*tracked).guards->Sup.len : 0);
	addfact_321220((&(*tracked).guards), (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)]);
	oldstate = ((*tracked).init ? (*tracked).init->Sup.len : 0);
	inter = (TY224854*) newSeq((&NTI224854), 0);
	tocover = ((NI) 0);
	track_325843(tracked, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)]);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = breaksblock_327395((*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)]);
		if (!!(LOC3)) goto LA4;
		tocover += ((NI) 1);
	}
	LA4: ;
	{
		NI i_327840;
		NI HEX3Atmp_328004;
		NI res_328007;
		i_327840 = 0;
		HEX3Atmp_328004 = 0;
		HEX3Atmp_328004 = (((*tracked).init ? (*tracked).init->Sup.len : 0) - 1);
		res_328007 = oldstate;
		{
			while (1) {
				if (!(res_328007 <= HEX3Atmp_328004)) goto LA8;
				i_327840 = res_328007;
				addtointersection_325039((&inter), (*tracked).init->data[i_327840]);
				res_328007 += ((NI) 1);
			} LA8: ;
		}
	}
	{
		NI i_327861;
		NI HEX3Atmp_328036;
		NI LOC10;
		NI res_328039;
		i_327861 = 0;
		HEX3Atmp_328036 = 0;
		LOC10 = 0;
		LOC10 = len_191097(n);
		HEX3Atmp_328036 = (LOC10 - 1);
		res_328039 = ((NI) 1);
		{
			while (1) {
				Tnode190813* branch;
				if (!(res_328039 <= HEX3Atmp_328036)) goto LA12;
				i_327861 = res_328039;
				branch = (*n).kindU.S6.sons->data[i_327861];
				(*tracked).guards = (Tnodeseq190807*) setLengthSeq(&((*tracked).guards)->Sup, sizeof(Tnode190813*), ((NI) (oldfacts)));
				{
					NI j_327884;
					NI HEX3Atmp_328013;
					NI res_328016;
					j_327884 = 0;
					HEX3Atmp_328013 = 0;
					HEX3Atmp_328013 = (NI)(i_327861 - ((NI) 1));
					res_328016 = ((NI) 0);
					{
						while (1) {
							if (!(res_328016 <= HEX3Atmp_328013)) goto LA15;
							j_327884 = res_328016;
							addfactneg_321254((&(*tracked).guards), (*(*n).kindU.S6.sons->data[j_327884]).kindU.S6.sons->data[((NI) 0)]);
							res_328016 += ((NI) 1);
						} LA15: ;
					}
				}
				{
					NI LOC18;
					LOC18 = 0;
					LOC18 = len_191097(branch);
					if (!(((NI) 1) < LOC18)) goto LA19;
					addfact_321220((&(*tracked).guards), (*branch).kindU.S6.sons->data[((NI) 0)]);
				}
				LA19: ;
				(*tracked).init = (TY297595*) setLengthSeq(&((*tracked).init)->Sup, sizeof(NI), ((NI) (oldstate)));
				{
					NI i_327920;
					NI HEX3Atmp_328021;
					NI LOC22;
					NI res_328024;
					i_327920 = 0;
					HEX3Atmp_328021 = 0;
					LOC22 = 0;
					LOC22 = len_191097(branch);
					HEX3Atmp_328021 = (LOC22 - 1);
					res_328024 = ((NI) 0);
					{
						while (1) {
							if (!(res_328024 <= HEX3Atmp_328021)) goto LA24;
							i_327920 = res_328024;
							track_325843(tracked, (*branch).kindU.S6.sons->data[i_327920]);
							res_328024 += ((NI) 1);
						} LA24: ;
					}
				}
				{
					Tnode190813* LOC27;
					NIM_BOOL LOC28;
					LOC27 = 0;
					LOC27 = lastson_193431(branch);
					LOC28 = 0;
					LOC28 = breaksblock_327395(LOC27);
					if (!!(LOC28)) goto LA29;
					tocover += ((NI) 1);
				}
				LA29: ;
				{
					NI i_327958;
					NI HEX3Atmp_328029;
					NI res_328032;
					i_327958 = 0;
					HEX3Atmp_328029 = 0;
					HEX3Atmp_328029 = (((*tracked).init ? (*tracked).init->Sup.len : 0) - 1);
					res_328032 = oldstate;
					{
						while (1) {
							if (!(res_328032 <= HEX3Atmp_328029)) goto LA33;
							i_327958 = res_328032;
							addtointersection_325039((&inter), (*tracked).init->data[i_327958]);
							res_328032 += ((NI) 1);
						} LA33: ;
					}
				}
				res_328039 += ((NI) 1);
			} LA12: ;
		}
	}
	(*tracked).init = (TY297595*) setLengthSeq(&((*tracked).init)->Sup, sizeof(NI), ((NI) (oldstate)));
	{
		Tnode190813* LOC36;
		NI LOC37;
		LOC36 = 0;
		LOC36 = lastson_193431(n);
		LOC37 = 0;
		LOC37 = len_191097(LOC36);
		if (!(LOC37 == ((NI) 1))) goto LA38;
		{
			NI id_327980;
			NI count_327981;
			NI i_328046;
			NI L_328048;
			id_327980 = 0;
			count_327981 = 0;
			i_328046 = ((NI) 0);
			L_328048 = (inter ? inter->Sup.len : 0);
			{
				while (1) {
					if (!(i_328046 < L_328048)) goto LA42;
					id_327980 = inter->data[i_328046].Field0;
					count_327981 = inter->data[i_328046].Field1;
					{
						if (!(tocover <= count_327981)) goto LA45;
						(*tracked).init = (TY297595*) incrSeq(&((*tracked).init)->Sup, sizeof(NI));
						(*tracked).init->data[(*tracked).init->Sup.len-1] = id_327980;
					}
					LA45: ;
					i_328046 += ((NI) 1);
				} LA42: ;
			}
		}
	}
	LA38: ;
	(*tracked).guards = (Tnodeseq190807*) setLengthSeq(&((*tracked).guards)->Sup, sizeof(Tnode190813*), ((NI) (oldfacts)));
}

N_NIMCALL(void, trackblock_328109)(Teffects324008* tracked, Tnode190813* n) {
	{
		NI oldstate;
		if (!((*n).kind == ((NU8) 115) || (*n).kind == ((NU8) 126))) goto LA3;
		oldstate = ((NI) -1);
		{
			NI i_328144;
			NI HEX3Atmp_328166;
			NI LOC6;
			NI res_328169;
			i_328144 = 0;
			HEX3Atmp_328166 = 0;
			LOC6 = 0;
			LOC6 = len_191097(n);
			HEX3Atmp_328166 = (LOC6 - 1);
			res_328169 = ((NI) 0);
			{
				while (1) {
					if (!(res_328169 <= HEX3Atmp_328166)) goto LA8;
					i_328144 = res_328169;
					{
						NIM_BOOL LOC11;
						LOC11 = 0;
						LOC11 = hassubnodewith_195439((*n).kindU.S6.sons->data[i_328144], ((NU8) 110));
						if (!LOC11) goto LA12;
						{
							if (!(oldstate < ((NI) 0))) goto LA16;
							oldstate = ((*tracked).init ? (*tracked).init->Sup.len : 0);
						}
						LA16: ;
					}
					LA12: ;
					track_325843(tracked, (*n).kindU.S6.sons->data[i_328144]);
					res_328169 += ((NI) 1);
				} LA8: ;
			}
		}
		{
			if (!(((NI) 0) < oldstate)) goto LA20;
			(*tracked).init = (TY297595*) setLengthSeq(&((*tracked).init)->Sup, sizeof(NI), ((NI) (oldstate)));
		}
		LA20: ;
	}
	goto LA1;
	LA3: ;
	{
		track_325843(tracked, n);
	}
	LA1: ;
}

N_NIMCALL(NIM_BOOL, istrue_328188)(Tnode190813* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	NIM_BOOL LOC3;
	NIM_BOOL LOC7;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC3 = 0;
	LOC3 = ((*n).kind == ((NU8) 3));
	if (!(LOC3)) goto LA4;
	LOC3 = ((*(*n).kindU.S4.sym).kind == ((NU8) 20));
	LA4: ;
	LOC2 = LOC3;
	if (!(LOC2)) goto LA5;
	LOC2 = !(((*(*n).kindU.S4.sym).position == ((NI) 0)));
	LA5: ;
	LOC1 = LOC2;
	if (LOC1) goto LA6;
	LOC7 = 0;
	LOC7 = ((*n).kind == ((NU8) 6));
	if (!(LOC7)) goto LA8;
	LOC7 = !(((*n).kindU.S1.intval == IL64(0)));
	LA8: ;
	LOC1 = LOC7;
	LA6: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NI16, getlocklevel_324114)(Ttype190849* t_324116) {
	NI16 result;
	Ttype190849* t;
	result = 0;
	t = t_324116;
	{
		NIM_BOOL LOC3;
		NI LOC5;
		LOC3 = 0;
		LOC3 = ((*t).kind == ((NU8) 11));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = len_193377(t);
		LOC3 = (LOC5 == ((NI) 3));
		LA4: ;
		if (!LOC3) goto LA6;
		t = (*t).sons->data[((NI) 1)];
	}
	LA6: ;
	{
		NIM_BOOL LOC10;
		NIM_BOOL LOC11;
		LOC10 = 0;
		LOC11 = 0;
		LOC11 = ((*t).kind == ((NU8) 59));
		if (!(LOC11)) goto LA12;
		LOC11 = !(((*t).n == NIM_NIL));
		LA12: ;
		LOC10 = LOC11;
		if (!(LOC10)) goto LA13;
		LOC10 = ((*(*t).n).kind >= ((NU8) 5) && (*(*t).n).kind <= ((NU8) 10));
		LA13: ;
		if (!LOC10) goto LA14;
		result = ((NI16) ((*(*t).n).kindU.S1.intval));
	}
	LA14: ;
	return result;
}

N_NIMCALL(void, locklocations_324167)(Teffects324008* a, Tnode190813* pragma) {
	NI16 firstll;
{	{
		if (!!(((*pragma).kind == ((NU8) 34)))) goto LA3;
		localerror_165155((*pragma).info, ((NU16) 4), ((NimStringDesc*) &TMP3336));
		goto BeforeRet;
	}
	LA3: ;
	firstll = ((NI16) -1);
	{
		Tnode190813* x_324181;
		Tnode190813* HEX3Atmp_324200;
		x_324181 = 0;
		HEX3Atmp_324200 = 0;
		HEX3Atmp_324200 = HEX5BHEX5D_191244(pragma, ((NI) 1));
		{
			NI i_324204;
			NI HEX3Atmp_324206;
			NI LOC7;
			NI res_324208;
			i_324204 = 0;
			HEX3Atmp_324206 = 0;
			LOC7 = 0;
			LOC7 = len_191097(HEX3Atmp_324200);
			HEX3Atmp_324206 = (LOC7 - 1);
			res_324208 = ((NI) 0);
			{
				while (1) {
					NI16 thisll;
					if (!(res_324208 <= HEX3Atmp_324206)) goto LA9;
					i_324204 = res_324208;
					x_324181 = (*HEX3Atmp_324200).kindU.S6.sons->data[i_324204];
					thisll = getlocklevel_324114((*x_324181).typ);
					{
						if (!!((thisll == ((NI16) 0)))) goto LA12;
						{
							NIM_BOOL LOC16;
							NimStringDesc* LOC20;
							NimStringDesc* LOC21;
							LOC16 = 0;
							LOC16 = (thisll < ((NI16) 0));
							if (LOC16) goto LA17;
							LOC16 = (((NI16) 1000) < thisll);
							LA17: ;
							if (!LOC16) goto LA18;
							LOC20 = 0;
							LOC21 = 0;
							LOC21 = HEX24_193096(thisll);
							LOC20 = rawNewString(LOC21->Sup.len + 20);
appendString(LOC20, ((NimStringDesc*) &TMP3337));
appendString(LOC20, LOC21);
							localerror_165166((*x_324181).info, LOC20);
						}
						goto LA14;
						LA18: ;
						{
							if (!(firstll < ((NI16) 0))) goto LA23;
							firstll = thisll;
						}
						goto LA14;
						LA23: ;
						{
							if (!!((firstll == thisll))) goto LA26;
							localerror_165155((*x_324181).info, ((NU16) 4), ((NimStringDesc*) &TMP3338));
						}
						goto LA14;
						LA26: ;
						LA14: ;
						(*a).maxlocklevel = (((*a).maxlocklevel >= firstll) ? (*a).maxlocklevel : firstll);
					}
					LA12: ;
					(*a).locked = (Tnodeseq190807*) incrSeq(&((*a).locked)->Sup, sizeof(Tnode190813*));
					asgnRefNoCycle((void**) (&(*a).locked->data[(*a).locked->Sup.len-1]), x_324181);
					res_324208 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	{
		NIM_BOOL LOC30;
		LOC30 = 0;
		LOC30 = (((NI16) 0) <= firstll);
		if (!(LOC30)) goto LA31;
		LOC30 = !((firstll == (*a).currlocklevel));
		LA31: ;
		if (!LOC30) goto LA32;
		{
			NIM_BOOL LOC36;
			LOC36 = 0;
			LOC36 = (((NI16) 0) < (*a).currlocklevel);
			if (!(LOC36)) goto LA37;
			LOC36 = ((*a).currlocklevel <= firstll);
			LA37: ;
			if (!LOC36) goto LA38;
			localerror_165155((*pragma).info, ((NU16) 4), ((NimStringDesc*) &TMP3339));
		}
		LA38: ;
		(*a).currlocklevel = firstll;
	}
	LA32: ;
	}BeforeRet: ;
}

N_NIMCALL(void, track_325843)(Teffects324008* tracked, Tnode190813* n) {
	switch ((*n).kind) {
	case ((NU8) 3):
	{
		usevar_324829(tracked, n);
	}
	break;
	case ((NU8) 108):
	{
		(*(*n).kindU.S6.sons->data[((NI) 0)]).info = (*n).info;
		addeffect_325257(tracked, (*n).kindU.S6.sons->data[((NI) 0)], NIM_FALSE);
		{
			NI i_328317;
			NI HEX3Atmp_328860;
			NI LOC4;
			NI res_328863;
			i_328317 = 0;
			HEX3Atmp_328860 = 0;
			LOC4 = 0;
			LOC4 = safelen_191125(n);
			HEX3Atmp_328860 = (LOC4 - 1);
			res_328863 = ((NI) 0);
			{
				while (1) {
					if (!(res_328863 <= HEX3Atmp_328860)) goto LA6;
					i_328317 = res_328863;
					track_325843(tracked, (*n).kindU.S6.sons->data[i_328317]);
					res_328863 += ((NI) 1);
				} LA6: ;
			}
		}
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	case ((NU8) 32):
	{
		Tnode190813* a;
		Ttype190849* op;
		a = (*n).kindU.S6.sons->data[((NI) 0)];
		op = (*a).typ;
		{
			NIM_BOOL LOC10;
			NIM_BOOL LOC11;
			Tnode190813* effectlist;
			LOC10 = 0;
			LOC11 = 0;
			LOC11 = !((op == NIM_NIL));
			if (!(LOC11)) goto LA12;
			LOC11 = ((*op).kind == ((NU8) 25));
			LA12: ;
			LOC10 = LOC11;
			if (!(LOC10)) goto LA13;
			LOC10 = ((*(*(*op).n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 152));
			LA13: ;
			if (!LOC10) goto LA14;
			{
				NI16 LOC24;
				if (!((*a).kind == ((NU8) 3))) goto LA18;
				{
					if (!((*a).kindU.S4.sym == (*tracked).owner)) goto LA22;
					(*tracked).isrecursive = NIM_TRUE;
				}
				LA22: ;
				LOC24 = 0;
				LOC24 = getlocklevel_326947((*a).kindU.S4.sym);
				mergelocklevels_326997(tracked, n, LOC24);
			}
			goto LA16;
			LA18: ;
			{
				mergelocklevels_326997(tracked, n, (*op).locklevel);
			}
			LA16: ;
			effectlist = (*(*op).n).kindU.S6.sons->data[((NI) 0)];
			{
				NIM_BOOL LOC28;
				LOC28 = 0;
				LOC28 = ((*a).kind == ((NU8) 3));
				if (!(LOC28)) goto LA29;
				LOC28 = ((*(*a).kindU.S4.sym).kind == ((NU8) 13));
				LA29: ;
				if (!LOC28) goto LA30;
				propagateeffects_327012(tracked, n, (*a).kindU.S4.sym);
			}
			goto LA26;
			LA30: ;
			{
				NI LOC33;
				LOC33 = 0;
				LOC33 = len_191097(effectlist);
				if (!(LOC33 == ((NI) 0))) goto LA34;
				{
					NIM_BOOL LOC38;
					LOC38 = 0;
					LOC38 = isforwardedproc_326579(a);
					if (!LOC38) goto LA39;
					propagateeffects_327012(tracked, n, (*a).kindU.S4.sym);
				}
				goto LA36;
				LA39: ;
				{
					NIM_BOOL LOC42;
					LOC42 = 0;
					LOC42 = isindirectcall_326513(a, (*tracked).owner);
					if (!LOC42) goto LA43;
					assumetheworst_327177(tracked, n, op);
				}
				goto LA36;
				LA43: ;
				LA36: ;
			}
			goto LA26;
			LA34: ;
			{
				mergeeffects_325515(tracked, (*effectlist).kindU.S6.sons->data[((NI) 0)], n);
				mergetags_325571(tracked, (*effectlist).kindU.S6.sons->data[((NI) 3)], n);
				{
					NIM_BOOL LOC48;
					NIM_BOOL LOC50;
					LOC48 = 0;
					LOC48 = ((130 & (*op).flags) == 0);
					if (!(LOC48)) goto LA49;
					LOC50 = 0;
					LOC50 = importedfromc_326916(a);
					LOC48 = !(LOC50);
					LA49: ;
					if (!LOC48) goto LA51;
					{
						NIM_BOOL LOC55;
						LOC55 = 0;
						LOC55 = ((*a).kind == ((NU8) 3));
						if (!(LOC55)) goto LA56;
						LOC55 = ((*a).kindU.S4.sym == (*tracked).owner);
						LA56: ;
						if (!!(LOC55)) goto LA57;
						warnaboutgcunsafe_324693(n);
						markgcunsafe_324723(tracked, a);
					}
					LA57: ;
				}
				LA51: ;
			}
			LA26: ;
		}
		LA14: ;
		{
			NI i_328468;
			NI HEX3Atmp_328868;
			NI LOC60;
			NI res_328871;
			i_328468 = 0;
			HEX3Atmp_328868 = 0;
			LOC60 = 0;
			LOC60 = len_191097(n);
			HEX3Atmp_328868 = (LOC60 - 1);
			res_328871 = ((NI) 1);
			{
				while (1) {
					Ttype190849* LOC63;
					if (!(res_328871 <= HEX3Atmp_328868)) goto LA62;
					i_328468 = res_328871;
					LOC63 = 0;
					LOC63 = paramtype_328229(op, i_328468);
					trackoperand_327232(tracked, (*n).kindU.S6.sons->data[i_328468], LOC63);
					res_328871 += ((NI) 1);
				} LA62: ;
			}
		}
		{
			NIM_BOOL LOC66;
			LOC66 = 0;
			LOC66 = ((*a).kind == ((NU8) 3));
			if (!(LOC66)) goto LA67;
			LOC66 = ((*(*a).kindU.S4.sym).magic == ((NU16) 26) || (*(*a).kindU.S4.sym).magic == ((NU16) 27) || (*(*a).kindU.S4.sym).magic == ((NU16) 28));
			LA67: ;
			if (!LOC66) goto LA68;
			initvarvianew_324646(tracked, (*n).kindU.S6.sons->data[((NI) 1)]);
		}
		LA68: ;
		{
			NI i_328511;
			NI HEX3Atmp_328876;
			NI LOC71;
			NI res_328879;
			i_328511 = 0;
			HEX3Atmp_328876 = 0;
			LOC71 = 0;
			LOC71 = safelen_191125(n);
			HEX3Atmp_328876 = (LOC71 - 1);
			res_328879 = ((NI) 0);
			{
				while (1) {
					if (!(res_328879 <= HEX3Atmp_328876)) goto LA73;
					i_328511 = res_328879;
					track_325843(tracked, (*n).kindU.S6.sons->data[i_328511]);
					res_328879 += ((NI) 1);
				} LA73: ;
			}
		}
	}
	break;
	case ((NU8) 45):
	{
		guarddotaccess_324287(tracked, n);
		{
			NI i_328531;
			NI HEX3Atmp_328884;
			NI LOC76;
			NI res_328887;
			i_328531 = 0;
			HEX3Atmp_328884 = 0;
			LOC76 = 0;
			LOC76 = len_191097(n);
			HEX3Atmp_328884 = (LOC76 - 1);
			res_328887 = ((NI) 0);
			{
				while (1) {
					if (!(res_328887 <= HEX3Atmp_328884)) goto LA78;
					i_328531 = res_328887;
					track_325843(tracked, (*n).kindU.S6.sons->data[i_328531]);
					res_328887 += ((NI) 1);
				} LA78: ;
			}
		}
	}
	break;
	case ((NU8) 46):
	{
		track_325843(tracked, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			if (!((gnotes_164014 &(IL64(1)<<(((((NU16) 251)- 230))&IL64(63))))!=0)) goto LA82;
			checkfieldaccess_323809((*tracked).guards, n);
		}
		LA82: ;
	}
	break;
	case ((NU8) 106):
	{
		tracktrystmt_325850(tracked, n);
	}
	break;
	case ((NU8) 90):
	{
		trackpragmastmt_326610(tracked, n);
	}
	break;
	case ((NU8) 73):
	case ((NU8) 74):
	{
		track_325843(tracked, (*n).kindU.S6.sons->data[((NI) 1)]);
		initvar_324515(tracked, (*n).kindU.S6.sons->data[((NI) 0)], NIM_TRUE);
		invalidatefacts_321487((&(*tracked).guards), (*n).kindU.S6.sons->data[((NI) 0)]);
		track_325843(tracked, (*n).kindU.S6.sons->data[((NI) 0)]);
		addasgnfact_323486((&(*tracked).guards), (*n).kindU.S6.sons->data[((NI) 0)], (*n).kindU.S6.sons->data[((NI) 1)]);
		notnilcheck_327078(tracked, (*n).kindU.S6.sons->data[((NI) 1)], (*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		{
			Tnode190813* child_328601;
			child_328601 = 0;
			{
				NI i_328903;
				NI HEX3Atmp_328905;
				NI LOC90;
				NI res_328907;
				i_328903 = 0;
				HEX3Atmp_328905 = 0;
				LOC90 = 0;
				LOC90 = len_191097(n);
				HEX3Atmp_328905 = (LOC90 - 1);
				res_328907 = ((NI) 0);
				{
					while (1) {
						Tnode190813* last;
						if (!(res_328907 <= HEX3Atmp_328905)) goto LA92;
						i_328903 = res_328907;
						child_328601 = (*n).kindU.S6.sons->data[i_328903];
						last = lastson_193431(child_328601);
						{
							if (!!(((*last).kind == ((NU8) 1)))) goto LA95;
							track_325843(tracked, last);
						}
						LA95: ;
						{
							NIM_BOOL LOC99;
							LOC99 = 0;
							LOC99 = ((*child_328601).kind == ((NU8) 35));
							if (!(LOC99)) goto LA100;
							LOC99 = !(((*last).kind == ((NU8) 1)));
							LA100: ;
							if (!LOC99) goto LA101;
							{
								NI i_328641;
								NI HEX3Atmp_328893;
								NI LOC104;
								NI res_328896;
								i_328641 = 0;
								HEX3Atmp_328893 = 0;
								LOC104 = 0;
								LOC104 = len_191097(child_328601);
								HEX3Atmp_328893 = (NI)(LOC104 - ((NI) 3));
								res_328896 = ((NI) 0);
								{
									while (1) {
										if (!(res_328896 <= HEX3Atmp_328893)) goto LA106;
										i_328641 = res_328896;
										initvar_324515(tracked, (*child_328601).kindU.S6.sons->data[i_328641], NIM_FALSE);
										addasgnfact_323486((&(*tracked).guards), (*child_328601).kindU.S6.sons->data[i_328641], last);
										notnilcheck_327078(tracked, last, (*(*child_328601).kindU.S6.sons->data[i_328641]).typ);
										res_328896 += ((NI) 1);
									} LA106: ;
								}
							}
						}
						LA101: ;
						res_328907 += ((NI) 1);
					} LA92: ;
				}
			}
		}
	}
	break;
	case ((NU8) 97):
	{
		trackcase_327452(tracked, n);
	}
	break;
	case ((NU8) 92):
	case ((NU8) 48):
	{
		trackif_327756(tracked, n);
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	{
		trackblock_328109(tracked, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 96):
	{
		track_325843(tracked, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NIM_BOOL LOC113;
			LOC113 = 0;
			LOC113 = istrue_328188((*n).kindU.S6.sons->data[((NI) 0)]);
			if (!LOC113) goto LA114;
			trackblock_328109(tracked, (*n).kindU.S6.sons->data[((NI) 1)]);
		}
		goto LA111;
		LA114: ;
		{
			NI oldstate;
			NI oldfacts;
			oldstate = ((*tracked).init ? (*tracked).init->Sup.len : 0);
			oldfacts = ((*tracked).guards ? (*tracked).guards->Sup.len : 0);
			addfact_321220((&(*tracked).guards), (*n).kindU.S6.sons->data[((NI) 0)]);
			track_325843(tracked, (*n).kindU.S6.sons->data[((NI) 1)]);
			(*tracked).init = (TY297595*) setLengthSeq(&((*tracked).init)->Sup, sizeof(NI), ((NI) (oldstate)));
			(*tracked).guards = (Tnodeseq190807*) setLengthSeq(&((*tracked).guards)->Sup, sizeof(Tnode190813*), ((NI) (oldfacts)));
		}
		LA111: ;
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		NI oldstate;
		oldstate = ((*tracked).init ? (*tracked).init->Sup.len : 0);
		{
			NI i_328718;
			NI HEX3Atmp_328911;
			NI LOC119;
			NI res_328914;
			i_328718 = 0;
			HEX3Atmp_328911 = 0;
			LOC119 = 0;
			LOC119 = len_191097(n);
			HEX3Atmp_328911 = (LOC119 - 1);
			res_328914 = ((NI) 0);
			{
				while (1) {
					if (!(res_328914 <= HEX3Atmp_328911)) goto LA121;
					i_328718 = res_328914;
					track_325843(tracked, (*n).kindU.S6.sons->data[i_328718]);
					res_328914 += ((NI) 1);
				} LA121: ;
			}
		}
		(*tracked).init = (TY297595*) setLengthSeq(&((*tracked).init)->Sup, sizeof(NI), ((NI) (oldstate)));
	}
	break;
	case ((NU8) 38):
	{
		NI oldfacts;
		track_325843(tracked, (*n).kindU.S6.sons->data[((NI) 0)]);
		oldfacts = ((*tracked).guards ? (*tracked).guards->Sup.len : 0);
		{
			NI i_328758;
			NI HEX3Atmp_328919;
			NI LOC124;
			NI res_328922;
			i_328758 = 0;
			HEX3Atmp_328919 = 0;
			LOC124 = 0;
			LOC124 = len_191097(n);
			HEX3Atmp_328919 = (LOC124 - 1);
			res_328922 = ((NI) 1);
			{
				while (1) {
					Tnode190813* x;
					if (!(res_328922 <= HEX3Atmp_328919)) goto LA126;
					i_328758 = res_328922;
					x = (*n).kindU.S6.sons->data[i_328758];
					track_325843(tracked, x);
					{
						if (!(((*(*(*x).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags &(1<<((((NU8) 18))&31)))!=0)) goto LA129;
						adddiscriminantfact_323459((&(*tracked).guards), x);
					}
					LA129: ;
					res_328922 += ((NI) 1);
				} LA126: ;
			}
		}
		(*tracked).guards = (Tnodeseq190807*) setLengthSeq(&((*tracked).guards)->Sup, sizeof(Tnode190813*), ((NI) (oldfacts)));
	}
	break;
	case ((NU8) 91):
	{
		Tnode190813* pragmalist;
		NI oldlocked;
		NI16 oldlocklevel;
		Tnode190813* LOC141;
		pragmalist = (*n).kindU.S6.sons->data[((NI) 0)];
		oldlocked = ((*tracked).locked ? (*tracked).locked->Sup.len : 0);
		oldlocklevel = (*tracked).currlocklevel;
		{
			NI i_328816;
			NI HEX3Atmp_328927;
			NI LOC133;
			NI res_328930;
			i_328816 = 0;
			HEX3Atmp_328927 = 0;
			LOC133 = 0;
			LOC133 = len_191097(pragmalist);
			HEX3Atmp_328927 = (LOC133 - 1);
			res_328930 = ((NI) 0);
			{
				while (1) {
					if (!(res_328930 <= HEX3Atmp_328927)) goto LA135;
					i_328816 = res_328930;
					{
						NU16 LOC138;
						LOC138 = 0;
						LOC138 = whichpragma_219673((*pragmalist).kindU.S6.sons->data[i_328816]);
						if (!(LOC138 == ((NU16) 193))) goto LA139;
						locklocations_324167(tracked, (*pragmalist).kindU.S6.sons->data[i_328816]);
					}
					LA139: ;
					res_328930 += ((NI) 1);
				} LA135: ;
			}
		}
		LOC141 = 0;
		LOC141 = lastson_193431(n);
		track_325843(tracked, LOC141);
		(*tracked).locked = (Tnodeseq190807*) setLengthSeq(&((*tracked).locked)->Sup, sizeof(Tnode190813*), ((NI) (oldlocked)));
		(*tracked).currlocklevel = oldlocklevel;
	}
	break;
	case ((NU8) 98):
	case ((NU8) 79):
	case ((NU8) 81):
	case ((NU8) 80):
	case ((NU8) 84):
	case ((NU8) 82):
	case ((NU8) 83):
	case ((NU8) 51):
	case ((NU8) 52):
	{
	}
	break;
	default:
	{
		{
			NI i_328857;
			NI HEX3Atmp_328935;
			NI LOC145;
			NI res_328938;
			i_328857 = 0;
			HEX3Atmp_328935 = 0;
			LOC145 = 0;
			LOC145 = safelen_191125(n);
			HEX3Atmp_328935 = (LOC145 - 1);
			res_328938 = ((NI) 0);
			{
				while (1) {
					if (!(res_328938 <= HEX3Atmp_328935)) goto LA147;
					i_328857 = res_328938;
					track_325843(tracked, (*n).kindU.S6.sons->data[i_328857]);
					res_328938 += ((NI) 1);
				} LA147: ;
			}
		}
	}
	break;
	}
}

static N_INLINE(NIM_BOOL, isemptytype_195933)(Ttype190849* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = (t == NIM_NIL);
	if (LOC1) goto LA2;
	LOC1 = ((*t).kind == ((NU8) 3) || (*t).kind == ((NU8) 7));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, listgcunsafety_324755)(Tsym190843* s, NIM_BOOL onlywarning) {
	Tsym190843* u;
	u = (*s).kindU.S2.gcunsafetyreason;
	{
		NU16 msgkind;
		if (!!((u == NIM_NIL))) goto LA3;
		{
			if (!onlywarning) goto LA7;
			msgkind = ((NU16) 254);
		}
		goto LA5;
		LA7: ;
		{
			msgkind = ((NU16) 4);
		}
		LA5: ;
		{
			TY154965 LOC14;
			NimStringDesc* LOC15;
			if (!((768 &(1<<(((*u).kind)&31)))!=0)) goto LA12;
			memset((void*)LOC14, 0, sizeof(LOC14));
			LOC14[0] = copyString((*(*s).name).s);
			LOC14[1] = copyString((*(*u).name).s);
			LOC15 = 0;
			LOC15 = nsuFormatOpenArray(((NimStringDesc*) &TMP3341), LOC14, 2);
			message_165188((*s).info, msgkind, LOC15);
		}
		goto LA10;
		LA12: ;
		{
			TY154965 LOC19;
			NimStringDesc* LOC20;
			if (!((520192 &(1<<(((*u).kind)&31)))!=0)) goto LA17;
			listgcunsafety_324755(u, NIM_TRUE);
			memset((void*)LOC19, 0, sizeof(LOC19));
			LOC19[0] = copyString((*(*s).name).s);
			LOC19[1] = copyString((*(*u).name).s);
			LOC20 = 0;
			LOC20 = nsuFormatOpenArray(((NimStringDesc*) &TMP3342), LOC19, 2);
			message_165188((*s).info, msgkind, LOC20);
		}
		goto LA10;
		LA17: ;
		{
			NimStringDesc* LOC27;
			{
				NimStringDesc* LOC26;
				if (!!(((*u).kind == ((NU8) 0)))) goto LA24;
				LOC26 = 0;
				LOC26 = HEX24_165306(TMP3343);
				internalerror_165218(LOC26);
			}
			LA24: ;
			LOC27 = 0;
			LOC27 = nsuFormatSingleElem(((NimStringDesc*) &TMP3344), (*(*s).name).s);
			message_165188((*u).info, msgkind, LOC27);
		}
		LA10: ;
	}
	LA3: ;
}

N_NIMCALL(void, trackproc_329581)(Tsym190843* s, Tnode190813* body) {
	Tnode190813* effects;
	Teffects324008 t;
	Tnode190813* p;
	Tnode190813* raisesspec;
	Tnode190813* tagsspec;
{	effects = (*(*(*s).typ).n).kindU.S6.sons->data[((NI) 0)];
	{
		NimStringDesc* LOC5;
		if (!!(((*effects).kind == ((NU8) 152)))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_165306(TMP3313);
		internalerror_165218(LOC5);
	}
	LA3: ;
	{
		if (!(((*s).flags &(1<<((((NU8) 4))&31)))!=0)) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	{
		NI LOC12;
		LOC12 = 0;
		LOC12 = len_191097(effects);
		if (!(LOC12 == ((NI) 4))) goto LA13;
		goto BeforeRet;
	}
	LA13: ;
	memset((void*)(&t), 0, sizeof(t));
	initeffects_329504(effects, s, (&t));
	track_325843((&t), body);
	{
		NIM_BOOL LOC17;
		NIM_BOOL LOC18;
		NIM_BOOL LOC19;
		Tsym190843* res;
		LOC17 = 0;
		LOC18 = 0;
		LOC19 = 0;
		LOC19 = isemptytype_195933((*(*s).typ).sons->data[((NI) 0)]);
		LOC18 = !(LOC19);
		if (!(LOC18)) goto LA20;
		LOC18 = (((*(*(*s).typ).sons->data[((NI) 0)]).flags &(1<<((((NU8) 17))&31)))!=0);
		LA20: ;
		LOC17 = LOC18;
		if (!(LOC17)) goto LA21;
		LOC17 = ((77824 &(1<<(((*s).kind)&31)))!=0);
		LA21: ;
		if (!LOC17) goto LA22;
		res = (*(*(*s).ast).kindU.S6.sons->data[((NI) 7)]).kindU.S4.sym;
		{
			NIM_BOOL LOC26;
			LOC26 = 0;
			LOC26 = contains_324838(t.init->data, t.init->Sup.len, (*res).Sup.id);
			if (!!(LOC26)) goto LA27;
			message_165188((*body).info, ((NU16) 250), ((NimStringDesc*) &TMP3340));
		}
		LA27: ;
	}
	LA22: ;
	p = (*(*s).ast).kindU.S6.sons->data[((NI) 4)];
	raisesspec = effectspec_326661(p, ((NU16) 154));
	{
		if (!!(raisesspec == 0)) goto LA31;
		checkraisesspec_329068(raisesspec, t.exc, ((NimStringDesc*) &TMP3267), NIM_TRUE, subtyperelation_329041);
		asgnRefNoCycle((void**) (&(*effects).kindU.S6.sons->data[((NI) 0)]), raisesspec);
	}
	LA31: ;
	tagsspec = effectspec_326661(p, ((NU16) 159));
	{
		if (!!(tagsspec == 0)) goto LA35;
		checkraisesspec_329068(tagsspec, t.tags, ((NimStringDesc*) &TMP3271), NIM_FALSE, subtyperelation_329041);
		asgnRefNoCycle((void**) (&(*effects).kindU.S6.sons->data[((NI) 3)]), tagsspec);
	}
	LA35: ;
	{
		NIM_BOOL LOC39;
		LOC39 = 0;
		LOC39 = (((*s).flags &(1<<((((NU8) 22))&31)))!=0);
		if (!(LOC39)) goto LA40;
		LOC39 = t.gcunsafe;
		LA40: ;
		if (!LOC39) goto LA41;
		{
			NIM_BOOL LOC45;
			LOC45 = 0;
			LOC45 = ((gglobaloptions_154128 &(1<<((((NU8) 21))&31)))!=0);
			if (!(LOC45)) goto LA46;
			LOC45 = ((gglobaloptions_154128 &(1<<((((NU8) 23))&31)))!=0);
			LA46: ;
			if (!LOC45) goto LA47;
			listgcunsafety_324755(s, NIM_FALSE);
		}
		goto LA43;
		LA47: ;
		{
			listgcunsafety_324755(s, NIM_TRUE);
		}
		LA43: ;
	}
	LA41: ;
	{
		if (!!(t.gcunsafe)) goto LA52;
		(*(*s).typ).flags |= ((NI32)1)<<((((NU8) 7))%(sizeof(NI32)*8));
	}
	LA52: ;
	{
		if (!((*(*s).typ).locklevel == ((NI16) -1))) goto LA56;
		(*(*s).typ).locklevel = t.maxlocklevel;
	}
	goto LA54;
	LA56: ;
	{
		TY154965 LOC61;
		NimStringDesc* LOC62;
		if (!((*(*s).typ).locklevel < t.maxlocklevel)) goto LA59;
		memset((void*)LOC61, 0, sizeof(LOC61));
		LOC61[0] = HEX24_193096((*(*s).typ).locklevel);
		LOC61[1] = HEX24_193096(t.maxlocklevel);
		LOC62 = 0;
		LOC62 = nsuFormatOpenArray(((NimStringDesc*) &TMP3345), LOC61, 2);
		message_165188((*s).info, ((NU16) 258), LOC62);
	}
	goto LA54;
	LA59: ;
	LA54: ;
	}BeforeRet: ;
}

N_NIMCALL(void, seteffectsforproctype_329412)(Ttype190849* t, Tnode190813* n) {
	Tnode190813* effects;
	Tnode190813* raisesspec;
	Tnode190813* tagsspec;
	effects = (*(*t).n).kindU.S6.sons->data[((NI) 0)];
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		LOC3 = 0;
		LOC3 = ((*t).kind == ((NU8) 25));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*effects).kind == ((NU8) 152));
		LA4: ;
		if (!!(LOC3)) goto LA5;
		LOC7 = 0;
		LOC7 = HEX24_165306(TMP3384);
		internalerror_165218(LOC7);
	}
	LA5: ;
	raisesspec = effectspec_326661(n, ((NU16) 154));
	tagsspec = effectspec_326661(n, ((NU16) 159));
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = !(raisesspec == 0);
		if (LOC10) goto LA11;
		LOC10 = !(tagsspec == 0);
		LA11: ;
		if (!LOC10) goto LA12;
		{
			NI LOC16;
			NimStringDesc* LOC19;
			LOC16 = 0;
			LOC16 = len_191097(effects);
			if (!!((LOC16 == ((NI) 0)))) goto LA17;
			LOC19 = 0;
			LOC19 = HEX24_165306(TMP3385);
			internalerror_165218(LOC19);
		}
		LA17: ;
		if ((*effects).kindU.S6.sons) nimGCunrefNoCycle((*effects).kindU.S6.sons);
		(*effects).kindU.S6.sons = (Tnodeseq190807*) newSeqRC1((&NTI190807), ((NI) 4));
		{
			if (!!(raisesspec == 0)) goto LA22;
			asgnRefNoCycle((void**) (&(*effects).kindU.S6.sons->data[((NI) 0)]), raisesspec);
		}
		LA22: ;
		{
			if (!!(tagsspec == 0)) goto LA26;
			asgnRefNoCycle((void**) (&(*effects).kindU.S6.sons->data[((NI) 3)]), tagsspec);
		}
		LA26: ;
	}
	LA12: ;
}

N_NIMCALL(void, tracktoplevelstmt_329737)(Tsym190843* module, Tnode190813* n) {
	Tnode190813* effects;
	Tnodeseq190807* LOC5;
	Teffects324008 t;
{	{
		if (!((*n).kind == ((NU8) 90) || (*n).kind == ((NU8) 82) || (*n).kind == ((NU8) 83) || (*n).kind == ((NU8) 79) || (*n).kind == ((NU8) 98) || (*n).kind == ((NU8) 81) || (*n).kind == ((NU8) 80) || (*n).kind == ((NU8) 84))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = (Tnodeseq190807*) newSeq((&NTI190807), 0);
	effects = newnode_192607(((NU8) 152), (*n).info, LOC5, NIM_NIL);
	memset((void*)(&t), 0, sizeof(t));
	initeffects_329504(effects, module, (&t));
	t.istoplevel = NIM_TRUE;
	track_325843((&t), n);
	}BeforeRet: ;
}

N_NIMCALL(Tnode190813*, documenteffect_326736)(Tnode190813* n, Tnode190813* x, NU16 effecttype, NI idx) {
	Tnode190813* result;
	Tnode190813* spec;
{	result = 0;
	spec = effectspec_326661(x, effecttype);
	{
		Tsym190843* s;
		Tnode190813* actual;
		Tnode190813* real;
		Tnode190813* effects;
		NI LOC10;
		Tnodeseq190807* LOC23;
		TY245103 LOC24;
		Tident167021* LOC25;
		if (!spec == 0) goto LA3;
		s = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		actual = (*(*(*s).typ).n).kindU.S6.sons->data[((NI) 0)];
		{
			NI LOC7;
			LOC7 = 0;
			LOC7 = len_191097(actual);
			if (!!((LOC7 == ((NI) 4)))) goto LA8;
			goto BeforeRet;
		}
		LA8: ;
		real = (*actual).kindU.S6.sons->data[idx];
		LOC10 = 0;
		LOC10 = len_191097(real);
		effects = newnodei_192407(((NU8) 41), (*n).info, LOC10);
		{
			NI i_326782;
			NI HEX3Atmp_326800;
			NI LOC12;
			NI res_326803;
			i_326782 = 0;
			HEX3Atmp_326800 = 0;
			LOC12 = 0;
			LOC12 = len_191097(real);
			HEX3Atmp_326800 = (LOC12 - 1);
			res_326803 = ((NI) 0);
			{
				while (1) {
					NimStringDesc* t;
					Tnode190813* LOC15;
					Tident167021* LOC21;
					Tnode190813* LOC22;
					if (!(res_326803 <= HEX3Atmp_326800)) goto LA14;
					i_326782 = res_326803;
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_191244(real, i_326782);
					t = typetostring_220032((*LOC15).typ, ((NU8) 0));
					{
						NIM_BOOL LOC18;
						LOC18 = 0;
						LOC18 = nsuStartsWith(t, ((NimStringDesc*) &TMP4771));
						if (!LOC18) goto LA19;
						t = copyStr(t, ((NI) 4));
					}
					LA19: ;
					LOC21 = 0;
					LOC21 = getident_167463(t);
					asgnRefNoCycle((void**) (&(*effects).kindU.S6.sons->data[i_326782]), newidentnode_192313(LOC21, (*n).info));
					LOC22 = 0;
					LOC22 = HEX5BHEX5D_191244(real, i_326782);
					asgnRefNoCycle((void**) (&(*(*effects).kindU.S6.sons->data[i_326782]).typ), (*LOC22).typ);
					res_326803 += ((NI) 1);
				} LA14: ;
			}
		}
		LOC23 = 0;
		LOC23 = (Tnodeseq190807*) newSeq((&NTI190807), 2);
		memset((void*)LOC24, 0, sizeof(LOC24));
		LOC25 = 0;
		LOC25 = getident_167463(specialwords_172334[(effecttype)- 0]);
		LOC24[0] = newidentnode_192313(LOC25, (*n).info);
		LOC24[1] = effects;
		asgnRefNoCycle((void**) (&LOC23->data[0]), LOC24[0]);
		asgnRefNoCycle((void**) (&LOC23->data[1]), LOC24[1]);
		result = newnode_192607(((NU8) 34), (*n).info, LOC23, NIM_NIL);
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, documentraises_326822)(Tnode190813* n) {
	Tnode190813* pragmas;
	Tnode190813* p1;
	Tnode190813* p2;
{	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	pragmas = (*n).kindU.S6.sons->data[((NI) 4)];
	p1 = documenteffect_326736(n, pragmas, ((NU16) 154), ((NI) 0));
	p2 = documenteffect_326736(n, pragmas, ((NU16) 159), ((NI) 3));
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = !((p1 == NIM_NIL));
		if (LOC7) goto LA8;
		LOC7 = !((p2 == NIM_NIL));
		LA8: ;
		if (!LOC7) goto LA9;
		{
			if (!((*pragmas).kind == ((NU8) 1))) goto LA13;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 4)]), newnodei_192351(((NU8) 90), (*n).info));
		}
		LA13: ;
		{
			if (!!((p1 == NIM_NIL))) goto LA17;
			add_191164((*n).kindU.S6.sons->data[((NI) 4)], p1);
		}
		LA17: ;
		{
			if (!!((p2 == NIM_NIL))) goto LA21;
			add_191164((*n).kindU.S6.sons->data[((NI) 4)], p2);
		}
		LA21: ;
	}
	LA9: ;
	}BeforeRet: ;
}
NIM_EXTERNC N_NOINLINE(void, nimsrc_sempass2Init)(void) {
}

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

