/* Generated by Nim Compiler v0.19.0 */
/*   (c) 2018 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_NEW_MANGLING_RULES
#define NIM_INTBITS 64

#include "nimbase.h"
#include <string.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
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w;
typedef struct tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw;
typedef struct tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence_Ef05srmQTDulnBdXR4Ja6Q tySequence_Ef05srmQTDulnBdXR4Ja6Q;
typedef struct tySequence_DXS6mEo7PVUFJkirsQ9bNQA tySequence_DXS6mEo7PVUFJkirsQ9bNQA;
typedef struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA;
typedef struct tySequence_DfgJFJEYoj4YBAHLZPl5lQ tySequence_DfgJFJEYoj4YBAHLZPl5lQ;
typedef struct tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
typedef struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA;
typedef struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q;
typedef struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw;
typedef struct tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA;
typedef struct tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA;
typedef struct tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA;
typedef struct tyObject_CountTable_tUMxxU9cRgLolsrW9b7IBGsQ tyObject_CountTable_tUMxxU9cRgLolsrW9b7IBGsQ;
typedef struct tySequence_MvZmat48bhe9b6x9aUD58D5Q tySequence_MvZmat48bhe9b6x9aUD58D5Q;
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 tySequence_WwUFq9cJ2xKRlsAWVEHyPRg tySequence_WwUFq9cJ2xKRlsAWVEHyPRg;
typedef struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ;
typedef struct tySequence_XUL1TrMU0tgXmaMFCIYgFQ tySequence_XUL1TrMU0tgXmaMFCIYgFQ;
typedef struct tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA;
typedef struct tyTuple_zwpS6d6iewrdlBSTNFoyVA tyTuple_zwpS6d6iewrdlBSTNFoyVA;
typedef struct tyTuple_tA7Q8IrfOKH7Mn89cK9cBAIg tyTuple_tA7Q8IrfOKH7Mn89cK9cBAIg;
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NU8 tyArray_qtqsWM5aXmcpMIVmvq3kAA[16];
typedef NimStringDesc* tyArray_TLUjAhnMfzBtYkb49czB0KA[64];
typedef NU32 tyArray_FleBT9cC2nxhgiXmSYYnEKA[4];
typedef NU32 tyArray_JlnxiR65D9cjJpwi6uBZRtA[2];
typedef NU8 tyArray_w5VB8h5K8DB3oWrO5U2wqg[64];
struct tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw {
tyArray_FleBT9cC2nxhgiXmSYYnEKA state;
tyArray_JlnxiR65D9cjJpwi6uBZRtA count;
tyArray_w5VB8h5K8DB3oWrO5U2wqg buffer;
};
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;
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 tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA {
  RootObj Sup;
NI id;
};
typedef NU8 tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw;
struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA {
NI counter;
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* data;
};
typedef NU16 tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg;
struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q {
NU16 line;
NI16 col;
NI32 fileIndex;
};
typedef NU64 tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw;
typedef NU32 tySet_tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg;
typedef NU8 tyEnum_TLocKind_O7PRFZKuiBBWbku09cayVBg;
typedef NU8 tyEnum_TStorageLoc_JK9cKMX3XnqHaUky9b6gkGEw;
typedef NU16 tySet_tyEnum_TLocFlag_o2bqJgR4ceIupnUSpxiudA;
struct tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA {
tyEnum_TLocKind_O7PRFZKuiBBWbku09cayVBg k;
tyEnum_TStorageLoc_JK9cKMX3XnqHaUky9b6gkGEw storage;
tySet_tyEnum_TLocFlag_o2bqJgR4ceIupnUSpxiudA flags;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* lode;
tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* r;
tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* dup;
};
struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind;
union{
struct {tySequence_Ef05srmQTDulnBdXR4Ja6Q* typeInstCache;
} S1;
struct {tySequence_DXS6mEo7PVUFJkirsQ9bNQA* procInstCache;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* gcUnsafetyReason;
} S2;
struct {tySequence_DXS6mEo7PVUFJkirsQ9bNQA* usedGenerics;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tab;
} S3;
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* guard;
NI bitsize;
} S4;
} _Ukind;
tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg magic;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* name;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw flags;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ast;
tySet_tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg options;
NI position;
NI offset;
tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA* annex;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* constraint;
};
struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
NimStringDesc* s;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* next;
NI h;
};
typedef NU8 tySet_tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g;
typedef NU8 tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA;
typedef NU64 tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
struct tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind;
tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA callConv;
tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw flags;
tySequence_Ef05srmQTDulnBdXR4Ja6Q* sons;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* destructor;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* deepCopy;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* assignment;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sink;
tySequence_MvZmat48bhe9b6x9aUD58D5Q* methods;
NI64 size;
NI16 align;
NI16 lockLevel;
tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeInst;
};
typedef NU8 tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g;
typedef NU8 tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw;
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_SiRwrEKZdLgxqz9a9aoVBglg[512];
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_SiRwrEKZdLgxqz9a9aoVBglg 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;
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;
};
typedef NU8 tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA {
  RootObj Sup;
tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* left;
tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* right;
NI L;
NimStringDesc* data;
};
typedef NU32 tySet_tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg;
typedef NU8 tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw;
struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw {
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
tySet_tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg flags;
tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind;
union{
struct {NI64 intVal;
} S1;
struct {NF floatVal;
} S2;
struct {NimStringDesc* strVal;
} S3;
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
} S4;
struct {tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
} S5;
struct {tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
} S6;
} _Ukind;
NimStringDesc* comment;
};
typedef NU8 tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
struct tyObject_CountTable_tUMxxU9cRgLolsrW9b7IBGsQ {
tySequence_XUL1TrMU0tgXmaMFCIYgFQ* data;
NI counter;
};
struct tyTuple_zwpS6d6iewrdlBSTNFoyVA {
NI Field0;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* Field1;
};
struct tyTuple_tA7Q8IrfOKH7Mn89cK9cBAIg {
tyArray_qtqsWM5aXmcpMIVmvq3kAA Field0;
NI Field1;
};
struct tySequence_WwUFq9cJ2xKRlsAWVEHyPRg {
  TGenericSeq Sup;
  tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* data[SEQ_DECL_SIZE];
};
struct tySequence_Ef05srmQTDulnBdXR4Ja6Q {
  TGenericSeq Sup;
  tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* data[SEQ_DECL_SIZE];
};
struct tySequence_DXS6mEo7PVUFJkirsQ9bNQA {
  TGenericSeq Sup;
  tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA* data[SEQ_DECL_SIZE];
};
struct tySequence_DfgJFJEYoj4YBAHLZPl5lQ {
  TGenericSeq Sup;
  tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* data[SEQ_DECL_SIZE];
};
struct tySequence_MvZmat48bhe9b6x9aUD58D5Q {
  TGenericSeq Sup;
  tyTuple_zwpS6d6iewrdlBSTNFoyVA data[SEQ_DECL_SIZE];
};
struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ {
  TGenericSeq Sup;
  tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
};
struct tySequence_XUL1TrMU0tgXmaMFCIYgFQ {
  TGenericSeq Sup;
  tyTuple_tA7Q8IrfOKH7Mn89cK9cBAIg data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, toBase64a_I9bS350OB0kONBg3TL1X8Ag)(NCSTRING s, NI len);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copyMem_E1xtACub5WcDa3vbrIXbwgsystem)(void* dest, void* source, NI size);
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem_cNwQQ4PlSJsZSwvoN5Uafwsystem)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, md5Init_TD1qNpCBAlKjZlVJ9cbPeVg)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c);
N_LIB_PRIVATE N_NIMCALL(void, ampeq__8qd9ai8arYbQ4l9aoGSiETLA)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, NimStringDesc* s);
N_LIB_PRIVATE N_NIMCALL(void, md5Update_2rxQixjUkbT0w5WdNOCwMw)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, NCSTRING input, NI len);
static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s);
N_LIB_PRIVATE N_NIMCALL(void, md5Final_QVR9bnyINbQRLkYQjTeezvw)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, NU8* digest);
N_LIB_PRIVATE N_NIMCALL(void, hashProc_rfHAQx7ic9aKN7x4HFllUHw)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyArray_qtqsWM5aXmcpMIVmvq3kAA Result);
N_LIB_PRIVATE N_NIMCALL(void, hashType_X3duBun3y5IEGlsZHDYFtg)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g flags);
N_LIB_PRIVATE N_NIMCALL(NI, sonsLen_SWFNCiWYB89bTUPh5KptkvA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lastSon_ab52xel9cFebv9am0xV04xXA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(void, hashSym_P3fVo8wMKWnwwSk2oyRV8A)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, base_BFFuB9cFDZ89c6QWZqEFAtdA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipGenericAlias_BFFuB9cFDZ89c6QWZqEFAtdA_3)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NI, len_SWFNCiWYB89bTUPh5KptkvA_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(void, ampeq__dBguJV2zAMoZnepRAe9a1Hw)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, NIM_CHAR ch);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr);
static N_INLINE(void, rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_2system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT_fCDI7oO1NNVXXURtxSzsRw)(tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl_aDmpBTs9cPuXp0Mp9cfiNeyA)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(void, ampeq__obubM00ISxnvA9c8NDl7xrA)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* r);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
static N_INLINE(tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*, pop_Ux3gtntcVjVnGxXx3h8vbwropes)(tySequence_WwUFq9cJ2xKRlsAWVEHyPRg** s);
N_NIMCALL(TGenericSeq*, setLengthSeqV2)(TGenericSeq* s, TNimType* typ, NI newLen);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
N_LIB_PRIVATE N_NIMCALL(void, hashTypeSym_4UomljBfnHYVnNSgF8li7A)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
static N_INLINE(NI, len_CdME9baJhvveuPEDZE9bXoxAsigmatch)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, ampeq__pwo4RLuUt2VagzQ040GVgw)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, NI64 i);
N_LIB_PRIVATE N_NIMCALL(void, hashTree_Ul2QCzOnP8QLhigfcr4V8Q)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NI, sonsLen_qPWPHw7WgJeEVYUdcaRIig)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*, rope_yShmEg9cffWxI7s5XzEKBow)(NimStringDesc* s);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar__cjda4doS9ccFOjsWsGu9aa2A)(tyArray_qtqsWM5aXmcpMIVmvq3kAA u);
N_LIB_PRIVATE N_NIMCALL(NI, getOrDefault_2rknrqVhALZjHMyYSj9aZDA)(tyObject_CountTable_tUMxxU9cRgLolsrW9b7IBGsQ t, tyArray_qtqsWM5aXmcpMIVmvq3kAA key);
static N_INLINE(NIM_BOOL, equalMem_fmeFeLBvgmAHG9bC8ETS9bYQropes)(void* a, void* b, NI size);
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size);
N_LIB_PRIVATE N_NIMCALL(void, add_iMTw0CDaruwETLGb9bhpBLg)(tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA** a, tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*, amp__4cYKitaHx6RQ9azRtQsZp6w)(NimStringDesc* a, tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*, rope_KOisMGxcPhz6CcSmxgwEQQ)(NI64 i);
N_LIB_PRIVATE N_NIMCALL(void, inc_zz9bdJ5H9aoa4gmP4AyVKgmA)(tyObject_CountTable_tUMxxU9cRgLolsrW9b7IBGsQ* t, tyArray_qtqsWM5aXmcpMIVmvq3kAA key, NI val);
N_LIB_PRIVATE N_NIMCALL(void, hashNonProc_pju1tWFK9aIojovglLk8zMQ_2)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyArray_qtqsWM5aXmcpMIVmvq3kAA Result);
extern tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
extern TNimType NTI_WwUFq9cJ2xKRlsAWVEHyPRg_;
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_2, "A", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_3, "B", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_4, "C", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_5, "D", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_6, "E", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_7, "F", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_8, "G", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_9, "H", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_10, "I", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_11, "J", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_12, "K", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_13, "L", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_14, "M", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_15, "N", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_16, "O", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_17, "P", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_18, "Q", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_19, "R", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_20, "S", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_21, "T", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_22, "U", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_23, "V", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_24, "W", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_25, "X", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_26, "Y", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_27, "Z", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_28, "a", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_29, "b", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_30, "c", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_31, "d", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_32, "e", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_33, "f", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_34, "g", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_35, "h", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_36, "i", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_37, "j", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_38, "k", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_39, "l", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_40, "m", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_41, "n", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_42, "o", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_43, "p", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_44, "q", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_45, "r", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_46, "s", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_47, "t", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_48, "u", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_49, "v", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_50, "w", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_51, "x", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_52, "y", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_53, "z", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_54, "0", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_55, "1", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_56, "2", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_57, "3", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_58, "4", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_59, "5", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_60, "6", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_61, "7", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_62, "8", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_63, "9a", 2);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_64, "9b", 2);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_65, "9c", 2);
NIM_CONST tyArray_TLUjAhnMfzBtYkb49czB0KA cb64_tkChgNv8Atob8r3BdeF9bWw = {((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_2),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_3),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_4),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_5),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_6),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_7),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_8),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_9),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_10),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_11),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_12),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_13),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_14),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_15),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_16),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_17),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_18),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_19),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_20),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_21),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_22),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_23),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_24),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_25),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_26),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_27),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_28),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_29),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_30),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_31),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_32),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_33),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_34),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_35),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_36),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_37),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_38),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_39),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_40),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_41),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_42),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_43),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_44),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_45),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_46),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_47),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_48),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_49),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_50),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_51),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_52),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_53),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_54),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_55),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_56),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_57),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_58),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_59),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_60),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_61),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_62),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_63),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_64),
((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_65)}
;
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_66, ".", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_67, "\376", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_68, ":anon", 5);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_69, "/Users/andreasrumpf-mac/projects/build_nim_xz/build/Nim/compile"
"r/sighashes.nim(191, 18) `\012not (t.sym.loc.r == nil)` ", 116);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_70, ".varisptr", 9);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_71, "\377", 1);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_72, "iterator ", 9);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_73, "proc ", 5);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_74, ".noSideEffect", 13);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_75, ".thread", 7);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_76, ".varargs", 8);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_77, "not nil", 7);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_78, ".dispatcher", 11);
STRING_LITERAL(TM_e0lkmDV64LUjE3ua6F9agUw_79, "_", 1);

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_E1xtACub5WcDa3vbrIXbwgsystem)(void* dest, void* source, NI size) {
	nimCopyMem(dest, source, size);
}

static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	{
		if (!!((src == NIM_NIL))) goto LA3_;
		copyMem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((&(*dest).data[((*dest).Sup.len)- 0]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		(*dest).Sup.len += (*src).Sup.len;
	}
	LA3_: ;
}

N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, toBase64a_I9bS350OB0kONBg3TL1X8Ag)(NCSTRING s, NI len) {
	NimStringDesc* result;
	NI i;
	result = (NimStringDesc*)0;
	result = rawNewString(((NI) ((NI)((NI)((NI)(len + ((NI) 2)) / ((NI) 3)) * ((NI) 4)))));
	result = addChar(result, 95);
	i = ((NI) 0);
	{
		while (1) {
			NI a;
			NI b;
			NI c;
			if (!(i < (NI)(len - ((NI) 2)))) goto LA2;
			a = ((NU8)(s[i]));
			b = ((NU8)(s[(NI)(i + ((NI) 1))]));
			c = ((NU8)(s[(NI)(i + ((NI) 2))]));
			result = resizeString(result, (cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)(a) >> (NU64)(((NI) 2))))- 0] ? cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)(a) >> (NU64)(((NI) 2))))- 0]->Sup.len : 0) + 0);
appendString(result, cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)(a) >> (NU64)(((NI) 2))))- 0]);
			result = resizeString(result, (cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NI)((NU64)((NI)(a & ((NI) 3))) << (NU64)(((NI) 4))) | (NI)((NU64)((NI)(b & ((NI) 240))) >> (NU64)(((NI) 4)))))- 0] ? cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NI)((NU64)((NI)(a & ((NI) 3))) << (NU64)(((NI) 4))) | (NI)((NU64)((NI)(b & ((NI) 240))) >> (NU64)(((NI) 4)))))- 0]->Sup.len : 0) + 0);
appendString(result, cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NI)((NU64)((NI)(a & ((NI) 3))) << (NU64)(((NI) 4))) | (NI)((NU64)((NI)(b & ((NI) 240))) >> (NU64)(((NI) 4)))))- 0]);
			result = resizeString(result, (cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NI)((NU64)((NI)(b & ((NI) 15))) << (NU64)(((NI) 2))) | (NI)((NU64)((NI)(c & ((NI) 192))) >> (NU64)(((NI) 6)))))- 0] ? cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NI)((NU64)((NI)(b & ((NI) 15))) << (NU64)(((NI) 2))) | (NI)((NU64)((NI)(c & ((NI) 192))) >> (NU64)(((NI) 6)))))- 0]->Sup.len : 0) + 0);
appendString(result, cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NI)((NU64)((NI)(b & ((NI) 15))) << (NU64)(((NI) 2))) | (NI)((NU64)((NI)(c & ((NI) 192))) >> (NU64)(((NI) 6)))))- 0]);
			result = resizeString(result, (cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)(c & ((NI) 63)))- 0] ? cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)(c & ((NI) 63)))- 0]->Sup.len : 0) + 0);
appendString(result, cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)(c & ((NI) 63)))- 0]);
			i += ((NI) 3);
		} LA2: ;
	}
	{
		NI a_2;
		NI b_2;
		if (!(i < (NI)(len - ((NI) 1)))) goto LA5_;
		a_2 = ((NU8)(s[i]));
		b_2 = ((NU8)(s[(NI)(i + ((NI) 1))]));
		result = resizeString(result, (cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)(a_2) >> (NU64)(((NI) 2))))- 0] ? cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)(a_2) >> (NU64)(((NI) 2))))- 0]->Sup.len : 0) + 0);
appendString(result, cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)(a_2) >> (NU64)(((NI) 2))))- 0]);
		result = resizeString(result, (cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NI)((NU64)((NI)(a_2 & ((NI) 3))) << (NU64)(((NI) 4))) | (NI)((NU64)((NI)(b_2 & ((NI) 240))) >> (NU64)(((NI) 4)))))- 0] ? cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NI)((NU64)((NI)(a_2 & ((NI) 3))) << (NU64)(((NI) 4))) | (NI)((NU64)((NI)(b_2 & ((NI) 240))) >> (NU64)(((NI) 4)))))- 0]->Sup.len : 0) + 0);
appendString(result, cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NI)((NU64)((NI)(a_2 & ((NI) 3))) << (NU64)(((NI) 4))) | (NI)((NU64)((NI)(b_2 & ((NI) 240))) >> (NU64)(((NI) 4)))))- 0]);
		result = resizeString(result, (cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)((NI)(b_2 & ((NI) 15))) << (NU64)(((NI) 2))))- 0] ? cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)((NI)(b_2 & ((NI) 15))) << (NU64)(((NI) 2))))- 0]->Sup.len : 0) + 0);
appendString(result, cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)((NI)(b_2 & ((NI) 15))) << (NU64)(((NI) 2))))- 0]);
	}
	goto LA3_;
	LA5_: ;
	{
		NI a_3;
		if (!(i < len)) goto LA8_;
		a_3 = ((NU8)(s[i]));
		result = resizeString(result, (cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)(a_3) >> (NU64)(((NI) 2))))- 0] ? cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)(a_3) >> (NU64)(((NI) 2))))- 0]->Sup.len : 0) + 0);
appendString(result, cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)(a_3) >> (NU64)(((NI) 2))))- 0]);
		result = resizeString(result, (cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)((NI)(a_3 & ((NI) 3))) << (NU64)(((NI) 4))))- 0] ? cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)((NI)(a_3 & ((NI) 3))) << (NU64)(((NI) 4))))- 0]->Sup.len : 0) + 0);
appendString(result, cb64_tkChgNv8Atob8r3BdeF9bWw[((NI)((NU64)((NI)(a_3 & ((NI) 3))) << (NU64)(((NI) 4))))- 0]);
	}
	goto LA3_;
	LA8_: ;
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar__cjda4doS9ccFOjsWsGu9aa2A)(tyArray_qtqsWM5aXmcpMIVmvq3kAA u) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	result = toBase64a_I9bS350OB0kONBg3TL1X8Ag(((NCSTRING) (u)), ((NI) 16));
	return result;
}

static N_INLINE(void, nimSetMem_cNwQQ4PlSJsZSwvoN5Uafwsystem)(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_cNwQQ4PlSJsZSwvoN5Uafwsystem(p, ((int) 0), size);
}

static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s) {
	NCSTRING result;
	result = (NCSTRING)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (s == NIM_NIL);
		if (T3_) goto LA4_;
		T3_ = ((*s).Sup.len == ((NI) 0));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = "";
	}
	goto LA1_;
	LA5_: ;
	{
		result = ((NCSTRING) ((*s).data));
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, ampeq__8qd9ai8arYbQ4l9aoGSiETLA)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, NimStringDesc* s) {
	md5Update_2rxQixjUkbT0w5WdNOCwMw(c, nimToCStringConv(s), (s ? s->Sup.len : 0));
}

N_LIB_PRIVATE N_NIMCALL(void, hashOwner_pju1tWFK9aIojovglLk8zMQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyArray_qtqsWM5aXmcpMIVmvq3kAA Result) {
	tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw c;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* p;
	nimZeroMem((void*)Result, sizeof(tyArray_qtqsWM5aXmcpMIVmvq3kAA));
	nimZeroMem((void*)(&c), sizeof(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw));
	md5Init_TD1qNpCBAlKjZlVJ9cbPeVg((&c));
	m = s;
	{
		while (1) {
			if (!!(((*m).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6)))) goto LA2;
			m = (*m).owner;
		} LA2: ;
	}
	p = (*m).owner;
	ampeq__8qd9ai8arYbQ4l9aoGSiETLA((&c), (*(*p).name).s);
	ampeq__8qd9ai8arYbQ4l9aoGSiETLA((&c), ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_66));
	ampeq__8qd9ai8arYbQ4l9aoGSiETLA((&c), (*(*m).name).s);
	md5Final_QVR9bnyINbQRLkYQjTeezvw((&c), Result);
}

N_LIB_PRIVATE N_NIMCALL(void, hashSym_P3fVo8wMKWnwwSk2oyRV8A)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 30))&63U)))!=0);
		if (T3_) goto LA4_;
		T3_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 4));
		LA4_: ;
		if (!T3_) goto LA5_;
		ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_68));
	}
	goto LA1_;
	LA5_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* it;
		it = s;
		{
			while (1) {
				if (!!((it == NIM_NIL))) goto LA9;
				ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, (*(*it).name).s);
				ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_66));
				it = (*it).owner;
			} LA9: ;
		}
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, ampeq__dBguJV2zAMoZnepRAe9a1Hw)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, NIM_CHAR ch) {
	md5Update_2rxQixjUkbT0w5WdNOCwMw(c, ((NCSTRING) ((&ch))), ((NI) 1));
}

static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr) {
	tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* result;
	result = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	result = ((tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*) ((NI)((NU64)(((NI) (ptrdiff_t) (usr))) - (NU64)(((NI)sizeof(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g))))));
	return result;
}

static N_INLINE(void, rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_2system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c) {
	addZCT_fCDI7oO1NNVXXURtxSzsRw((&gch_IcYaEuuWivYAS86vFMTS3Q.zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c;
		if (!!((src == NIM_NIL))) goto LA3_;
		c = usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem(src);
		(*c).refcount += ((NI) 8);
	}
	LA3_: ;
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c_2;
		if (!!(((*dest) == NIM_NIL))) goto LA7_;
		c_2 = usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem((*dest));
		{
			(*c_2).refcount -= ((NI) 8);
			if (!((NU64)((*c_2).refcount) < (NU64)(((NI) 8)))) goto LA11_;
			rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_2system(c_2);
		}
		LA11_: ;
	}
	LA7_: ;
	(*dest) = src;
}

static N_INLINE(tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*, pop_Ux3gtntcVjVnGxXx3h8vbwropes)(tySequence_WwUFq9cJ2xKRlsAWVEHyPRg** s) {
	tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* result;
	NI L;
	NI T1_;
	result = (tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*)0;
	T1_ = ((*s) ? (*s)->Sup.len : 0);
	L = (NI)(T1_ - ((NI) 1));
	result = (*s)->data[L];
	unsureAsgnRef((void**) (&(*s)), (tySequence_WwUFq9cJ2xKRlsAWVEHyPRg*) setLengthSeqV2(&((*s))->Sup, (&NTI_WwUFq9cJ2xKRlsAWVEHyPRg_), ((NI) (L))));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, ampeq__obubM00ISxnvA9c8NDl7xrA)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* r) {
	{
		NimStringDesc* l;
		l = (NimStringDesc*)0;
		{
			tySequence_WwUFq9cJ2xKRlsAWVEHyPRg* stack;
			if (!!((r == NIM_NIL))) goto LA4_;
			stack = (tySequence_WwUFq9cJ2xKRlsAWVEHyPRg*) newSeq((&NTI_WwUFq9cJ2xKRlsAWVEHyPRg_), 1);
			asgnRefNoCycle((void**) (&stack->data[0]), r);
			{
				while (1) {
					NI T8_;
					tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* it;
					T8_ = (stack ? stack->Sup.len : 0);
					if (!(((NI) 0) < T8_)) goto LA7;
					it = pop_Ux3gtntcVjVnGxXx3h8vbwropes((&stack));
					{
						while (1) {
							NI T11_;
							if (!!(((*it).left == NIM_NIL))) goto LA10;
							stack = (tySequence_WwUFq9cJ2xKRlsAWVEHyPRg*) incrSeqV3(&(stack)->Sup, (&NTI_WwUFq9cJ2xKRlsAWVEHyPRg_));
							T11_ = stack->Sup.len++;
							asgnRefNoCycle((void**) (&stack->data[T11_]), (*it).right);
							it = (*it).left;
						} LA10: ;
					}
					l = (*it).data;
					md5Update_2rxQixjUkbT0w5WdNOCwMw(c, nimToCStringConv(l), (l ? l->Sup.len : 0));
				} LA7: ;
			}
		}
		LA4_: ;
	}
}

N_LIB_PRIVATE N_NIMCALL(void, hashTypeSym_4UomljBfnHYVnNSgF8li7A)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 30))&63U)))!=0);
		if (T3_) goto LA4_;
		T3_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 4));
		LA4_: ;
		if (!T3_) goto LA5_;
		ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_68));
	}
	goto LA1_;
	LA5_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* it;
		it = s;
		{
			while (1) {
				if (!!((it == NIM_NIL))) goto LA9;
				{
					NIM_BOOL T12_;
					NIM_BOOL T13_;
					T12_ = (NIM_BOOL)0;
					T13_ = (NIM_BOOL)0;
					T13_ = (((*it).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 2))&63U)))!=0);
					if (!(T13_)) goto LA14_;
					T13_ = ((520192 &(1U<<((NU)((*it).kind)&31U)))!=0);
					LA14_: ;
					T12_ = T13_;
					if (!(T12_)) goto LA15_;
					T12_ = !(((*it).typ == NIM_NIL));
					LA15_: ;
					if (!T12_) goto LA16_;
					hashType_X3duBun3y5IEGlsZHDYFtg(c, (*it).typ, 1);
				}
				LA16_: ;
				ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, (*(*it).name).s);
				ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_66));
				it = (*it).owner;
			} LA9: ;
		}
	}
	LA1_: ;
}

static N_INLINE(NI, len_CdME9baJhvveuPEDZE9bXoxAsigmatch)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	NI T1_;
	result = (NI)0;
	T1_ = ((*n)._Ukind.S6.sons ? (*n)._Ukind.S6.sons->Sup.len : 0);
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, ampeq__pwo4RLuUt2VagzQ040GVgw)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, NI64 i) {
	md5Update_2rxQixjUkbT0w5WdNOCwMw(c, ((NCSTRING) ((&i))), ((NI) 8));
}

N_LIB_PRIVATE N_NIMCALL(void, hashTree_Ul2QCzOnP8QLhigfcr4V8Q)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw k;
{	{
		if (!(n == NIM_NIL)) goto LA3_;
		ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_71));
		goto BeforeRet_;
	}
	LA3_: ;
	k = (*n).kind;
	ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) (k)));
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	{
		ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, (*(*n)._Ukind.S5.ident).s);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		hashSym_P3fVo8wMKWnwwSk2oyRV8A(c, (*n)._Ukind.S4.sym);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 5) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 15):
	{
		NI64 v;
		v = (*n)._Ukind.S1.intVal;
		md5Update_2rxQixjUkbT0w5WdNOCwMw(c, ((NCSTRING) ((&v))), ((NI) 8));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 16) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 18):
	{
		NF v_2;
		v_2 = (*n)._Ukind.S2.floatVal;
		md5Update_2rxQixjUkbT0w5WdNOCwMw(c, ((NCSTRING) ((&v_2))), ((NI) 8));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 22):
	{
		ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, (*n)._Ukind.S3.strVal);
	}
	break;
	default:
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA14;
					i = i_2;
					hashTree_Ul2QCzOnP8QLhigfcr4V8Q(c, (*n)._Ukind.S6.sons->data[i]);
					i_2 += ((NI) 1);
				} LA14: ;
			}
		}
	}
	break;
	}
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, hashType_X3duBun3y5IEGlsZHDYFtg)(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw* c, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g flags) {
{	{
		if (!(t == NIM_NIL)) goto LA3_;
		ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_67));
		goto BeforeRet_;
	}
	LA3_: ;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9):
	{
		{
			NI i;
			NI colontmp_;
			NI T7_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T7_ = (NI)0;
			T7_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(t);
			colontmp_ = (NI)(T7_ - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA9;
					i = res;
					hashType_X3duBun3y5IEGlsZHDYFtg(c, (*t).sons->data[i], flags);
					res += ((NI) 1);
				} LA9: ;
			}
		}
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13):
	{
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T15_;
			if (!((flags &(1U<<((NU)(((tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g) 1))&7U)))!=0)) goto LA13_;
			T15_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T15_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
			hashType_X3duBun3y5IEGlsZHDYFtg(c, T15_, flags);
		}
		goto LA11_;
		LA13_: ;
		{
			hashSym_P3fVo8wMKWnwwSk2oyRV8A(c, (*t).sym);
		}
		LA11_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11):
	{
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T20_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* normalizedType;
			T20_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T20_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(t);
			if (!(((*(*T20_).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 28))&63U)))!=0)) goto LA21_;
			normalizedType = skipGenericAlias_BFFuB9cFDZ89c6QWZqEFAtdA_3(t);
			{
				NI i_2;
				NI colontmp__2;
				NI T24_;
				NI res_2;
				i_2 = (NI)0;
				colontmp__2 = (NI)0;
				T24_ = (NI)0;
				T24_ = len_SWFNCiWYB89bTUPh5KptkvA_2(normalizedType);
				colontmp__2 = (NI)(T24_ - ((NI) 2));
				res_2 = ((NI) 0);
				{
					while (1) {
						if (!(res_2 <= colontmp__2)) goto LA26;
						i_2 = res_2;
						hashType_X3duBun3y5IEGlsZHDYFtg(c, (*t).sons->data[i_2], flags);
						res_2 += ((NI) 1);
					} LA26: ;
				}
			}
		}
		goto LA18_;
		LA21_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T28_;
			T28_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T28_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
			hashType_X3duBun3y5IEGlsZHDYFtg(c, T28_, flags);
		}
		LA18_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 55):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T30_;
		T30_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T30_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
		hashType_X3duBun3y5IEGlsZHDYFtg(c, T30_, flags);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31) ... ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44):
	{
		ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) ((*t).kind)));
		{
			NIM_BOOL T34_;
			T34_ = (NIM_BOOL)0;
			T34_ = !(((*t).sym == NIM_NIL));
			if (!(T34_)) goto LA35_;
			T34_ = !(((96 & (*(*t).sym).flags) == 0));
			LA35_: ;
			if (!T34_) goto LA36_;
			hashSym_P3fVo8wMKWnwwSk2oyRV8A(c, (*t).sym);
		}
		LA36_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14):
	{
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* inst;
			if (!!(((*t).typeInst == NIM_NIL))) goto LA41_;
			inst = (*t).typeInst;
			asgnRefNoCycle((void**) (&(*t).typeInst), NIM_NIL);
			{
				NI i_3;
				NI colontmp__3;
				NI T44_;
				NI res_3;
				i_3 = (NI)0;
				colontmp__3 = (NI)0;
				T44_ = (NI)0;
				T44_ = len_SWFNCiWYB89bTUPh5KptkvA_2(inst);
				colontmp__3 = (NI)(T44_ - ((NI) 2));
				res_3 = ((NI) 0);
				{
					while (1) {
						if (!(res_3 <= colontmp__3)) goto LA46;
						i_3 = res_3;
						hashType_X3duBun3y5IEGlsZHDYFtg(c, (*inst).sons->data[i_3], flags);
						res_3 += ((NI) 1);
					} LA46: ;
				}
			}
			asgnRefNoCycle((void**) (&(*t).typeInst), inst);
			goto BeforeRet_;
		}
		LA41_: ;
		ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) ((*t).kind)));
		{
			if (!!(((*t).sym == NIM_NIL))) goto LA49_;
			{
				if (!!(((65536 & (*(*t).sym).flags) == 0))) goto LA53_;
				{
					if (!!(!(((*(*t).sym).loc.r == NIM_NIL)))) goto LA57_;
					failedAssertImpl_aDmpBTs9cPuXp0Mp9cfiNeyA(((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_69));
				}
				LA57_: ;
				ampeq__obubM00ISxnvA9c8NDl7xrA(c, (*(*t).sym).loc.r);
			}
			goto LA51_;
			LA53_: ;
			{
				if (!((flags &(1U<<((NU)(((tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g) 2))&7U)))!=0)) goto LA60_;
				hashTypeSym_4UomljBfnHYVnNSgF8li7A(c, (*t).sym);
			}
			goto LA51_;
			LA60_: ;
			{
				hashSym_P3fVo8wMKWnwwSk2oyRV8A(c, (*t).sym);
			}
			LA51_: ;
			{
				tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw oldFlags;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
				if (!!(((IL64(5368709120) & (*(*t).sym).flags) == 0))) goto LA65_;
				oldFlags = (*(*t).sym).flags;
				(*(*t).sym).flags = ((*(*t).sym).flags & ~ IL64(5368709120));
				n = (*t).n;
				{
					NI i_4;
					NI colontmp__4;
					NI i_5;
					i_4 = (NI)0;
					colontmp__4 = (NI)0;
					colontmp__4 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					i_5 = ((NI) 0);
					{
						while (1) {
							tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
							if (!(i_5 < colontmp__4)) goto LA69;
							i_4 = i_5;
							s = (*(*n)._Ukind.S6.sons->data[i_4])._Ukind.S4.sym;
							hashSym_P3fVo8wMKWnwwSk2oyRV8A(c, s);
							hashType_X3duBun3y5IEGlsZHDYFtg(c, (*s).typ, flags);
							i_5 += ((NI) 1);
						} LA69: ;
					}
				}
				(*(*t).sym).flags = oldFlags;
			}
			LA65_: ;
		}
		goto LA47_;
		LA49_: ;
		{
			ampeq__pwo4RLuUt2VagzQ040GVgw(c, ((NI64) ((*t).Sup.id)));
		}
		LA47_: ;
		{
			NIM_BOOL T73_;
			NI T74_;
			T73_ = (NIM_BOOL)0;
			T74_ = (NI)0;
			T74_ = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
			T73_ = (((NI) 0) < T74_);
			if (!(T73_)) goto LA75_;
			T73_ = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
			LA75_: ;
			if (!T73_) goto LA76_;
			hashType_X3duBun3y5IEGlsZHDYFtg(c, (*t).sons->data[((NI) 0)], flags);
		}
		LA76_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T79_;
		ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) ((*t).kind)));
		T79_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T79_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
		hashType_X3duBun3y5IEGlsZHDYFtg(c, T79_, flags);
		{
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 19))&63U)))!=0)) goto LA82_;
			ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_70));
		}
		LA82_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61):
	{
		ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) ((*t).kind)));
		hashTree_Ul2QCzOnP8QLhigfcr4V8Q(c, (*t).n);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) ((*t).kind)));
		{
			NIM_BOOL T88_;
			T88_ = (NIM_BOOL)0;
			T88_ = !(((*t).n == NIM_NIL));
			if (!(T88_)) goto LA89_;
			T88_ = !(((flags &(1U<<((NU)(((tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g) 1))&7U)))!=0));
			LA89_: ;
			if (!T88_) goto LA90_;
			{
				NI i_6;
				NI colontmp__5;
				NI T93_;
				NI res_4;
				i_6 = (NI)0;
				colontmp__5 = (NI)0;
				T93_ = (NI)0;
				T93_ = sonsLen_qPWPHw7WgJeEVYUdcaRIig((*t).n);
				colontmp__5 = (NI)(T93_ - ((NI) 1));
				res_4 = ((NI) 0);
				{
					while (1) {
						if (!(res_4 <= colontmp__5)) goto LA95;
						i_6 = res_4;
						ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, (*(*(*(*(*t).n)._Ukind.S6.sons->data[i_6])._Ukind.S4.sym).name).s);
						ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, 58);
						hashType_X3duBun3y5IEGlsZHDYFtg(c, (*t).sons->data[i_6], (flags | 8));
						ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, 44);
						res_4 += ((NI) 1);
					} LA95: ;
				}
			}
		}
		goto LA86_;
		LA90_: ;
		{
			{
				NI i_7;
				NI colontmp__6;
				NI T98_;
				NI res_5;
				i_7 = (NI)0;
				colontmp__6 = (NI)0;
				T98_ = (NI)0;
				T98_ = sonsLen_SWFNCiWYB89bTUPh5KptkvA(t);
				colontmp__6 = (NI)(T98_ - ((NI) 1));
				res_5 = ((NI) 0);
				{
					while (1) {
						if (!(res_5 <= colontmp__6)) goto LA100;
						i_7 = res_5;
						hashType_X3duBun3y5IEGlsZHDYFtg(c, (*t).sons->data[i_7], (flags | 8));
						res_5 += ((NI) 1);
					} LA100: ;
				}
			}
		}
		LA86_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20):
	{
		{
			if (!!(((flags &(1U<<((NU)(((tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g) 3))&7U)))!=0))) goto LA104_;
			ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) ((*t).kind)));
			hashTree_Ul2QCzOnP8QLhigfcr4V8Q(c, (*t).n);
		}
		LA104_: ;
		hashType_X3duBun3y5IEGlsZHDYFtg(c, (*t).sons->data[((NI) 0)], flags);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60):
	{
		ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) ((*t).kind)));
		hashTree_Ul2QCzOnP8QLhigfcr4V8Q(c, (*t).n);
		hashType_X3duBun3y5IEGlsZHDYFtg(c, (*t).sons->data[((NI) 0)], flags);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25):
	{
		NimStringDesc* T108_;
		ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) ((*t).kind)));
		T108_ = (NimStringDesc*)0;
		{
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 15))&63U)))!=0)) goto LA111_;
			T108_ = copyString(((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_72));
		}
		goto LA109_;
		LA111_: ;
		{
			T108_ = copyString(((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_73));
		}
		LA109_: ;
		ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, T108_);
		{
			NIM_BOOL T116_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params;
			T116_ = (NIM_BOOL)0;
			T116_ = ((flags &(1U<<((NU)(((tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g) 0))&7U)))!=0);
			if (!(T116_)) goto LA117_;
			T116_ = !(((*t).n == NIM_NIL));
			LA117_: ;
			if (!T116_) goto LA118_;
			params = (*t).n;
			{
				NI i_8;
				NI colontmp__7;
				NI i_9;
				i_8 = (NI)0;
				colontmp__7 = (NI)0;
				colontmp__7 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(params);
				i_9 = ((NI) 1);
				{
					while (1) {
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param;
						if (!(i_9 < colontmp__7)) goto LA122;
						i_8 = i_9;
						param = (*(*params)._Ukind.S6.sons->data[i_8])._Ukind.S4.sym;
						ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, (*(*param).name).s);
						ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, 58);
						hashType_X3duBun3y5IEGlsZHDYFtg(c, (*param).typ, flags);
						ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, 44);
						i_9 += ((NI) 1);
					} LA122: ;
				}
			}
			hashType_X3duBun3y5IEGlsZHDYFtg(c, (*t).sons->data[((NI) 0)], flags);
		}
		goto LA114_;
		LA118_: ;
		{
			{
				NI i_10;
				NI colontmp__8;
				NI i_11;
				i_10 = (NI)0;
				colontmp__8 = (NI)0;
				colontmp__8 = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
				i_11 = ((NI) 0);
				{
					while (1) {
						if (!(i_11 < colontmp__8)) goto LA126;
						i_10 = i_11;
						hashType_X3duBun3y5IEGlsZHDYFtg(c, (*t).sons->data[i_10], flags);
						i_11 += ((NI) 1);
					} LA126: ;
				}
			}
		}
		LA114_: ;
		ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) ((*t).callConv)));
		{
			if (!!(((flags &(1U<<((NU)(((tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g) 1))&7U)))!=0))) goto LA129_;
			{
				if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 1))&63U)))!=0)) goto LA133_;
				ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_74));
			}
			LA133_: ;
			{
				if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 7))&63U)))!=0)) goto LA137_;
				ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_75));
			}
			LA137_: ;
		}
		LA129_: ;
		{
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 0))&63U)))!=0)) goto LA141_;
			ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_76));
		}
		LA141_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16):
	{
		ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) ((*t).kind)));
		{
			NI i_12;
			NI colontmp__9;
			NI i_13;
			i_12 = (NI)0;
			colontmp__9 = (NI)0;
			colontmp__9 = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
			i_13 = ((NI) 0);
			{
				while (1) {
					if (!(i_13 < colontmp__9)) goto LA146;
					i_12 = i_13;
					hashType_X3duBun3y5IEGlsZHDYFtg(c, (*t).sons->data[i_12], (flags & ~ 8));
					i_13 += ((NI) 1);
				} LA146: ;
			}
		}
	}
	break;
	default:
	{
		ampeq__dBguJV2zAMoZnepRAe9a1Hw(c, ((NIM_CHAR) ((*t).kind)));
		{
			NI i_14;
			NI colontmp__10;
			NI i_15;
			i_14 = (NI)0;
			colontmp__10 = (NI)0;
			colontmp__10 = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
			i_15 = ((NI) 0);
			{
				while (1) {
					if (!(i_15 < colontmp__10)) goto LA150;
					i_14 = i_15;
					hashType_X3duBun3y5IEGlsZHDYFtg(c, (*t).sons->data[i_14], flags);
					i_15 += ((NI) 1);
				} LA150: ;
			}
		}
	}
	break;
	}
	{
		NIM_BOOL T153_;
		T153_ = (NIM_BOOL)0;
		T153_ = (((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 17))&63U)))!=0);
		if (!(T153_)) goto LA154_;
		T153_ = !(((flags &(1U<<((NU)(((tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g) 1))&7U)))!=0));
		LA154_: ;
		if (!T153_) goto LA155_;
		ampeq__8qd9ai8arYbQ4l9aoGSiETLA(c, ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_77));
	}
	LA155_: ;
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, hashProc_rfHAQx7ic9aKN7x4HFllUHw)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyArray_qtqsWM5aXmcpMIVmvq3kAA Result) {
	tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw c;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* p;
	nimZeroMem((void*)Result, sizeof(tyArray_qtqsWM5aXmcpMIVmvq3kAA));
	nimZeroMem((void*)(&c), sizeof(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw));
	md5Init_TD1qNpCBAlKjZlVJ9cbPeVg((&c));
	hashType_X3duBun3y5IEGlsZHDYFtg((&c), (*s).typ, 1);
	m = s;
	{
		while (1) {
			if (!!(((*m).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6)))) goto LA2;
			m = (*m).owner;
		} LA2: ;
	}
	p = (*m).owner;
	ampeq__8qd9ai8arYbQ4l9aoGSiETLA((&c), (*(*p).name).s);
	ampeq__8qd9ai8arYbQ4l9aoGSiETLA((&c), ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_66));
	ampeq__8qd9ai8arYbQ4l9aoGSiETLA((&c), (*(*m).name).s);
	{
		if (!(((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 26))&63U)))!=0)) goto LA5_;
		ampeq__8qd9ai8arYbQ4l9aoGSiETLA((&c), ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_78));
	}
	LA5_: ;
	md5Final_QVR9bnyINbQRLkYQjTeezvw((&c), Result);
}

N_LIB_PRIVATE N_NIMCALL(NI, hash_GmDea9bcNl3tvgPhCgWeYfQ)(tyArray_qtqsWM5aXmcpMIVmvq3kAA u) {
	NI result;
	result = (NI)0;
	result = ((NI) 0);
	{
		NI x;
		NI res;
		x = (NI)0;
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= ((NI) 3))) goto LA3;
				x = res;
				result = (NI)((NI)((NU64)(result) << (NU64)(((NI) 8))) | ((NI) (u[(x)- 0])));
				res += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

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_fmeFeLBvgmAHG9bC8ETS9bYQropes)(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;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq__0iUwL9ajONRz2GYAZk9cgslg)(tyArray_qtqsWM5aXmcpMIVmvq3kAA a, tyArray_qtqsWM5aXmcpMIVmvq3kAA b) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = equalMem_fmeFeLBvgmAHG9bC8ETS9bYQropes(((void*) (a)), ((void*) (b)), ((NI) 16));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, hashNonProc_pju1tWFK9aIojovglLk8zMQ_2)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyArray_qtqsWM5aXmcpMIVmvq3kAA Result) {
	tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw c;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* it;
	nimZeroMem((void*)Result, sizeof(tyArray_qtqsWM5aXmcpMIVmvq3kAA));
	nimZeroMem((void*)(&c), sizeof(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw));
	md5Init_TD1qNpCBAlKjZlVJ9cbPeVg((&c));
	hashSym_P3fVo8wMKWnwwSk2oyRV8A((&c), s);
	it = s;
	{
		while (1) {
			if (!!((it == NIM_NIL))) goto LA2;
			ampeq__8qd9ai8arYbQ4l9aoGSiETLA((&c), (*(*it).name).s);
			ampeq__8qd9ai8arYbQ4l9aoGSiETLA((&c), ((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_66));
			it = (*it).owner;
		} LA2: ;
	}
	{
		if (!((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3))) goto LA5_;
		ampeq__pwo4RLuUt2VagzQ040GVgw((&c), ((NI64) ((*s).position)));
	}
	LA5_: ;
	md5Final_QVR9bnyINbQRLkYQjTeezvw((&c), Result);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*, idOrSig_m9ce9cPk9cZQsWLc0DxveJj0g)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, NimStringDesc* currentModule, tyObject_CountTable_tUMxxU9cRgLolsrW9b7IBGsQ* sigCollisions) {
	tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* result;
	result = (tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*)0;
	{
		NIM_BOOL T3_;
		tyArray_qtqsWM5aXmcpMIVmvq3kAA sig;
		NimStringDesc* T7_;
		NI counter;
		T3_ = (NIM_BOOL)0;
		T3_ = ((520192 &(1U<<((NU)((*s).kind)&31U)))!=0);
		if (!(T3_)) goto LA4_;
		T3_ = !(((*s).typ == NIM_NIL));
		LA4_: ;
		if (!T3_) goto LA5_;
		nimZeroMem((void*)sig, sizeof(tyArray_qtqsWM5aXmcpMIVmvq3kAA));
		hashProc_rfHAQx7ic9aKN7x4HFllUHw(s, sig);
		T7_ = (NimStringDesc*)0;
		T7_ = dollar__cjda4doS9ccFOjsWsGu9aa2A(sig);
		result = rope_yShmEg9cffWxI7s5XzEKBow(T7_);
		counter = getOrDefault_2rknrqVhALZjHMyYSj9aZDA((*sigCollisions), sig);
		{
			tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* T12_;
			tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* T13_;
			if (!!((counter == ((NI) 0)))) goto LA10_;
			T12_ = (tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*)0;
			T12_ = rope_KOisMGxcPhz6CcSmxgwEQQ(((NI64) ((NI)(counter + ((NI) 1)))));
			T13_ = (tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*)0;
			T13_ = amp__4cYKitaHx6RQ9azRtQsZp6w(((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_79), T12_);
			add_iMTw0CDaruwETLGb9bhpBLg(&result, T13_);
		}
		LA10_: ;
		{
			tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* T18_;
			if (!((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 5))) goto LA16_;
			T18_ = (tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*)0;
			T18_ = rope_yShmEg9cffWxI7s5XzEKBow(currentModule);
			add_iMTw0CDaruwETLGb9bhpBLg(&result, T18_);
		}
		LA16_: ;
		inc_zz9bdJ5H9aoa4gmP4AyVKgmA(sigCollisions, sig, ((NI) 1));
	}
	goto LA1_;
	LA5_: ;
	{
		tyArray_qtqsWM5aXmcpMIVmvq3kAA sig_2;
		NimStringDesc* T20_;
		NI counter_2;
		nimZeroMem((void*)sig_2, sizeof(tyArray_qtqsWM5aXmcpMIVmvq3kAA));
		hashNonProc_pju1tWFK9aIojovglLk8zMQ_2(s, sig_2);
		T20_ = (NimStringDesc*)0;
		T20_ = dollar__cjda4doS9ccFOjsWsGu9aa2A(sig_2);
		result = rope_yShmEg9cffWxI7s5XzEKBow(T20_);
		counter_2 = getOrDefault_2rknrqVhALZjHMyYSj9aZDA((*sigCollisions), sig_2);
		{
			tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* T25_;
			tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* T26_;
			if (!!((counter_2 == ((NI) 0)))) goto LA23_;
			T25_ = (tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*)0;
			T25_ = rope_KOisMGxcPhz6CcSmxgwEQQ(((NI64) ((NI)(counter_2 + ((NI) 1)))));
			T26_ = (tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA*)0;
			T26_ = amp__4cYKitaHx6RQ9azRtQsZp6w(((NimStringDesc*) &TM_e0lkmDV64LUjE3ua6F9agUw_79), T25_);
			add_iMTw0CDaruwETLGb9bhpBLg(&result, T26_);
		}
		LA23_: ;
		inc_zz9bdJ5H9aoa4gmP4AyVKgmA(sigCollisions, sig_2, ((NI) 1));
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, hashType_qLlmI8qzKQaMa2k5LnfLZQ)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_ConsiderFlag_9a9az8WnKmq9bvt8EXoSUES7g flags, tyArray_qtqsWM5aXmcpMIVmvq3kAA Result) {
	tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw c;
	nimZeroMem((void*)Result, sizeof(tyArray_qtqsWM5aXmcpMIVmvq3kAA));
	nimZeroMem((void*)(&c), sizeof(tyObject_MD5Context_oMciKUdSdCaIeMtcxbiPOw));
	md5Init_TD1qNpCBAlKjZlVJ9cbPeVg((&c));
	hashType_X3duBun3y5IEGlsZHDYFtg((&c), t, (flags | 4));
	md5Final_QVR9bnyINbQRLkYQjTeezvw((&c), Result);
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_sighashesInit000)(void) {
{
	TFrame FR_; FR_.len = 0;
}
}

N_LIB_PRIVATE N_NIMCALL(void, compiler_sighashesDatInit000)(void) {
}

