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

#include <string.h>
typedef struct tstringtable121810 tstringtable121810;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tkeyvaluepairseq121808 tkeyvaluepairseq121808;
typedef struct TY93105 TY93105;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct einvalidkey2455 einvalidkey2455;
typedef struct einvalidvalue2453 einvalidvalue2453;
typedef struct esynch2429 esynch2429;
typedef struct E_Base E_Base;
typedef struct tcell41290 tcell41290;
typedef struct tcellseq41306 tcellseq41306;
typedef struct tgcheap43216 tgcheap43216;
typedef struct tcellset41302 tcellset41302;
typedef struct tpagedesc41298 tpagedesc41298;
typedef struct tmemregion23610 tmemregion23610;
typedef struct tsmallchunk22838 tsmallchunk22838;
typedef struct tllchunk23604 tllchunk23604;
typedef struct tbigchunk22840 tbigchunk22840;
typedef struct tintset22815 tintset22815;
typedef struct ttrunk22811 ttrunk22811;
typedef struct tavlnode23608 tavlnode23608;
typedef struct tgcstat43214 tgcstat43214;
typedef struct tbasechunk22836 tbasechunk22836;
typedef struct tfreecell22828 tfreecell22828;
typedef N_NIMCALL_PTR(void, TY2289) (void* p, NI op);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY2289 marker;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct TY93105 {
NimStringDesc* Field0;
NimStringDesc* Field1;
};
struct  tstringtable121810  {
  TNimObject Sup;
NI Counter;
tkeyvaluepairseq121808* Data;
NU8 Mode;
};
struct  E_Base  {
  TNimObject Sup;
E_Base* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
struct  esynch2429  {
  E_Base Sup;
};
struct  einvalidvalue2453  {
  esynch2429 Sup;
};
struct  einvalidkey2455  {
  einvalidvalue2453 Sup;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  tcell41290  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq41306  {
NI Len;
NI Cap;
tcell41290** D;
};
struct  tcellset41302  {
NI Counter;
NI Max;
tpagedesc41298* Head;
tpagedesc41298** Data;
};
typedef tsmallchunk22838* TY23622[512];
typedef ttrunk22811* ttrunkbuckets22813[256];
struct  tintset22815  {
ttrunkbuckets22813 Data;
};
struct  tmemregion23610  {
NI Minlargeobj;
NI Maxlargeobj;
TY23622 Freesmallchunks;
tllchunk23604* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk22840* Freechunkslist;
tintset22815 Chunkstarts;
tavlnode23608* Root;
tavlnode23608* Deleted;
tavlnode23608* Last;
tavlnode23608* Freeavlnodes;
};
struct  tgcstat43214  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap43216  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq41306 Zct;
tcellseq41306 Decstack;
tcellset41302 Cycleroots;
tcellseq41306 Tempstack;
NI Recgclock;
tmemregion23610 Region;
tgcstat43214 Stat;
};
typedef NU8 TY89161[32];
typedef NI TY22818[16];
struct  tpagedesc41298  {
tpagedesc41298* Next;
NI Key;
TY22818 Bits;
};
struct  tbasechunk22836  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk22838  {
  tbasechunk22836 Sup;
tsmallchunk22838* Next;
tsmallchunk22838* Prev;
tfreecell22828* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk23604  {
NI Size;
NI Acc;
tllchunk23604* Next;
};
struct  tbigchunk22840  {
  tbasechunk22836 Sup;
tbigchunk22840* Next;
tbigchunk22840* Prev;
NI Align;
NF Data;
};
struct  ttrunk22811  {
ttrunk22811* Next;
NI Key;
TY22818 Bits;
};
typedef tavlnode23608* TY23614[2];
struct  tavlnode23608  {
TY23614 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  tfreecell22828  {
tfreecell22828* Next;
NI Zerofield;
};
struct tkeyvaluepairseq121808 {
  TGenericSeq Sup;
  TY93105 data[SEQ_DECL_SIZE];
};
N_NIMCALL(NI, nstlen)(tstringtable121810* t);
static N_INLINE(void, nimFrame)(TFrame* s);
static N_INLINE(void, popFrame)(void);
N_NIMCALL(NI, myhash_121908)(tstringtable121810* t, NimStringDesc* key);
N_NIMCALL(NI, hash_120627)(NimStringDesc* x);
N_NIMCALL(NI, hashignorecase_120735)(NimStringDesc* x);
N_NIMCALL(NI, hashignorestyle_120659)(NimStringDesc* x);
N_NIMCALL(NIM_BOOL, mycmp_121915)(tstringtable121810* t, NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(NI, cmp_3490)(NimStringDesc* x, NimStringDesc* y);
N_NIMCALL(NI, nsuCmpIgnoreCase)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(NI, nsuCmpIgnoreStyle)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(NIM_BOOL, mustrehash_121923)(NI length, NI counter);
N_NIMCALL(void, failedassertimpl_79821)(NimStringDesc* msg);
N_NIMCALL(NI, mulInt)(NI a, NI b);
static N_INLINE(NI, subInt)(NI a, NI b);
N_NOINLINE(void, raiseOverflow)(void);
static N_INLINE(NI, nexttry_122006)(NI h, NI maxhash);
static N_INLINE(NI, addInt)(NI a, NI b);
N_NIMCALL(NI, rawget_122013)(tstringtable121810* t, NimStringDesc* key);
N_NOINLINE(void, raiseIndexError)(void);
N_NIMCALL(NimStringDesc*, nstGet)(tstringtable121810* t, NimStringDesc* key);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(NimStringDesc**, nstTake)(tstringtable121810* t, NimStringDesc* key);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tcell41290*, usrtocell_44643)(void* usr);
static N_INLINE(void, rtladdzct_46202)(tcell41290* c);
N_NOINLINE(void, addzct_44618)(tcellseq41306* s, tcell41290* c);
N_NIMCALL(void, raiseException)(E_Base* e, NCSTRING ename);
N_NIMCALL(NIM_BOOL, nsthasKey)(tstringtable121810* t, NimStringDesc* key);
N_NIMCALL(void, rawinsert_122069)(tstringtable121810* t, tkeyvaluepairseq121808** data, NimStringDesc* key, NimStringDesc* val);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void, enlarge_122081)(tstringtable121810* t);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP287)(void* p, NI op);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, nstPut)(tstringtable121810* t, NimStringDesc* key, NimStringDesc* val);
N_NIMCALL(void, raiseformatexception_122185)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, getvalue_122209)(tstringtable121810* t, NU8 flags, NimStringDesc* key);
N_NIMCALL(NimStringDesc*, getenv_110426)(NimStringDesc* key);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(tstringtable121810*, nstnewStringTable)(NU8 mode);
N_NIMCALL(void, TMP296)(void* p, NI op);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(tstringtable121810*, nstnewStringTableWithPairs)(NimStringDesc** keyvaluepairs, NI keyvaluepairsLen0, NU8 mode);
N_NIMCALL(tstringtable121810*, nstnewStringTableWithTableConstr)(TY93105* keyvaluepairs, NI keyvaluepairsLen0, NU8 mode);
N_NIMCALL(NimStringDesc*, nstFormat)(NimStringDesc* f, tstringtable121810* t, NU8 flags);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_70824, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, nstDollar)(tstringtable121810* t);
STRING_LITERAL(TMP276, "length > counter ", 17);
STRING_LITERAL(TMP282, "", 0);
STRING_LITERAL(TMP284, "key does not exist: ", 20);
STRING_LITERAL(TMP288, "format string: key not found: ", 30);
NIM_CONST TY89161 patternchars_122386 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
;
STRING_LITERAL(TMP306, "{:}", 3);
STRING_LITERAL(TMP307, "{", 1);
STRING_LITERAL(TMP308, ", ", 2);
STRING_LITERAL(TMP309, ": ", 2);
STRING_LITERAL(TMP310, "}", 1);
extern TFrame* frameptr_13038;
extern TNimType NTI122042; /* ref EInvalidKey */
extern TNimType NTI2455; /* EInvalidKey */
extern tgcheap43216 gch_43244;
extern TNimType NTI93105; /* tuple[nonDST: string, DST: string] */
TNimType NTI121808; /* TKeyValuePairSeq */
extern TNimType NTI18001; /* ref EInvalidValue */
extern TNimType NTI2453; /* EInvalidValue */
extern TNimType NTI2409; /* TObject */
TNimType NTI121810; /* TStringTable */
extern TNimType NTI106; /* int */
TNimType NTI121804; /* TStringTableMode */
TNimType NTI121812; /* PStringTable */

static N_INLINE(void, nimFrame)(TFrame* s) {
	(*s).prev = frameptr_13038;
	frameptr_13038 = s;
}

static N_INLINE(void, popFrame)(void) {
	frameptr_13038 = (*frameptr_13038).prev;
}

N_NIMCALL(NI, nstlen)(tstringtable121810* t) {
	NI result;
	nimfr("len", "strtabs.nim")
	result = 0;
	nimln(36, "strtabs.nim");
	result = (*t).Counter;
	popFrame();
	return result;
}

N_NIMCALL(NI, myhash_121908)(tstringtable121810* t, NimStringDesc* key) {
	NI result;
	nimfr("myhash", "strtabs.nim")
	result = 0;
	nimln(73, "strtabs.nim");
	switch ((*t).Mode) {
	case ((NU8) 0):
	{
		nimln(74, "strtabs.nim");
		result = hash_120627(key);
	}
	break;
	case ((NU8) 1):
	{
		nimln(75, "strtabs.nim");
		result = hashignorecase_120735(key);
	}
	break;
	case ((NU8) 2):
	{
		nimln(76, "strtabs.nim");
		result = hashignorestyle_120659(key);
	}
	break;
	}
	popFrame();
	return result;
}

N_NIMCALL(NIM_BOOL, mycmp_121915)(tstringtable121810* t, NimStringDesc* a, NimStringDesc* b) {
	NIM_BOOL result;
	nimfr("myCmp", "strtabs.nim")
	result = 0;
	nimln(79, "strtabs.nim");
	switch ((*t).Mode) {
	case ((NU8) 0):
	{
		NI LOC2;
		nimln(80, "strtabs.nim");
		nimln(80, "strtabs.nim");
		nimln(80, "strtabs.nim");
		LOC2 = 0;
		LOC2 = cmp_3490(a, b);
		result = (LOC2 == 0);
	}
	break;
	case ((NU8) 1):
	{
		NI LOC4;
		nimln(81, "strtabs.nim");
		nimln(81, "strtabs.nim");
		nimln(81, "strtabs.nim");
		LOC4 = 0;
		LOC4 = nsuCmpIgnoreCase(a, b);
		result = (LOC4 == 0);
	}
	break;
	case ((NU8) 2):
	{
		NI LOC6;
		nimln(82, "strtabs.nim");
		nimln(82, "strtabs.nim");
		nimln(82, "strtabs.nim");
		LOC6 = 0;
		LOC6 = nsuCmpIgnoreStyle(a, b);
		result = (LOC6 == 0);
	}
	break;
	}
	popFrame();
	return result;
}

static N_INLINE(NI, subInt)(NI a, NI b) {
	NI result;
	result = 0;
	result = (NI)((NU32)(a) - (NU32)(b));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (0 <= (NI)(result ^ a));
		if (LOC3) goto LA4;
		LOC3 = (0 <= (NI)(result ^ (NI)((NU32) ~(b))));
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	raiseOverflow();
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, mustrehash_121923)(NI length, NI counter) {
	NIM_BOOL result;
	NIM_BOOL LOC5;
	NI TMP277;
	NI TMP278;
	NI TMP279;
	nimfr("mustRehash", "strtabs.nim")
	result = 0;
	nimln(85, "strtabs.nim");
	{
		nimln(85, "strtabs.nim");
		nimln(85, "strtabs.nim");
		if (!!((counter < length))) goto LA3;
		nimln(85, "strtabs.nim");
		failedassertimpl_79821(((NimStringDesc*) &TMP276));
	}
	LA3: ;
	nimln(86, "strtabs.nim");
	nimln(86, "strtabs.nim");
	LOC5 = 0;
	nimln(86, "strtabs.nim");
	nimln(86, "strtabs.nim");
	TMP277 = mulInt(length, 2);
	nimln(86, "strtabs.nim");
	TMP278 = mulInt(counter, 3);
	LOC5 = ((NI32)(TMP277) < (NI32)(TMP278));
	if (LOC5) goto LA6;
	nimln(86, "strtabs.nim");
	nimln(86, "strtabs.nim");
	TMP279 = subInt(length, counter);
	LOC5 = ((NI32)(TMP279) < 4);
	LA6: ;
	result = LOC5;
	popFrame();
	return result;
}

static N_INLINE(NI, addInt)(NI a, NI b) {
	NI result;
	result = 0;
	result = (NI)((NU32)(a) + (NU32)(b));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (0 <= (NI)(result ^ a));
		if (LOC3) goto LA4;
		LOC3 = (0 <= (NI)(result ^ b));
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	raiseOverflow();
	BeforeRet: ;
	return result;
}

static N_INLINE(NI, nexttry_122006)(NI h, NI maxhash) {
	NI result;
	NI TMP280;
	NI TMP281;
	nimfr("nextTry", "strtabs.nim")
	result = 0;
	nimln(89, "strtabs.nim");
	nimln(89, "strtabs.nim");
	nimln(89, "strtabs.nim");
	nimln(89, "strtabs.nim");
	TMP280 = mulInt(5, h);
	TMP281 = addInt((NI32)(TMP280), 1);
	result = (NI)((NI32)(TMP281) & maxhash);
	popFrame();
	return result;
}

N_NIMCALL(NI, rawget_122013)(tstringtable121810* t, NimStringDesc* key) {
	NI result;
	NI h;
	NI LOC1;
	nimfr("rawGet", "strtabs.nim")
	result = 0;
	nimln(92, "strtabs.nim");
	nimln(92, "strtabs.nim");
	nimln(92, "strtabs.nim");
	LOC1 = 0;
	LOC1 = myhash_121908(t, key);
	nimln(92, "strtabs.nim");
	h = (NI)(LOC1 & ((*t).Data->Sup.len-1));
	nimln(93, "strtabs.nim");
	while (1) {
		nimln(93, "strtabs.nim");
		nimln(93, "strtabs.nim");
		if ((NU)(h) >= (NU)((*t).Data->Sup.len)) raiseIndexError();
		if (!!((*t).Data->data[h].Field0 == 0)) goto LA2;
		nimln(94, "strtabs.nim");
		{
			NIM_BOOL LOC5;
			nimln(94, "strtabs.nim");
			if ((NU)(h) >= (NU)((*t).Data->Sup.len)) raiseIndexError();
			LOC5 = 0;
			LOC5 = mycmp_121915(t, (*t).Data->data[h].Field0, key);
			if (!LOC5) goto LA6;
			nimln(95, "strtabs.nim");
			nimln(95, "strtabs.nim");
			result = h;
			goto BeforeRet;
		}
		LA6: ;
		nimln(96, "strtabs.nim");
		nimln(96, "strtabs.nim");
		h = nexttry_122006(h, ((*t).Data->Sup.len-1));
	} LA2: ;
	nimln(97, "strtabs.nim");
	result = -1;
	BeforeRet: ;
	popFrame();
	return result;
}

N_NIMCALL(NimStringDesc*, nstGet)(tstringtable121810* t, NimStringDesc* key) {
	NimStringDesc* result;
	NI index;
	nimfr("[]", "strtabs.nim")
	result = 0;
	nimln(103, "strtabs.nim");
	index = rawget_122013(t, key);
	nimln(104, "strtabs.nim");
	{
		nimln(104, "strtabs.nim");
		if (!(0 <= index)) goto LA3;
		nimln(104, "strtabs.nim");
		if ((NU)(index) >= (NU)((*t).Data->Sup.len)) raiseIndexError();
		result = copyString((*t).Data->data[index].Field1);
	}
	goto LA1;
	LA3: ;
	{
		nimln(105, "strtabs.nim");
		result = copyString(((NimStringDesc*) &TMP282));
	}
	LA1: ;
	popFrame();
	return result;
}

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

static N_INLINE(tcell41290*, usrtocell_44643)(void* usr) {
	tcell41290* result;
	nimfr("usrToCell", "gc.nim")
	result = 0;
	nimln(118, "gc.nim");
	nimln(118, "gc.nim");
	nimln(118, "gc.nim");
	result = ((tcell41290*) ((NI)((NU32)(((NI) (usr))) - (NU32)(((NI)sizeof(tcell41290))))));
	popFrame();
	return result;
}

static N_INLINE(void, rtladdzct_46202)(tcell41290* c) {
	nimfr("rtlAddZCT", "gc.nim")
	nimln(199, "gc.nim");
	addzct_44618(&gch_43244.Zct, c);
	popFrame();
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	nimfr("asgnRefNoCycle", "gc.nim")
	nimln(251, "gc.nim");
	{
		tcell41290* c;
		nimln(251, "gc.nim");
		nimln(251, "gc.nim");
		if (!!((src == NIM_NIL))) goto LA3;
		nimln(252, "gc.nim");
		c = usrtocell_44643(src);
		nimln(169, "gc.nim");
		(*c).Refcount += 8;
	}
	LA3: ;
	nimln(254, "gc.nim");
	{
		tcell41290* c;
		nimln(254, "gc.nim");
		nimln(254, "gc.nim");
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		nimln(255, "gc.nim");
		c = usrtocell_44643((*dest));
		nimln(256, "gc.nim");
		{
			nimln(167, "gc.nim");
			(*c).Refcount -= 8;
			nimln(168, "gc.nim");
			if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA11;
			nimln(257, "gc.nim");
			rtladdzct_46202(c);
		}
		LA11: ;
	}
	LA7: ;
	nimln(258, "gc.nim");
	(*dest) = src;
	popFrame();
}

N_NIMCALL(NimStringDesc**, nstTake)(tstringtable121810* t, NimStringDesc* key) {
	NimStringDesc** result;
	NI index;
	nimfr("mget", "strtabs.nim")
	result = 0;
	nimln(111, "strtabs.nim");
	index = rawget_122013(t, key);
	nimln(112, "strtabs.nim");
	{
		nimln(112, "strtabs.nim");
		if (!(0 <= index)) goto LA3;
		nimln(112, "strtabs.nim");
		if ((NU)(index) >= (NU)((*t).Data->Sup.len)) raiseIndexError();
		result = &(*t).Data->data[index].Field1;
	}
	goto LA1;
	LA3: ;
	{
		einvalidkey2455* e_122041;
		NimStringDesc* LOC6;
		e_122041 = 0;
		nimln(1992, "system.nim");
		e_122041 = (einvalidkey2455*) newObj((&NTI122042), sizeof(einvalidkey2455));
		(*e_122041).Sup.Sup.Sup.Sup.m_type = (&NTI2455);
		nimln(1993, "system.nim");
		nimln(113, "strtabs.nim");
		LOC6 = 0;
		LOC6 = rawNewString(key->Sup.len + 20);
appendString(LOC6, ((NimStringDesc*) &TMP284));
appendString(LOC6, key);
		asgnRefNoCycle((void**) &(*e_122041).Sup.Sup.Sup.message, LOC6);
		nimln(113, "strtabs.nim");
		raiseException((E_Base*)e_122041, "EInvalidKey");
	}
	LA1: ;
	popFrame();
	return result;
}

N_NIMCALL(NIM_BOOL, nsthasKey)(tstringtable121810* t, NimStringDesc* key) {
	NIM_BOOL result;
	NI LOC1;
	nimfr("hasKey", "strtabs.nim")
	result = 0;
	nimln(117, "strtabs.nim");
	nimln(117, "strtabs.nim");
	nimln(117, "strtabs.nim");
	LOC1 = 0;
	LOC1 = rawget_122013(t, key);
	result = (0 <= LOC1);
	popFrame();
	return result;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tcell41290* c;
	nimfr("nimGCunrefNoCycle", "gc.nim")
	nimln(233, "gc.nim");
	c = usrtocell_44643(p);
	nimln(235, "gc.nim");
	{
		nimln(167, "gc.nim");
		(*c).Refcount -= 8;
		nimln(168, "gc.nim");
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		nimln(236, "gc.nim");
		rtladdzct_46202(c);
	}
	LA3: ;
	popFrame();
}

N_NIMCALL(void, rawinsert_122069)(tstringtable121810* t, tkeyvaluepairseq121808** data, NimStringDesc* key, NimStringDesc* val) {
	NI h;
	NI LOC1;
	NimStringDesc* LOC3;
	NimStringDesc* LOC4;
	nimfr("rawInsert", "strtabs.nim")
	nimln(120, "strtabs.nim");
	nimln(120, "strtabs.nim");
	nimln(120, "strtabs.nim");
	LOC1 = 0;
	LOC1 = myhash_121908(t, key);
	nimln(120, "strtabs.nim");
	h = (NI)(LOC1 & ((*data)->Sup.len-1));
	nimln(121, "strtabs.nim");
	while (1) {
		nimln(121, "strtabs.nim");
		nimln(121, "strtabs.nim");
		if ((NU)(h) >= (NU)((*data)->Sup.len)) raiseIndexError();
		if (!!((*data)->data[h].Field0 == 0)) goto LA2;
		nimln(122, "strtabs.nim");
		nimln(122, "strtabs.nim");
		h = nexttry_122006(h, ((*data)->Sup.len-1));
	} LA2: ;
	nimln(123, "strtabs.nim");
	if ((NU)(h) >= (NU)((*data)->Sup.len)) raiseIndexError();
	LOC3 = 0;
	LOC3 = (*data)->data[h].Field0; (*data)->data[h].Field0 = copyStringRC1(key);
	if (LOC3) nimGCunrefNoCycle(LOC3);
	nimln(124, "strtabs.nim");
	if ((NU)(h) >= (NU)((*data)->Sup.len)) raiseIndexError();
	LOC4 = 0;
	LOC4 = (*data)->data[h].Field1; (*data)->data[h].Field1 = copyStringRC1(val);
	if (LOC4) nimGCunrefNoCycle(LOC4);
	popFrame();
}
N_NIMCALL(void, TMP287)(void* p, NI op) {
	tkeyvaluepairseq121808* a;
	NI LOC1;
	a = (tkeyvaluepairseq121808*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].Field0, op);
	nimGCvisit((void*)a->data[LOC1].Field1, op);
	}
}

N_NIMCALL(void, enlarge_122081)(tstringtable121810* t) {
	tkeyvaluepairseq121808* n;
	NI TMP285;
	NI i_122124;
	NI HEX3Atmp_122142;
	NI res_122144;
	tkeyvaluepairseq121808* LOC6;
	nimfr("enlarge", "strtabs.nim")
	n = 0;
	nimln(128, "strtabs.nim");
	nimln(128, "strtabs.nim");
	nimln(128, "strtabs.nim");
	TMP285 = mulInt((*t).Data->Sup.len, 2);
	n = (tkeyvaluepairseq121808*) newSeq((&NTI121808), (NI32)(TMP285));
	i_122124 = 0;
	HEX3Atmp_122142 = 0;
	nimln(129, "strtabs.nim");
	nimln(129, "strtabs.nim");
	HEX3Atmp_122142 = ((*t).Data->Sup.len-1);
	nimln(1451, "system.nim");
	res_122144 = 0;
	nimln(1452, "system.nim");
	while (1) {
		nimln(1452, "system.nim");
		if (!(res_122144 <= HEX3Atmp_122142)) goto LA1;
		nimln(1451, "system.nim");
		i_122124 = res_122144;
		nimln(130, "strtabs.nim");
		{
			nimln(130, "strtabs.nim");
			nimln(130, "strtabs.nim");
			if ((NU)(i_122124) >= (NU)((*t).Data->Sup.len)) raiseIndexError();
			if (!!((*t).Data->data[i_122124].Field0 == 0)) goto LA4;
			nimln(130, "strtabs.nim");
			if ((NU)(i_122124) >= (NU)((*t).Data->Sup.len)) raiseIndexError();
			if ((NU)(i_122124) >= (NU)((*t).Data->Sup.len)) raiseIndexError();
			rawinsert_122069(t, &n, (*t).Data->data[i_122124].Field0, (*t).Data->data[i_122124].Field1);
		}
		LA4: ;
		nimln(1454, "system.nim");
		res_122144 = addInt(res_122144, 1);
	} LA1: ;
	nimln(131, "strtabs.nim");
	LOC6 = 0;
	LOC6 = (*t).Data;
	asgnRefNoCycle((void**) &(*t).Data, n);
	n = LOC6;
	popFrame();
}

N_NIMCALL(void, nstPut)(tstringtable121810* t, NimStringDesc* key, NimStringDesc* val) {
	NI index;
	nimfr("[]=", "strtabs.nim")
	nimln(135, "strtabs.nim");
	index = rawget_122013(t, key);
	nimln(136, "strtabs.nim");
	{
		NimStringDesc* LOC5;
		nimln(136, "strtabs.nim");
		if (!(0 <= index)) goto LA3;
		nimln(137, "strtabs.nim");
		if ((NU)(index) >= (NU)((*t).Data->Sup.len)) raiseIndexError();
		LOC5 = 0;
		LOC5 = (*t).Data->data[index].Field1; (*t).Data->data[index].Field1 = copyStringRC1(val);
		if (LOC5) nimGCunrefNoCycle(LOC5);
	}
	goto LA1;
	LA3: ;
	{
		nimln(139, "strtabs.nim");
		{
			NIM_BOOL LOC9;
			nimln(139, "strtabs.nim");
			nimln(139, "strtabs.nim");
			LOC9 = 0;
			LOC9 = mustrehash_121923((*t).Data->Sup.len, (*t).Counter);
			if (!LOC9) goto LA10;
			nimln(139, "strtabs.nim");
			enlarge_122081(t);
		}
		LA10: ;
		nimln(140, "strtabs.nim");
		rawinsert_122069(t, &(*t).Data, key, val);
		nimln(141, "strtabs.nim");
		(*t).Counter = addInt((*t).Counter, 1);
	}
	LA1: ;
	popFrame();
}

N_NIMCALL(void, raiseformatexception_122185)(NimStringDesc* s) {
	einvalidvalue2453* e;
	NimStringDesc* LOC1;
	nimfr("raiseFormatException", "strtabs.nim")
	e = 0;
	nimln(145, "strtabs.nim");
	e = (einvalidvalue2453*) newObj((&NTI18001), sizeof(einvalidvalue2453));
	(*e).Sup.Sup.Sup.m_type = (&NTI2453);
	nimln(146, "strtabs.nim");
	nimln(146, "strtabs.nim");
	LOC1 = 0;
	LOC1 = rawNewString(s->Sup.len + 30);
appendString(LOC1, ((NimStringDesc*) &TMP288));
appendString(LOC1, s);
	asgnRefNoCycle((void**) &(*e).Sup.Sup.message, LOC1);
	nimln(147, "strtabs.nim");
	raiseException((E_Base*)e, "EInvalidValue");
	popFrame();
}

static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c) {
	(*dest).data[((*dest).Sup.len)- 0] = c;
	(*dest).data[((NI32)((*dest).Sup.len + 1))- 0] = 0;
	(*dest).Sup.len += 1;
}

N_NIMCALL(NimStringDesc*, getvalue_122209)(tstringtable121810* t, NU8 flags, NimStringDesc* key) {
	NimStringDesc* result;
	nimfr("getValue", "strtabs.nim")
	result = 0;
	nimln(150, "strtabs.nim");
	{
		NIM_BOOL LOC3;
		nimln(150, "strtabs.nim");
		LOC3 = 0;
		LOC3 = nsthasKey(t, key);
		if (!LOC3) goto LA4;
		nimln(150, "strtabs.nim");
		nimln(150, "strtabs.nim");
		result = nstGet(t, key);
		goto BeforeRet;
	}
	LA4: ;
	nimln(152, "strtabs.nim");
	{
		nimln(152, "strtabs.nim");
		if (!((flags &(1<<((((NU8) 0))&7)))!=0)) goto LA8;
		nimln(152, "strtabs.nim");
		nimln(152, "strtabs.nim");
		result = getenv_110426(key);
	}
	goto LA6;
	LA8: ;
	{
		nimln(153, "strtabs.nim");
		result = copyString(((NimStringDesc*) &TMP282));
	}
	LA6: ;
	nimln(154, "strtabs.nim");
	{
		nimln(154, "strtabs.nim");
		nimln(154, "strtabs.nim");
		if (!(result->Sup.len == 0)) goto LA13;
		nimln(155, "strtabs.nim");
		{
			NimStringDesc* LOC19;
			nimln(155, "strtabs.nim");
			if (!((flags &(1<<((((NU8) 2))&7)))!=0)) goto LA17;
			nimln(155, "strtabs.nim");
			nimln(155, "strtabs.nim");
			LOC19 = 0;
			LOC19 = rawNewString(key->Sup.len + 1);
appendChar(LOC19, 36);
appendString(LOC19, key);
			result = LOC19;
		}
		goto LA15;
		LA17: ;
		{
			nimln(156, "strtabs.nim");
			nimln(156, "strtabs.nim");
			if (!!(((flags &(1<<((((NU8) 1))&7)))!=0))) goto LA21;
			nimln(156, "strtabs.nim");
			raiseformatexception_122185(key);
		}
		goto LA15;
		LA21: ;
		LA15: ;
	}
	LA13: ;
	BeforeRet: ;
	popFrame();
	return result;
}
N_NIMCALL(void, TMP296)(void* p, NI op) {
	tstringtable121810* a;
	a = (tstringtable121810*)p;
	nimGCvisit((void*)(*a).Data, op);
}

N_NIMCALL(tstringtable121810*, nstnewStringTable)(NU8 mode) {
	tstringtable121810* result;
	nimfr("newStringTable", "strtabs.nim")
	result = 0;
	nimln(161, "strtabs.nim");
	result = (tstringtable121810*) newObj((&NTI121812), sizeof(tstringtable121810));
	(*result).Sup.m_type = (&NTI121810);
	nimln(162, "strtabs.nim");
	(*result).Mode = mode;
	nimln(163, "strtabs.nim");
	(*result).Counter = 0;
	nimln(164, "strtabs.nim");
	if ((*result).Data) nimGCunrefNoCycle((*result).Data);
	(*result).Data = (tkeyvaluepairseq121808*) newSeqRC1((&NTI121808), 64);
	popFrame();
	return result;
}

N_NIMCALL(tstringtable121810*, nstnewStringTableWithPairs)(NimStringDesc** keyvaluepairs, NI keyvaluepairsLen0, NU8 mode) {
	tstringtable121810* result;
	NI i;
	nimfr("newStringTable", "strtabs.nim")
	result = 0;
	nimln(173, "strtabs.nim");
	result = nstnewStringTable(mode);
	nimln(174, "strtabs.nim");
	i = 0;
	nimln(175, "strtabs.nim");
	while (1) {
		NI TMP297;
		nimln(175, "strtabs.nim");
		nimln(175, "strtabs.nim");
		if (!(i < (keyvaluepairsLen0-1))) goto LA1;
		nimln(176, "strtabs.nim");
		if ((NU)(i) >= (NU)(keyvaluepairsLen0)) raiseIndexError();
		nimln(176, "strtabs.nim");
		TMP297 = addInt(i, 1);
		if ((NU)((NI32)(TMP297)) >= (NU)(keyvaluepairsLen0)) raiseIndexError();
		nstPut(result, keyvaluepairs[i], keyvaluepairs[(NI32)(TMP297)]);
		nimln(177, "strtabs.nim");
		i = addInt(i, 2);
	} LA1: ;
	popFrame();
	return result;
}

N_NIMCALL(tstringtable121810*, nstnewStringTableWithTableConstr)(TY93105* keyvaluepairs, NI keyvaluepairsLen0, NU8 mode) {
	tstringtable121810* result;
	NimStringDesc* key_122370;
	NimStringDesc* val_122371;
	NI i_122373;
	nimfr("newStringTable", "strtabs.nim")
	result = 0;
	nimln(186, "strtabs.nim");
	result = nstnewStringTable(mode);
	key_122370 = 0;
	val_122371 = 0;
	nimln(1531, "system.nim");
	i_122373 = 0;
	nimln(1532, "system.nim");
	while (1) {
		nimln(1532, "system.nim");
		nimln(1532, "system.nim");
		if (!(i_122373 < keyvaluepairsLen0)) goto LA1;
		nimln(1533, "system.nim");
		if ((NU)(i_122373) >= (NU)(keyvaluepairsLen0)) raiseIndexError();
		key_122370 = keyvaluepairs[i_122373].Field0;
		nimln(1533, "system.nim");
		if ((NU)(i_122373) >= (NU)(keyvaluepairsLen0)) raiseIndexError();
		val_122371 = keyvaluepairs[i_122373].Field1;
		nimln(187, "strtabs.nim");
		nstPut(result, key_122370, val_122371);
		nimln(1534, "system.nim");
		i_122373 = addInt(i_122373, 1);
	} LA1: ;
	popFrame();
	return result;
}

N_NIMCALL(NimStringDesc*, nstFormat)(NimStringDesc* f, tstringtable121810* t, NU8 flags) {
	NimStringDesc* result;
	NI i;
	nimfr("%", "strtabs.nim")
	result = 0;
	nimln(194, "strtabs.nim");
	result = copyString(((NimStringDesc*) &TMP282));
	nimln(195, "strtabs.nim");
	i = 0;
	nimln(196, "strtabs.nim");
	while (1) {
		nimln(196, "strtabs.nim");
		nimln(196, "strtabs.nim");
		if (!(i < f->Sup.len)) goto LA1;
		nimln(197, "strtabs.nim");
		{
			NI TMP298;
			nimln(197, "strtabs.nim");
			if ((NU)(i) > (NU)(f->Sup.len)) raiseIndexError();
			if (!((NU8)(f->data[i]) == (NU8)(36))) goto LA4;
			nimln(198, "strtabs.nim");
			nimln(198, "strtabs.nim");
			TMP298 = addInt(i, 1);
			if ((NU)((NI32)(TMP298)) > (NU)(f->Sup.len)) raiseIndexError();
			switch (((NU8)(f->data[(NI32)(TMP298)]))) {
			case 36:
			{
				nimln(200, "strtabs.nim");
				result = addChar(result, 36);
				nimln(201, "strtabs.nim");
				i = addInt(i, 2);
			}
			break;
			case 123:
			{
				NI j;
				NI TMP299;
				NI TMP300;
				NI TMP301;
				NimStringDesc* LOC11;
				NimStringDesc* LOC12;
				NI TMP302;
				nimln(203, "strtabs.nim");
				nimln(203, "strtabs.nim");
				TMP299 = addInt(i, 1);
				j = (NI32)(TMP299);
				nimln(204, "strtabs.nim");
				while (1) {
					NIM_BOOL LOC9;
					nimln(204, "strtabs.nim");
					LOC9 = 0;
					nimln(204, "strtabs.nim");
					nimln(204, "strtabs.nim");
					LOC9 = (j < f->Sup.len);
					if (!(LOC9)) goto LA10;
					nimln(204, "strtabs.nim");
					nimln(204, "strtabs.nim");
					if ((NU)(j) > (NU)(f->Sup.len)) raiseIndexError();
					LOC9 = !(((NU8)(f->data[j]) == (NU8)(125)));
					LA10: ;
					if (!LOC9) goto LA8;
					nimln(204, "strtabs.nim");
					j = addInt(j, 1);
				} LA8: ;
				nimln(205, "strtabs.nim");
				nimln(205, "strtabs.nim");
				nimln(205, "strtabs.nim");
				nimln(205, "strtabs.nim");
				TMP300 = addInt(i, 2);
				nimln(205, "strtabs.nim");
				TMP301 = subInt(j, 1);
				LOC11 = 0;
				LOC11 = copyStrLast(f, (NI32)(TMP300), (NI32)(TMP301));
				LOC12 = 0;
				LOC12 = getvalue_122209(t, flags, LOC11);
				result = resizeString(result, LOC12->Sup.len + 0);
appendString(result, LOC12);
				nimln(206, "strtabs.nim");
				nimln(206, "strtabs.nim");
				TMP302 = addInt(j, 1);
				i = (NI32)(TMP302);
			}
			break;
			case 97 ... 122:
			case 65 ... 90:
			case 128 ... 255:
			case 95:
			{
				NI j;
				NI TMP303;
				NI TMP304;
				NI TMP305;
				NimStringDesc* LOC17;
				NimStringDesc* LOC18;
				nimln(208, "strtabs.nim");
				nimln(208, "strtabs.nim");
				TMP303 = addInt(i, 1);
				j = (NI32)(TMP303);
				nimln(209, "strtabs.nim");
				while (1) {
					NIM_BOOL LOC15;
					nimln(209, "strtabs.nim");
					LOC15 = 0;
					nimln(209, "strtabs.nim");
					nimln(209, "strtabs.nim");
					LOC15 = (j < f->Sup.len);
					if (!(LOC15)) goto LA16;
					nimln(209, "strtabs.nim");
					if ((NU)(j) > (NU)(f->Sup.len)) raiseIndexError();
					LOC15 = (((NU8)(f->data[j])) >= ((NU8)(97)) && ((NU8)(f->data[j])) <= ((NU8)(122)) || ((NU8)(f->data[j])) >= ((NU8)(65)) && ((NU8)(f->data[j])) <= ((NU8)(90)) || ((NU8)(f->data[j])) >= ((NU8)(48)) && ((NU8)(f->data[j])) <= ((NU8)(57)) || ((NU8)(f->data[j])) == ((NU8)(95)) || ((NU8)(f->data[j])) >= ((NU8)(128)) && ((NU8)(f->data[j])) <= ((NU8)(255)));
					LA16: ;
					if (!LOC15) goto LA14;
					nimln(209, "strtabs.nim");
					j = addInt(j, 1);
				} LA14: ;
				nimln(210, "strtabs.nim");
				nimln(210, "strtabs.nim");
				nimln(210, "strtabs.nim");
				nimln(210, "strtabs.nim");
				TMP304 = addInt(i, 1);
				nimln(210, "strtabs.nim");
				TMP305 = subInt(j, 1);
				LOC17 = 0;
				LOC17 = copyStrLast(f, (NI32)(TMP304), (NI32)(TMP305));
				LOC18 = 0;
				LOC18 = getvalue_122209(t, flags, LOC17);
				result = resizeString(result, LOC18->Sup.len + 0);
appendString(result, LOC18);
				nimln(211, "strtabs.nim");
				i = j;
			}
			break;
			default:
			{
				nimln(213, "strtabs.nim");
				if ((NU)(i) > (NU)(f->Sup.len)) raiseIndexError();
				result = addChar(result, f->data[i]);
				nimln(214, "strtabs.nim");
				i = addInt(i, 1);
			}
			break;
			}
		}
		goto LA2;
		LA4: ;
		{
			nimln(216, "strtabs.nim");
			if ((NU)(i) > (NU)(f->Sup.len)) raiseIndexError();
			result = addChar(result, f->data[i]);
			nimln(217, "strtabs.nim");
			i = addInt(i, 1);
		}
		LA2: ;
	} LA1: ;
	popFrame();
	return result;
}

N_NIMCALL(NimStringDesc*, nstDollar)(tstringtable121810* t) {
	NimStringDesc* result;
	nimfr("$", "strtabs.nim")
	result = 0;
	nimln(221, "strtabs.nim");
	{
		NI LOC3;
		nimln(221, "strtabs.nim");
		nimln(221, "strtabs.nim");
		LOC3 = 0;
		LOC3 = nstlen(t);
		if (!(LOC3 == 0)) goto LA4;
		nimln(222, "strtabs.nim");
		result = copyString(((NimStringDesc*) &TMP306));
	}
	goto LA1;
	LA4: ;
	{
		NimStringDesc* key_122496;
		NimStringDesc* val_122497;
		NI h_122500;
		NI HEX3Atmp_122502;
		NI res_122504;
		nimln(224, "strtabs.nim");
		result = copyString(((NimStringDesc*) &TMP307));
		key_122496 = 0;
		val_122497 = 0;
		h_122500 = 0;
		HEX3Atmp_122502 = 0;
		nimln(40, "strtabs.nim");
		nimln(40, "strtabs.nim");
		HEX3Atmp_122502 = ((*t).Data->Sup.len-1);
		nimln(1458, "system.nim");
		res_122504 = 0;
		nimln(1459, "system.nim");
		while (1) {
			nimln(1459, "system.nim");
			if (!(res_122504 <= HEX3Atmp_122502)) goto LA7;
			nimln(1458, "system.nim");
			h_122500 = res_122504;
			nimln(41, "strtabs.nim");
			{
				nimln(41, "strtabs.nim");
				nimln(41, "strtabs.nim");
				if ((NU)(h_122500) >= (NU)((*t).Data->Sup.len)) raiseIndexError();
				if (!!((*t).Data->data[h_122500].Field0 == 0)) goto LA10;
				nimln(42, "strtabs.nim");
				if ((NU)(h_122500) >= (NU)((*t).Data->Sup.len)) raiseIndexError();
				key_122496 = (*t).Data->data[h_122500].Field0;
				nimln(42, "strtabs.nim");
				if ((NU)(h_122500) >= (NU)((*t).Data->Sup.len)) raiseIndexError();
				val_122497 = (*t).Data->data[h_122500].Field1;
				nimln(226, "strtabs.nim");
				{
					nimln(226, "strtabs.nim");
					nimln(226, "strtabs.nim");
					if (!(1 < result->Sup.len)) goto LA14;
					nimln(226, "strtabs.nim");
					result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP308));
				}
				LA14: ;
				nimln(227, "strtabs.nim");
				result = resizeString(result, key_122496->Sup.len + 0);
appendString(result, key_122496);
				nimln(228, "strtabs.nim");
				result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP309));
				nimln(229, "strtabs.nim");
				result = resizeString(result, val_122497->Sup.len + 0);
appendString(result, val_122497);
			}
			LA10: ;
			nimln(1461, "system.nim");
			res_122504 = addInt(res_122504, 1);
		} LA7: ;
		nimln(230, "strtabs.nim");
		result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TMP310));
	}
	LA1: ;
	popFrame();
	return result;
}
N_NOINLINE(void, stdlibstrtabsInit)(void) {
	nimfr("strtabs", "strtabs.nim")
	popFrame();
}

N_NOINLINE(void, stdlibstrtabsDatInit)(void) {
static TNimNode* TMP292[3];
static TNimNode* TMP293[3];
NI TMP295;
static char* NIM_CONST TMP294[3] = {
"modeCaseSensitive", 
"modeCaseInsensitive", 
"modeStyleInsensitive"};
static TNimNode TMP264[8];
NTI121808.size = sizeof(tkeyvaluepairseq121808*);
NTI121808.kind = 24;
NTI121808.base = (&NTI93105);
NTI121808.flags = 2;
NTI121808.marker = TMP287;
NTI121810.size = sizeof(tstringtable121810);
NTI121810.kind = 17;
NTI121810.base = (&NTI2409);
TMP292[0] = &TMP264[1];
TMP264[1].kind = 1;
TMP264[1].offset = offsetof(tstringtable121810, Counter);
TMP264[1].typ = (&NTI106);
TMP264[1].name = "counter";
TMP292[1] = &TMP264[2];
TMP264[2].kind = 1;
TMP264[2].offset = offsetof(tstringtable121810, Data);
TMP264[2].typ = (&NTI121808);
TMP264[2].name = "data";
TMP292[2] = &TMP264[3];
NTI121804.size = sizeof(NU8);
NTI121804.kind = 14;
NTI121804.base = 0;
NTI121804.flags = 3;
for (TMP295 = 0; TMP295 < 3; TMP295++) {
TMP264[TMP295+4].kind = 1;
TMP264[TMP295+4].offset = TMP295;
TMP264[TMP295+4].name = TMP294[TMP295];
TMP293[TMP295] = &TMP264[TMP295+4];
}
TMP264[7].len = 3; TMP264[7].kind = 2; TMP264[7].sons = &TMP293[0];
NTI121804.node = &TMP264[7];
TMP264[3].kind = 1;
TMP264[3].offset = offsetof(tstringtable121810, Mode);
TMP264[3].typ = (&NTI121804);
TMP264[3].name = "mode";
TMP264[0].len = 3; TMP264[0].kind = 2; TMP264[0].sons = &TMP292[0];
NTI121810.node = &TMP264[0];
NTI121812.size = sizeof(tstringtable121810*);
NTI121812.kind = 22;
NTI121812.base = (&NTI121810);
NTI121812.marker = TMP296;
}

