/* 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"
#include <string.h>
#include <stdio.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_RopeObj__OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA;
typedef struct tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_TCGen__9cG6VsX22pOhho6kxyhFVow tyObject_TCGen__9cG6VsX22pOhho6kxyhFVow;
typedef struct tyObject_Table__gZ3EYQdz9coOB7ngN9a1cqwA tyObject_Table__gZ3EYQdz9coOB7ngN9a1cqwA;
typedef struct tySequence__sII3pVVRkIdBZ2HDPdZddA tySequence__sII3pVVRkIdBZ2HDPdZddA;
typedef struct tyTuple__wROVfG5RQYpjEAhvO3LqdQ tyTuple__wROVfG5RQYpjEAhvO3LqdQ;
typedef struct tyObject_TPassContext__Hb6rFM0ecvtlLf2kv9aU75w tyObject_TPassContext__Hb6rFM0ecvtlLf2kv9aU75w;
typedef struct tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w;
typedef struct tyObject_HashSet__LWqBPbJi8sAUtgObUDu34A tyObject_HashSet__LWqBPbJi8sAUtgObUDu34A;
typedef struct tySequence__WPcy3bORPBFlmk2KIq2pbQ tySequence__WPcy3bORPBFlmk2KIq2pbQ;
typedef struct tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg;
typedef struct tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ;
typedef struct tySequence__9brg1xNurxcus33lU4IE1Dw tySequence__9brg1xNurxcus33lU4IE1Dw;
typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ tySequence__sM4lkSb7zS6F7OVMvW9cffQ;
typedef struct tyObject_TCProc__g7nhmFb7KltrkyRKuP8k2Q tyObject_TCProc__g7nhmFb7KltrkyRKuP8k2Q;
typedef struct tySequence__Ef05srmQTDulnBdXR4Ja6Q tySequence__Ef05srmQTDulnBdXR4Ja6Q;
typedef struct tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A;
typedef struct tySequence__vhmj4KkIKPinmRXny9c2Q6Q tySequence__vhmj4KkIKPinmRXny9c2Q6Q;
typedef struct tyObject_CountTable__tUMxxU9cRgLolsrW9b7IBGsQ tyObject_CountTable__tUMxxU9cRgLolsrW9b7IBGsQ;
typedef struct tySequence__XUL1TrMU0tgXmaMFCIYgFQ tySequence__XUL1TrMU0tgXmaMFCIYgFQ;
typedef struct tyObject_BModuleListcolonObjectType___CpP4eJLbv5ZwofQXpESuGA tyObject_BModuleListcolonObjectType___CpP4eJLbv5ZwofQXpESuGA;
typedef struct tyObject_NdiFile__9cEuXfAnHp9bnWFK409cMtsEw tyObject_NdiFile__9cEuXfAnHp9bnWFK409cMtsEw;
typedef struct tySequence__DfgJFJEYoj4YBAHLZPl5lQ tySequence__DfgJFJEYoj4YBAHLZPl5lQ;
typedef struct tyObject_TBlock__GFhahvekTq3dDOkWyhchMA tyObject_TBlock__GFhahvekTq3dDOkWyhchMA;
typedef struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q;
typedef struct tySequence__KjgUMUjT3LUKOFIK4xt5ug tySequence__KjgUMUjT3LUKOFIK4xt5ug;
typedef struct tySequence__WwUFq9cJ2xKRlsAWVEHyPRg tySequence__WwUFq9cJ2xKRlsAWVEHyPRg;
typedef struct tySequence__oUyaggHmIX9bpJcMeoG6lpA tySequence__oUyaggHmIX9bpJcMeoG6lpA;
typedef struct tyObject_CountTable__chlLjy9bvnFM9b9bSZfiIkyGg tyObject_CountTable__chlLjy9bvnFM9b9bSZfiIkyGg;
typedef struct tySequence__jwzrUFjG9akTIJTBBFvvqxw tySequence__jwzrUFjG9akTIJTBBFvvqxw;
typedef struct tyObject_TMergeSections__crELyef4WlnFCK8sExutkA tyObject_TMergeSections__crELyef4WlnFCK8sExutkA;
typedef struct tyObject_TLLStream__a5oZYQ9aTktYME2449ayEi6g tyObject_TLLStream__a5oZYQ9aTktYME2449ayEi6g;
typedef struct tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag;
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;
typedef struct tyTuple__a1QJSSO0LTGR9bFH59c2xGCA tyTuple__a1QJSSO0LTGR9bFH59c2xGCA;
typedef struct tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
typedef struct tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg;
typedef struct tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw;
typedef struct tyTuple__tA7Q8IrfOKH7Mn89cK9cBAIg tyTuple__tA7Q8IrfOKH7Mn89cK9cBAIg;
typedef struct tyTuple__FxkU4d1VDodDMc9ah6Mbagw tyTuple__FxkU4d1VDodDMc9ah6Mbagw;
typedef struct tyTuple__XOVT24GHXwqiEj5GCsEGCA tyTuple__XOVT24GHXwqiEj5GCsEGCA;

/* section: NIM_merge_TYPES */
typedef NU8 tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg;
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;
};
struct RootObj {
TNimType* m_type;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA {
  RootObj Sup;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* left;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* right;
NI L;
NimStringDesc* data;
};
typedef NimStringDesc* tyArray__IgBcQZSkSYWgypAN2G9aUCg[3];
typedef NU8 tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg;
typedef NimStringDesc* tyArray__popwAbp3uuRZiC4rZbYrXw[20];
struct tyObject_Table__gZ3EYQdz9coOB7ngN9a1cqwA {
tySequence__sII3pVVRkIdBZ2HDPdZddA* data;
NI counter;
};
typedef NU8 tyArray__qtqsWM5aXmcpMIVmvq3kAA[16];
struct tyTuple__wROVfG5RQYpjEAhvO3LqdQ {
NI Field0;
tyArray__qtqsWM5aXmcpMIVmvq3kAA Field1;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* Field2;
};
struct tyObject_TPassContext__Hb6rFM0ecvtlLf2kv9aU75w {
  RootObj Sup;
};
typedef tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* tyArray__pujFC2IN5RzE4MXkqaMD9aQ[20];
typedef NU8 tySet_tyEnum_CodegenFlag__9c7EibnXBApMXwrQsaaMb6Q;
struct tyObject_HashSet__LWqBPbJi8sAUtgObUDu34A {
tySequence__WPcy3bORPBFlmk2KIq2pbQ* data;
NI counter;
};
typedef NI tyArray__emiAJ8okywrJw7ZHLzlXbQ[34];
struct tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg {
NI elems;
NI counter;
NI max;
tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ* head;
tySequence__9brg1xNurxcus33lU4IE1Dw* data;
tyArray__emiAJ8okywrJw7ZHLzlXbQ a;
};
struct tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A {
NI counter;
tySequence__vhmj4KkIKPinmRXny9c2Q6Q* data;
};
typedef tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* tyArray__MxT2Arb3Nlp7V9bRITO3dvg[10];
struct tyObject_CountTable__tUMxxU9cRgLolsrW9b7IBGsQ {
tySequence__XUL1TrMU0tgXmaMFCIYgFQ* data;
NI counter;
NIM_BOOL isSorted;
};
struct tyObject_NdiFile__9cEuXfAnHp9bnWFK409cMtsEw {
NIM_BOOL enabled;
FILE* f;
NimStringDesc* buf;
NimStringDesc* filename;
tySequence__DfgJFJEYoj4YBAHLZPl5lQ* syms;
};
struct tyObject_TCGen__9cG6VsX22pOhho6kxyhFVow {
  tyObject_TPassContext__Hb6rFM0ecvtlLf2kv9aU75w Sup;
tyArray__pujFC2IN5RzE4MXkqaMD9aQ s;
tySet_tyEnum_CodegenFlag__9c7EibnXBApMXwrQsaaMb6Q flags;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* module;
NimStringDesc* filename;
NimStringDesc* cfilename;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* tmpBase;
tyObject_Table__gZ3EYQdz9coOB7ngN9a1cqwA typeCache;
tyObject_HashSet__LWqBPbJi8sAUtgObUDu34A typeABICache;
tyObject_Table__gZ3EYQdz9coOB7ngN9a1cqwA forwTypeCache;
tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg declaredThings;
tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg declaredProtos;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* headerFiles;
tyObject_Table__gZ3EYQdz9coOB7ngN9a1cqwA typeInfoMarker;
tyObject_Table__gZ3EYQdz9coOB7ngN9a1cqwA typeInfoMarkerV2;
tyObject_TCProc__g7nhmFb7KltrkyRKuP8k2Q* initProc;
tyObject_TCProc__g7nhmFb7KltrkyRKuP8k2Q* preInitProc;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* hcrCreateTypeInfosProc;
NIM_BOOL inHcrInitGuard;
tySequence__Ef05srmQTDulnBdXR4Ja6Q* typeStack;
tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A dataCache;
NI typeNodes;
NI nimTypes;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* typeNodesName;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* nimTypesName;
NI labels;
tyArray__MxT2Arb3Nlp7V9bRITO3dvg extensionLoaders;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* injectStmt;
tyObject_CountTable__tUMxxU9cRgLolsrW9b7IBGsQ sigConflicts;
tyObject_BModuleListcolonObjectType___CpP4eJLbv5ZwofQXpESuGA* g;
tyObject_NdiFile__9cEuXfAnHp9bnWFK409cMtsEw ndi;
};
typedef NU tyArray__cC4ce9cdvDKtIpar5g9cDejA[16];
struct tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ {
tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ* next;
NI key;
tyArray__cC4ce9cdvDKtIpar5g9cDejA bits;
};
typedef tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* tyArray__c9b9aKKmyKnqxZD8lAny45jg[3];
struct tyObject_TBlock__GFhahvekTq3dDOkWyhchMA {
NI id;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* label;
tyArray__c9b9aKKmyKnqxZD8lAny45jg sections;
NIM_BOOL isLoop;
NI16 nestedTryStmts;
NI16 nestedExceptStmts;
NI16 frameLen;
};
typedef NU8 tySet_tyEnum_TCProcFlag__LgBeaca7tT1nUR7RL1RjPQ;
struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q {
NU16 line;
NI16 col;
NI32 fileIndex;
};
typedef NU32 tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg;
struct tyObject_CountTable__chlLjy9bvnFM9b9bSZfiIkyGg {
tySequence__jwzrUFjG9akTIJTBBFvvqxw* data;
NI counter;
NIM_BOOL isSorted;
};
struct tyObject_TCProc__g7nhmFb7KltrkyRKuP8k2Q {
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* prc;
tySet_tyEnum_TCProcFlag__LgBeaca7tT1nUR7RL1RjPQ flags;
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q lastLineInfo;
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q currLineInfo;
tySequence__KjgUMUjT3LUKOFIK4xt5ug* nestedTryStmts;
tySequence__WwUFq9cJ2xKRlsAWVEHyPRg* finallySafePoints;
NI labels;
tySequence__oUyaggHmIX9bpJcMeoG6lpA* blocks;
NI breakIdx;
tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg options;
tyObject_TCGen__9cG6VsX22pOhho6kxyhFVow* module;
NI withinLoop;
NI splitDecls;
NI withinTryWithExcept;
NI withinBlockLeaveActions;
tyObject_CountTable__chlLjy9bvnFM9b9bSZfiIkyGg sigConflicts;
};
struct tyObject_TMergeSections__crELyef4WlnFCK8sExutkA {
tyArray__pujFC2IN5RzE4MXkqaMD9aQ f;
tyArray__c9b9aKKmyKnqxZD8lAny45jg p;
};
typedef NU8 tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg;
struct tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag {
  RootObj Sup;
NI bufpos;
NCSTRING buf;
NimStringDesc* bufStorage;
NI bufLen;
tyObject_TLLStream__a5oZYQ9aTktYME2449ayEi6g* stream;
NI lineNumber;
NI sentinel;
NI lineStart;
NI offsetBase;
};
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;
};
struct tyTuple__a1QJSSO0LTGR9bFH59c2xGCA {
NI Field0;
tyArray__qtqsWM5aXmcpMIVmvq3kAA Field1;
};
struct tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg {
NI h;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key;
NI val;
};
struct tyTuple__tA7Q8IrfOKH7Mn89cK9cBAIg {
tyArray__qtqsWM5aXmcpMIVmvq3kAA Field0;
NI Field1;
};
struct tyTuple__FxkU4d1VDodDMc9ah6Mbagw {
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* Field0;
NIM_BOOL Field1;
NI Field2;
};
struct tyTuple__XOVT24GHXwqiEj5GCsEGCA {
NimStringDesc* Field0;
NI Field1;
};

/* section: NIM_merge_SEQ_TYPES */
struct tySequence__sII3pVVRkIdBZ2HDPdZddA {
  TGenericSeq Sup;
  tyTuple__wROVfG5RQYpjEAhvO3LqdQ data[SEQ_DECL_SIZE];
};
struct tySequence__WPcy3bORPBFlmk2KIq2pbQ {
  TGenericSeq Sup;
  tyTuple__a1QJSSO0LTGR9bFH59c2xGCA data[SEQ_DECL_SIZE];
};
struct tySequence__9brg1xNurxcus33lU4IE1Dw {
  TGenericSeq Sup;
  tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ* data[SEQ_DECL_SIZE];
};
struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct tySequence__Ef05srmQTDulnBdXR4Ja6Q {
  TGenericSeq Sup;
  tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* data[SEQ_DECL_SIZE];
};
struct tySequence__vhmj4KkIKPinmRXny9c2Q6Q {
  TGenericSeq Sup;
  tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg data[SEQ_DECL_SIZE];
};
struct tySequence__XUL1TrMU0tgXmaMFCIYgFQ {
  TGenericSeq Sup;
  tyTuple__tA7Q8IrfOKH7Mn89cK9cBAIg data[SEQ_DECL_SIZE];
};
struct tySequence__DfgJFJEYoj4YBAHLZPl5lQ {
  TGenericSeq Sup;
  tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* data[SEQ_DECL_SIZE];
};
struct tySequence__KjgUMUjT3LUKOFIK4xt5ug {
  TGenericSeq Sup;
  tyTuple__FxkU4d1VDodDMc9ah6Mbagw data[SEQ_DECL_SIZE];
};
struct tySequence__WwUFq9cJ2xKRlsAWVEHyPRg {
  TGenericSeq Sup;
  tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* data[SEQ_DECL_SIZE];
};
struct tySequence__oUyaggHmIX9bpJcMeoG6lpA {
  TGenericSeq Sup;
  tyObject_TBlock__GFhahvekTq3dDOkWyhchMA data[SEQ_DECL_SIZE];
};
struct tySequence__jwzrUFjG9akTIJTBBFvvqxw {
  TGenericSeq Sup;
  tyTuple__XOVT24GHXwqiEj5GCsEGCA data[SEQ_DECL_SIZE];
};

/* section: NIM_merge_PROC_HEADERS */
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*, rope__yShmEg9cffWxI7s5XzEKBow)(NimStringDesc* s);
N_LIB_PRIVATE N_NIMCALL(void, add__yG4AKzsBRS1W4MANDlXQeg)(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA** a, NimStringDesc* b);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copyMem__M04YC71iJg1N7gBF3HZTngsystem)(void* dest, void* source, NI size);
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_LIB_PRIVATE N_NIMCALL(void, writeTypeCache__zKjQfFdZiEDKmkABywc36A)(tyObject_Table__gZ3EYQdz9coOB7ngN9a1cqwA a, NimStringDesc** s);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__JE6t4x7Z3v2iVz27Nx0MRAmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NI, len__2ofA2tlPvPQGtfqWkdG41g)(tyObject_Table__gZ3EYQdz9coOB7ngN9a1cqwA t);
static N_INLINE(NIM_BOOL, isFilled__5Qpmu5QqwDY0esVXn6wf7wtables)(NI hcode);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NIMCALL(void, encodeStr__Gl7oVckGOULa4RbIjSqJ6g)(NimStringDesc* s, NimStringDesc** result);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___0A9bslyIJ49bWrftLGh13rvg)(tyArray__qtqsWM5aXmcpMIVmvq3kAA u);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___mZ66tEveFIQokq3arf8Klw)(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* r);
N_LIB_PRIVATE N_NIMCALL(void, writeIntSet__xlTHixMZZ4hlXRO9bPP9aWcA)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* a, NimStringDesc** s);
N_LIB_PRIVATE N_NIMCALL(void, encodeVInt__lNzvVCaz9agOxH6nqWMG4Ww)(NI x, NimStringDesc** result);
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y);
static N_INLINE(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA**, s__kOyJGmZMM2tMgCKSrvUE3gcgendata)(tyObject_TCProc__g7nhmFb7KltrkyRKuP8k2Q* p, tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg s);
static N_INLINE(tyObject_TBlock__GFhahvekTq3dDOkWyhchMA*, X5BX5D___VZz2UCb3YWId9ctIYs8ikogsystem)(tyObject_TBlock__GFhahvekTq3dDOkWyhchMA* s, NI sLen_0, NI i);
N_LIB_PRIVATE N_NIMCALL(void, readMergeSections__SkJF1FEO0K3zrbuQ9bO4UlQ)(NimStringDesc* cfilename, tyObject_TMergeSections__crELyef4WlnFCK8sExutkA* m);
N_LIB_PRIVATE N_NIMCALL(tyObject_TLLStream__a5oZYQ9aTktYME2449ayEi6g*, llStreamOpen__knWUQJsEzojha6AJCi6LcA)(NimStringDesc* filename, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode);
N_LIB_PRIVATE N_NIMCALL(void, openBaseLexer__V9avLgM3wlB5dKp8bWFOIqg)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L, tyObject_TLLStream__a5oZYQ9aTktYME2449ayEi6g* inputstream, NI bufLen);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
N_LIB_PRIVATE N_NIMCALL(void, skipUntilCmd__YPcsL8BagSeVY75LpgNAbg)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L);
N_LIB_PRIVATE N_NIMCALL(NI, handleCR__pFv9ajpk2zhJHQ7x61CSE2A)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L, NI pos);
N_LIB_PRIVATE N_NIMCALL(NI, handleLF__pFv9ajpk2zhJHQ7x61CSE2A_3)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L, NI pos);
N_LIB_PRIVATE N_NIMCALL(void, readKey__Gy7lmMjN9agR3rirbtYQPQg)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L, NimStringDesc** result);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(NIM_BOOL, equalMem__Bj9c9cm9cBM9coLsuNsT5BvZ9awsystem)(void* a, void* b, NI size);
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size);
N_LIB_PRIVATE N_NIMCALL(void, skipWhite__YPcsL8BagSeVY75LpgNAbg_2)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L);
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*, readVerbatimSection__Dfh2HdkGfgVIwA9c10yqLNA)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, atEndMark__0r9afp4aAU6GY3wWxTLEDxw)(NCSTRING buf, NI pos);
static N_INLINE(NI, find__4Jd7hK7uBJp9aFoP0efveMwsystem)(tyArray__popwAbp3uuRZiC4rZbYrXw a, NimStringDesc* item);
static N_INLINE(NI, find__9blnoqS2yGHVVVWM2SPa6Owsystem)(tyArray__IgBcQZSkSYWgypAN2G9aUCg a, NimStringDesc* item);
N_LIB_PRIVATE N_NIMCALL(void, closeBaseLexer__X9aea9bJavePT9cGIdd7JRH7Q_3)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L);
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*, amp___ShdZ6VrAQkY0nWR9a39b9bGdQ)(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* a, tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* b);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y);
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
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);

/* section: NIM_merge_DATA */
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_2, "\012/*\011", 4);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_3, "NIM_merge_PROC_LOCALS", 21);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_4, "NIM_merge_PROC_INIT", 19);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_5, "NIM_merge_PROC_BODY", 19);
N_LIB_PRIVATE NIM_CONST tyArray__IgBcQZSkSYWgypAN2G9aUCg CProcSectionNames__CFc65xAsTDyk1IJIOKvV1w = {((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_3),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_4),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_5)}
;
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_6, ":*/\012", 4);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_7, "/*\011NIM_merge_END:*/\012", 20);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_8, "\012/* section: ", 13);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_9, "NIM_merge_HEADERS", 17);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_10, "NIM_merge_FRAME_DEFINES", 23);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_11, "NIM_merge_FORWARD_TYPES", 23);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_12, "NIM_merge_TYPES", 15);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_13, "NIM_merge_SEQ_TYPES", 19);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_14, "NIM_merge_FIELD_INFO", 20);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_15, "NIM_merge_TYPE_INFO", 19);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_16, "NIM_merge_PROC_HEADERS", 22);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_17, "NIM_merge_DATA", 14);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_18, "NIM_merge_VARS", 14);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_19, "NIM_merge_PROCS", 15);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_20, "NIM_merge_INIT_PROC", 19);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_21, "NIM_merge_DATINIT_PROC", 22);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_22, "NIM_merge_TYPE_INIT1", 20);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_23, "NIM_merge_TYPE_INIT2", 20);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_24, "NIM_merge_TYPE_INIT3", 20);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_25, "NIM_merge_DEBUG_INIT", 20);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_26, "NIM_merge_DYNLIB_INIT", 21);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_27, "NIM_merge_DYNLIB_DEINIT", 23);
N_LIB_PRIVATE NIM_CONST tyArray__popwAbp3uuRZiC4rZbYrXw CFileSectionNames__Nw5Vq9cKTP76D9bnQrn5ErRw = {((NimStringDesc*) NIM_NIL),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_9),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_10),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_11),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_12),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_13),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_14),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_15),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_16),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_17),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_18),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_19),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_20),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_21),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_22),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_23),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_24),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_25),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_26),
((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_27)}
;
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_28, " */\012", 4);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_29, "/*\011NIM_merge_INFO:\012", 19);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_30, "typeCache:{", 11);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_31, "declared:{", 10);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_32, "labels:", 7);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_33, " flags:", 7);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_34, "\012*/", 3);
extern TNimType NTI__jTxk7Uc2dfr9aTDL2dZhO9ag_;
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_35, "ccgmerge.nim(180, 33) `false` ccgmerge: \':\' expected", 52);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_36, "NIM_merge_INFO", 14);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_37, "ccgmerge.nim(163, 15) `false` ccgmerge: expected: /*\011NIM_merge_"
"END:*/", 69);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_38, "/*\011NIM_merge_END:*/", 19);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_39, "ccgmerge.nim(276, 19) `false` ccgmerge: unknown section: ", 57);
STRING_LITERAL(TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_40, "ccgmerge.nim(278, 15) `false` ccgmerge: \'*/\' expected", 53);

/* section: NIM_merge_VARS */
extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;

/* section: NIM_merge_PROCS */
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*, genSectionStart__otaTb0ytiYCWgsXTIvijfg)(tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg ps, tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf) {
	tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* result;
	result = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*)0;
	{
		if (!NIM_FALSE) goto LA3_;
		result = rope__yShmEg9cffWxI7s5XzEKBow(((NimStringDesc*) NIM_NIL));
		add__yG4AKzsBRS1W4MANDlXQeg(&result, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_2));
		add__yG4AKzsBRS1W4MANDlXQeg(&result, CProcSectionNames__CFc65xAsTDyk1IJIOKvV1w[(ps)- 0]);
		add__yG4AKzsBRS1W4MANDlXQeg(&result, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_6));
	}
	LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*, genSectionEnd__otaTb0ytiYCWgsXTIvijfg_2)(tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg ps, tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf) {
	tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* result;
	result = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*)0;
	{
		if (!NIM_FALSE) goto LA3_;
		result = rope__yShmEg9cffWxI7s5XzEKBow(((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_7));
	}
	LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*, genSectionStart__KYNwN8RXzjqIkzxFSwHsxw)(tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg fs, tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf) {
	tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* result;
	result = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*)0;
	add__yG4AKzsBRS1W4MANDlXQeg(&result, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_8));
	add__yG4AKzsBRS1W4MANDlXQeg(&result, CFileSectionNames__Nw5Vq9cKTP76D9bnQrn5ErRw[(fs)- 0]);
	add__yG4AKzsBRS1W4MANDlXQeg(&result, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_28));
	{
		if (!NIM_FALSE) goto LA3_;
		result = NIM_NIL;
		add__yG4AKzsBRS1W4MANDlXQeg(&result, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_2));
		add__yG4AKzsBRS1W4MANDlXQeg(&result, CFileSectionNames__Nw5Vq9cKTP76D9bnQrn5ErRw[(fs)- 0]);
		add__yG4AKzsBRS1W4MANDlXQeg(&result, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_6));
	}
	LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*, genSectionEnd__KYNwN8RXzjqIkzxFSwHsxw_2)(tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg fs, tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf) {
	tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* result;
	result = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*)0;
	{
		if (!NIM_FALSE) goto LA3_;
		result = rope__yShmEg9cffWxI7s5XzEKBow(((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_7));
	}
	LA3_: ;
	return result;
}
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memcpy(dest, source, ((size_t) (size)));
}
static N_INLINE(void, copyMem__M04YC71iJg1N7gBF3HZTngsystem)(void* dest, void* source, NI size) {
	nimCopyMem(dest, source, size);
}
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	{
		void* T5_;
		void* T6_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (void*)0;
		T5_ = ((void*) ((&(*dest).data[(*dest).Sup.len])));
		T6_ = (void*)0;
		T6_ = ((void*) ((*src).data));
		copyMem__M04YC71iJg1N7gBF3HZTngsystem(T5_, T6_, ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		(*dest).Sup.len += (*src).Sup.len;
	}
	LA3_: ;
}
static N_INLINE(void, nimSetMem__JE6t4x7Z3v2iVz27Nx0MRAmemory)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__JE6t4x7Z3v2iVz27Nx0MRAmemory(p, ((int) 0), size);
}
static N_INLINE(NIM_BOOL, isFilled__5Qpmu5QqwDY0esVXn6wf7wtables)(NI hcode) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = !((hcode == ((NI) 0)));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, writeTypeCache__zKjQfFdZiEDKmkABywc36A)(tyObject_Table__gZ3EYQdz9coOB7ngN9a1cqwA a, NimStringDesc** s) {
	NI i;
	i = ((NI) 0);
	{
		tyArray__qtqsWM5aXmcpMIVmvq3kAA id;
		tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* value;
		NI L;
		nimZeroMem((void*)id, sizeof(tyArray__qtqsWM5aXmcpMIVmvq3kAA));
		value = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*)0;
		L = len__2ofA2tlPvPQGtfqWkdG41g(a);
		{
			NI h;
			NI colontmp_;
			NI T3_;
			NI res;
			h = (NI)0;
			colontmp_ = (NI)0;
			T3_ = ((a.data ? a.data->Sup.len : 0)-1);
			colontmp_ = T3_;
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA5;
					h = res;
					{
						NIM_BOOL T8_;
						NimStringDesc* T16_;
						NimStringDesc* T17_;
						T8_ = (NIM_BOOL)0;
						T8_ = isFilled__5Qpmu5QqwDY0esVXn6wf7wtables(a.data->data[h].Field0);
						if (!T8_) goto LA9_;
						nimCopyMem((void*)id, (NIM_CONST void*)a.data->data[h].Field1, sizeof(tyArray__qtqsWM5aXmcpMIVmvq3kAA));
						value = a.data->data[h].Field2;
						{
							if (!(i == ((NI) 10))) goto LA13_;
							i = ((NI) 0);
							unsureAsgnRef((void**) (&(*s)), addChar((*s), 10));
						}
						goto LA11_;
						LA13_: ;
						{
							unsureAsgnRef((void**) (&(*s)), addChar((*s), 32));
						}
						LA11_: ;
						T16_ = (NimStringDesc*)0;
						T16_ = dollar___0A9bslyIJ49bWrftLGh13rvg(id);
						encodeStr__Gl7oVckGOULa4RbIjSqJ6g(T16_, s);
						unsureAsgnRef((void**) (&(*s)), addChar((*s), 58));
						T17_ = (NimStringDesc*)0;
						T17_ = dollar___mZ66tEveFIQokq3arf8Klw(value);
						encodeStr__Gl7oVckGOULa4RbIjSqJ6g(T17_, s);
						i += ((NI) 1);
					}
					LA9_: ;
					res += ((NI) 1);
				} LA5: ;
			}
		}
	}
	unsureAsgnRef((void**) (&(*s)), addChar((*s), 125));
}
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;
}
N_LIB_PRIVATE N_NIMCALL(void, writeIntSet__xlTHixMZZ4hlXRO9bPP9aWcA)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* a, NimStringDesc** s) {
	NI i;
	i = ((NI) 0);
	{
		NI x;
		x = (NI)0;
		{
			if (!((*a).elems <= ((NI) 34))) goto LA4_;
			{
				NI i_2;
				NI i_3;
				i_2 = (NI)0;
				i_3 = ((NI) 0);
				{
					while (1) {
						if (!(i_3 < (*a).elems)) goto LA8;
						i_2 = i_3;
						x = (*a).a[(i_2)- 0];
						{
							if (!(i == ((NI) 10))) goto LA11_;
							i = ((NI) 0);
							unsureAsgnRef((void**) (&(*s)), addChar((*s), 10));
						}
						goto LA9_;
						LA11_: ;
						{
							unsureAsgnRef((void**) (&(*s)), addChar((*s), 32));
						}
						LA9_: ;
						encodeVInt__lNzvVCaz9agOxH6nqWMG4Ww(x, s);
						i += ((NI) 1);
						i_3 += ((NI) 1);
					} LA8: ;
				}
			}
		}
		goto LA2_;
		LA4_: ;
		{
			tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ* r;
			r = (*a).head;
			{
				while (1) {
					NI i_4;
					if (!!((r == NIM_NIL))) goto LA16;
					i_4 = ((NI) 0);
					{
						while (1) {
							NU w;
							NI j;
							if (!(i_4 <= ((NI) 15))) goto LA18;
							w = (*r).bits[(i_4)- 0];
							j = ((NI) 0);
							{
								while (1) {
									if (!!((w == ((NU) 0)))) goto LA20;
									{
										NI T25_;
										if (!!(((NU)(w & ((NU) 1)) == ((NU) 0)))) goto LA23_;
										T25_ = (NI)0;
										T25_ = pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem((NI)((NU32)(i_4) << (NU32)(((NI) 5))), j);
										x = (NI)((NI)((NU32)((*r).key) << (NU32)(((NI) 9))) | T25_);
										{
											if (!(i == ((NI) 10))) goto LA28_;
											i = ((NI) 0);
											unsureAsgnRef((void**) (&(*s)), addChar((*s), 10));
										}
										goto LA26_;
										LA28_: ;
										{
											unsureAsgnRef((void**) (&(*s)), addChar((*s), 32));
										}
										LA26_: ;
										encodeVInt__lNzvVCaz9agOxH6nqWMG4Ww(x, s);
										i += ((NI) 1);
									}
									LA23_: ;
									j += ((NI) 1);
									w = (NU)((NU32)(w) >> (NU32)(((NI) 1)));
								} LA20: ;
							}
							i_4 += ((NI) 1);
						} LA18: ;
					}
					r = (*r).next;
				} LA16: ;
			}
		}
		LA2_: ;
	}
	unsureAsgnRef((void**) (&(*s)), addChar((*s), 125));
}
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*, genMergeInfo__T0VHRXp9cMnXMqYxgPwvmXw)(tyObject_TCGen__9cG6VsX22pOhho6kxyhFVow* m) {
	tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* result;
	NimStringDesc* s;
{	result = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*)0;
	{
		if (!NIM_TRUE) goto LA3_;
		result = NIM_NIL;
		goto BeforeRet_;
	}
	LA3_: ;
	s = copyString(((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_29));
	s = resizeString(s, 11);
appendString(s, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_30));
	writeTypeCache__zKjQfFdZiEDKmkABywc36A((*m).typeCache, (&s));
	s = resizeString(s, 10);
appendString(s, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_31));
	writeIntSet__xlTHixMZZ4hlXRO9bPP9aWcA((&(*m).declaredThings), (&s));
	s = resizeString(s, 7);
appendString(s, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_32));
	encodeVInt__lNzvVCaz9agOxH6nqWMG4Ww(((NI) ((*m).labels)), (&s));
	s = resizeString(s, 7);
appendString(s, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_33));
	encodeVInt__lNzvVCaz9agOxH6nqWMG4Ww(((NI) ((*m).flags)), (&s));
	s = resizeString(s, 3);
appendString(s, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_34));
	result = rope__yShmEg9cffWxI7s5XzEKBow(s);
	}BeforeRet_: ;
	return result;
}
static N_INLINE(tyObject_TBlock__GFhahvekTq3dDOkWyhchMA*, X5BX5D___VZz2UCb3YWId9ctIYs8ikogsystem)(tyObject_TBlock__GFhahvekTq3dDOkWyhchMA* s, NI sLen_0, NI i) {
	tyObject_TBlock__GFhahvekTq3dDOkWyhchMA* result;
	result = (tyObject_TBlock__GFhahvekTq3dDOkWyhchMA*)0;
	result = (&s[(NI)(sLen_0 - i)]);
	return result;
}
static N_INLINE(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA**, s__kOyJGmZMM2tMgCKSrvUE3gcgendata)(tyObject_TCProc__g7nhmFb7KltrkyRKuP8k2Q* p, tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg s) {
	tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA** result;
	tyObject_TBlock__GFhahvekTq3dDOkWyhchMA* T1_;
	result = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA**)0;
	T1_ = (tyObject_TBlock__GFhahvekTq3dDOkWyhchMA*)0;
	T1_ = X5BX5D___VZz2UCb3YWId9ctIYs8ikogsystem((*p).blocks->data, ((*p).blocks ? (*p).blocks->Sup.len : 0), ((NI) 1));
	result = &(*T1_).sections[(s)- 0];
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, mergeRequired__X8MaNNxDVB7fxLVXrvJcFw)(tyObject_TCGen__9cG6VsX22pOhho6kxyhFVow* m) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg i;
		NI res;
		i = (tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg)0;
		res = ((NI) 1);
		{
			while (1) {
				if (!(res <= ((NI) 11))) goto LA3;
				i = ((tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg) (res));
				{
					if (!!(((*m).s[(i)- 0] == NIM_NIL))) goto LA6_;
					result = NIM_TRUE;
					goto BeforeRet_;
				}
				LA6_: ;
				res += ((NI) 1);
			} LA3: ;
		}
	}
	{
		tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg i_2;
		i_2 = (tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg)0;
		{
			tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg v;
			NI res_2;
			v = (tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg)0;
			res_2 = ((NI) 0);
			{
				while (1) {
					if (!(res_2 <= ((NI) 2))) goto LA11;
					v = ((tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg) (res_2));
					i_2 = v;
					{
						tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA** T14_;
						T14_ = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA**)0;
						T14_ = s__kOyJGmZMM2tMgCKSrvUE3gcgendata((*m).initProc, i_2);
						if (!!(((*T14_) == NIM_NIL))) goto LA15_;
						result = NIM_TRUE;
						goto BeforeRet_;
					}
					LA15_: ;
					res_2 += ((NI) 1);
				} LA11: ;
			}
		}
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, skipUntilCmd__YPcsL8BagSeVY75LpgNAbg)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L) {
	NI pos;
	pos = (*L).bufpos;
	{
		while (1) {
			switch (((NU8)((*L).buf[pos]))) {
			case 13:
			{
				pos = handleCR__pFv9ajpk2zhJHQ7x61CSE2A(L, pos);
			}
			break;
			case 10:
			{
				pos = handleLF__pFv9ajpk2zhJHQ7x61CSE2A_3(L, pos);
			}
			break;
			case 0:
			{
				goto LA1;
			}
			break;
			case 47:
			{
				{
					NIM_BOOL T9_;
					T9_ = (NIM_BOOL)0;
					T9_ = ((NU8)((*L).buf[(NI)(pos + ((NI) 1))]) == (NU8)(42));
					if (!(T9_)) goto LA10_;
					T9_ = ((NU8)((*L).buf[(NI)(pos + ((NI) 2))]) == (NU8)(9));
					LA10_: ;
					if (!T9_) goto LA11_;
					pos += ((NI) 3);
					goto LA1;
				}
				LA11_: ;
				pos += ((NI) 1);
			}
			break;
			default:
			{
				pos += ((NI) 1);
			}
			break;
			}
		}
	} LA1: ;
	(*L).bufpos = pos;
}
N_LIB_PRIVATE N_NIMCALL(void, readKey__Gy7lmMjN9agR3rirbtYQPQg)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L, NimStringDesc** result) {
	NI pos;
	pos = (*L).bufpos;
	unsureAsgnRef((void**) (&(*result)), setLengthStr((*result), ((NI) 0)));
	{
		while (1) {
			if (!(((NU8)((*L).buf[pos])) >= ((NU8)(97)) && ((NU8)((*L).buf[pos])) <= ((NU8)(122)) || ((NU8)((*L).buf[pos])) >= ((NU8)(65)) && ((NU8)((*L).buf[pos])) <= ((NU8)(90)) || ((NU8)((*L).buf[pos])) >= ((NU8)(48)) && ((NU8)((*L).buf[pos])) <= ((NU8)(57)) || ((NU8)((*L).buf[pos])) == ((NU8)(95)))) goto LA2;
			unsureAsgnRef((void**) (&(*result)), addChar((*result), (*L).buf[pos]));
			pos += ((NI) 1);
		} LA2: ;
	}
	{
		if (!!(((NU8)((*L).buf[pos]) == (NU8)(58)))) goto LA5_;
		{
			if (!NIM_TRUE) goto LA9_;
			failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_35));
		}
		LA9_: ;
	}
	LA5_: ;
	(*L).bufpos = (NI)(pos + ((NI) 1));
}
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size) {
	int result;
	result = (int)0;
	result = memcmp(a, b, ((size_t) (size)));
	return result;
}
static N_INLINE(NIM_BOOL, equalMem__Bj9c9cm9cBM9coLsuNsT5BvZ9awsystem)(void* a, void* b, NI size) {
	NIM_BOOL result;
	int T1_;
	result = (NIM_BOOL)0;
	T1_ = (int)0;
	T1_ = nimCmpMem(a, b, size);
	result = (T1_ == ((NI32) 0));
	return result;
}
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
	NIM_BOOL result;
	NI alen;
	NI blen;
{	result = (NIM_BOOL)0;
	alen = (a ? a->Sup.len : 0);
	blen = (b ? b->Sup.len : 0);
	{
		if (!(alen == blen)) goto LA3_;
		{
			if (!(alen == ((NI) 0))) goto LA7_;
			result = NIM_TRUE;
			goto BeforeRet_;
		}
		LA7_: ;
		result = equalMem__Bj9c9cm9cBM9coLsuNsT5BvZ9awsystem(((void*) ((&a->data[((NI) 0)]))), ((void*) ((&b->data[((NI) 0)]))), ((NI) (alen)));
		goto BeforeRet_;
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, skipWhite__YPcsL8BagSeVY75LpgNAbg_2)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L) {
	NI pos;
	pos = (*L).bufpos;
	{
		while (1) {
			switch (((NU8)((*L).buf[pos]))) {
			case 13:
			{
				pos = handleCR__pFv9ajpk2zhJHQ7x61CSE2A(L, pos);
			}
			break;
			case 10:
			{
				pos = handleLF__pFv9ajpk2zhJHQ7x61CSE2A_3(L, pos);
			}
			break;
			case 32:
			{
				pos += ((NI) 1);
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	(*L).bufpos = pos;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, atEndMark__0r9afp4aAU6GY3wWxTLEDxw)(NCSTRING buf, NI pos) {
	NIM_BOOL result;
	NI s;
	result = (NIM_BOOL)0;
	s = ((NI) 0);
	{
		while (1) {
			NIM_BOOL T3_;
			T3_ = (NIM_BOOL)0;
			T3_ = (s < ((NI) 19));
			if (!(T3_)) goto LA4_;
			T3_ = ((NU8)(buf[(NI)(pos + s)]) == (NU8)(((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_38)->data[s]));
			LA4_: ;
			if (!T3_) goto LA2;
			s += ((NI) 1);
		} LA2: ;
	}
	result = (s == ((NI) 19));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*, readVerbatimSection__Dfh2HdkGfgVIwA9c10yqLNA)(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag* L) {
	tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* result;
	NI pos;
	NimStringDesc* r;
	result = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*)0;
	pos = (*L).bufpos;
	r = rawNewString(((NI) 30000));
	{
		while (1) {
			switch (((NU8)((*L).buf[pos]))) {
			case 13:
			{
				pos = handleCR__pFv9ajpk2zhJHQ7x61CSE2A(L, pos);
				r = addChar(r, 10);
			}
			break;
			case 10:
			{
				pos = handleLF__pFv9ajpk2zhJHQ7x61CSE2A_3(L, pos);
				r = addChar(r, 10);
			}
			break;
			case 0:
			{
				{
					if (!NIM_TRUE) goto LA8_;
					failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_37));
				}
				LA8_: ;
				goto LA1;
			}
			break;
			default:
			{
				{
					NIM_BOOL T13_;
					T13_ = (NIM_BOOL)0;
					T13_ = atEndMark__0r9afp4aAU6GY3wWxTLEDxw((*L).buf, pos);
					if (!T13_) goto LA14_;
					pos += ((NI) 19);
					goto LA1;
				}
				LA14_: ;
				r = addChar(r, (*L).buf[pos]);
				pos += ((NI) 1);
			}
			break;
			}
		}
	} LA1: ;
	(*L).bufpos = pos;
	result = rope__yShmEg9cffWxI7s5XzEKBow(r);
	return result;
}
static N_INLINE(NI, find__4Jd7hK7uBJp9aFoP0efveMwsystem)(tyArray__popwAbp3uuRZiC4rZbYrXw a, NimStringDesc* item) {
	NI result;
{	result = (NI)0;
	result = ((NI) 0);
	{
		NimStringDesc* i;
		tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg i_2;
		i = (NimStringDesc*)0;
		i_2 = ((tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg) 0);
		{
			if (!(i_2 <= ((tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg) 19))) goto LA4_;
			{
				while (1) {
					i = a[(i_2)- 0];
					{
						if (!eqStrings(i, item)) goto LA10_;
						goto BeforeRet_;
					}
					LA10_: ;
					result += ((NI) 1);
					{
						if (!(((tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg) 19) <= i_2)) goto LA14_;
						goto LA6;
					}
					LA14_: ;
					i_2 += ((NI) 1);
				}
			} LA6: ;
		}
		LA4_: ;
	}
	result = ((NI) -1);
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, find__9blnoqS2yGHVVVWM2SPa6Owsystem)(tyArray__IgBcQZSkSYWgypAN2G9aUCg a, NimStringDesc* item) {
	NI result;
{	result = (NI)0;
	result = ((NI) 0);
	{
		NimStringDesc* i;
		tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg i_2;
		i = (NimStringDesc*)0;
		i_2 = ((tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg) 0);
		{
			if (!(i_2 <= ((tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg) 2))) goto LA4_;
			{
				while (1) {
					i = a[(i_2)- 0];
					{
						if (!eqStrings(i, item)) goto LA10_;
						goto BeforeRet_;
					}
					LA10_: ;
					result += ((NI) 1);
					{
						if (!(((tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg) 2) <= i_2)) goto LA14_;
						goto LA6;
					}
					LA14_: ;
					i_2 += ((NI) 1);
				}
			} LA6: ;
		}
		LA4_: ;
	}
	result = ((NI) -1);
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, readMergeSections__SkJF1FEO0K3zrbuQ9bO4UlQ)(NimStringDesc* cfilename, tyObject_TMergeSections__crELyef4WlnFCK8sExutkA* m) {
	tyObject_TLLStream__a5oZYQ9aTktYME2449ayEi6g* sX60gensym41_;
	tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag L;
	NimStringDesc* k;
{	sX60gensym41_ = llStreamOpen__knWUQJsEzojha6AJCi6LcA(cfilename, ((tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg) 0));
	{
		if (!(sX60gensym41_ == NIM_NIL)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	nimZeroMem((void*)(&L), sizeof(tyObject_TBaseLexer__jTxk7Uc2dfr9aTDL2dZhO9ag));
	L.Sup.m_type = (&NTI__jTxk7Uc2dfr9aTDL2dZhO9ag_);
	openBaseLexer__V9avLgM3wlB5dKp8bWFOIqg((&L), sX60gensym41_, ((NI) 8192));
	k = rawNewString(((NI) 23));
	{
		while (1) {
			skipUntilCmd__YPcsL8BagSeVY75LpgNAbg((&L));
			{
				if (!((NU8)(L.buf[L.bufpos]) == (NU8)(0))) goto LA9_;
				goto LA5;
			}
			LA9_: ;
			readKey__Gy7lmMjN9agR3rirbtYQPQg((&L), (&k));
			{
				if (!eqStrings(k, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_36))) goto LA13_;
			}
			goto LA11_;
			LA13_: ;
			{
				NIM_BOOL T16_;
				tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* verbatim;
				NI sectionA;
				T16_ = (NIM_BOOL)0;
				T16_ = ((NU8)(L.buf[L.bufpos]) == (NU8)(42));
				if (!(T16_)) goto LA17_;
				T16_ = ((NU8)(L.buf[(NI)(L.bufpos + ((NI) 1))]) == (NU8)(47));
				LA17_: ;
				if (!T16_) goto LA18_;
				L.bufpos += ((NI) 2);
				skipWhite__YPcsL8BagSeVY75LpgNAbg_2((&L));
				verbatim = readVerbatimSection__Dfh2HdkGfgVIwA9c10yqLNA((&L));
				skipWhite__YPcsL8BagSeVY75LpgNAbg_2((&L));
				sectionA = find__4Jd7hK7uBJp9aFoP0efveMwsystem(CFileSectionNames__Nw5Vq9cKTP76D9bnQrn5ErRw, k);
				{
					NIM_BOOL T22_;
					T22_ = (NIM_BOOL)0;
					T22_ = (((NI) 0) < sectionA);
					if (!(T22_)) goto LA23_;
					T22_ = (sectionA <= ((NI) 19));
					LA23_: ;
					if (!T22_) goto LA24_;
					unsureAsgnRef((void**) (&(*m).f[(sectionA)- 0]), verbatim);
				}
				goto LA20_;
				LA24_: ;
				{
					NI sectionB;
					sectionB = find__9blnoqS2yGHVVVWM2SPa6Owsystem(CProcSectionNames__CFc65xAsTDyk1IJIOKvV1w, k);
					{
						NIM_BOOL T29_;
						T29_ = (NIM_BOOL)0;
						T29_ = (((NI) 0) <= sectionB);
						if (!(T29_)) goto LA30_;
						T29_ = (sectionB <= ((NI) 2));
						LA30_: ;
						if (!T29_) goto LA31_;
						unsureAsgnRef((void**) (&(*m).p[(sectionB)- 0]), verbatim);
					}
					goto LA27_;
					LA31_: ;
					{
						{
							NimStringDesc* T38_;
							if (!NIM_TRUE) goto LA36_;
							T38_ = (NimStringDesc*)0;
							T38_ = rawNewString((k ? k->Sup.len : 0) + 57);
appendString(T38_, ((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_39));
appendString(T38_, k);
							failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(T38_);
						}
						LA36_: ;
					}
					LA27_: ;
				}
				LA20_: ;
			}
			goto LA11_;
			LA18_: ;
			{
				{
					if (!NIM_TRUE) goto LA42_;
					failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__2Rn8oKP4r6cTXdnwFQ9cUjQ_40));
				}
				LA42_: ;
			}
			LA11_: ;
		}
	} LA5: ;
	closeBaseLexer__X9aea9bJavePT9cGIdd7JRH7Q_3((&L));
	}BeforeRet_: ;
}
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem((*c).refcount, ((NI) 8));
}
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(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(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(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, mergeFiles__l8sH9bHsXY4q3tbS3srelEw)(NimStringDesc* cfilename, tyObject_TCGen__9cG6VsX22pOhho6kxyhFVow* m) {
	tyObject_TMergeSections__crELyef4WlnFCK8sExutkA old;
	nimZeroMem((void*)(&old), sizeof(tyObject_TMergeSections__crELyef4WlnFCK8sExutkA));
	readMergeSections__SkJF1FEO0K3zrbuQ9bO4UlQ(cfilename, (&old));
	{
		tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg i;
		i = (tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg)0;
		{
			tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg v;
			NI res;
			v = (tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg)0;
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= ((NI) 19))) goto LA4;
					v = ((tyEnum_TCFileSection__NR9cMDOmG9cHJhM0tCKvXNzg) (res));
					i = v;
					asgnRef((void**) (&(*m).s[(i)- 0]), amp___ShdZ6VrAQkY0nWR9a39b9bGdQ(old.f[(i)- 0], (*m).s[(i)- 0]));
					res += ((NI) 1);
				} LA4: ;
			}
		}
	}
	{
		tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg i_2;
		i_2 = (tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg)0;
		{
			tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg v_2;
			NI res_2;
			v_2 = (tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg)0;
			res_2 = ((NI) 0);
			{
				while (1) {
					tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA** T9_;
					tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* T10_;
					tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA** T11_;
					if (!(res_2 <= ((NI) 2))) goto LA8;
					v_2 = ((tyEnum_TCProcSection__0r9aIOfveOcxZqJ7OwbI2gg) (res_2));
					i_2 = v_2;
					T9_ = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA**)0;
					T9_ = s__kOyJGmZMM2tMgCKSrvUE3gcgendata((*m).initProc, i_2);
					T10_ = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA*)0;
					T10_ = old.p[(i_2)- 0];
					T11_ = (tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA**)0;
					T11_ = s__kOyJGmZMM2tMgCKSrvUE3gcgendata((*m).initProc, i_2);
					unsureAsgnRef((void**) (&(*T9_)), amp___ShdZ6VrAQkY0nWR9a39b9bGdQ(T10_, (*T11_)));
					res_2 += ((NI) 1);
				} LA8: ;
			}
		}
	}
}
