/* Generated by Nim Compiler v0.13.0 */
/*   (c) 2015 Andreas Rumpf */
/* The generated code is subject to the original license. */
/* Compiled for: Linux, amd64, gcc */
/* Command for C compiler:
   gcc -c  -w -O3 -fno-strict-aliasing  -I/home/ubuntu/nim-ci/Nim/lib -o /home/ubuntu/nim-ci/Nim/compiler/rnimcache/compiler_vmdeps.o /home/ubuntu/nim-ci/Nim/compiler/rnimcache/compiler_vmdeps.c */
#define NIM_INTBITS 64

#include "nimbase.h"
#include <setjmp.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
typedef struct Tnode293798 Tnode293798;
typedef struct Ttype293836 Ttype293836;
typedef struct Tlineinfo192336 Tlineinfo192336;
typedef struct Tidobj200006 Tidobj200006;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Ttypeseq293832 Ttypeseq293832;
typedef struct Tsym293830 Tsym293830;
typedef struct TY293956 TY293956;
typedef struct Tloc293812 Tloc293812;
typedef struct Ropeobj179006 Ropeobj179006;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tident200012 Tident200012;
typedef struct TY293925 TY293925;
typedef struct Tstrtable293802 Tstrtable293802;
typedef struct Tsymseq293800 Tsymseq293800;
typedef struct Tlib293816 Tlib293816;
typedef struct Cell47305 Cell47305;
typedef struct Cellseq47321 Cellseq47321;
typedef struct Gcheap49818 Gcheap49818;
typedef struct Gcstack49816 Gcstack49816;
typedef struct Memregion29480 Memregion29480;
typedef struct Smallchunk29437 Smallchunk29437;
typedef struct Llchunk29474 Llchunk29474;
typedef struct Bigchunk29439 Bigchunk29439;
typedef struct Intset29414 Intset29414;
typedef struct Trunk29410 Trunk29410;
typedef struct Avlnode29478 Avlnode29478;
typedef struct Gcstat49814 Gcstat49814;
typedef struct Cellset47317 Cellset47317;
typedef struct Pagedesc47313 Pagedesc47313;
typedef struct Tnodeseq293792 Tnodeseq293792;
typedef struct Exception Exception;
typedef struct TSafePoint TSafePoint;
typedef struct Processobj163404 Processobj163404;
typedef struct Stringtableobj152608 Stringtableobj152608;
typedef struct Streamobj156818 Streamobj156818;
typedef struct TY293957 TY293957;
typedef struct Tinstantiation293820 Tinstantiation293820;
typedef struct Tlistentry147010 Tlistentry147010;
typedef struct Basechunk29435 Basechunk29435;
typedef struct Freecell29427 Freecell29427;
typedef struct Keyvaluepairseq152606 Keyvaluepairseq152606;
typedef struct Keyvaluepair152604 Keyvaluepair152604;
struct  Tlineinfo192336  {
NI16 line;
NI16 col;
NI32 fileindex;
};
typedef N_NIMCALL_PTR(void, TY3489) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3494) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3489 marker;
TY3494 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj200006  {
  TNimObject Sup;
NI id;
};
struct  Tloc293812  {
NU8 k;
NU8 s;
NU16 flags;
Ttype293836* t;
Ropeobj179006* r;
};
struct  Ttype293836  {
  Tidobj200006 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq293832* sons;
Tnode293798* n;
Tsym293830* owner;
Tsym293830* sym;
Tsym293830* destructor;
Tsym293830* deepcopy;
Tsym293830* assignment;
TY293956* methods;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc293812 loc;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tstrtable293802  {
NI counter;
Tsymseq293800* data;
};
struct  Tsym293830  {
  Tidobj200006 Sup;
NU8 kind;
union{
struct {Ttypeseq293832* typeinstcache;
} S1;
struct {TY293925* procinstcache;
Tsym293830* gcunsafetyreason;
} S2;
struct {TY293925* usedgenerics;
Tstrtable293802 tab;
} S3;
struct {Tsym293830* guard;
NI bitsize;
} S4;
} kindU;
NU16 magic;
Ttype293836* typ;
Tident200012* name;
Tlineinfo192336 info;
Tsym293830* owner;
NU32 flags;
Tnode293798* ast;
NU32 options;
NI position;
NI offset;
Tloc293812 loc;
Tlib293816* annex;
Tnode293798* constraint;
};
struct  Cell47305  {
NI refcount;
TNimType* typ;
};
struct  Cellseq47321  {
NI len;
NI cap;
Cell47305** d;
};
typedef Smallchunk29437* TY29495[512];
typedef Trunk29410* Trunkbuckets29412[256];
struct  Intset29414  {
Trunkbuckets29412 data;
};
struct  Memregion29480  {
NI minlargeobj;
NI maxlargeobj;
TY29495 freesmallchunks;
Llchunk29474* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk29439* freechunkslist;
Intset29414 chunkstarts;
Avlnode29478* root;
Avlnode29478* deleted;
Avlnode29478* last;
Avlnode29478* freeavlnodes;
NIM_BOOL locked;
};
struct  Gcstat49814  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Cellset47317  {
NI counter;
NI max;
Pagedesc47313* head;
Pagedesc47313** data;
};
struct  Gcheap49818  {
Gcstack49816* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq47321 zct;
Cellseq47321 decstack;
Cellseq47321 tempstack;
NI recgclock;
Memregion29480 region;
Gcstat49814 stat;
Cellset47317 marked;
Cellseq47321 additionalroots;
};
struct  Tnode293798  {
Ttype293836* typ;
Tlineinfo192336 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym293830* sym;
} S4;
struct {Tident200012* ident;
} S5;
struct {Tnodeseq293792* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
struct  Tident200012  {
  Tidobj200006 Sup;
NimStringDesc* s;
Tident200012* next;
NI h;
};
struct  Exception  {
  TNimObject Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClPrc) (Exception* e, void* ClEnv);
void* ClEnv;
} TY17211;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY17211 raiseAction;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef Tnode293798* TY309080[1];
typedef NU8 Sha1digest202007[20];
typedef NimStringDesc* TY318494[1];
struct TY293957 {
NI Field0;
Tsym293830* Field1;
};
struct  Ropeobj179006  {
  TNimObject Sup;
Ropeobj179006* left;
Ropeobj179006* right;
NI length;
NimStringDesc* data;
};
struct  Tlistentry147010  {
  TNimObject Sup;
Tlistentry147010* prev;
Tlistentry147010* next;
};
struct  Tlib293816  {
  Tlistentry147010 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj179006* name;
Tnode293798* path;
};
struct  Gcstack49816  {
Gcstack49816* prev;
Gcstack49816* next;
void* starts;
void* pos;
NI maxstacksize;
};
struct  Basechunk29435  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk29437  {
  Basechunk29435 Sup;
Smallchunk29437* next;
Smallchunk29437* prev;
Freecell29427* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk29474  {
NI size;
NI acc;
Llchunk29474* next;
};
struct  Bigchunk29439  {
  Basechunk29435 Sup;
Bigchunk29439* next;
Bigchunk29439* prev;
NI align;
NF data;
};
typedef NI TY29419[8];
struct  Trunk29410  {
Trunk29410* next;
NI key;
TY29419 bits;
};
typedef Avlnode29478* TY29485[2];
struct  Avlnode29478  {
TY29485 link;
NI key;
NI upperbound;
NI level;
};
struct  Pagedesc47313  {
Pagedesc47313* next;
NI key;
TY29419 bits;
};
struct  Processobj163404  {
  TNimObject Sup;
int inhandle;
int outhandle;
int errhandle;
Streamobj156818* instream;
Streamobj156818* outstream;
Streamobj156818* errstream;
pid_t id;
int exitcode;
NU8 options;
};
struct  Stringtableobj152608  {
  TNimObject Sup;
NI counter;
Keyvaluepairseq152606* data;
NU8 mode;
};
typedef N_NIMCALL_PTR(void, TY156819) (Streamobj156818* s);
typedef N_NIMCALL_PTR(NIM_BOOL, TY156823) (Streamobj156818* s);
typedef N_NIMCALL_PTR(void, TY156827) (Streamobj156818* s, NI pos);
typedef N_NIMCALL_PTR(NI, TY156832) (Streamobj156818* s);
typedef N_NIMCALL_PTR(NI, TY156836) (Streamobj156818* s, void* buffer, NI buflen);
typedef N_NIMCALL_PTR(NI, TY156842) (Streamobj156818* s, void* buffer, NI buflen);
typedef N_NIMCALL_PTR(void, TY156848) (Streamobj156818* s, void* buffer, NI buflen);
typedef N_NIMCALL_PTR(void, TY156854) (Streamobj156818* s);
struct  Streamobj156818  {
  TNimObject Sup;
TY156819 closeimpl;
TY156823 atendimpl;
TY156827 setpositionimpl;
TY156832 getpositionimpl;
TY156836 readdataimpl;
TY156842 peekdataimpl;
TY156848 writedataimpl;
TY156854 flushimpl;
};
struct  Tinstantiation293820  {
Tsym293830* sym;
Ttypeseq293832* concretetypes;
NI compilesid;
};
struct  Freecell29427  {
Freecell29427* next;
NI zerofield;
};
struct Keyvaluepair152604 {
NimStringDesc* Field0;
NimStringDesc* Field1;
};
struct Tnodeseq293792 {
  TGenericSeq Sup;
  Tnode293798* data[SEQ_DECL_SIZE];
};
struct Ttypeseq293832 {
  TGenericSeq Sup;
  Ttype293836* data[SEQ_DECL_SIZE];
};
struct TY293956 {
  TGenericSeq Sup;
  TY293957 data[SEQ_DECL_SIZE];
};
struct TY293925 {
  TGenericSeq Sup;
  Tinstantiation293820* data[SEQ_DECL_SIZE];
};
struct Tsymseq293800 {
  TGenericSeq Sup;
  Tsym293830* data[SEQ_DECL_SIZE];
};
struct Keyvaluepairseq152606 {
  TGenericSeq Sup;
  Keyvaluepair152604 data[SEQ_DECL_SIZE];
};
N_NIMCALL(Tnode293798*, maptypetoastx_454055)(Ttype293836* t, Tlineinfo192336 info, NIM_BOOL inst, NIM_BOOL allowrecursionx);
N_NIMCALL(Tnode293798*, atomictypex_454045)(NimStringDesc* name, NU16 m, Ttype293836* t, Tlineinfo192336 info);
N_NIMCALL(Tsym293830*, newsym_294683)(NU8 symkind, Tident200012* name, Tsym293830* owner, Tlineinfo192336 info);
N_NIMCALL(Tident200012*, getident_200441)(NimStringDesc* identifier);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Cell47305*, usrtocell_51440)(void* usr);
static N_INLINE(void, rtladdzct_52601)(Cell47305* c);
N_NOINLINE(void, addzct_51417)(Cellseq47321* s, Cell47305* c);
N_NIMCALL(Tnode293798*, newsymnode_295183)(Tsym293830* sym);
N_NIMCALL(Tnode293798*, newnodeit_295801)(NU8 kind, Tlineinfo192336 info, Ttype293836* typ);
N_NIMCALL(void, add_294117)(Tnode293798* father, Tnode293798* son);
N_NIMCALL(Tnode293798*, newidentnode_295177)(Tident200012* ident, Tlineinfo192336 info);
N_NIMCALL(Tnode293798*, copytree_297822)(Tnode293798* src);
N_NIMCALL(Ttype293836*, base_321021)(Ttype293836* t);
N_NIMCALL(NI, len_296339)(Ttype293836* n);
N_NIMCALL(Ttype293836*, lastson_296377)(Ttype293836* n);
N_NIMCALL(Tnode293798*, maptypetobracketx_454061)(NimStringDesc* name, NU16 m, Ttype293836* t, Tlineinfo192336 info, NIM_BOOL inst);
N_NIMCALL(Ttype293836*, newtype_296107)(NU8 kind, Tsym293830* owner);
static N_INLINE(NI, len_294062)(Tnode293798* n);
N_NIMCALL(Tnode293798*, objectnode_454120)(Tnode293798* n);
N_NIMCALL(Tnode293798*, newnodei_295197)(NU8 kind, Tlineinfo192336 info);
N_NIMCALL(Tnode293798*, copynode_297528)(Tnode293798* src);
static N_INLINE(NI, safelen_294084)(Tnode293798* n);
static N_INLINE(Tnode293798*, HEX5BHEX5D_294238)(Tnode293798* n, NI i);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
N_NIMCALL(NimStringDesc*, HEX2F_128265)(NimStringDesc* head, NimStringDesc* tail);
N_NIMCALL(NimStringDesc*, nosparentDir)(NimStringDesc* path);
N_NIMCALL(NimStringDesc*, tofullpath_193257)(NI32 fileidx);
static N_INLINE(NIM_BOOL, fileexists_131604)(NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, findfile_171483)(NimStringDesc* f);
N_NIMCALL(NimStringDesc*, readfile_14868)(NimStringDesc* filename);
N_NIMCALL(void, appendtomodule_294869)(Tsym293830* m, Tnode293798* n);
N_NIMCALL(Tnode293798*, newnode_295601)(NU8 kind, Tlineinfo192336 info, Tnodeseq293792* sons, Ttype293836* typ);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(Tnode293798*, newstrnode_294677)(NU8 kind, NimStringDesc* strval);
static N_INLINE(void, popSafePoint)(void);
N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass);
static N_INLINE(Exception*, getCurrentException)(void);
N_NIMCALL(void, localerror_197080)(Tlineinfo192336 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
static N_INLINE(void, popCurrentException)(void);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_53419)(Cell47305* c);
static N_INLINE(void, decref_53001)(Cell47305* c);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(void, securehash_203339)(NimStringDesc* str, Sha1digest202007* Result);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copymem_7478)(void* dest, void* source, NI size);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(NimStringDesc*, togeneratedfile_171093)(NimStringDesc* path, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, HEX24_203348)(Sha1digest202007 self);
N_NIMCALL(NIM_BOOL, open_14803)(FILE** f, NimStringDesc* filename, NU8 mode, NI bufsize);
N_NIMCALL(NimStringDesc*, readall_14865)(FILE* file);
N_NIMCALL(void, close_14853)(FILE* f);
N_NIMCALL(Processobj163404*, nospstartProcess)(NimStringDesc* command, NimStringDesc* workingdir, NimStringDesc** args, NI argsLen0, Stringtableobj152608* env, NU8 options);
N_NIMCALL(void, write_156969)(Streamobj156818* s, NimStringDesc* x);
N_NIMCALL(Streamobj156818*, nospinputStream)(Processobj163404* p);
N_NIMCALL(void, close_156870)(Streamobj156818* s);
N_NIMCALL(NimStringDesc*, readoutput_454003)(Processobj163404* p);
N_NIMCALL(Streamobj156818*, nospoutputStream)(Processobj163404* p);
N_NIMCALL(NIM_BOOL, atend_156884)(Streamobj156818* s);
N_NIMCALL(NimStringDesc*, readline_157761)(Streamobj156818* s);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newlen);
N_NIMCALL(NI, nospwaitForExit)(Processobj163404* p, NI timeout);
N_NIMCALL(void, writefile_14871)(NimStringDesc* filename, NimStringDesc* content);
STRING_LITERAL(TMP3045, "none", 4);
STRING_LITERAL(TMP3046, "bool", 4);
STRING_LITERAL(TMP3047, "char", 4);
STRING_LITERAL(TMP3048, "nil", 3);
STRING_LITERAL(TMP3049, "expr", 4);
STRING_LITERAL(TMP3050, "stmt", 4);
STRING_LITERAL(TMP3051, "void", 4);
STRING_LITERAL(TMP3052, "empty", 5);
STRING_LITERAL(TMP3053, "array", 5);
STRING_LITERAL(TMP3054, "..", 2);
STRING_LITERAL(TMP3055, "typeDesc", 8);
STRING_LITERAL(TMP3056, "distinct", 8);
STRING_LITERAL(TMP3057, "tuple", 5);
STRING_LITERAL(TMP3058, "set", 3);
STRING_LITERAL(TMP3059, "ptr", 3);
STRING_LITERAL(TMP3060, "ref", 3);
STRING_LITERAL(TMP3061, "var", 3);
STRING_LITERAL(TMP3062, "seq", 3);
STRING_LITERAL(TMP3063, "proc", 4);
STRING_LITERAL(TMP3064, "openArray", 9);
STRING_LITERAL(TMP3065, "range", 5);
STRING_LITERAL(TMP3066, "pointer", 7);
STRING_LITERAL(TMP3067, "string", 6);
STRING_LITERAL(TMP3068, "cstring", 7);
STRING_LITERAL(TMP3069, "int", 3);
STRING_LITERAL(TMP3070, "int8", 4);
STRING_LITERAL(TMP3071, "int16", 5);
STRING_LITERAL(TMP3072, "int32", 5);
STRING_LITERAL(TMP3073, "int64", 5);
STRING_LITERAL(TMP3074, "float", 5);
STRING_LITERAL(TMP3075, "float32", 7);
STRING_LITERAL(TMP3076, "float64", 7);
STRING_LITERAL(TMP3077, "float128", 8);
STRING_LITERAL(TMP3078, "uint", 4);
STRING_LITERAL(TMP3079, "uint8", 5);
STRING_LITERAL(TMP3080, "uint16", 6);
STRING_LITERAL(TMP3081, "uint32", 6);
STRING_LITERAL(TMP3082, "uint64", 6);
STRING_LITERAL(TMP3083, "bignum", 6);
STRING_LITERAL(TMP3084, "const", 5);
STRING_LITERAL(TMP3085, "mutable", 7);
STRING_LITERAL(TMP3086, "varargs", 7);
STRING_LITERAL(TMP3087, "iter", 4);
STRING_LITERAL(TMP3088, "error", 5);
STRING_LITERAL(TMP3089, "builtinTypeClass", 16);
STRING_LITERAL(TMP3090, "concept", 7);
STRING_LITERAL(TMP3091, "compositeTypeClass", 18);
STRING_LITERAL(TMP3092, "and", 3);
STRING_LITERAL(TMP3093, "or", 2);
STRING_LITERAL(TMP3094, "not", 3);
STRING_LITERAL(TMP3095, "anything", 8);
STRING_LITERAL(TMP3096, "static", 6);
STRING_LITERAL(TMP3100, "", 0);
STRING_LITERAL(TMP3101, "\011", 1);
STRING_LITERAL(TMP3102, "gorge_", 6);
STRING_LITERAL(TMP3103, "txt", 3);
STRING_LITERAL(TMP3120, "\012", 1);
extern Gcheap49818 gch_49855;
extern Tnode293798* emptynode_294801;
extern TSafePoint* exchandler_18837;
extern TNimType NTI293792; /* TNodeSeq */
extern TNimType NTI3628; /* IOError */
extern Exception* currexception_18839;
extern TNimType NTI3630; /* OSError */

static N_INLINE(Cell47305*, usrtocell_51440)(void* usr) {
	Cell47305* result;
	result = 0;
	result = ((Cell47305*) ((NI)((NU64)(((NI) (usr))) - (NU64)(((NI)sizeof(Cell47305))))));
	return result;
}

static N_INLINE(void, rtladdzct_52601)(Cell47305* c) {
	addzct_51417((&gch_49855.zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		Cell47305* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_51440(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell47305* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_51440((*dest));
		{
			(*c).refcount -= ((NI) 8);
			if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA11;
			rtladdzct_52601(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

N_NIMCALL(Tnode293798*, atomictypex_454045)(NimStringDesc* name, NU16 m, Ttype293836* t, Tlineinfo192336 info) {
	Tnode293798* result;
	Tsym293830* sym;
	Tident200012* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_200441(name);
	sym = newsym_294683(((NU8) 7), LOC1, (*t).owner, info);
	(*sym).magic = m;
	asgnRefNoCycle((void**) (&(*sym).typ), t);
	result = newsymnode_295183(sym);
	asgnRefNoCycle((void**) (&(*result).typ), t);
	return result;
}

N_NIMCALL(Tnode293798*, maptypetobracketx_454061)(NimStringDesc* name, NU16 m, Ttype293836* t, Tlineinfo192336 info, NIM_BOOL inst) {
	Tnode293798* result;
	Tlineinfo192336 LOC1;
	Tnode293798* LOC7;
	result = 0;
	{
		if (!(*t).n == 0) goto LA4;
		LOC1 = info;
	}
	goto LA2;
	LA4: ;
	{
		LOC1 = (*(*t).n).info;
	}
	LA2: ;
	result = newnodeit_295801(((NU8) 42), LOC1, t);
	LOC7 = 0;
	LOC7 = atomictypex_454045(name, m, t, info);
	add_294117(result, LOC7);
	{
		NI i_454096;
		NI HEX3Atmp_454113;
		NI LOC9;
		NI res_454116;
		i_454096 = 0;
		HEX3Atmp_454113 = 0;
		LOC9 = 0;
		LOC9 = len_296339(t);
		HEX3Atmp_454113 = (LOC9 - 1);
		res_454116 = ((NI) 0);
		{
			while (1) {
				if (!(res_454116 <= HEX3Atmp_454113)) goto LA11;
				i_454096 = res_454116;
				{
					Tnode293798* void_454109;
					if (!((*t).sons->data[i_454096] == NIM_NIL)) goto LA14;
					void_454109 = atomictypex_454045(((NimStringDesc*) &TMP3051), ((NU16) 175), t, info);
					asgnRefNoCycle((void**) (&(*void_454109).typ), newtype_296107(((NU8) 62), (*t).owner));
					add_294117(result, void_454109);
				}
				goto LA12;
				LA14: ;
				{
					Tnode293798* LOC17;
					LOC17 = 0;
					LOC17 = maptypetoastx_454055((*t).sons->data[i_454096], info, inst, NIM_FALSE);
					add_294117(result, LOC17);
				}
				LA12: ;
				res_454116 += ((NI) 1);
			} LA11: ;
		}
	}
	return result;
}

static N_INLINE(NI, len_294062)(Tnode293798* 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;
}

static N_INLINE(NI, safelen_294084)(Tnode293798* 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;
}

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

N_NIMCALL(Tnode293798*, objectnode_454120)(Tnode293798* n) {
	Tnode293798* result;
	result = 0;
	{
		Tnode293798* LOC5;
		if (!((*n).kind == ((NU8) 3))) goto LA3;
		result = newnodei_295197(((NU8) 35), (*n).info);
		add_294117(result, n);
		LOC5 = 0;
		LOC5 = maptypetoastx_454055((*(*n).kindU.S4.sym).typ, (*n).info, NIM_TRUE, NIM_FALSE);
		add_294117(result, LOC5);
		add_294117(result, emptynode_294801);
	}
	goto LA1;
	LA3: ;
	{
		result = copynode_297528(n);
		{
			NI i_454148;
			NI HEX3Atmp_454151;
			NI i_454154;
			i_454148 = 0;
			HEX3Atmp_454151 = 0;
			HEX3Atmp_454151 = safelen_294084(n);
			i_454154 = ((NI) 0);
			{
				while (1) {
					Tnode293798* LOC10;
					Tnode293798* LOC11;
					if (!(i_454154 < HEX3Atmp_454151)) goto LA9;
					i_454148 = i_454154;
					LOC10 = 0;
					LOC10 = HEX5BHEX5D_294238(n, i_454148);
					LOC11 = 0;
					LOC11 = objectnode_454120(LOC10);
					add_294117(result, LOC11);
					i_454154 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode293798*, maptypetoastx_454055)(Ttype293836* t, Tlineinfo192336 info, NIM_BOOL inst, NIM_BOOL allowrecursionx) {
	Tnode293798* result;
	NIM_BOOL allowrecursion;
{	result = 0;
	allowrecursion = allowrecursionx;
	{
		if (!inst) goto LA3;
		{
			if (!!(((*t).sym == NIM_NIL))) goto LA7;
			{
				if (!allowrecursion) goto LA11;
				allowrecursion = NIM_FALSE;
			}
			goto LA9;
			LA11: ;
			{
				result = atomictypex_454045((*(*(*t).sym).name).s, (*(*t).sym).magic, t, info);
				goto BeforeRet;
			}
			LA9: ;
		}
		LA7: ;
	}
	LA3: ;
	switch ((*t).kind) {
	case ((NU8) 0):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3045), ((NU16) 0), t, info);
	}
	break;
	case ((NU8) 1):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3046), ((NU16) 192), t, info);
	}
	break;
	case ((NU8) 2):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3047), ((NU16) 193), t, info);
	}
	break;
	case ((NU8) 5):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3048), ((NU16) 199), t, info);
	}
	break;
	case ((NU8) 6):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3049), ((NU16) 200), t, info);
	}
	break;
	case ((NU8) 7):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3050), ((NU16) 201), t, info);
	}
	break;
	case ((NU8) 62):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3051), ((NU16) 175), t, info);
	}
	break;
	case ((NU8) 3):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3052), ((NU16) 0), t, info);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	{
		Tlineinfo192336 LOC23;
		Tnode293798* LOC29;
		Tnode293798* LOC48;
		{
			if (!(*t).n == 0) goto LA26;
			LOC23 = info;
		}
		goto LA24;
		LA26: ;
		{
			LOC23 = (*(*t).n).info;
		}
		LA24: ;
		result = newnodeit_295801(((NU8) 42), LOC23, t);
		LOC29 = 0;
		LOC29 = atomictypex_454045(((NimStringDesc*) &TMP3053), ((NU16) 165), t, info);
		add_294117(result, LOC29);
		{
			NIM_BOOL LOC32;
			Tnode293798* rng;
			Tlineinfo192336 LOC36;
			Tident200012* LOC42;
			Tnode293798* LOC43;
			Tnode293798* LOC44;
			Tnode293798* LOC45;
			LOC32 = 0;
			LOC32 = inst;
			if (!(LOC32)) goto LA33;
			LOC32 = ((*(*t).sons->data[((NI) 0)]).kind == ((NU8) 20));
			LA33: ;
			if (!LOC32) goto LA34;
			{
				if (!(*t).n == 0) goto LA39;
				LOC36 = info;
			}
			goto LA37;
			LA39: ;
			{
				LOC36 = (*(*t).n).info;
			}
			LA37: ;
			rng = newnodeit_295801(((NU8) 29), LOC36, t);
			LOC42 = 0;
			LOC42 = getident_200441(((NimStringDesc*) &TMP3054));
			LOC43 = 0;
			LOC43 = newidentnode_295177(LOC42, info);
			add_294117(rng, LOC43);
			LOC44 = 0;
			LOC44 = copytree_297822((*(*(*t).sons->data[((NI) 0)]).n).kindU.S6.sons->data[((NI) 0)]);
			add_294117(rng, LOC44);
			LOC45 = 0;
			LOC45 = copytree_297822((*(*(*t).sons->data[((NI) 0)]).n).kindU.S6.sons->data[((NI) 1)]);
			add_294117(rng, LOC45);
			add_294117(result, rng);
		}
		goto LA30;
		LA34: ;
		{
			Tnode293798* LOC47;
			LOC47 = 0;
			LOC47 = maptypetoastx_454055((*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
			add_294117(result, LOC47);
		}
		LA30: ;
		LOC48 = 0;
		LOC48 = maptypetoastx_454055((*t).sons->data[((NI) 1)], info, inst, NIM_FALSE);
		add_294117(result, LOC48);
	}
	break;
	case ((NU8) 8):
	{
		{
			Ttype293836* LOC52;
			Tlineinfo192336 LOC55;
			Tnode293798* LOC61;
			Ttype293836* LOC62;
			Tnode293798* LOC63;
			LOC52 = 0;
			LOC52 = base_321021(t);
			if (!!((LOC52 == NIM_NIL))) goto LA53;
			{
				if (!(*t).n == 0) goto LA58;
				LOC55 = info;
			}
			goto LA56;
			LA58: ;
			{
				LOC55 = (*(*t).n).info;
			}
			LA56: ;
			result = newnodeit_295801(((NU8) 42), LOC55, t);
			LOC61 = 0;
			LOC61 = atomictypex_454045(((NimStringDesc*) &TMP3055), ((NU16) 202), t, info);
			add_294117(result, LOC61);
			LOC62 = 0;
			LOC62 = base_321021(t);
			LOC63 = 0;
			LOC63 = maptypetoastx_454055(LOC62, info, inst, NIM_FALSE);
			add_294117(result, LOC63);
		}
		goto LA50;
		LA53: ;
		{
			result = atomictypex_454045(((NimStringDesc*) &TMP3055), ((NU16) 202), t, info);
		}
		LA50: ;
	}
	break;
	case ((NU8) 9):
	{
		Tlineinfo192336 LOC66;
		{
			if (!(*t).n == 0) goto LA69;
			LOC66 = info;
		}
		goto LA67;
		LA69: ;
		{
			LOC66 = (*(*t).n).info;
		}
		LA67: ;
		result = newnodeit_295801(((NU8) 42), LOC66, t);
		{
			NI i_454318;
			NI HEX3Atmp_454640;
			NI LOC73;
			NI res_454643;
			i_454318 = 0;
			HEX3Atmp_454640 = 0;
			LOC73 = 0;
			LOC73 = len_296339(t);
			HEX3Atmp_454640 = (LOC73 - 1);
			res_454643 = ((NI) 0);
			{
				while (1) {
					Tnode293798* LOC76;
					if (!(res_454643 <= HEX3Atmp_454640)) goto LA75;
					i_454318 = res_454643;
					LOC76 = 0;
					LOC76 = maptypetoastx_454055((*t).sons->data[i_454318], info, inst, NIM_FALSE);
					add_294117(result, LOC76);
					res_454643 += ((NI) 1);
				} LA75: ;
			}
		}
	}
	break;
	case ((NU8) 11):
	{
		{
			if (!inst) goto LA80;
			{
				Ttype293836* LOC86;
				if (!allowrecursion) goto LA84;
				LOC86 = 0;
				LOC86 = lastson_296377(t);
				result = maptypetoastx_454055(LOC86, info, inst, NIM_TRUE);
			}
			goto LA82;
			LA84: ;
			{
				Tlineinfo192336 LOC88;
				Ttype293836* LOC94;
				Tnode293798* LOC95;
				{
					if (!(*t).n == 0) goto LA91;
					LOC88 = info;
				}
				goto LA89;
				LA91: ;
				{
					LOC88 = (*(*t).n).info;
				}
				LA89: ;
				result = newnodeit_295801(((NU8) 42), LOC88, t);
				LOC94 = 0;
				LOC94 = lastson_296377(t);
				LOC95 = 0;
				LOC95 = maptypetoastx_454055(LOC94, info, inst, NIM_FALSE);
				add_294117(result, LOC95);
				{
					NI i_454347;
					NI HEX3Atmp_454648;
					NI LOC97;
					NI res_454651;
					i_454347 = 0;
					HEX3Atmp_454648 = 0;
					LOC97 = 0;
					LOC97 = len_296339(t);
					HEX3Atmp_454648 = (NI)((LOC97 - 1) - ((NI) 1));
					res_454651 = ((NI) 1);
					{
						while (1) {
							Tnode293798* LOC100;
							if (!(res_454651 <= HEX3Atmp_454648)) goto LA99;
							i_454347 = res_454651;
							LOC100 = 0;
							LOC100 = maptypetoastx_454055((*t).sons->data[i_454347], info, inst, NIM_FALSE);
							add_294117(result, LOC100);
							res_454651 += ((NI) 1);
						} LA99: ;
					}
				}
			}
			LA82: ;
		}
		goto LA78;
		LA80: ;
		{
			Ttype293836* LOC102;
			LOC102 = 0;
			LOC102 = lastson_296377(t);
			result = maptypetoastx_454055(LOC102, info, inst, NIM_FALSE);
		}
		LA78: ;
	}
	break;
	case ((NU8) 10):
	case ((NU8) 15):
	case ((NU8) 53):
	{
		Ttype293836* LOC104;
		LOC104 = 0;
		LOC104 = lastson_296377(t);
		result = maptypetoastx_454055(LOC104, info, inst, NIM_FALSE);
	}
	break;
	case ((NU8) 13):
	{
		{
			Tlineinfo192336 LOC110;
			Tnode293798* LOC116;
			if (!inst) goto LA108;
			{
				if (!(*t).n == 0) goto LA113;
				LOC110 = info;
			}
			goto LA111;
			LA113: ;
			{
				LOC110 = (*(*t).n).info;
			}
			LA111: ;
			result = newnodeit_295801(((NU8) 146), LOC110, t);
			LOC116 = 0;
			LOC116 = maptypetoastx_454055((*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
			add_294117(result, LOC116);
		}
		goto LA106;
		LA108: ;
		{
			{
				NIM_BOOL LOC120;
				LOC120 = 0;
				LOC120 = allowrecursion;
				if (LOC120) goto LA121;
				LOC120 = ((*t).sym == NIM_NIL);
				LA121: ;
				if (!LOC120) goto LA122;
				result = maptypetobracketx_454061(((NimStringDesc*) &TMP3056), ((NU16) 174), t, info, inst);
			}
			goto LA118;
			LA122: ;
			{
				result = atomictypex_454045((*(*(*t).sym).name).s, (*(*t).sym).magic, t, info);
			}
			LA118: ;
		}
		LA106: ;
	}
	break;
	case ((NU8) 12):
	case ((NU8) 30):
	{
		result = atomictypex_454045((*(*(*t).sym).name).s, (*(*t).sym).magic, t, info);
	}
	break;
	case ((NU8) 17):
	{
		{
			Tlineinfo192336 LOC131;
			if (!inst) goto LA129;
			{
				if (!(*t).n == 0) goto LA134;
				LOC131 = info;
			}
			goto LA132;
			LA134: ;
			{
				LOC131 = (*(*t).n).info;
			}
			LA132: ;
			result = newnodeit_295801(((NU8) 133), LOC131, t);
			add_294117(result, emptynode_294801);
			{
				if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA139;
				add_294117(result, emptynode_294801);
			}
			goto LA137;
			LA139: ;
			{
				Tnode293798* nn;
				Tlineinfo192336 LOC142;
				Tnode293798* LOC148;
				{
					if (!(*t).n == 0) goto LA145;
					LOC142 = info;
				}
				goto LA143;
				LA145: ;
				{
					LOC142 = (*(*t).n).info;
				}
				LA143: ;
				nn = newnodeit_295801(((NU8) 77), LOC142, t);
				LOC148 = 0;
				LOC148 = maptypetoastx_454055((*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
				add_294117(nn, LOC148);
				add_294117(result, nn);
			}
			LA137: ;
			{
				NI LOC151;
				Tnode293798* LOC154;
				LOC151 = 0;
				LOC151 = len_294062((*t).n);
				if (!(((NI) 0) < LOC151)) goto LA152;
				LOC154 = 0;
				LOC154 = objectnode_454120((*t).n);
				add_294117(result, LOC154);
			}
			goto LA149;
			LA152: ;
			{
				add_294117(result, emptynode_294801);
			}
			LA149: ;
		}
		goto LA127;
		LA129: ;
		{
			{
				NIM_BOOL LOC159;
				Tlineinfo192336 LOC163;
				Tnode293798* LOC175;
				LOC159 = 0;
				LOC159 = allowrecursion;
				if (LOC159) goto LA160;
				LOC159 = ((*t).sym == NIM_NIL);
				LA160: ;
				if (!LOC159) goto LA161;
				{
					if (!(*t).n == 0) goto LA166;
					LOC163 = info;
				}
				goto LA164;
				LA166: ;
				{
					LOC163 = (*(*t).n).info;
				}
				LA164: ;
				result = newnodeit_295801(((NU8) 133), LOC163, t);
				add_294117(result, emptynode_294801);
				{
					if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA171;
					add_294117(result, emptynode_294801);
				}
				goto LA169;
				LA171: ;
				{
					Tnode293798* LOC174;
					LOC174 = 0;
					LOC174 = maptypetoastx_454055((*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
					add_294117(result, LOC174);
				}
				LA169: ;
				LOC175 = 0;
				LOC175 = copytree_297822((*t).n);
				add_294117(result, LOC175);
			}
			goto LA157;
			LA161: ;
			{
				result = atomictypex_454045((*(*(*t).sym).name).s, (*(*t).sym).magic, t, info);
			}
			LA157: ;
		}
		LA127: ;
	}
	break;
	case ((NU8) 14):
	{
		Tlineinfo192336 LOC178;
		Tnode293798* LOC184;
		{
			if (!(*t).n == 0) goto LA181;
			LOC178 = info;
		}
		goto LA179;
		LA181: ;
		{
			LOC178 = (*(*t).n).info;
		}
		LA179: ;
		result = newnodeit_295801(((NU8) 150), LOC178, t);
		LOC184 = 0;
		LOC184 = copytree_297822((*t).n);
		add_294117(result, LOC184);
	}
	break;
	case ((NU8) 18):
	{
		{
			Tlineinfo192336 LOC190;
			if (!inst) goto LA188;
			{
				if (!(*t).n == 0) goto LA193;
				LOC190 = info;
			}
			goto LA191;
			LA193: ;
			{
				LOC190 = (*(*t).n).info;
			}
			LA191: ;
			result = newnodeit_295801(((NU8) 134), LOC190, t);
			{
				Tnode293798* s_454480;
				Tnodeseq293792* HEX3Atmp_454656;
				NI i_454659;
				NI L_454661;
				s_454480 = 0;
				HEX3Atmp_454656 = 0;
				HEX3Atmp_454656 = (*(*t).n).kindU.S6.sons;
				i_454659 = ((NI) 0);
				L_454661 = (HEX3Atmp_454656 ? HEX3Atmp_454656->Sup.len : 0);
				{
					while (1) {
						Tnode293798* id_454483;
						Tlineinfo192336 LOC199;
						Tnode293798* LOC205;
						if (!(i_454659 < L_454661)) goto LA198;
						s_454480 = HEX3Atmp_454656->data[i_454659];
						{
							if (!(*t).n == 0) goto LA202;
							LOC199 = info;
						}
						goto LA200;
						LA202: ;
						{
							LOC199 = (*(*t).n).info;
						}
						LA200: ;
						id_454483 = newnodeit_295801(((NU8) 35), LOC199, t);
						add_294117(id_454483, s_454480);
						LOC205 = 0;
						LOC205 = maptypetoastx_454055((*s_454480).typ, info, inst, NIM_FALSE);
						add_294117(id_454483, LOC205);
						add_294117(id_454483, emptynode_294801);
						add_294117(result, id_454483);
						i_454659 += ((NI) 1);
					} LA198: ;
				}
			}
		}
		goto LA186;
		LA188: ;
		{
			result = maptypetobracketx_454061(((NimStringDesc*) &TMP3057), ((NU16) 176), t, info, inst);
		}
		LA186: ;
	}
	break;
	case ((NU8) 19):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3058), ((NU16) 168), t, info, inst);
	}
	break;
	case ((NU8) 21):
	{
		{
			Tlineinfo192336 LOC213;
			Tnode293798* LOC219;
			if (!inst) goto LA211;
			{
				if (!(*t).n == 0) goto LA216;
				LOC213 = info;
			}
			goto LA214;
			LA216: ;
			{
				LOC213 = (*(*t).n).info;
			}
			LA214: ;
			result = newnodeit_295801(((NU8) 142), LOC213, t);
			LOC219 = 0;
			LOC219 = maptypetoastx_454055((*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
			add_294117(result, LOC219);
		}
		goto LA209;
		LA211: ;
		{
			result = maptypetobracketx_454061(((NimStringDesc*) &TMP3059), ((NU16) 172), t, info, inst);
		}
		LA209: ;
	}
	break;
	case ((NU8) 22):
	{
		{
			Tlineinfo192336 LOC226;
			Tnode293798* LOC232;
			if (!inst) goto LA224;
			{
				if (!(*t).n == 0) goto LA229;
				LOC226 = info;
			}
			goto LA227;
			LA229: ;
			{
				LOC226 = (*(*t).n).info;
			}
			LA227: ;
			result = newnodeit_295801(((NU8) 141), LOC226, t);
			LOC232 = 0;
			LOC232 = maptypetoastx_454055((*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
			add_294117(result, LOC232);
		}
		goto LA222;
		LA224: ;
		{
			result = maptypetobracketx_454061(((NimStringDesc*) &TMP3060), ((NU16) 171), t, info, inst);
		}
		LA222: ;
	}
	break;
	case ((NU8) 23):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3061), ((NU16) 173), t, info, inst);
	}
	break;
	case ((NU8) 24):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3062), ((NU16) 169), t, info, inst);
	}
	break;
	case ((NU8) 25):
	{
		{
			Tlineinfo192336 LOC241;
			Tnode293798* fp;
			Tlineinfo192336 LOC247;
			if (!inst) goto LA239;
			{
				if (!(*t).n == 0) goto LA244;
				LOC241 = info;
			}
			goto LA242;
			LA244: ;
			{
				LOC241 = (*(*t).n).info;
			}
			LA242: ;
			result = newnodeit_295801(((NU8) 147), LOC241, t);
			{
				if (!(*t).n == 0) goto LA250;
				LOC247 = info;
			}
			goto LA248;
			LA250: ;
			{
				LOC247 = (*(*t).n).info;
			}
			LA248: ;
			fp = newnodeit_295801(((NU8) 76), LOC247, t);
			{
				if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA255;
				add_294117(fp, emptynode_294801);
			}
			goto LA253;
			LA255: ;
			{
				Tnode293798* LOC258;
				Tnode293798* LOC259;
				LOC258 = 0;
				LOC258 = HEX5BHEX5D_294238((*t).n, ((NI) 0));
				LOC259 = 0;
				LOC259 = maptypetoastx_454055((*t).sons->data[((NI) 0)], (*LOC258).info, inst, NIM_FALSE);
				add_294117(fp, LOC259);
			}
			LA253: ;
			{
				NI i_454566;
				NI HEX3Atmp_454663;
				NI i_454666;
				i_454566 = 0;
				HEX3Atmp_454663 = 0;
				HEX3Atmp_454663 = ((*t).sons ? (*t).sons->Sup.len : 0);
				i_454666 = ((NI) 1);
				{
					while (1) {
						Tnode293798* id_454569;
						Tlineinfo192336 LOC263;
						Tnode293798* LOC269;
						Tnode293798* LOC270;
						if (!(i_454666 < HEX3Atmp_454663)) goto LA262;
						i_454566 = i_454666;
						{
							if (!(*t).n == 0) goto LA266;
							LOC263 = info;
						}
						goto LA264;
						LA266: ;
						{
							LOC263 = (*(*t).n).info;
						}
						LA264: ;
						id_454569 = newnodeit_295801(((NU8) 35), LOC263, t);
						LOC269 = 0;
						LOC269 = HEX5BHEX5D_294238((*t).n, i_454566);
						add_294117(id_454569, LOC269);
						LOC270 = 0;
						LOC270 = maptypetoastx_454055((*t).sons->data[i_454566], info, inst, NIM_FALSE);
						add_294117(id_454569, LOC270);
						add_294117(id_454569, emptynode_294801);
						add_294117(fp, id_454569);
						i_454666 += ((NI) 1);
					} LA262: ;
				}
			}
			add_294117(result, fp);
			add_294117(result, emptynode_294801);
		}
		goto LA237;
		LA239: ;
		{
			result = maptypetobracketx_454061(((NimStringDesc*) &TMP3063), ((NU16) 0), t, info, inst);
		}
		LA237: ;
	}
	break;
	case ((NU8) 27):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3064), ((NU16) 166), t, info, inst);
	}
	break;
	case ((NU8) 20):
	{
		Tlineinfo192336 LOC274;
		Tnode293798* LOC280;
		Tnode293798* LOC281;
		Tnode293798* LOC282;
		{
			if (!(*t).n == 0) goto LA277;
			LOC274 = info;
		}
		goto LA275;
		LA277: ;
		{
			LOC274 = (*(*t).n).info;
		}
		LA275: ;
		result = newnodeit_295801(((NU8) 42), LOC274, t);
		LOC280 = 0;
		LOC280 = atomictypex_454045(((NimStringDesc*) &TMP3065), ((NU16) 167), t, info);
		add_294117(result, LOC280);
		LOC281 = 0;
		LOC281 = copytree_297822((*(*t).n).kindU.S6.sons->data[((NI) 0)]);
		add_294117(result, LOC281);
		LOC282 = 0;
		LOC282 = copytree_297822((*(*t).n).kindU.S6.sons->data[((NI) 1)]);
		add_294117(result, LOC282);
	}
	break;
	case ((NU8) 26):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3066), ((NU16) 196), t, info);
	}
	break;
	case ((NU8) 28):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3067), ((NU16) 194), t, info);
	}
	break;
	case ((NU8) 29):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3068), ((NU16) 195), t, info);
	}
	break;
	case ((NU8) 31):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3069), ((NU16) 178), t, info);
	}
	break;
	case ((NU8) 32):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3070), ((NU16) 179), t, info);
	}
	break;
	case ((NU8) 33):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3071), ((NU16) 180), t, info);
	}
	break;
	case ((NU8) 34):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3072), ((NU16) 181), t, info);
	}
	break;
	case ((NU8) 35):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3073), ((NU16) 182), t, info);
	}
	break;
	case ((NU8) 36):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3074), ((NU16) 188), t, info);
	}
	break;
	case ((NU8) 37):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3075), ((NU16) 189), t, info);
	}
	break;
	case ((NU8) 38):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3076), ((NU16) 190), t, info);
	}
	break;
	case ((NU8) 39):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3077), ((NU16) 191), t, info);
	}
	break;
	case ((NU8) 40):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3078), ((NU16) 183), t, info);
	}
	break;
	case ((NU8) 41):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3079), ((NU16) 184), t, info);
	}
	break;
	case ((NU8) 42):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3080), ((NU16) 185), t, info);
	}
	break;
	case ((NU8) 43):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3081), ((NU16) 186), t, info);
	}
	break;
	case ((NU8) 44):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3082), ((NU16) 187), t, info);
	}
	break;
	case ((NU8) 45):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3083), ((NU16) 0), t, info);
	}
	break;
	case ((NU8) 46):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3084), ((NU16) 0), t, info, inst);
	}
	break;
	case ((NU8) 47):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3085), ((NU16) 0), t, info, inst);
	}
	break;
	case ((NU8) 48):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3086), ((NU16) 170), t, info, inst);
	}
	break;
	case ((NU8) 49):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3087), ((NU16) 0), t, info, inst);
	}
	break;
	case ((NU8) 50):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3088), ((NU16) 0), t, info);
	}
	break;
	case ((NU8) 51):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3089), ((NU16) 0), t, info, inst);
	}
	break;
	case ((NU8) 52):
	{
		Tnode293798* LOC308;
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3090), ((NU16) 0), t, info, inst);
		LOC308 = 0;
		LOC308 = copytree_297822((*t).n);
		add_294117(result, LOC308);
	}
	break;
	case ((NU8) 54):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3091), ((NU16) 0), t, info, inst);
	}
	break;
	case ((NU8) 55):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3092), ((NU16) 126), t, info, inst);
	}
	break;
	case ((NU8) 56):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3093), ((NU16) 127), t, info, inst);
	}
	break;
	case ((NU8) 57):
	{
		result = maptypetobracketx_454061(((NimStringDesc*) &TMP3094), ((NU16) 99), t, info, inst);
	}
	break;
	case ((NU8) 58):
	{
		result = atomictypex_454045(((NimStringDesc*) &TMP3095), ((NU16) 0), t, info);
	}
	break;
	case ((NU8) 59):
	case ((NU8) 60):
	case ((NU8) 61):
	{
		{
			if (!inst) goto LA317;
			{
				if (!!(((*t).n == NIM_NIL))) goto LA321;
				result = copytree_297822((*t).n);
			}
			goto LA319;
			LA321: ;
			{
				result = atomictypex_454045(((NimStringDesc*) &TMP3051), ((NU16) 175), t, info);
			}
			LA319: ;
		}
		goto LA315;
		LA317: ;
		{
			Tlineinfo192336 LOC325;
			Tnode293798* LOC331;
			{
				if (!(*t).n == 0) goto LA328;
				LOC325 = info;
			}
			goto LA326;
			LA328: ;
			{
				LOC325 = (*(*t).n).info;
			}
			LA326: ;
			result = newnodeit_295801(((NU8) 42), LOC325, t);
			LOC331 = 0;
			LOC331 = atomictypex_454045(((NimStringDesc*) &TMP3096), ((NU16) 0), t, info);
			add_294117(result, LOC331);
			{
				Tnode293798* LOC336;
				if (!!(((*t).n == NIM_NIL))) goto LA334;
				LOC336 = 0;
				LOC336 = copytree_297822((*t).n);
				add_294117(result, LOC336);
			}
			LA334: ;
		}
		LA315: ;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode293798*, opmaptypetoast_454668)(Ttype293836* t, Tlineinfo192336 info) {
	Tnode293798* result;
	result = 0;
	result = maptypetoastx_454055(t, info, NIM_FALSE, NIM_TRUE);
	return result;
}

N_NIMCALL(Tnode293798*, opmaptypeinsttoast_454673)(Ttype293836* t, Tlineinfo192336 info) {
	Tnode293798* result;
	result = 0;
	result = maptypetoastx_454055(t, info, NIM_TRUE, NIM_FALSE);
	return result;
}

N_NIMCALL(Tnode293798*, opmaptypeimpltoast_454678)(Ttype293836* t, Tlineinfo192336 info) {
	Tnode293798* result;
	result = 0;
	result = maptypetoastx_454055(t, info, NIM_TRUE, NIM_TRUE);
	return result;
}

static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
	(*s).hasRaiseAction = NIM_FALSE;
	(*s).prev = exchandler_18837;
	exchandler_18837 = s;
}

static N_INLINE(NIM_BOOL, fileexists_131604)(NimStringDesc* filename) {
	NIM_BOOL result;
	result = 0;
	result = nosexistsFile(filename);
	return result;
}

static N_INLINE(void, popSafePoint)(void) {
	exchandler_18837 = (*exchandler_18837).prev;
}

static N_INLINE(Exception*, getCurrentException)(void) {
	Exception* result;
	result = 0;
	result = currexception_18839;
	return result;
}

static N_INLINE(void, incref_53419)(Cell47305* c) {
	(*c).refcount = (NI)((NU64)((*c).refcount) + (NU64)(((NI) 8)));
}

static N_INLINE(void, decref_53001)(Cell47305* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA3;
		rtladdzct_52601(c);
	}
	LA3: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		Cell47305* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_51440(src);
		incref_53419(LOC5);
	}
	LA3: ;
	{
		Cell47305* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_51440((*dest));
		decref_53001(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

static N_INLINE(void, popCurrentException)(void) {
	asgnRef((void**) (&currexception_18839), NIM_NIL);
}

N_NIMCALL(NimStringDesc*, opslurp_454025)(NimStringDesc* file, Tlineinfo192336 info, Tsym293830* module) {
	NimStringDesc* volatile result;
	TSafePoint TMP3099;
	result = 0;
	pushSafePoint(&TMP3099);
	TMP3099.status = setjmp(TMP3099.context);
	if (TMP3099.status == 0) {
		NimStringDesc* volatile filename;
		NimStringDesc* LOC2;
		NimStringDesc* LOC3;
		Tnodeseq293792* LOC9;
		TY309080 LOC10;
		Tnode293798* LOC11;
		LOC2 = 0;
		LOC2 = tofullpath_193257(info.fileindex);
		LOC3 = 0;
		LOC3 = nosparentDir(LOC2);
		filename = HEX2F_128265(LOC3, file);
		{
			NIM_BOOL LOC6;
			LOC6 = 0;
			LOC6 = fileexists_131604(filename);
			if (!!(LOC6)) goto LA7;
			filename = findfile_171483(file);
		}
		LA7: ;
		result = readfile_14868(filename);
		LOC9 = 0;
		LOC9 = (Tnodeseq293792*) newSeq((&NTI293792), 1);
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC10[0] = newstrnode_294677(((NU8) 20), filename);
		asgnRefNoCycle((void**) (&LOC9->data[0]), LOC10[0]);
		LOC11 = 0;
		LOC11 = newnode_295601(((NU8) 121), info, LOC9, NIM_NIL);
		appendtomodule_294869(module, LOC11);
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI3628))) {
			TMP3099.status = 0;
			localerror_197080(info, ((NU16) 3), file);
			result = copyString(((NimStringDesc*) &TMP3100));
			popCurrentException();
		}
	}
	if (TMP3099.status != 0) reraiseException();
	return result;
}

static N_INLINE(void, copymem_7478)(void* dest, void* source, NI size) {
	void* LOC1;
	LOC1 = 0;
	LOC1 = memcpy(dest, source, ((size_t) (size)));
}

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

N_NIMCALL(NimStringDesc*, readoutput_454003)(Processobj163404* p) {
	NimStringDesc* result;
	Streamobj156818* output;
	NI LOC9;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP3100));
	output = nospoutputStream(p);
	{
		while (1) {
			NIM_BOOL LOC3;
			NimStringDesc* LOC4;
			LOC3 = 0;
			LOC3 = atend_156884(output);
			if (!!(LOC3)) goto LA2;
			LOC4 = 0;
			LOC4 = readline_157761(output);
			result = resizeString(result, LOC4->Sup.len + 0);
appendString(result, LOC4);
			result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TMP3120));
		} LA2: ;
	}
	{
		if (!(((NI) 0) < (result ? result->Sup.len : 0))) goto LA7;
		result = setLengthStr(result, ((NI) ((NI)((result ? result->Sup.len : 0) - ((NI) 1)))));
	}
	LA7: ;
	LOC9 = 0;
	LOC9 = nospwaitForExit(p, ((NI) -1));
	return result;
}

N_NIMCALL(NimStringDesc*, opgorge_454009)(NimStringDesc* cmd, NimStringDesc* input, NimStringDesc* cache) {
	NimStringDesc* volatile result;
{	result = 0;
	{
		Sha1digest202007 h;
		NimStringDesc* LOC5;
		NimStringDesc* filename;
		NimStringDesc* LOC6;
		NimStringDesc* LOC7;
		FILE* f;
		NIM_BOOL volatile readsuccessful;
		TSafePoint TMP3104;
		if (!(((NI) 0) < (cache ? cache->Sup.len : 0))) goto LA3;
		memset((void*)h, 0, sizeof(h));
		LOC5 = 0;
		LOC5 = rawNewString(cmd->Sup.len + input->Sup.len + cache->Sup.len + 2);
appendString(LOC5, cmd);
appendString(LOC5, ((NimStringDesc*) &TMP3101));
appendString(LOC5, input);
appendString(LOC5, ((NimStringDesc*) &TMP3101));
appendString(LOC5, cache);
		chckNil((void*)h);
		memset((void*)h, 0, sizeof(h));
		securehash_203339(LOC5, h);
		LOC6 = 0;
		LOC7 = 0;
		LOC7 = HEX24_203348(h);
		LOC6 = rawNewString(LOC7->Sup.len + 6);
appendString(LOC6, ((NimStringDesc*) &TMP3102));
appendString(LOC6, LOC7);
		filename = togeneratedfile_171093(LOC6, ((NimStringDesc*) &TMP3103));
		f = 0;
		{
			NIM_BOOL LOC10;
			LOC10 = 0;
			LOC10 = open_14803(&f, filename, ((NU8) 0), ((NI) -1));
			if (!LOC10) goto LA11;
			result = readall_14865(f);
			close_14853(f);
			goto BeforeRet;
		}
		LA11: ;
		readsuccessful = NIM_FALSE;
		pushSafePoint(&TMP3104);
		TMP3104.status = setjmp(TMP3104.context);
		if (TMP3104.status == 0) {
			Processobj163404* p;
			TY318494 LOC14;
			memset((void*)LOC14, 0, sizeof(LOC14));
			p = nospstartProcess(cmd, ((NimStringDesc*) &TMP3100), LOC14, 0, NIM_NIL, 12);
			{
				Streamobj156818* LOC19;
				Streamobj156818* LOC20;
				if (!!(((input ? input->Sup.len : 0) == ((NI) 0)))) goto LA17;
				LOC19 = 0;
				LOC19 = nospinputStream(p);
				write_156969(LOC19, input);
				LOC20 = 0;
				LOC20 = nospinputStream(p);
				close_156870(LOC20);
			}
			LA17: ;
			result = readoutput_454003(p);
			readsuccessful = NIM_TRUE;
			writefile_14871(filename, result);
			popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(getCurrentException()->Sup.m_type, (&NTI3628))||isObj(getCurrentException()->Sup.m_type, (&NTI3630))) {
				TMP3104.status = 0;
				{
					if (!!(readsuccessful)) goto LA25;
					result = copyString(((NimStringDesc*) &TMP3100));
				}
				LA25: ;
				popCurrentException();
			}
		}
		if (TMP3104.status != 0) reraiseException();
	}
	goto LA1;
	LA3: ;
	{
		TSafePoint TMP3123;
		pushSafePoint(&TMP3123);
		TMP3123.status = setjmp(TMP3123.context);
		if (TMP3123.status == 0) {
			Processobj163404* p;
			TY318494 LOC29;
			memset((void*)LOC29, 0, sizeof(LOC29));
			p = nospstartProcess(cmd, ((NimStringDesc*) &TMP3100), LOC29, 0, NIM_NIL, 12);
			{
				Streamobj156818* LOC34;
				Streamobj156818* LOC35;
				if (!!(((input ? input->Sup.len : 0) == ((NI) 0)))) goto LA32;
				LOC34 = 0;
				LOC34 = nospinputStream(p);
				write_156969(LOC34, input);
				LOC35 = 0;
				LOC35 = nospinputStream(p);
				close_156870(LOC35);
			}
			LA32: ;
			result = readoutput_454003(p);
			popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(getCurrentException()->Sup.m_type, (&NTI3628))||isObj(getCurrentException()->Sup.m_type, (&NTI3630))) {
				TMP3123.status = 0;
				result = copyString(((NimStringDesc*) &TMP3100));
				popCurrentException();
			}
		}
		if (TMP3123.status != 0) reraiseException();
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}
NIM_EXTERNC N_NOINLINE(void, compiler_vmdepsInit000)(void) {
}

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

