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

#include <string.h>
typedef struct tnode188803 tnode188803;
typedef struct tsym188833 tsym188833;
typedef struct ttype188837 ttype188837;
typedef struct tlineinfo163527 tlineinfo163527;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tident167019 tident167019;
typedef struct tnodeseq188797 tnodeseq188797;
typedef struct ttransfcontext374010 ttransfcontext374010;
typedef struct tpasscontext246003 tpasscontext246003;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct ttranscon374008 ttranscon374008;
typedef struct tsymseq188805 tsymseq188805;
typedef struct tidnodetable188855 tidnodetable188855;
typedef struct tidnodepairseq188853 tidnodepairseq188853;
typedef struct tidnodepair188851 tidnodepair188851;
typedef struct tidobj167013 tidobj167013;
typedef struct tcell41090 tcell41090;
typedef struct tcellseq41106 tcellseq41106;
typedef struct tgcheap43016 tgcheap43016;
typedef struct tcellset41102 tcellset41102;
typedef struct tpagedesc41098 tpagedesc41098;
typedef struct tmemregion23410 tmemregion23410;
typedef struct tsmallchunk22638 tsmallchunk22638;
typedef struct tllchunk23404 tllchunk23404;
typedef struct tbigchunk22640 tbigchunk22640;
typedef struct tintset22615 tintset22615;
typedef struct ttrunk22611 ttrunk22611;
typedef struct tavlnode23408 tavlnode23408;
typedef struct tgcstat43014 tgcstat43014;
typedef struct ttypeseq188835 ttypeseq188835;
typedef struct tscope188827 tscope188827;
typedef struct TY188933 TY188933;
typedef struct tinstantiation188823 tinstantiation188823;
typedef struct tstrtable188807 tstrtable188807;
typedef struct tloc188817 tloc188817;
typedef struct trope145007 trope145007;
typedef struct tlib188821 tlib188821;
typedef struct TY79484 TY79484;
typedef struct tbasechunk22636 tbasechunk22636;
typedef struct tfreecell22628 tfreecell22628;
typedef struct TY188922 TY188922;
typedef struct tlistentry118017 tlistentry118017;
struct  tlineinfo163527  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tnode188803  {
ttype188837* Typ;
tlineinfo163527 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym188833* Sym;
} S4;
struct {tident167019* Ident;
} S5;
struct {tnodeseq188797* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
typedef N_NIMCALL_PTR(void, TY2289) (void* p, NI op);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY2289 marker;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tpasscontext246003  {
  TNimObject Sup;
NIM_BOOL Fromcache;
};
struct  ttransfcontext374010  {
  tpasscontext246003 Sup;
tsym188833* Module;
ttranscon374008* Transcon;
NI Inlining;
NI Nestedprocs;
tsymseq188805* Contsyms;
tsymseq188805* Breaksyms;
NI Inloop;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  tidnodepair188851  {
tidobj167013* Key;
tnode188803* Val;
};
struct  tidnodetable188855  {
NI Counter;
tidnodepairseq188853* Data;
};
struct  ttranscon374008  {
tidnodetable188855 Mapping;
tsym188833* Owner;
tnode188803* Forstmt;
tnode188803* Forloopbody;
NI Yieldstmts;
ttranscon374008* Next;
};
struct  tcell41090  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq41106  {
NI Len;
NI Cap;
tcell41090** D;
};
struct  tcellset41102  {
NI Counter;
NI Max;
tpagedesc41098* Head;
tpagedesc41098** Data;
};
typedef tsmallchunk22638* TY23422[512];
typedef ttrunk22611* ttrunkbuckets22613[256];
struct  tintset22615  {
ttrunkbuckets22613 Data;
};
struct  tmemregion23410  {
NI Minlargeobj;
NI Maxlargeobj;
TY23422 Freesmallchunks;
tllchunk23404* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk22640* Freechunkslist;
tintset22615 Chunkstarts;
tavlnode23408* Root;
tavlnode23408* Deleted;
tavlnode23408* Last;
tavlnode23408* Freeavlnodes;
};
struct  tgcstat43014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap43016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq41106 Zct;
tcellseq41106 Decstack;
tcellset41102 Cycleroots;
tcellseq41106 Tempstack;
NI Recgclock;
tmemregion23410 Region;
tgcstat43014 Stat;
};
struct  tidobj167013  {
  TNimObject Sup;
NI Id;
};
struct  tstrtable188807  {
NI Counter;
tsymseq188805* Data;
};
struct  tloc188817  {
NU8 K;
NU8 S;
NU8 Flags;
ttype188837* T;
trope145007* R;
trope145007* Heaproot;
NI A;
};
struct  tsym188833  {
  tidobj167013 Sup;
NU8 Kind;
union {
struct {ttypeseq188835* Typeinstcache;
tscope188827* Typscope;
} S1;
struct {TY188933* Procinstcache;
tscope188827* Scope;
} S2;
struct {TY188933* Usedgenerics;
tstrtable188807 Tab;
} S3;
} kindU;
NU16 Magic;
ttype188837* Typ;
tident167019* Name;
tlineinfo163527 Info;
tsym188833* Owner;
NU32 Flags;
tnode188803* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc188817 Loc;
tlib188821* Annex;
tnode188803* Constraint;
};
struct  ttype188837  {
  tidobj167013 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq188835* Sons;
tnode188803* N;
tsym188833* Destructor;
tsym188833* Owner;
tsym188833* Sym;
NI64 Size;
NI Align;
tloc188817 Loc;
};
struct TY79484 {
NimStringDesc* Field0;
NI Field1;
};
struct  tident167019  {
  tidobj167013 Sup;
NimStringDesc* S;
tident167019* Next;
NI H;
};
typedef NI TY22618[16];
struct  tpagedesc41098  {
tpagedesc41098* Next;
NI Key;
TY22618 Bits;
};
struct  tbasechunk22636  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk22638  {
  tbasechunk22636 Sup;
tsmallchunk22638* Next;
tsmallchunk22638* Prev;
tfreecell22628* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk23404  {
NI Size;
NI Acc;
tllchunk23404* Next;
};
struct  tbigchunk22640  {
  tbasechunk22636 Sup;
tbigchunk22640* Next;
tbigchunk22640* Prev;
NI Align;
NF Data;
};
struct  ttrunk22611  {
ttrunk22611* Next;
NI Key;
TY22618 Bits;
};
typedef tavlnode23408* TY23414[2];
struct  tavlnode23408  {
TY23414 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  tscope188827  {
NI Depthlevel;
tstrtable188807 Symbols;
tnodeseq188797* Usingsyms;
tscope188827* Parent;
};
struct  tinstantiation188823  {
tsym188833* Sym;
ttypeseq188835* Concretetypes;
TY188922* Usedby;
};
struct  trope145007  {
  TNimObject Sup;
trope145007* Left;
trope145007* Right;
NI Length;
NimStringDesc* Data;
};
struct  tlistentry118017  {
  TNimObject Sup;
tlistentry118017* Prev;
tlistentry118017* Next;
};
struct  tlib188821  {
  tlistentry118017 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope145007* Name;
tnode188803* Path;
};
struct  tfreecell22628  {
tfreecell22628* Next;
NI Zerofield;
};
struct tnodeseq188797 {
  TGenericSeq Sup;
  tnode188803* data[SEQ_DECL_SIZE];
};
struct tsymseq188805 {
  TGenericSeq Sup;
  tsym188833* data[SEQ_DECL_SIZE];
};
struct tidnodepairseq188853 {
  TGenericSeq Sup;
  tidnodepair188851 data[SEQ_DECL_SIZE];
};
struct ttypeseq188835 {
  TGenericSeq Sup;
  ttype188837* data[SEQ_DECL_SIZE];
};
struct TY188933 {
  TGenericSeq Sup;
  tinstantiation188823* data[SEQ_DECL_SIZE];
};
struct TY188922 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(ttransfcontext374010*, opentransf_378222)(tsym188833* module, NimStringDesc* filename);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP2938)(void* p, NI op);
N_NIMCALL(void, TMP2939)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
static N_INLINE(tcell41090*, usrtocell_44443)(void* usr);
static N_INLINE(void, rtladdzct_46002)(tcell41090* c);
N_NOINLINE(void, addzct_44418)(tcellseq41106* s, tcell41090* c);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
N_NIMCALL(tnode188803*, processtransf_378185)(ttransfcontext374010* c, tnode188803* n, tsym188833* owner);
N_NIMCALL(void, pushtranscon_374220)(ttransfcontext374010* c, ttranscon374008* t);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_46827)(tcell41090* c);
static N_INLINE(NIM_BOOL, canbecycleroot_44462)(tcell41090* c);
static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c);
N_NOINLINE(void, incl_41855)(tcellset41102* s, tcell41090* cell);
static N_INLINE(void, decref_46402)(tcell41090* c);
N_NIMCALL(ttranscon374008*, newtranscon_374170)(tsym188833* owner);
N_NIMCALL(void, initidnodetable_189130)(tidnodetable188855* x);
N_NIMCALL(tnode188803*, transform_374296)(ttransfcontext374010* c, tnode188803* n);
N_NIMCALL(tnode188803*, transformsym_374471)(ttransfcontext374010* c, tnode188803* n);
N_NIMCALL(tnode188803*, transformsymaux_374348)(ttransfcontext374010* c, tnode188803* n);
N_NIMCALL(tnode188803*, getbody_239244)(tsym188833* s);
N_NIMCALL(void, internalerror_165591)(tlineinfo163527 info, NimStringDesc* errmsg);
N_NIMCALL(tnode188803*, newsymnode_189095)(tsym188833* sym);
N_NIMCALL(tnode188803*, idnodetableget_197159)(tidnodetable188855 t, tidobj167013* key);
N_NIMCALL(tnode188803*, transformarrayaccess_376879)(ttransfcontext374010* c, tnode188803* n);
static N_INLINE(tnode188803*, newtransnode_374029)(tnode188803* a);
N_NIMCALL(tnode188803*, shallowcopy_193743)(tnode188803* src);
static N_INLINE(NI, len_189264)(tnode188803* n);
static N_INLINE(void, HEX5BHEX5DHEX3D_374114)(tnode188803* a, NI i, tnode188803* x);
N_NIMCALL(tnode188803*, skipconv_197231)(tnode188803* n);
N_NIMCALL(tnode188803*, transformfor_376240)(ttransfcontext374010* c, tnode188803* n);
static N_INLINE(NI, sonslen_189181)(tnode188803* n);
N_NIMCALL(tnode188803*, transformloopbody_375136)(ttransfcontext374010* c, tnode188803* n);
N_NIMCALL(NIM_BOOL, hascontinue_374936)(tnode188803* n);
N_NIMCALL(tsym188833*, newlabel_374974)(ttransfcontext374010* c, tnode188803* n);
N_NIMCALL(tsym188833*, newsym_189053)(NU8 symkind, tident167019* name, tsym188833* owner, tlineinfo163527 info);
N_NIMCALL(tsym188833*, getcurrowner_374248)(ttransfcontext374010* c);
N_NIMCALL(tident167019*, getident_167456)(NimStringDesc* identifier);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
static N_INLINE(tnode188803*, newtransnode_374036)(NU8 kind, tlineinfo163527 info, NI sons);
N_NIMCALL(tnode188803*, newnodei_189099)(NU8 kind, tlineinfo163527 info);
static N_INLINE(tsym188833*, pop_375059)(tsymseq188805** s_375067);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(tnode188803*, liftforloop_372699)(tnode188803* body);
N_NIMCALL(void, addvar_366036)(tnode188803* father, tnode188803* v);
N_NIMCALL(tnode188803*, copytree_189237)(tnode188803* src);
static N_INLINE(void, add_374158)(tnode188803* a, tnode188803* b);
N_NIMCALL(void, addson_189207)(tnode188803* father, tnode188803* son);
N_NIMCALL(void, internalerror_165606)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_165714)(TY79484 x_165718);
N_NIMCALL(ttype188837*, skiptypes_192793)(ttype188837* t, NU64 kinds);
N_NIMCALL(NU8, putarginto_376017)(tnode188803* arg, ttype188837* formal);
N_NIMCALL(void, idnodetableput_197164)(tidnodetable188855* t, tidobj167013* key, tnode188803* val);
N_NIMCALL(tsym188833*, newtemp_374271)(ttransfcontext374010* c, ttype188837* typ, tlineinfo163527 info);
N_NIMCALL(tnode188803*, newasgnstmt_374340)(ttransfcontext374010* c, tnode188803* le, tnode188803* ri);
N_NIMCALL(void, pushinfocontext_164697)(tlineinfo163527 info);
N_NIMCALL(void, popinfocontext_164720)(void);
N_NIMCALL(void, poptranscon_374226)(ttransfcontext374010* c);
N_NIMCALL(tnode188803*, transformsons_374301)(ttransfcontext374010* c, tnode188803* n);
N_NIMCALL(tnode188803*, transformcase_376748)(ttransfcontext374010* c, tnode188803* n);
static N_INLINE(tnode188803*, newtransnode_374075)(NU8 kind, tnode188803* n, NI sons);
N_NIMCALL(tnode188803*, newnodeit_189104)(NU8 kind, tlineinfo163527 info, ttype188837* typ);
static N_INLINE(tnode188803*, lastson_189189)(tnode188803* n);
N_NIMCALL(tnode188803*, transformbreak_375104)(ttransfcontext374010* c, tnode188803* n);
N_NIMCALL(tnode188803*, transformcall_377235)(ttransfcontext374010* c, tnode188803* n_377238);
N_NIMCALL(tnode188803*, flattentree_377197)(tnode188803* root);
N_NIMCALL(tsym188833*, getmergeop_376987)(tnode188803* n);
N_NIMCALL(tnode188803*, copynode_189233)(tnode188803* src);
N_NIMCALL(void, flattentreeaux_377122)(tnode188803* d, tnode188803* a, tsym188833* op);
N_NIMCALL(NIM_BOOL, isconstexpr_221843)(tnode188803* n);
N_NIMCALL(tnode188803*, evalop_261007)(NU16 m, tnode188803* n, tnode188803* a, tnode188803* b, tnode188803* c);
static N_INLINE(NI, len_374164)(tnode188803* a);
static N_INLINE(tnode188803*, HEX5BHEX5D_374136)(tnode188803* a, NI i);
N_NIMCALL(tnode188803*, methodcall_364047)(tnode188803* n);
N_NIMCALL(tnode188803*, transformaddrderef_375400)(ttransfcontext374010* c, tnode188803* n_375403, NU8 a, NU8 b);
N_NIMCALL(tnode188803*, transformconv_375704)(ttransfcontext374010* c, tnode188803* n);
N_NIMCALL(NIM_BOOL, isordinaltype_223071)(ttype188837* t);
N_NIMCALL(NI64, firstord_223002)(ttype188837* t);
N_NIMCALL(NI64, lastord_223006)(ttype188837* t);
N_NIMCALL(tnode188803*, newinttypenode_189074)(NU8 kind, NI64 intval, ttype188837* typ);
N_NIMCALL(NI, inheritancediff_230560)(ttype188837* a, ttype188837* b);
N_NIMCALL(tnode188803*, newnode_189065)(NU8 kind);
N_NIMCALL(tnode188803*, transformconstsection_374827)(ttransfcontext374010* c, tnode188803* v);
static N_INLINE(tnode188803*, HEX5BHEX5D_189694)(tnode188803* n, NI i);
N_NIMCALL(tnode188803*, transformvarsection_374478)(ttransfcontext374010* c, tnode188803* v);
N_NIMCALL(tsym188833*, copysym_189147)(tsym188833* s, NIM_BOOL keepid);
static N_INLINE(NIM_BOOL, importantcomments_137145)(void);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_NIMCALL(tnode188803*, transformyield_375282)(ttransfcontext374010* c, tnode188803* n);
N_NIMCALL(void, unpacktuple_375178)(ttransfcontext374010* c, tnode188803* n, tnode188803* father);
N_NIMCALL(tnode188803*, newtupleaccess_366014)(tnode188803* tup, NI i);
N_NIMCALL(tnode188803*, introducenewlocalvars_375217)(ttransfcontext374010* c, tnode188803* n);
N_NIMCALL(tnode188803*, transformblock_374981)(ttransfcontext374010* c, tnode188803* n);
N_NIMCALL(tnode188803*, getconstexpr_261002)(tsym188833* m, tnode188803* n);
static N_INLINE(NIM_BOOL, dontinlineconstant_377412)(tnode188803* orig, tnode188803* cnst);
static N_INLINE(NI, safelen_189320)(tnode188803* n);
N_NIMCALL(tnode188803*, commonoptimizations_377442)(tsym188833* c, tnode188803* n);
N_NIMCALL(void, add_189390)(tnode188803* father, tnode188803* son);
N_NIMCALL(tnode188803*, liftlambdas_372509)(tsym188833* fn, tnode188803* body);
N_NIMCALL(void, trackproc_325140)(tsym188833* s, tnode188803* body);
N_NIMCALL(tnode188803*, liftlambdasfortoplevel_372671)(tsym188833* module, tnode188803* body);
N_NIMCALL(void, tracktoplevelstmt_325446)(tsym188833* module, tnode188803* n);
STRING_LITERAL(TMP2940, "", 0);
STRING_LITERAL(TMP2941, "wrong AST for borrowed symbol", 29);
STRING_LITERAL(TMP2942, "transformFor", 12);
STRING_LITERAL(TMP2943, ":tmp", 4);
STRING_LITERAL(TMP2948, "compiler/transf.nim", 19);
NIM_CONST TY79484 TMP2947 = {((NimStringDesc*) &TMP2948),
448}
;
STRING_LITERAL(TMP2949, "popTransCon", 11);
STRING_LITERAL(TMP2953, "transformConstSection", 21);
STRING_LITERAL(TMP2954, "transformVarSection", 19);
NIM_CONST TY79484 TMP2955 = {((NimStringDesc*) &TMP2948),
142}
;
STRING_LITERAL(TMP2956, "transformVarSection: not nkVarTuple", 35);
extern TNimType NTI246003; /* TPassContext */
TNimType NTI374010; /* TTransfContext */
extern TNimType NTI188801; /* PSym */
TNimType NTI374008; /* TTransCon */
extern TNimType NTI188855; /* TIdNodeTable */
extern TNimType NTI188795; /* PNode */
extern TNimType NTI106; /* int */
TNimType NTI374006; /* PTransCon */
extern TNimType NTI188805; /* TSymSeq */
TNimType NTI374012; /* PTransf */
extern tgcheap43016 gch_43044;
extern TNimType NTI188797; /* TNodeSeq */
extern tnode188803* emptynode_189727;
extern NU8 gcmd_137113;
N_NIMCALL(void, TMP2938)(void* p, NI op) {
	ttranscon374008* a;
	a = (ttranscon374008*)p;
	nimGCvisit((void*)(*a).Mapping.Data, op);
	nimGCvisit((void*)(*a).Owner, op);
	nimGCvisit((void*)(*a).Forstmt, op);
	nimGCvisit((void*)(*a).Forloopbody, op);
	nimGCvisit((void*)(*a).Next, op);
}
N_NIMCALL(void, TMP2939)(void* p, NI op) {
	ttransfcontext374010* a;
	a = (ttransfcontext374010*)p;
	nimGCvisit((void*)(*a).Module, op);
	nimGCvisit((void*)(*a).Transcon, op);
	nimGCvisit((void*)(*a).Contsyms, op);
	nimGCvisit((void*)(*a).Breaksyms, op);
}

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

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

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

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

N_NIMCALL(ttransfcontext374010*, opentransf_378222)(tsym188833* module, NimStringDesc* filename) {
	ttransfcontext374010* result;
	result = 0;
	result = (ttransfcontext374010*) newObj((&NTI374012), sizeof(ttransfcontext374010));
	(*result).Sup.Sup.m_type = (&NTI374010);
	if ((*result).Contsyms) nimGCunrefNoCycle((*result).Contsyms);
	(*result).Contsyms = (tsymseq188805*) newSeqRC1((&NTI188805), 0);
	if ((*result).Breaksyms) nimGCunrefNoCycle((*result).Breaksyms);
	(*result).Breaksyms = (tsymseq188805*) newSeqRC1((&NTI188805), 0);
	asgnRefNoCycle((void**) &(*result).Module, module);
	return result;
}

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

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

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

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

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

N_NIMCALL(void, pushtranscon_374220)(ttransfcontext374010* c, ttranscon374008* t) {
	asgnRef((void**) &(*t).Next, (*c).Transcon);
	asgnRef((void**) &(*c).Transcon, t);
}

N_NIMCALL(ttranscon374008*, newtranscon_374170)(tsym188833* owner) {
	ttranscon374008* result;
	result = 0;
	result = (ttranscon374008*) newObj((&NTI374006), sizeof(ttranscon374008));
	initidnodetable_189130(&(*result).Mapping);
	asgnRefNoCycle((void**) &(*result).Owner, owner);
	return result;
}

N_NIMCALL(tnode188803*, transformsymaux_374348)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* b;
	ttranscon374008* tc;
	result = 0;
	b = 0;
	tc = (*c).Transcon;
	{
		if (!(((*(*n).kindU.S4.Sym).Flags &(1<<((((NU8) 26))&31)))!=0)) goto LA3;
		b = getbody_239244((*n).kindU.S4.Sym);
		{
			if (!!(((*b).Kind == ((NU8) 3)))) goto LA7;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2941));
		}
		LA7: ;
		b = newsymnode_189095((*b).kindU.S4.Sym);
		(*b).Info = (*n).Info;
	}
	goto LA1;
	LA3: ;
	{
		b = n;
	}
	LA1: ;
	while (1) {
		if (!!((tc == NIM_NIL))) goto LA10;
		result = idnodetableget_197159((*tc).Mapping, &(*b).kindU.S4.Sym->Sup);
		{
			if (!!((result == NIM_NIL))) goto LA13;
			goto BeforeRet;
		}
		LA13: ;
		tc = (*tc).Next;
	} LA10: ;
	result = b;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, transformsym_374471)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = transformsymaux_374348(c, n);
	return result;
}

static N_INLINE(tnode188803*, newtransnode_374029)(tnode188803* a) {
	tnode188803* result;
	result = 0;
	result = shallowcopy_193743(a);
	return result;
}

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

static N_INLINE(void, HEX5BHEX5DHEX3D_374114)(tnode188803* a, NI i, tnode188803* x) {
	tnode188803* n;
	n = a;
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i], x);
}

N_NIMCALL(tnode188803*, transformarrayaccess_376879)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Kind == ((NU8) 7));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
	}
	goto LA1;
	LA5: ;
	{
		NI i_376965;
		NI HEX3Atmp_376980;
		NI LOC8;
		NI res_376982;
		result = newtransnode_374029(n);
		i_376965 = 0;
		HEX3Atmp_376980 = 0;
		LOC8 = 0;
		LOC8 = len_189264(n);
		HEX3Atmp_376980 = LOC8 - 1;
		res_376982 = 0;
		while (1) {
			tnode188803* LOC10;
			tnode188803* LOC11;
			if (!(res_376982 <= HEX3Atmp_376980)) goto LA9;
			i_376965 = res_376982;
			LOC10 = 0;
			LOC10 = skipconv_197231((*n).kindU.S6.Sons->data[i_376965]);
			LOC11 = 0;
			LOC11 = transform_374296(c, LOC10);
			HEX5BHEX5DHEX3D_374114(result, i_376965, LOC11);
			res_376982 += 1;
		} LA9: ;
	}
	LA1: ;
	return result;
}

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

N_NIMCALL(NIM_BOOL, hascontinue_374936)(tnode188803* n) {
	NIM_BOOL result;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 1) ... ((NU8) 23):
	case ((NU8) 94):
	case ((NU8) 95):
	case ((NU8) 96):
	{
	}
	break;
	case ((NU8) 110):
	{
		result = NIM_TRUE;
	}
	break;
	default:
	{
		NI i_374952;
		NI HEX3Atmp_374967;
		NI LOC4;
		NI res_374969;
		i_374952 = 0;
		HEX3Atmp_374967 = 0;
		LOC4 = 0;
		LOC4 = sonslen_189181(n);
		HEX3Atmp_374967 = (NI32)(LOC4 - 1);
		res_374969 = 0;
		while (1) {
			if (!(res_374969 <= HEX3Atmp_374967)) goto LA5;
			i_374952 = res_374969;
			{
				NIM_BOOL LOC8;
				LOC8 = 0;
				LOC8 = hascontinue_374936((*n).kindU.S6.Sons->data[i_374952]);
				if (!LOC8) goto LA9;
				result = NIM_TRUE;
				goto BeforeRet;
			}
			LA9: ;
			res_374969 += 1;
		} LA5: ;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(tsym188833*, getcurrowner_374248)(ttransfcontext374010* c) {
	tsym188833* result;
	result = 0;
	{
		if (!!(((*c).Transcon == NIM_NIL))) goto LA3;
		result = (*(*c).Transcon).Owner;
	}
	goto LA1;
	LA3: ;
	{
		result = (*c).Module;
	}
	LA1: ;
	return result;
}

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

N_NIMCALL(tsym188833*, newlabel_374974)(ttransfcontext374010* c, tnode188803* n) {
	tsym188833* result;
	tsym188833* LOC1;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = getcurrowner_374248(c);
	result = newsym_189053(((NU8) 22), NIM_NIL, LOC1, (*n).Info);
	LOC2 = 0;
	LOC3 = 0;
	LOC3 = nimIntToStr((*result).Sup.Id);
	LOC2 = rawNewString(LOC3->Sup.len + 4);
appendString(LOC2, ((NimStringDesc*) &TMP2943));
appendString(LOC2, LOC3);
	asgnRefNoCycle((void**) &(*result).Name, getident_167456(LOC2));
	return result;
}

static N_INLINE(tnode188803*, newtransnode_374036)(NU8 kind, tlineinfo163527 info, NI sons) {
	tnode188803* result;
	tnode188803* x;
	result = 0;
	x = newnodei_189099(kind, info);
	if ((*x).kindU.S6.Sons) nimGCunrefNoCycle((*x).kindU.S6.Sons);
	(*x).kindU.S6.Sons = (tnodeseq188797*) newSeqRC1((&NTI188797), sons);
	result = x;
	return result;
}

static N_INLINE(tsym188833*, pop_375059)(tsymseq188805** s_375067) {
	tsym188833* result;
	NI l;
	result = 0;
	l = (NI32)((*s_375067)->Sup.len - 1);
	result = (*s_375067)->data[l];
	(*s_375067) = (tsymseq188805*) setLengthSeq(&((*s_375067))->Sup, sizeof(tsym188833*), l);
	return result;
}

N_NIMCALL(tnode188803*, transformloopbody_375136)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		tsym188833* labl;
		tnode188803* LOC6;
		tnode188803* LOC7;
		tsym188833* LOC8;
		LOC3 = 0;
		LOC3 = hascontinue_374936(n);
		if (!LOC3) goto LA4;
		labl = newlabel_374974(c, n);
		(*c).Contsyms = (tsymseq188805*) incrSeq(&((*c).Contsyms)->Sup, sizeof(tsym188833*));
		asgnRefNoCycle((void**) &(*c).Contsyms->data[(*c).Contsyms->Sup.len-1], labl);
		result = newtransnode_374036(((NU8) 111), (*n).Info, 2);
		LOC6 = 0;
		LOC6 = newsymnode_189095(labl);
		HEX5BHEX5DHEX3D_374114(result, 0, LOC6);
		LOC7 = 0;
		LOC7 = transform_374296(c, n);
		HEX5BHEX5DHEX3D_374114(result, 1, LOC7);
		LOC8 = 0;
		LOC8 = pop_375059(&(*c).Contsyms);
	}
	goto LA1;
	LA4: ;
	{
		result = transform_374296(c, n);
	}
	LA1: ;
	return result;
}

static N_INLINE(void, add_374158)(tnode188803* a, tnode188803* b) {
	addson_189207(a, b);
}

N_NIMCALL(NU8, putarginto_376017)(tnode188803* arg, ttype188837* formal) {
	NU8 result;
	result = 0;
	{
		ttype188837* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_192793(formal, IL64(211106232576256));
		if (!((*LOC3).Kind == ((NU8) 27) || (*LOC3).Kind == ((NU8) 48))) goto LA4;
		result = ((NU8) 0);
		goto BeforeRet;
	}
	LA4: ;
	switch ((*arg).Kind) {
	case ((NU8) 1) ... ((NU8) 23):
	{
		result = ((NU8) 0);
	}
	break;
	case ((NU8) 37):
	case ((NU8) 39):
	case ((NU8) 41):
	{
		NI i_376048;
		NI HEX3Atmp_376081;
		NI LOC8;
		NI res_376083;
		result = ((NU8) 1);
		i_376048 = 0;
		HEX3Atmp_376081 = 0;
		LOC8 = 0;
		LOC8 = sonslen_189181(arg);
		HEX3Atmp_376081 = (NI32)(LOC8 - 1);
		res_376083 = 0;
		while (1) {
			if (!(res_376083 <= HEX3Atmp_376081)) goto LA9;
			i_376048 = res_376083;
			{
				NU8 LOC12;
				LOC12 = 0;
				LOC12 = putarginto_376017((*arg).kindU.S6.Sons->data[i_376048], formal);
				if (!!((LOC12 == ((NU8) 0)))) goto LA13;
				goto BeforeRet;
			}
			LA13: ;
			res_376083 += 1;
		} LA9: ;
		result = ((NU8) 0);
	}
	break;
	default:
	{
		{
			ttype188837* LOC18;
			LOC18 = 0;
			LOC18 = skiptypes_192793(formal, IL64(211106232576256));
			if (!((*LOC18).Kind == ((NU8) 23))) goto LA19;
			result = ((NU8) 2);
		}
		goto LA16;
		LA19: ;
		{
			result = ((NU8) 1);
		}
		LA16: ;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(tsym188833*, newtemp_374271)(ttransfcontext374010* c, ttype188837* typ, tlineinfo163527 info) {
	tsym188833* result;
	tident167019* LOC1;
	tsym188833* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_167456(((NimStringDesc*) &TMP2943));
	LOC2 = 0;
	LOC2 = getcurrowner_374248(c);
	result = newsym_189053(((NU8) 5), LOC1, LOC2, info);
	asgnRefNoCycle((void**) &(*result).Typ, skiptypes_192793(typ, 2048));
	(*result).Flags |=((NI32)(1)<<((((NU8) 2))%(sizeof(NI32)*8)));
	return result;
}

N_NIMCALL(tnode188803*, newasgnstmt_374340)(ttransfcontext374010* c, tnode188803* le, tnode188803* ri) {
	tnode188803* result;
	result = 0;
	result = newtransnode_374036(((NU8) 74), (*ri).Info, 2);
	HEX5BHEX5DHEX3D_374114(result, 0, le);
	HEX5BHEX5DHEX3D_374114(result, 1, ri);
	return result;
}

N_NIMCALL(void, poptranscon_374226)(ttransfcontext374010* c) {
	{
		if (!((*c).Transcon == NIM_NIL)) goto LA3;
		internalerror_165606(((NimStringDesc*) &TMP2949));
	}
	LA3: ;
	asgnRef((void**) &(*c).Transcon, (*(*c).Transcon).Next);
}

N_NIMCALL(tnode188803*, transformfor_376240)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	NI length;
	tnode188803* call;
	tnode188803* loopbody;
	tnode188803* v;
	NI i_376408;
	NI HEX3Atmp_376635;
	NI res_376637;
	tsym188833* iter;
	ttranscon374008* newc;
	tsym188833* LOC17;
	NI i_376490;
	NI HEX3Atmp_376640;
	NI LOC23;
	NI res_376642;
	tnode188803* body;
	tnode188803* LOC39;
	result = 0;
	{
		if (!!(((*n).Kind == ((NU8) 94)))) goto LA3;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2942));
	}
	LA3: ;
	length = sonslen_189181(n);
	call = (*n).kindU.S6.Sons->data[(NI32)(length - 2)];
	{
		NIM_BOOL LOC7;
		NIM_BOOL LOC9;
		NIM_BOOL LOC10;
		LOC7 = 0;
		LOC7 = !(((*(*call).Typ).Kind == ((NU8) 49)));
		if (!(LOC7)) goto LA8;
		LOC9 = 0;
		LOC10 = 0;
		LOC10 = !(((*call).Kind == ((NU8) 27) || (*call).Kind == ((NU8) 29) || (*call).Kind == ((NU8) 30) || (*call).Kind == ((NU8) 31) || (*call).Kind == ((NU8) 26) || (*call).Kind == ((NU8) 28) || (*call).Kind == ((NU8) 32)));
		if (LOC10) goto LA11;
		LOC10 = !(((*(*call).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)));
		LA11: ;
		LOC9 = LOC10;
		if (LOC9) goto LA12;
		LOC9 = !(((*(*(*call).kindU.S6.Sons->data[0]).kindU.S4.Sym).Kind == ((NU8) 14)));
		LA12: ;
		LOC7 = LOC9;
		LA8: ;
		if (!LOC7) goto LA13;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[(NI32)(length - 1)], transformloopbody_375136(c, (*n).kindU.S6.Sons->data[(NI32)(length - 1)]));
		result = liftforloop_372699(n);
		goto BeforeRet;
	}
	LA13: ;
	result = newtransnode_374036(((NU8) 114), (*n).Info, 0);
	loopbody = transformloopbody_375136(c, (*n).kindU.S6.Sons->data[(NI32)(length - 1)]);
	v = newnodei_189099(((NU8) 99), (*n).Info);
	i_376408 = 0;
	HEX3Atmp_376635 = 0;
	HEX3Atmp_376635 = (NI32)(length - 3);
	res_376637 = 0;
	while (1) {
		tnode188803* LOC16;
		if (!(res_376637 <= HEX3Atmp_376635)) goto LA15;
		i_376408 = res_376637;
		LOC16 = 0;
		LOC16 = copytree_189237((*n).kindU.S6.Sons->data[i_376408]);
		addvar_366036(v, LOC16);
		res_376637 += 1;
	} LA15: ;
	add_374158(result, v);
	iter = (*(*call).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	LOC17 = 0;
	LOC17 = getcurrowner_374248(c);
	newc = newtranscon_374170(LOC17);
	asgnRefNoCycle((void**) &(*newc).Forstmt, n);
	asgnRefNoCycle((void**) &(*newc).Forloopbody, loopbody);
	{
		NimStringDesc* LOC22;
		if (!!(((*iter).Kind == ((NU8) 14)))) goto LA20;
		LOC22 = 0;
		LOC22 = HEX24_165714(TMP2947);
		internalerror_165606(LOC22);
	}
	LA20: ;
	pushtranscon_374220(c, newc);
	i_376490 = 0;
	HEX3Atmp_376640 = 0;
	LOC23 = 0;
	LOC23 = sonslen_189181(call);
	HEX3Atmp_376640 = (NI32)(LOC23 - 1);
	res_376642 = 1;
	while (1) {
		if (!(res_376642 <= HEX3Atmp_376640)) goto LA24;
		i_376490 = res_376642;
		{
			tnode188803* arg;
			tsym188833* formal;
			ttype188837* LOC26;
			NU8 LOC31;
			arg = transform_374296(c, (*call).kindU.S6.Sons->data[i_376490]);
			LOC26 = 0;
			LOC26 = skiptypes_192793((*iter).Typ, IL64(211106232576256));
			formal = (*(*(*LOC26).N).kindU.S6.Sons->data[i_376490]).kindU.S4.Sym;
			{
				if (!((*(*arg).Typ).Kind == ((NU8) 49))) goto LA29;
				goto LA25;
			}
			LA29: ;
			LOC31 = 0;
			LOC31 = putarginto_376017(arg, (*formal).Typ);
			switch (LOC31) {
			case ((NU8) 0):
			{
				idnodetableput_197164(&(*newc).Mapping, &formal->Sup, arg);
			}
			break;
			case ((NU8) 1):
			{
				tsym188833* temp;
				tnode188803* LOC34;
				tnode188803* LOC35;
				tnode188803* LOC36;
				tnode188803* LOC37;
				temp = newtemp_374271(c, (*formal).Typ, (*formal).Info);
				LOC34 = 0;
				LOC34 = newsymnode_189095(temp);
				addvar_366036(v, LOC34);
				LOC35 = 0;
				LOC35 = newsymnode_189095(temp);
				LOC36 = 0;
				LOC36 = newasgnstmt_374340(c, LOC35, arg);
				add_374158(result, LOC36);
				LOC37 = 0;
				LOC37 = newsymnode_189095(temp);
				idnodetableput_197164(&(*newc).Mapping, &formal->Sup, LOC37);
			}
			break;
			case ((NU8) 2):
			{
				idnodetableput_197164(&(*newc).Mapping, &formal->Sup, arg);
			}
			break;
			}
		} LA25: ;
		res_376642 += 1;
	} LA24: ;
	body = getbody_239244(iter);
	pushinfocontext_164697((*n).Info);
	(*c).Inlining += 1;
	LOC39 = 0;
	LOC39 = transform_374296(c, body);
	add_374158(result, LOC39);
	(*c).Inlining -= 1;
	popinfocontext_164720();
	poptranscon_374226(c);
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, transformsons_374301)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	NI i_374318;
	NI HEX3Atmp_374333;
	NI LOC1;
	NI res_374335;
	result = 0;
	result = newtransnode_374029(n);
	i_374318 = 0;
	HEX3Atmp_374333 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_374333 = (NI32)(LOC1 - 1);
	res_374335 = 0;
	while (1) {
		tnode188803* LOC3;
		if (!(res_374335 <= HEX3Atmp_374333)) goto LA2;
		i_374318 = res_374335;
		LOC3 = 0;
		LOC3 = transform_374296(c, (*n).kindU.S6.Sons->data[i_374318]);
		HEX5BHEX5DHEX3D_374114(result, i_374318, LOC3);
		res_374335 += 1;
	} LA2: ;
	return result;
}

static N_INLINE(tnode188803*, newtransnode_374075)(NU8 kind, tnode188803* n, NI sons) {
	tnode188803* result;
	tnode188803* x;
	result = 0;
	x = newnodeit_189104(kind, (*n).Info, (*n).Typ);
	if ((*x).kindU.S6.Sons) nimGCunrefNoCycle((*x).kindU.S6.Sons);
	(*x).kindU.S6.Sons = (tnodeseq188797*) newSeqRC1((&NTI188797), sons);
	asgnRefNoCycle((void**) &(*x).Typ, (*n).Typ);
	result = x;
	return result;
}

static N_INLINE(tnode188803*, lastson_189189)(tnode188803* n) {
	tnode188803* result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	result = (*n).kindU.S6.Sons->data[(NI32)(LOC1 - 1)];
	return result;
}

N_NIMCALL(tnode188803*, transformcase_376748)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* ifs;
	NI i_376764;
	NI HEX3Atmp_376872;
	NI LOC1;
	NI res_376874;
	result = 0;
	result = newtransnode_374075(((NU8) 97), n, 0);
	ifs = NIM_NIL;
	i_376764 = 0;
	HEX3Atmp_376872 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_376872 = (NI32)(LOC1 - 1);
	res_376874 = 0;
	while (1) {
		tnode188803* it;
		tnode188803* e;
		if (!(res_376874 <= HEX3Atmp_376872)) goto LA2;
		i_376764 = res_376874;
		it = (*n).kindU.S6.Sons->data[i_376764];
		e = transform_374296(c, it);
		switch ((*it).Kind) {
		case ((NU8) 86):
		{
			{
				if (!(ifs == NIM_NIL)) goto LA6;
				ifs = newtransnode_374036(((NU8) 92), (*it).Info, 0);
			}
			LA6: ;
			add_374158(ifs, e);
		}
		break;
		case ((NU8) 88):
		{
			{
				if (!(ifs == NIM_NIL)) goto LA11;
				add_374158(result, e);
			}
			goto LA9;
			LA11: ;
			{
				add_374158(ifs, e);
			}
			LA9: ;
		}
		break;
		default:
		{
			add_374158(result, e);
		}
		break;
		}
		res_376874 += 1;
	} LA2: ;
	{
		tnode188803* elsebranch;
		if (!!((ifs == NIM_NIL))) goto LA17;
		elsebranch = newtransnode_374036(((NU8) 88), (*n).Info, 1);
		HEX5BHEX5DHEX3D_374114(elsebranch, 0, ifs);
		add_374158(result, elsebranch);
	}
	goto LA15;
	LA17: ;
	{
		NIM_BOOL LOC20;
		tnode188803* LOC21;
		ttype188837* LOC23;
		tnode188803* elsebranch;
		tnode188803* LOC26;
		LOC20 = 0;
		LOC21 = 0;
		LOC21 = lastson_189189(result);
		LOC20 = !(((*LOC21).Kind == ((NU8) 88)));
		if (!(LOC20)) goto LA22;
		LOC23 = 0;
		LOC23 = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106242013440));
		LOC20 = !(((*LOC23).Kind >= ((NU8) 31) && (*LOC23).Kind <= ((NU8) 35) || (*LOC23).Kind == ((NU8) 2) || (*LOC23).Kind == ((NU8) 14) || (*LOC23).Kind >= ((NU8) 40) && (*LOC23).Kind <= ((NU8) 43)));
		LA22: ;
		if (!LOC20) goto LA24;
		elsebranch = newtransnode_374036(((NU8) 88), (*n).Info, 1);
		LOC26 = 0;
		LOC26 = newtransnode_374036(((NU8) 23), (*n).Info, 0);
		HEX5BHEX5DHEX3D_374114(elsebranch, 0, LOC26);
		add_374158(result, elsebranch);
	}
	goto LA15;
	LA24: ;
	LA15: ;
	return result;
}

N_NIMCALL(tnode188803*, transformbreak_375104)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (0 < (*c).Inloop);
		if (LOC3) goto LA4;
		LOC3 = !(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
	}
	goto LA1;
	LA5: ;
	{
		tsym188833* labl;
		tnode188803* LOC8;
		labl = (*c).Breaksyms->data[((*c).Breaksyms->Sup.len-1)];
		result = transformsons_374301(c, n);
		LOC8 = 0;
		LOC8 = newsymnode_189095(labl);
		HEX5BHEX5DHEX3D_374114(result, 0, LOC8);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tsym188833*, getmergeop_376987)(tnode188803* n) {
	tsym188833* result;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 27):
	case ((NU8) 32):
	case ((NU8) 26):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 28):
	{
		{
			NIM_BOOL LOC4;
			NIM_BOOL LOC5;
			LOC4 = 0;
			LOC5 = 0;
			LOC5 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
			if (!(LOC5)) goto LA6;
			LOC5 = ((*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Kind == ((NU8) 12));
			LA6: ;
			LOC4 = LOC5;
			if (!(LOC4)) goto LA7;
			LOC4 = (((*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Flags &(1<<((((NU8) 24))&31)))!=0);
			LA7: ;
			if (!LOC4) goto LA8;
			result = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		}
		LA8: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(void, flattentreeaux_377122)(tnode188803* d, tnode188803* a, tsym188833* op) {
	tsym188833* op2;
	op2 = getmergeop_376987(a);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		NIM_BOOL LOC7;
		NI i_377175;
		NI HEX3Atmp_377190;
		NI LOC11;
		NI res_377192;
		LOC3 = 0;
		LOC3 = !((op2 == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = ((*op2).Sup.Id == (*op).Sup.Id);
		if (LOC5) goto LA6;
		LOC7 = 0;
		LOC7 = !(((*op).Magic == ((NU16) 0)));
		if (!(LOC7)) goto LA8;
		LOC7 = ((*op2).Magic == (*op).Magic);
		LA8: ;
		LOC5 = LOC7;
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA9;
		i_377175 = 0;
		HEX3Atmp_377190 = 0;
		LOC11 = 0;
		LOC11 = sonslen_189181(a);
		HEX3Atmp_377190 = (NI32)(LOC11 - 1);
		res_377192 = 1;
		while (1) {
			if (!(res_377192 <= HEX3Atmp_377190)) goto LA12;
			i_377175 = res_377192;
			flattentreeaux_377122(d, (*a).kindU.S6.Sons->data[i_377175], op);
			res_377192 += 1;
		} LA12: ;
	}
	goto LA1;
	LA9: ;
	{
		tnode188803* LOC14;
		LOC14 = 0;
		LOC14 = copytree_189237(a);
		addson_189207(d, LOC14);
	}
	LA1: ;
}

N_NIMCALL(tnode188803*, flattentree_377197)(tnode188803* root) {
	tnode188803* result;
	tsym188833* op;
	result = 0;
	op = getmergeop_376987(root);
	{
		tnode188803* LOC5;
		if (!!((op == NIM_NIL))) goto LA3;
		result = copynode_189233(root);
		LOC5 = 0;
		LOC5 = copytree_189237((*root).kindU.S6.Sons->data[0]);
		addson_189207(result, LOC5);
		flattentreeaux_377122(result, root, op);
	}
	goto LA1;
	LA3: ;
	{
		result = root;
	}
	LA1: ;
	return result;
}

static N_INLINE(NI, len_374164)(tnode188803* a) {
	NI result;
	result = 0;
	result = sonslen_189181(a);
	return result;
}

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

N_NIMCALL(tnode188803*, transformcall_377235)(ttransfcontext374010* c, tnode188803* n_377238) {
	tnode188803* result;
	tnode188803* n;
	tsym188833* op;
	result = 0;
	n = flattentree_377197(n_377238);
	op = getmergeop_376987(n);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NI LOC7;
		tnode188803* LOC10;
		NI j;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = !((op == NIM_NIL));
		if (!(LOC4)) goto LA5;
		LOC4 = !(((*op).Magic == ((NU16) 0)));
		LA5: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA6;
		LOC7 = 0;
		LOC7 = sonslen_189181(n);
		LOC3 = (3 <= LOC7);
		LA6: ;
		if (!LOC3) goto LA8;
		result = newtransnode_374075(((NU8) 27), n, 0);
		LOC10 = 0;
		LOC10 = transform_374296(c, (*n).kindU.S6.Sons->data[0]);
		add_374158(result, LOC10);
		j = 1;
		while (1) {
			NI LOC12;
			tnode188803* a;
			LOC12 = 0;
			LOC12 = sonslen_189181(n);
			if (!(j < LOC12)) goto LA11;
			a = transform_374296(c, (*n).kindU.S6.Sons->data[j]);
			j += 1;
			{
				NIM_BOOL LOC15;
				LOC15 = 0;
				LOC15 = isconstexpr_221843(a);
				if (!LOC15) goto LA16;
				while (1) {
					NI LOC19;
					tnode188803* b;
					LOC19 = 0;
					LOC19 = sonslen_189181(n);
					if (!(j < LOC19)) goto LA18;
					b = transform_374296(c, (*n).kindU.S6.Sons->data[j]);
					{
						NIM_BOOL LOC22;
						LOC22 = 0;
						LOC22 = isconstexpr_221843(b);
						if (!!(LOC22)) goto LA23;
						goto LA18;
					}
					LA23: ;
					a = evalop_261007((*op).Magic, n, a, b, NIM_NIL);
					j += 1;
				} LA18: ;
			}
			LA16: ;
			add_374158(result, a);
		} LA11: ;
		{
			NI LOC27;
			LOC27 = 0;
			LOC27 = len_374164(result);
			if (!(LOC27 == 2)) goto LA28;
			result = HEX5BHEX5D_374136(result, 1);
		}
		LA28: ;
	}
	goto LA1;
	LA8: ;
	{
		tnode188803* s;
		s = transformsons_374301(c, n);
		{
			NIM_BOOL LOC33;
			LOC33 = 0;
			LOC33 = ((*(*s).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
			if (!(LOC33)) goto LA34;
			LOC33 = ((*(*(*s).kindU.S6.Sons->data[0]).kindU.S4.Sym).Kind == ((NU8) 13));
			LA34: ;
			if (!LOC33) goto LA35;
			result = methodcall_364047(s);
		}
		goto LA31;
		LA35: ;
		{
			result = s;
		}
		LA31: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, transformaddrderef_375400)(ttransfcontext374010* c, tnode188803* n_375403, NU8 a, NU8 b) {
	tnode188803* result;
	tnode188803* n;
	result = 0;
	result = transformsons_374301(c, n_375403);
	n = result;
	switch ((*(*n).kindU.S6.Sons->data[0]).Kind) {
	case ((NU8) 67):
	case ((NU8) 66):
	case ((NU8) 70):
	case ((NU8) 68):
	case ((NU8) 69):
	{
		tnode188803* m;
		m = (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[0];
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = ((*m).Kind == a);
			if (LOC4) goto LA5;
			LOC4 = ((*m).Kind == b);
			LA5: ;
			if (!LOC4) goto LA6;
			asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[0], (*m).kindU.S6.Sons->data[0]);
			result = (*n).kindU.S6.Sons->data[0];
		}
		LA6: ;
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	{
		tnode188803* m;
		m = (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1];
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = ((*m).Kind == a);
			if (LOC11) goto LA12;
			LOC11 = ((*m).Kind == b);
			LA12: ;
			if (!LOC11) goto LA13;
			asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1], (*m).kindU.S6.Sons->data[0]);
			result = (*n).kindU.S6.Sons->data[0];
		}
		LA13: ;
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC18;
			LOC18 = 0;
			LOC18 = ((*(*n).kindU.S6.Sons->data[0]).Kind == a);
			if (LOC18) goto LA19;
			LOC18 = ((*(*n).kindU.S6.Sons->data[0]).Kind == b);
			LA19: ;
			if (!LOC18) goto LA20;
			result = (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[0];
		}
		LA20: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, transformconv_375704)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	ttype188837* dest;
	ttype188837* source;
	result = 0;
	dest = skiptypes_192793((*n).Typ, IL64(211106242013440));
	source = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106242013440));
	switch ((*dest).Kind) {
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 14):
	case ((NU8) 2):
	case ((NU8) 1):
	case ((NU8) 41) ... ((NU8) 43):
	{
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = isordinaltype_223071(source);
			if (!!(LOC4)) goto LA5;
			result = transformsons_374301(c, n);
		}
		goto LA2;
		LA5: ;
		{
			NIM_BOOL LOC8;
			NI64 LOC9;
			NI64 LOC10;
			NI64 LOC12;
			NI64 LOC13;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = firstord_223002((*n).Typ);
			LOC10 = 0;
			LOC10 = firstord_223002((*(*n).kindU.S6.Sons->data[1]).Typ);
			LOC8 = (LOC9 <= LOC10);
			if (!(LOC8)) goto LA11;
			LOC12 = 0;
			LOC12 = lastord_223006((*(*n).kindU.S6.Sons->data[1]).Typ);
			LOC13 = 0;
			LOC13 = lastord_223006((*n).Typ);
			LOC8 = (LOC12 <= LOC13);
			LA11: ;
			if (!LOC8) goto LA14;
			result = transformsons_374301(c, n);
		}
		goto LA2;
		LA14: ;
		{
			tnode188803* LOC24;
			NI64 LOC25;
			tnode188803* LOC26;
			NI64 LOC27;
			tnode188803* LOC28;
			{
				NIM_BOOL LOC19;
				LOC19 = 0;
				LOC19 = ((*dest).Kind == ((NU8) 35));
				if (LOC19) goto LA20;
				LOC19 = ((*source).Kind == ((NU8) 35));
				LA20: ;
				if (!LOC19) goto LA21;
				result = newtransnode_374075(((NU8) 69), n, 3);
			}
			goto LA17;
			LA21: ;
			{
				result = newtransnode_374075(((NU8) 70), n, 3);
			}
			LA17: ;
			dest = skiptypes_192793((*n).Typ, IL64(211106240964864));
			LOC24 = 0;
			LOC24 = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
			HEX5BHEX5DHEX3D_374114(result, 0, LOC24);
			LOC25 = 0;
			LOC25 = firstord_223002(dest);
			LOC26 = 0;
			LOC26 = newinttypenode_189074(((NU8) 6), LOC25, source);
			HEX5BHEX5DHEX3D_374114(result, 1, LOC26);
			LOC27 = 0;
			LOC27 = lastord_223006(dest);
			LOC28 = 0;
			LOC28 = newinttypenode_189074(((NU8) 6), LOC27, source);
			HEX5BHEX5DHEX3D_374114(result, 2, LOC28);
		}
		LA2: ;
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	{
		{
			ttype188837* LOC32;
			tnode188803* LOC35;
			tnode188803* LOC36;
			tnode188803* LOC37;
			LOC32 = 0;
			LOC32 = skiptypes_192793((*n).Typ, IL64(211106240964864));
			if (!((*LOC32).Kind == ((NU8) 20))) goto LA33;
			result = newtransnode_374075(((NU8) 68), n, 3);
			dest = skiptypes_192793((*n).Typ, IL64(211106240964864));
			LOC35 = 0;
			LOC35 = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
			HEX5BHEX5DHEX3D_374114(result, 0, LOC35);
			LOC36 = 0;
			LOC36 = copytree_189237((*(*dest).N).kindU.S6.Sons->data[0]);
			HEX5BHEX5DHEX3D_374114(result, 1, LOC36);
			LOC37 = 0;
			LOC37 = copytree_189237((*(*dest).N).kindU.S6.Sons->data[1]);
			HEX5BHEX5DHEX3D_374114(result, 2, LOC37);
		}
		goto LA30;
		LA33: ;
		{
			result = transformsons_374301(c, n);
		}
		LA30: ;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		result = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
	}
	break;
	case ((NU8) 29):
	{
		{
			tnode188803* LOC45;
			if (!((*source).Kind == ((NU8) 28))) goto LA43;
			result = newtransnode_374075(((NU8) 71), n, 1);
			LOC45 = 0;
			LOC45 = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
			HEX5BHEX5DHEX3D_374114(result, 0, LOC45);
		}
		goto LA41;
		LA43: ;
		{
			result = transformsons_374301(c, n);
		}
		LA41: ;
	}
	break;
	case ((NU8) 28):
	{
		{
			tnode188803* LOC52;
			if (!((*source).Kind == ((NU8) 29))) goto LA50;
			result = newtransnode_374075(((NU8) 72), n, 1);
			LOC52 = 0;
			LOC52 = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
			HEX5BHEX5DHEX3D_374114(result, 0, LOC52);
		}
		goto LA48;
		LA50: ;
		{
			result = transformsons_374301(c, n);
		}
		LA48: ;
	}
	break;
	case ((NU8) 22):
	case ((NU8) 21):
	{
		dest = skiptypes_192793(dest, IL64(211106247256320));
		source = skiptypes_192793(source, IL64(211106247256320));
		{
			NI diff;
			if (!((*source).Kind == ((NU8) 17))) goto LA57;
			diff = inheritancediff_230560(dest, source);
			{
				tnode188803* LOC63;
				if (!(diff < 0)) goto LA61;
				result = newtransnode_374075(((NU8) 67), n, 1);
				LOC63 = 0;
				LOC63 = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
				HEX5BHEX5DHEX3D_374114(result, 0, LOC63);
			}
			goto LA59;
			LA61: ;
			{
				tnode188803* LOC67;
				if (!(0 < diff)) goto LA65;
				result = newtransnode_374075(((NU8) 66), n, 1);
				LOC67 = 0;
				LOC67 = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
				HEX5BHEX5DHEX3D_374114(result, 0, LOC67);
			}
			goto LA59;
			LA65: ;
			{
				result = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
			}
			LA59: ;
		}
		goto LA55;
		LA57: ;
		{
			result = transformsons_374301(c, n);
		}
		LA55: ;
	}
	break;
	case ((NU8) 17):
	{
		NI diff;
		diff = inheritancediff_230560(dest, source);
		{
			tnode188803* LOC75;
			if (!(diff < 0)) goto LA73;
			result = newtransnode_374075(((NU8) 67), n, 1);
			LOC75 = 0;
			LOC75 = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
			HEX5BHEX5DHEX3D_374114(result, 0, LOC75);
		}
		goto LA71;
		LA73: ;
		{
			tnode188803* LOC79;
			if (!(0 < diff)) goto LA77;
			result = newtransnode_374075(((NU8) 66), n, 1);
			LOC79 = 0;
			LOC79 = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
			HEX5BHEX5DHEX3D_374114(result, 0, LOC79);
		}
		goto LA71;
		LA77: ;
		{
			result = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
		}
		LA71: ;
	}
	break;
	case ((NU8) 12):
	case ((NU8) 15):
	{
		result = transform_374296(c, (*n).kindU.S6.Sons->data[1]);
	}
	break;
	default:
	{
		result = transformsons_374301(c, n);
	}
	break;
	}
	return result;
}

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

N_NIMCALL(tnode188803*, transformconstsection_374827)(ttransfcontext374010* c, tnode188803* v) {
	tnode188803* result;
	NI i_374844;
	NI HEX3Atmp_374929;
	NI LOC1;
	NI res_374931;
	result = 0;
	result = newtransnode_374029(v);
	i_374844 = 0;
	HEX3Atmp_374929 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(v);
	HEX3Atmp_374929 = (NI32)(LOC1 - 1);
	res_374931 = 0;
	while (1) {
		tnode188803* it;
		if (!(res_374931 <= HEX3Atmp_374929)) goto LA2;
		i_374844 = res_374931;
		it = (*v).kindU.S6.Sons->data[i_374844];
		{
			if (!((*it).Kind == ((NU8) 124))) goto LA5;
			HEX5BHEX5DHEX3D_374114(result, i_374844, it);
		}
		goto LA3;
		LA5: ;
		{
			{
				if (!!(((*it).Kind == ((NU8) 102)))) goto LA10;
				internalerror_165591((*it).Info, ((NimStringDesc*) &TMP2953));
			}
			LA10: ;
			{
				if (!!(((*(*it).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA14;
				internalerror_165591((*it).Info, ((NimStringDesc*) &TMP2953));
			}
			LA14: ;
			{
				tnode188803* LOC18;
				tnode188803* b;
				tnode188803* LOC21;
				tnode188803* LOC22;
				tnode188803* LOC23;
				LOC18 = 0;
				LOC18 = HEX5BHEX5D_189694(it, 0);
				if (!(((*(*LOC18).kindU.S4.Sym).Flags &(1<<((((NU8) 25))&31)))!=0)) goto LA19;
				b = newnodei_189099(((NU8) 102), (*it).Info);
				LOC21 = 0;
				LOC21 = HEX5BHEX5D_189694(it, 0);
				addson_189207(b, LOC21);
				addson_189207(b, emptynode_189727);
				LOC22 = 0;
				LOC22 = HEX5BHEX5D_189694(it, 2);
				LOC23 = 0;
				LOC23 = transform_374296(c, LOC22);
				addson_189207(b, LOC23);
				HEX5BHEX5DHEX3D_374114(result, i_374844, b);
			}
			goto LA16;
			LA19: ;
			{
				HEX5BHEX5DHEX3D_374114(result, i_374844, it);
			}
			LA16: ;
		}
		LA3: ;
		res_374931 += 1;
	} LA2: ;
	return result;
}

static N_INLINE(NIM_BOOL, importantcomments_137145)(void) {
	NIM_BOOL result;
	result = 0;
	result = ((16640 &(1<<((gcmd_137113)&31)))!=0);
	return result;
}

N_NIMCALL(tnode188803*, transformvarsection_374478)(ttransfcontext374010* c, tnode188803* v) {
	tnode188803* result;
	NI i_374495;
	NI HEX3Atmp_374819;
	NI LOC1;
	NI res_374821;
	result = 0;
	result = newtransnode_374029(v);
	i_374495 = 0;
	HEX3Atmp_374819 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(v);
	HEX3Atmp_374819 = (NI32)(LOC1 - 1);
	res_374821 = 0;
	while (1) {
		tnode188803* it;
		if (!(res_374821 <= HEX3Atmp_374819)) goto LA2;
		i_374495 = res_374821;
		it = (*v).kindU.S6.Sons->data[i_374495];
		{
			if (!((*it).Kind == ((NU8) 124))) goto LA5;
			HEX5BHEX5DHEX3D_374114(result, i_374495, it);
		}
		goto LA3;
		LA5: ;
		{
			tsym188833* newvar;
			tnode188803* LOC20;
			tnode188803* defs;
			tnode188803* LOC27;
			tnode188803* LOC28;
			if (!((*it).Kind == ((NU8) 35))) goto LA8;
			{
				if (!!(((*(*it).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA12;
				internalerror_165591((*it).Info, ((NimStringDesc*) &TMP2954));
			}
			LA12: ;
			{
				NI LOC16;
				NimStringDesc* LOC19;
				LOC16 = 0;
				LOC16 = len_189264(it);
				if (!!((LOC16 == 3))) goto LA17;
				LOC19 = 0;
				LOC19 = HEX24_165714(TMP2955);
				internalerror_165606(LOC19);
			}
			LA17: ;
			newvar = copysym_189147((*(*it).kindU.S6.Sons->data[0]).kindU.S4.Sym, NIM_FALSE);
			(*newvar).Flags |=((NI32)(1)<<((((NU8) 2))%(sizeof(NI32)*8)));
			asgnRefNoCycle((void**) &(*newvar).Owner, getcurrowner_374248(c));
			LOC20 = 0;
			LOC20 = newsymnode_189095(newvar);
			idnodetableput_197164(&(*(*c).Transcon).Mapping, &(*(*it).kindU.S6.Sons->data[0]).kindU.S4.Sym->Sup, LOC20);
			defs = newtransnode_374036(((NU8) 35), (*it).Info, 3);
			{
				NIM_BOOL LOC23;
				NimStringDesc* LOC26;
				LOC23 = 0;
				LOC23 = importantcomments_137145();
				if (!LOC23) goto LA24;
				LOC26 = 0;
				LOC26 = (*defs).Comment; (*defs).Comment = copyStringRC1((*it).Comment);
				if (LOC26) nimGCunrefNoCycle(LOC26);
			}
			LA24: ;
			LOC27 = 0;
			LOC27 = newsymnode_189095(newvar);
			HEX5BHEX5DHEX3D_374114(defs, 0, LOC27);
			HEX5BHEX5DHEX3D_374114(defs, 1, (*it).kindU.S6.Sons->data[1]);
			LOC28 = 0;
			LOC28 = transform_374296(c, (*it).kindU.S6.Sons->data[2]);
			HEX5BHEX5DHEX3D_374114(defs, 2, LOC28);
			HEX5BHEX5DHEX3D_374114(result, i_374495, defs);
		}
		goto LA3;
		LA8: ;
		{
			NI l;
			tnode188803* defs;
			NI j_374685;
			NI HEX3Atmp_374815;
			NI res_374817;
			tnode188803* LOC37;
			{
				if (!!(((*it).Kind == ((NU8) 36)))) goto LA32;
				internalerror_165591((*it).Info, ((NimStringDesc*) &TMP2956));
			}
			LA32: ;
			l = sonslen_189181(it);
			defs = newtransnode_374036((*it).Kind, (*it).Info, l);
			j_374685 = 0;
			HEX3Atmp_374815 = 0;
			HEX3Atmp_374815 = (NI32)(l - 3);
			res_374817 = 0;
			while (1) {
				tsym188833* newvar;
				tnode188803* LOC35;
				tnode188803* LOC36;
				if (!(res_374817 <= HEX3Atmp_374815)) goto LA34;
				j_374685 = res_374817;
				newvar = copysym_189147((*(*it).kindU.S6.Sons->data[j_374685]).kindU.S4.Sym, NIM_FALSE);
				(*newvar).Flags |=((NI32)(1)<<((((NU8) 2))%(sizeof(NI32)*8)));
				asgnRefNoCycle((void**) &(*newvar).Owner, getcurrowner_374248(c));
				LOC35 = 0;
				LOC35 = newsymnode_189095(newvar);
				idnodetableput_197164(&(*(*c).Transcon).Mapping, &(*(*it).kindU.S6.Sons->data[j_374685]).kindU.S4.Sym->Sup, LOC35);
				LOC36 = 0;
				LOC36 = newsymnode_189095(newvar);
				HEX5BHEX5DHEX3D_374114(defs, j_374685, LOC36);
				res_374817 += 1;
			} LA34: ;
			HEX5BHEX5DHEX3D_374114(defs, (NI32)(l - 2), emptynode_189727);
			LOC37 = 0;
			LOC37 = transform_374296(c, (*it).kindU.S6.Sons->data[(NI32)(l - 1)]);
			HEX5BHEX5DHEX3D_374114(defs, (NI32)(l - 1), LOC37);
			HEX5BHEX5DHEX3D_374114(result, i_374495, defs);
		}
		LA3: ;
		res_374821 += 1;
	} LA2: ;
	return result;
}

N_NIMCALL(void, unpacktuple_375178)(ttransfcontext374010* c, tnode188803* n, tnode188803* father) {
	NI i_375195;
	NI HEX3Atmp_375210;
	NI LOC1;
	NI res_375212;
	i_375195 = 0;
	HEX3Atmp_375210 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181((*(*c).Transcon).Forstmt);
	HEX3Atmp_375210 = (NI32)(LOC1 - 3);
	res_375212 = 0;
	while (1) {
		tnode188803* LOC3;
		tnode188803* LOC4;
		tnode188803* LOC5;
		if (!(res_375212 <= HEX3Atmp_375210)) goto LA2;
		i_375195 = res_375212;
		LOC3 = 0;
		LOC3 = newtupleaccess_366014(n, i_375195);
		LOC4 = 0;
		LOC4 = transform_374296(c, LOC3);
		LOC5 = 0;
		LOC5 = newasgnstmt_374340(c, (*(*(*c).Transcon).Forstmt).kindU.S6.Sons->data[i_375195], LOC4);
		add_374158(father, LOC5);
		res_375212 += 1;
	} LA2: ;
}

N_NIMCALL(tnode188803*, introducenewlocalvars_375217)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 3):
	{
		result = transformsym_374471(c, n);
	}
	break;
	case ((NU8) 1) ... ((NU8) 2):
	case ((NU8) 4) ... ((NU8) 23):
	{
		result = n;
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		result = transformvarsection_374478(c, n);
	}
	break;
	default:
	{
		NI i_375260;
		NI HEX3Atmp_375275;
		NI LOC5;
		NI res_375277;
		result = newtransnode_374029(n);
		i_375260 = 0;
		HEX3Atmp_375275 = 0;
		LOC5 = 0;
		LOC5 = sonslen_189181(n);
		HEX3Atmp_375275 = (NI32)(LOC5 - 1);
		res_375277 = 0;
		while (1) {
			tnode188803* LOC7;
			if (!(res_375277 <= HEX3Atmp_375275)) goto LA6;
			i_375260 = res_375277;
			LOC7 = 0;
			LOC7 = introducenewlocalvars_375217(c, (*n).kindU.S6.Sons->data[i_375260]);
			HEX5BHEX5DHEX3D_374114(result, i_375260, LOC7);
			res_375277 += 1;
		} LA6: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, transformyield_375282)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* e;
	result = 0;
	result = newtransnode_374036(((NU8) 114), (*n).Info, 0);
	e = (*n).kindU.S6.Sons->data[0];
	{
		NIM_BOOL LOC3;
		ttype188837* LOC4;
		NI LOC6;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = skiptypes_192793((*e).Typ, 2048);
		LOC3 = ((*LOC4).Kind == ((NU8) 18));
		if (!(LOC3)) goto LA5;
		LOC6 = 0;
		LOC6 = len_189264((*(*c).Transcon).Forstmt);
		LOC3 = !((LOC6 == 3));
		LA5: ;
		if (!LOC3) goto LA7;
		e = skipconv_197231(e);
		{
			NI i_375333;
			NI HEX3Atmp_375393;
			NI LOC13;
			NI res_375395;
			if (!((*e).Kind == ((NU8) 37))) goto LA11;
			i_375333 = 0;
			HEX3Atmp_375393 = 0;
			LOC13 = 0;
			LOC13 = sonslen_189181(e);
			HEX3Atmp_375393 = (NI32)(LOC13 - 1);
			res_375395 = 0;
			while (1) {
				tnode188803* LOC15;
				tnode188803* LOC16;
				if (!(res_375395 <= HEX3Atmp_375393)) goto LA14;
				i_375333 = res_375395;
				LOC15 = 0;
				LOC15 = transform_374296(c, (*e).kindU.S6.Sons->data[i_375333]);
				LOC16 = 0;
				LOC16 = newasgnstmt_374340(c, (*(*(*c).Transcon).Forstmt).kindU.S6.Sons->data[i_375333], LOC15);
				add_374158(result, LOC16);
				res_375395 += 1;
			} LA14: ;
		}
		goto LA9;
		LA11: ;
		{
			unpacktuple_375178(c, e, result);
		}
		LA9: ;
	}
	goto LA1;
	LA7: ;
	{
		tnode188803* x;
		tnode188803* LOC19;
		x = transform_374296(c, e);
		LOC19 = 0;
		LOC19 = newasgnstmt_374340(c, (*(*(*c).Transcon).Forstmt).kindU.S6.Sons->data[0], x);
		add_374158(result, LOC19);
	}
	LA1: ;
	(*(*c).Transcon).Yieldstmts += 1;
	{
		if (!((*(*c).Transcon).Yieldstmts <= 1)) goto LA22;
		add_374158(result, (*(*c).Transcon).Forloopbody);
	}
	goto LA20;
	LA22: ;
	{
		tnode188803* LOC25;
		LOC25 = 0;
		LOC25 = introducenewlocalvars_375217(c, (*(*c).Transcon).Forloopbody);
		add_374158(result, LOC25);
	}
	LA20: ;
	return result;
}

N_NIMCALL(tnode188803*, transformblock_374981)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	tsym188833* labl;
	tsym188833* LOC6;
	tnode188803* LOC7;
	result = 0;
	labl = 0;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		labl = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	}
	goto LA1;
	LA3: ;
	{
		labl = newlabel_374974(c, n);
	}
	LA1: ;
	(*c).Breaksyms = (tsymseq188805*) incrSeq(&((*c).Breaksyms)->Sup, sizeof(tsym188833*));
	asgnRefNoCycle((void**) &(*c).Breaksyms->data[(*c).Breaksyms->Sup.len-1], labl);
	result = transformsons_374301(c, n);
	LOC6 = 0;
	LOC6 = pop_375059(&(*c).Breaksyms);
	LOC7 = 0;
	LOC7 = newsymnode_189095(labl);
	HEX5BHEX5DHEX3D_374114(result, 0, LOC7);
	return result;
}

static N_INLINE(NIM_BOOL, dontinlineconstant_377412)(tnode188803* orig, tnode188803* cnst) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	NI LOC5;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*orig).Kind == ((NU8) 3));
	if (!(LOC2)) goto LA3;
	LOC2 = ((*cnst).Kind == ((NU8) 39) || (*cnst).Kind == ((NU8) 37) || (*cnst).Kind == ((NU8) 41));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC5 = 0;
	LOC5 = len_189264(cnst);
	LOC1 = !((LOC5 == 0));
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(tnode188803*, transform_374296)(ttransfcontext374010* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* cnst;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 3):
	{
		result = transformsym_374471(c, n);
	}
	break;
	case ((NU8) 1) ... ((NU8) 2):
	case ((NU8) 4) ... ((NU8) 23):
	{
		result = n;
	}
	break;
	case ((NU8) 42):
	{
		result = transformarrayaccess_376879(c, n);
	}
	break;
	case ((NU8) 51) ... ((NU8) 52):
	case ((NU8) 79) ... ((NU8) 81):
	case ((NU8) 84):
	{
		result = n;
	}
	break;
	case ((NU8) 82):
	{
		result = n;
	}
	break;
	case ((NU8) 94):
	{
		(*c).Inloop += 1;
		result = transformfor_376240(c, n);
		(*c).Inloop -= 1;
	}
	break;
	case ((NU8) 95):
	{
		(*c).Inloop += 1;
		result = transformsons_374301(c, n);
		(*c).Inloop -= 1;
	}
	break;
	case ((NU8) 97):
	{
		result = transformcase_376748(c, n);
	}
	break;
	case ((NU8) 110):
	{
		tsym188833* labl;
		tnode188803* LOC10;
		result = newnodei_189099(((NU8) 109), (*n).Info);
		labl = (*c).Contsyms->data[((*c).Contsyms->Sup.len-1)];
		LOC10 = 0;
		LOC10 = newsymnode_189095(labl);
		add_374158(result, LOC10);
	}
	break;
	case ((NU8) 109):
	{
		result = transformbreak_375104(c, n);
	}
	break;
	case ((NU8) 96):
	{
		tnode188803* LOC13;
		tnode188803* LOC14;
		(*c).Inloop += 1;
		result = newtransnode_374029(n);
		LOC13 = 0;
		LOC13 = transform_374296(c, (*n).kindU.S6.Sons->data[0]);
		HEX5BHEX5DHEX3D_374114(result, 0, LOC13);
		LOC14 = 0;
		LOC14 = transformloopbody_375136(c, (*n).kindU.S6.Sons->data[1]);
		HEX5BHEX5DHEX3D_374114(result, 1, LOC14);
		(*c).Inloop -= 1;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 32):
	case ((NU8) 26):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 28):
	{
		result = transformcall_377235(c, n);
	}
	break;
	case ((NU8) 63):
	case ((NU8) 64):
	{
		result = transformaddrderef_375400(c, n, ((NU8) 47), ((NU8) 65));
	}
	break;
	case ((NU8) 47):
	case ((NU8) 65):
	{
		result = transformaddrderef_375400(c, n, ((NU8) 63), ((NU8) 64));
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	{
		result = transformconv_375704(c, n);
	}
	break;
	case ((NU8) 113):
	{
		result = n;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA22;
			result = transformsons_374301(c, n);
			{
				NIM_BOOL LOC26;
				LOC26 = 0;
				LOC26 = isconstexpr_221843((*result).kindU.S6.Sons->data[0]);
				if (!LOC26) goto LA27;
				result = newnode_189065(((NU8) 124));
			}
			LA27: ;
		}
		LA22: ;
	}
	break;
	case ((NU8) 124):
	case ((NU8) 83):
	{
		result = n;
		goto BeforeRet;
	}
	break;
	case ((NU8) 101):
	{
		result = transformconstsection_374827(c, n);
		goto BeforeRet;
	}
	break;
	case ((NU8) 98):
	{
		result = n;
		goto BeforeRet;
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		{
			if (!(0 < (*c).Inlining)) goto LA35;
			result = transformvarsection_374478(c, n);
		}
		goto LA33;
		LA35: ;
		{
			result = transformsons_374301(c, n);
		}
		LA33: ;
	}
	break;
	case ((NU8) 104):
	{
		{
			if (!(0 < (*c).Inlining)) goto LA41;
			result = transformyield_375282(c, n);
		}
		goto LA39;
		LA41: ;
		{
			result = transformsons_374301(c, n);
		}
		LA39: ;
	}
	break;
	case ((NU8) 111):
	case ((NU8) 126):
	{
		result = transformblock_374981(c, n);
	}
	break;
	case ((NU8) 35):
	case ((NU8) 102):
	{
		result = transformsons_374301(c, n);
		{
			NIM_BOOL LOC48;
			NimStringDesc* LOC51;
			LOC48 = 0;
			LOC48 = importantcomments_137145();
			if (!LOC48) goto LA49;
			LOC51 = 0;
			LOC51 = (*result).Comment; (*result).Comment = copyStringRC1((*n).Comment);
			if (LOC51) nimGCunrefNoCycle(LOC51);
		}
		LA49: ;
	}
	break;
	case ((NU8) 153):
	{
		result = n;
		goto BeforeRet;
	}
	break;
	default:
	{
		result = transformsons_374301(c, n);
	}
	break;
	}
	cnst = getconstexpr_261002((*c).Module, result);
	{
		NIM_BOOL LOC56;
		NIM_BOOL LOC58;
		LOC56 = 0;
		LOC56 = !((cnst == NIM_NIL));
		if (!(LOC56)) goto LA57;
		LOC58 = 0;
		LOC58 = dontinlineconstant_377412(n, cnst);
		LOC56 = !(LOC58);
		LA57: ;
		if (!LOC56) goto LA59;
		result = cnst;
	}
	LA59: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, processtransf_378185)(ttransfcontext374010* c, tnode188803* n, tsym188833* owner) {
	tnode188803* result;
	ttranscon374008* LOC7;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (*c).Sup.Fromcache;
		if (LOC3) goto LA4;
		LOC3 = (((*n).Flags &(1<<((((NU8) 5))&15)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
		goto BeforeRet;
	}
	LA5: ;
	LOC7 = 0;
	LOC7 = newtranscon_374170(owner);
	pushtranscon_374220(c, LOC7);
	result = transform_374296(c, n);
	poptranscon_374226(c);
	(*result).Flags |=((NI16)(1)<<((((NU8) 5))%(sizeof(NI16)*8)));
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, transformexpr_378603)(tsym188833* module, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		if (!(((*n).Flags &(1<<((((NU8) 5))&15)))!=0)) goto LA3;
		result = n;
	}
	goto LA1;
	LA3: ;
	{
		ttransfcontext374010* c;
		c = opentransf_378222(module, ((NimStringDesc*) &TMP2940));
		result = processtransf_378185(c, n, module);
		(*result).Flags |=((NI16)(1)<<((((NU8) 5))%(sizeof(NI16)*8)));
	}
	LA1: ;
	return result;
}

static N_INLINE(NI, safelen_189320)(tnode188803* 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 = 0;
	}
	goto LA1;
	LA5: ;
	{
		result = (*n).kindU.S6.Sons->Sup.len;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, commonoptimizations_377442)(tsym188833* c, tnode188803* n) {
	tnode188803* result;
	NI i_377468;
	NI HEX3Atmp_377622;
	NI LOC1;
	NI res_377624;
	tsym188833* op;
	result = 0;
	result = n;
	i_377468 = 0;
	HEX3Atmp_377622 = 0;
	LOC1 = 0;
	LOC1 = safelen_189320(n);
	HEX3Atmp_377622 = LOC1 - 1;
	res_377624 = 0;
	while (1) {
		if (!(res_377624 <= HEX3Atmp_377622)) goto LA2;
		i_377468 = res_377624;
		asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_377468], commonoptimizations_377442(c, (*n).kindU.S6.Sons->data[i_377468]));
		res_377624 += 1;
	} LA2: ;
	op = getmergeop_376987(n);
	{
		NIM_BOOL LOC5;
		NIM_BOOL LOC6;
		NI LOC9;
		tnode188803* args;
		NI j;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = !((op == NIM_NIL));
		if (!(LOC6)) goto LA7;
		LOC6 = !(((*op).Magic == ((NU16) 0)));
		LA7: ;
		LOC5 = LOC6;
		if (!(LOC5)) goto LA8;
		LOC9 = 0;
		LOC9 = sonslen_189181(n);
		LOC5 = (3 <= LOC9);
		LA8: ;
		if (!LOC5) goto LA10;
		result = newnodeit_189104(((NU8) 27), (*n).Info, (*n).Typ);
		add_189390(result, (*n).kindU.S6.Sons->data[0]);
		args = newnode_189065(((NU8) 150));
		flattentreeaux_377122(args, n, op);
		j = 0;
		while (1) {
			NI LOC13;
			tnode188803* a;
			LOC13 = 0;
			LOC13 = sonslen_189181(args);
			if (!(j < LOC13)) goto LA12;
			a = (*args).kindU.S6.Sons->data[j];
			j += 1;
			{
				NIM_BOOL LOC16;
				LOC16 = 0;
				LOC16 = isconstexpr_221843(a);
				if (!LOC16) goto LA17;
				while (1) {
					NI LOC20;
					tnode188803* b;
					LOC20 = 0;
					LOC20 = sonslen_189181(args);
					if (!(j < LOC20)) goto LA19;
					b = (*args).kindU.S6.Sons->data[j];
					{
						NIM_BOOL LOC23;
						LOC23 = 0;
						LOC23 = isconstexpr_221843(b);
						if (!!(LOC23)) goto LA24;
						goto LA19;
					}
					LA24: ;
					a = evalop_261007((*op).Magic, result, a, b, NIM_NIL);
					j += 1;
				} LA19: ;
			}
			LA17: ;
			add_189390(result, a);
		} LA12: ;
		{
			NI LOC28;
			LOC28 = 0;
			LOC28 = len_189264(result);
			if (!(LOC28 == 2)) goto LA29;
			result = HEX5BHEX5D_189694(result, 1);
		}
		LA29: ;
	}
	goto LA3;
	LA10: ;
	{
		tnode188803* cnst;
		cnst = getconstexpr_261002(c, n);
		{
			NIM_BOOL LOC34;
			NIM_BOOL LOC36;
			LOC34 = 0;
			LOC34 = !((cnst == NIM_NIL));
			if (!(LOC34)) goto LA35;
			LOC36 = 0;
			LOC36 = dontinlineconstant_377412(n, cnst);
			LOC34 = !(LOC36);
			LA35: ;
			if (!LOC34) goto LA37;
			result = cnst;
		}
		goto LA32;
		LA37: ;
		{
			result = n;
		}
		LA32: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(tnode188803*, transformbody_378285)(tsym188833* module, tnode188803* n, tsym188833* prc) {
	tnode188803* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*n).Flags &(1<<((((NU8) 5))&15)))!=0);
		if (LOC3) goto LA4;
		LOC3 = ((262144 &(1<<(((*prc).Kind)&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
	}
	goto LA1;
	LA5: ;
	{
		ttransfcontext374010* c;
		c = opentransf_378222(module, ((NimStringDesc*) &TMP2940));
		result = processtransf_378185(c, n, prc);
		result = liftlambdas_372509(prc, result);
		(*result).Flags |=((NI16)(1)<<((((NU8) 5))%(sizeof(NI16)*8)));
		trackproc_325140(prc, result);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, transformstmt_378403)(tsym188833* module, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		if (!(((*n).Flags &(1<<((((NU8) 5))&15)))!=0)) goto LA3;
		result = n;
	}
	goto LA1;
	LA3: ;
	{
		ttransfcontext374010* c;
		c = opentransf_378222(module, ((NimStringDesc*) &TMP2940));
		result = processtransf_378185(c, n, module);
		result = liftlambdasfortoplevel_372671(module, result);
		(*result).Flags |=((NI16)(1)<<((((NU8) 5))%(sizeof(NI16)*8)));
		tracktoplevelstmt_325446(module, result);
	}
	LA1: ;
	return result;
}
N_NOINLINE(void, transfInit)(void) {
}

N_NOINLINE(void, transfDatInit)(void) {
static TNimNode* TMP2933[7];
static TNimNode* TMP2934[6];
static TNimNode TMP911[15];
NTI374010.size = sizeof(ttransfcontext374010);
NTI374010.kind = 17;
NTI374010.base = (&NTI246003);
TMP2933[0] = &TMP911[1];
TMP911[1].kind = 1;
TMP911[1].offset = offsetof(ttransfcontext374010, Module);
TMP911[1].typ = (&NTI188801);
TMP911[1].name = "module";
TMP2933[1] = &TMP911[2];
NTI374008.size = sizeof(ttranscon374008);
NTI374008.kind = 18;
NTI374008.base = 0;
TMP2934[0] = &TMP911[4];
TMP911[4].kind = 1;
TMP911[4].offset = offsetof(ttranscon374008, Mapping);
TMP911[4].typ = (&NTI188855);
TMP911[4].name = "mapping";
TMP2934[1] = &TMP911[5];
TMP911[5].kind = 1;
TMP911[5].offset = offsetof(ttranscon374008, Owner);
TMP911[5].typ = (&NTI188801);
TMP911[5].name = "owner";
TMP2934[2] = &TMP911[6];
TMP911[6].kind = 1;
TMP911[6].offset = offsetof(ttranscon374008, Forstmt);
TMP911[6].typ = (&NTI188795);
TMP911[6].name = "forStmt";
TMP2934[3] = &TMP911[7];
TMP911[7].kind = 1;
TMP911[7].offset = offsetof(ttranscon374008, Forloopbody);
TMP911[7].typ = (&NTI188795);
TMP911[7].name = "forLoopBody";
TMP2934[4] = &TMP911[8];
TMP911[8].kind = 1;
TMP911[8].offset = offsetof(ttranscon374008, Yieldstmts);
TMP911[8].typ = (&NTI106);
TMP911[8].name = "yieldStmts";
TMP2934[5] = &TMP911[9];
TMP911[9].kind = 1;
TMP911[9].offset = offsetof(ttranscon374008, Next);
TMP911[9].typ = (&NTI374006);
TMP911[9].name = "next";
TMP911[3].len = 6; TMP911[3].kind = 2; TMP911[3].sons = &TMP2934[0];
NTI374008.node = &TMP911[3];
NTI374006.size = sizeof(ttranscon374008*);
NTI374006.kind = 22;
NTI374006.base = (&NTI374008);
NTI374006.marker = TMP2938;
TMP911[2].kind = 1;
TMP911[2].offset = offsetof(ttransfcontext374010, Transcon);
TMP911[2].typ = (&NTI374006);
TMP911[2].name = "transCon";
TMP2933[2] = &TMP911[10];
TMP911[10].kind = 1;
TMP911[10].offset = offsetof(ttransfcontext374010, Inlining);
TMP911[10].typ = (&NTI106);
TMP911[10].name = "inlining";
TMP2933[3] = &TMP911[11];
TMP911[11].kind = 1;
TMP911[11].offset = offsetof(ttransfcontext374010, Nestedprocs);
TMP911[11].typ = (&NTI106);
TMP911[11].name = "nestedProcs";
TMP2933[4] = &TMP911[12];
TMP911[12].kind = 1;
TMP911[12].offset = offsetof(ttransfcontext374010, Contsyms);
TMP911[12].typ = (&NTI188805);
TMP911[12].name = "contSyms";
TMP2933[5] = &TMP911[13];
TMP911[13].kind = 1;
TMP911[13].offset = offsetof(ttransfcontext374010, Breaksyms);
TMP911[13].typ = (&NTI188805);
TMP911[13].name = "breakSyms";
TMP2933[6] = &TMP911[14];
TMP911[14].kind = 1;
TMP911[14].offset = offsetof(ttransfcontext374010, Inloop);
TMP911[14].typ = (&NTI106);
TMP911[14].name = "inLoop";
TMP911[0].len = 7; TMP911[0].kind = 2; TMP911[0].sons = &TMP2933[0];
NTI374010.node = &TMP911[0];
NTI374012.size = sizeof(ttransfcontext374010*);
NTI374012.kind = 22;
NTI374012.base = (&NTI374010);
NTI374012.marker = TMP2939;
}

