/* Generated by Nim Compiler v1.4.0 */
/*   (c) 2020 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 32

/* section: NIM_merge_HEADERS */

#include "nimbase.h"
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix

/* section: NIM_merge_FRAME_DEFINES */
#define nimfr_(x, y)
#define nimln_(x, y)

/* section: NIM_merge_FORWARD_TYPES */
typedef struct tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tySequence__sawZST1Esj3o7EY9ayWwGPw tySequence__sawZST1Esj3o7EY9ayWwGPw;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;

/* section: NIM_merge_TYPES */
typedef NU8 tyEnum_RstNodeKind__Q1jM9a8f0MKlvbLZpipB3qg;
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg {
tyEnum_RstNodeKind__Q1jM9a8f0MKlvbLZpipB3qg kind;
NimStringDesc* text;
NI level;
tySequence__sawZST1Esj3o7EY9ayWwGPw* sons;
};
typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
void* bottom;
};
struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
NI len;
NI cap;
tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
};
typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
tyArray__0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
NI Field1;
};
typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
NI len;
tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
};
struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
NI minLargeObj;
NI maxLargeObj;
tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
NU32 flBitmap;
tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
};
struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
NI counter;
NI max;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
};
struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
NI gcThreadId;
};

/* section: NIM_merge_SEQ_TYPES */
struct tySequence__sawZST1Esj3o7EY9ayWwGPw {
  TGenericSeq Sup;
  tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* data[SEQ_DECL_SIZE];
};

/* section: NIM_merge_PROC_HEADERS */
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, Marker_tySequence__sawZST1Esj3o7EY9ayWwGPw)(void* p, NI op);
static N_NIMCALL(void, Marker_tyRef__eiDrOE3AS6QEbCsY2gtdWQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*, newRstNode__9bXoUUqG5jV9cUn3dHohLAXA)(tyEnum_RstNodeKind__Q1jM9a8f0MKlvbLZpipB3qg kind);
N_LIB_PRIVATE N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y);
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y);
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT__Y66tOYFjgwJ0k4aLz4bc0Q)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y);
N_LIB_PRIVATE N_NIMCALL(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*, newRstNode__1jaf6GW9cTGFKmVxMM1pg9aA)(tyEnum_RstNodeKind__Q1jM9a8f0MKlvbLZpipB3qg kind, NimStringDesc* s);
N_LIB_PRIVATE N_NIMCALL(void, add__6h6IpXf2O9aeD4hz9aJicc2A)(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* father, tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* son);

/* section: NIM_merge_DATA */
N_LIB_PRIVATE TNimType NTI__CjRS2xrmuD58kdGedE3yyg_;
N_LIB_PRIVATE TNimType NTI__Q1jM9a8f0MKlvbLZpipB3qg_;
extern TNimType NTI__77mFvmsOLKik79ci2hXkHEg_;
extern TNimType NTI__rR5Bzr1D5krxoo1NcNyeMA_;
N_LIB_PRIVATE TNimType NTI__sawZST1Esj3o7EY9ayWwGPw_;
N_LIB_PRIVATE TNimType NTI__eiDrOE3AS6QEbCsY2gtdWQ_;

/* section: NIM_merge_VARS */
extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;

/* section: NIM_merge_PROCS */
static N_NIMCALL(void, Marker_tySequence__sawZST1Esj3o7EY9ayWwGPw)(void* p, NI op) {
	tySequence__sawZST1Esj3o7EY9ayWwGPw* a;
	NI T1_;
	a = (tySequence__sawZST1Esj3o7EY9ayWwGPw*)p;
	T1_ = (NI)0;
	for (T1_ = 0; T1_ < (a ? a->Sup.len : 0); T1_++) {
	nimGCvisit((void*)a->data[T1_], op);
	}
}
static N_NIMCALL(void, Marker_tyRef__eiDrOE3AS6QEbCsY2gtdWQ)(void* p, NI op) {
	tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* a;
	a = (tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*)p;
	nimGCvisit((void*)(*a).text, op);
	nimGCvisit((void*)(*a).sons, op);
}
N_LIB_PRIVATE N_NIMCALL(NI, len__bM2v46TeKfDIrVkegSIy9ag)(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* n) {
	NI result;
	NI T1_;
	result = (NI)0;
	T1_ = ((*n).sons ? (*n).sons->Sup.len : 0);
	result = T1_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*, lastSon__0dL43t7uo9b9ast8lG3CHj1A)(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* n) {
	tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* result;
	NI T1_;
	result = (tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*)0;
	T1_ = ((*n).sons ? (*n).sons->Sup.len : 0);
	result = (*n).sons->data[(NI)(T1_ - ((NI) 1))];
	return result;
}
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y))))));
	return result;
}
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((NU32)(((NU) (x))) < (NU32)(((NU) (y))));
	return result;
}
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	addZCT__Y66tOYFjgwJ0k4aLz4bc0Q((&gch__IcYaEuuWivYAS86vFMTS3Q.zct), c);
}
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system((*c).refcount, ((NI) 8));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem((*c).refcount, ((NI) 8));
		if (!T3_) goto LA4_;
		rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system(c);
	}
	LA4_: ;
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
	NI T1_;
	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = (NI)0;
	T1_ = minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system(((NI) (ptrdiff_t) (usr)), ((NI) 8));
	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	return result;
}
static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(p);
	decRef__AT1eRuflKWyTTBdLjEDZbgsystem(T1_);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*, newRstNode__9bXoUUqG5jV9cUn3dHohLAXA)(tyEnum_RstNodeKind__Q1jM9a8f0MKlvbLZpipB3qg kind) {
	tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* result;
	result = (tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*)0;
	result = (tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*) newObj((&NTI__eiDrOE3AS6QEbCsY2gtdWQ_), sizeof(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg));
	if ((*result).sons) { nimGCunrefNoCycle((*result).sons); (*result).sons = NIM_NIL; }
	(*result).kind = kind;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*, newRstNode__1jaf6GW9cTGFKmVxMM1pg9aA)(tyEnum_RstNodeKind__Q1jM9a8f0MKlvbLZpipB3qg kind, NimStringDesc* s) {
	tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* result;
	NimStringDesc* T1_;
	result = (tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*)0;
	result = newRstNode__9bXoUUqG5jV9cUn3dHohLAXA(kind);
	T1_ = (NimStringDesc*)0;
	T1_ = (*result).text; (*result).text = copyStringRC1(s);
	if (T1_) nimGCunrefNoCycle(T1_);
	return result;
}
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU32)(((NU) (x))) + (NU32)(((NU) (y))))));
	return result;
}
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem((*c).refcount, ((NI) 8));
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(src);
		incRef__AT1eRuflKWyTTBdLjEDZbg_3system(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem((*dest));
		decRef__AT1eRuflKWyTTBdLjEDZbgsystem(T10_);
	}
	LA8_: ;
	(*dest) = src;
}
N_LIB_PRIVATE N_NIMCALL(void, add__6h6IpXf2O9aeD4hz9aJicc2A)(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* father, tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* son) {
	NI T1_;
	asgnRef((void**) (&(*father).sons), (tySequence__sawZST1Esj3o7EY9ayWwGPw*) incrSeqV3((TGenericSeq*)((*father).sons), (&NTI__sawZST1Esj3o7EY9ayWwGPw_)));
	T1_ = (*father).sons->Sup.len++;
	asgnRef((void**) (&(*father).sons->data[T1_]), son);
}
N_LIB_PRIVATE N_NIMCALL(void, add__LfzNpI2Kb4J8icovXV69apg)(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* father, NimStringDesc* s) {
	tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* T1_;
	NI T2_;
	T1_ = (tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*)0;
	T1_ = newRstNode__1jaf6GW9cTGFKmVxMM1pg9aA(((tyEnum_RstNodeKind__Q1jM9a8f0MKlvbLZpipB3qg) 64), s);
	asgnRef((void**) (&(*father).sons), (tySequence__sawZST1Esj3o7EY9ayWwGPw*) incrSeqV3((TGenericSeq*)((*father).sons), (&NTI__sawZST1Esj3o7EY9ayWwGPw_)));
	T2_ = (*father).sons->Sup.len++;
	asgnRef((void**) (&(*father).sons->data[T2_]), T1_);
}
N_LIB_PRIVATE N_NIMCALL(void, addIfNotNil__6h6IpXf2O9aeD4hz9aJicc2A_2)(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* father, tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg* son) {
	{
		if (!!((son == NIM_NIL))) goto LA3_;
		add__6h6IpXf2O9aeD4hz9aJicc2A(father, son);
	}
	LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, docutils_rstastDatInit000)(void) {

/* section: NIM_merge_TYPE_INIT1 */
static TNimNode* TM__MI3pYf9cgAsIrjZXIlQqHnQ_2_4[4];
static TNimNode* TM__MI3pYf9cgAsIrjZXIlQqHnQ_3_65[65];
NI TM__MI3pYf9cgAsIrjZXIlQqHnQ_5;
static char* NIM_CONST TM__MI3pYf9cgAsIrjZXIlQqHnQ_4[65] = {
"rnInner", 
"rnHeadline", 
"rnOverline", 
"rnTransition", 
"rnParagraph", 
"rnBulletList", 
"rnBulletItem", 
"rnEnumList", 
"rnEnumItem", 
"rnDefList", 
"rnDefItem", 
"rnDefName", 
"rnDefBody", 
"rnFieldList", 
"rnField", 
"rnFieldName", 
"rnFieldBody", 
"rnOptionList", 
"rnOptionListItem", 
"rnOptionGroup", 
"rnOption", 
"rnOptionString", 
"rnOptionArgument", 
"rnDescription", 
"rnLiteralBlock", 
"rnQuotedLiteralBlock", 
"rnLineBlock", 
"rnLineBlockItem", 
"rnBlockQuote", 
"rnTable", 
"rnGridTable", 
"rnTableRow", 
"rnTableHeaderCell", 
"rnTableDataCell", 
"rnLabel", 
"rnFootnote", 
"rnCitation", 
"rnStandaloneHyperlink", 
"rnHyperlink", 
"rnRef", 
"rnDirective", 
"rnDirArg", 
"rnRaw", 
"rnTitle", 
"rnContents", 
"rnImage", 
"rnFigure", 
"rnCodeBlock", 
"rnRawHtml", 
"rnRawLatex", 
"rnContainer", 
"rnIndex", 
"rnSubstitutionDef", 
"rnGeneralRole", 
"rnSub", 
"rnSup", 
"rnIdx", 
"rnEmphasis", 
"rnStrongEmphasis", 
"rnTripleEmphasis", 
"rnInterpretedText", 
"rnInlineLiteral", 
"rnSubstitutionReferences", 
"rnSmiley", 
"rnLeaf"};
static TNimNode TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[71];

/* section: NIM_merge_TYPE_INIT3 */
NTI__CjRS2xrmuD58kdGedE3yyg_.size = sizeof(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg);
NTI__CjRS2xrmuD58kdGedE3yyg_.align = NIM_ALIGNOF(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg);
NTI__CjRS2xrmuD58kdGedE3yyg_.kind = 18;
NTI__CjRS2xrmuD58kdGedE3yyg_.base = 0;
NTI__CjRS2xrmuD58kdGedE3yyg_.flags = 2;
TM__MI3pYf9cgAsIrjZXIlQqHnQ_2_4[0] = &TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[1];
NTI__Q1jM9a8f0MKlvbLZpipB3qg_.size = sizeof(tyEnum_RstNodeKind__Q1jM9a8f0MKlvbLZpipB3qg);
NTI__Q1jM9a8f0MKlvbLZpipB3qg_.align = NIM_ALIGNOF(tyEnum_RstNodeKind__Q1jM9a8f0MKlvbLZpipB3qg);
NTI__Q1jM9a8f0MKlvbLZpipB3qg_.kind = 14;
NTI__Q1jM9a8f0MKlvbLZpipB3qg_.base = 0;
NTI__Q1jM9a8f0MKlvbLZpipB3qg_.flags = 3;
for (TM__MI3pYf9cgAsIrjZXIlQqHnQ_5 = 0; TM__MI3pYf9cgAsIrjZXIlQqHnQ_5 < 65; TM__MI3pYf9cgAsIrjZXIlQqHnQ_5++) {
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[TM__MI3pYf9cgAsIrjZXIlQqHnQ_5+2].kind = 1;
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[TM__MI3pYf9cgAsIrjZXIlQqHnQ_5+2].offset = TM__MI3pYf9cgAsIrjZXIlQqHnQ_5;
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[TM__MI3pYf9cgAsIrjZXIlQqHnQ_5+2].name = TM__MI3pYf9cgAsIrjZXIlQqHnQ_4[TM__MI3pYf9cgAsIrjZXIlQqHnQ_5];
TM__MI3pYf9cgAsIrjZXIlQqHnQ_3_65[TM__MI3pYf9cgAsIrjZXIlQqHnQ_5] = &TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[TM__MI3pYf9cgAsIrjZXIlQqHnQ_5+2];
}
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[67].len = 65; TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[67].kind = 2; TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[67].sons = &TM__MI3pYf9cgAsIrjZXIlQqHnQ_3_65[0];
NTI__Q1jM9a8f0MKlvbLZpipB3qg_.node = &TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[67];
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[1].kind = 1;
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[1].offset = offsetof(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg, kind);
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[1].typ = (&NTI__Q1jM9a8f0MKlvbLZpipB3qg_);
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[1].name = "kind";
TM__MI3pYf9cgAsIrjZXIlQqHnQ_2_4[1] = &TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[68];
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[68].kind = 1;
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[68].offset = offsetof(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg, text);
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[68].typ = (&NTI__77mFvmsOLKik79ci2hXkHEg_);
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[68].name = "text";
TM__MI3pYf9cgAsIrjZXIlQqHnQ_2_4[2] = &TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[69];
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[69].kind = 1;
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[69].offset = offsetof(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg, level);
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[69].typ = (&NTI__rR5Bzr1D5krxoo1NcNyeMA_);
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[69].name = "level";
TM__MI3pYf9cgAsIrjZXIlQqHnQ_2_4[3] = &TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[70];
NTI__sawZST1Esj3o7EY9ayWwGPw_.size = sizeof(tySequence__sawZST1Esj3o7EY9ayWwGPw*);
NTI__sawZST1Esj3o7EY9ayWwGPw_.align = NIM_ALIGNOF(tySequence__sawZST1Esj3o7EY9ayWwGPw*);
NTI__sawZST1Esj3o7EY9ayWwGPw_.kind = 24;
NTI__sawZST1Esj3o7EY9ayWwGPw_.base = (&NTI__eiDrOE3AS6QEbCsY2gtdWQ_);
NTI__sawZST1Esj3o7EY9ayWwGPw_.flags = 2;
NTI__sawZST1Esj3o7EY9ayWwGPw_.marker = Marker_tySequence__sawZST1Esj3o7EY9ayWwGPw;
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[70].kind = 1;
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[70].offset = offsetof(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg, sons);
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[70].typ = (&NTI__sawZST1Esj3o7EY9ayWwGPw_);
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[70].name = "sons";
TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[0].len = 4; TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[0].kind = 2; TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[0].sons = &TM__MI3pYf9cgAsIrjZXIlQqHnQ_2_4[0];
NTI__CjRS2xrmuD58kdGedE3yyg_.node = &TM__MI3pYf9cgAsIrjZXIlQqHnQ_0[0];
NTI__eiDrOE3AS6QEbCsY2gtdWQ_.size = sizeof(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*);
NTI__eiDrOE3AS6QEbCsY2gtdWQ_.align = NIM_ALIGNOF(tyObject_RstNode__CjRS2xrmuD58kdGedE3yyg*);
NTI__eiDrOE3AS6QEbCsY2gtdWQ_.kind = 22;
NTI__eiDrOE3AS6QEbCsY2gtdWQ_.base = (&NTI__CjRS2xrmuD58kdGedE3yyg_);
NTI__eiDrOE3AS6QEbCsY2gtdWQ_.flags = 2;
NTI__eiDrOE3AS6QEbCsY2gtdWQ_.marker = Marker_tyRef__eiDrOE3AS6QEbCsY2gtdWQ;
}

