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

#include "nimbase.h"
#include <string.h>
#include <setjmp.h>
#include <stdio.h>
typedef struct Tident189012 Tident189012;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Cell47505 Cell47505;
typedef struct TNimType TNimType;
typedef struct Cellseq47521 Cellseq47521;
typedef struct Gcheap49818 Gcheap49818;
typedef struct Gcstack49816 Gcstack49816;
typedef struct Cellset47517 Cellset47517;
typedef struct Pagedesc47513 Pagedesc47513;
typedef struct Memregion29687 Memregion29687;
typedef struct Smallchunk29639 Smallchunk29639;
typedef struct Llchunk29681 Llchunk29681;
typedef struct Bigchunk29641 Bigchunk29641;
typedef struct Intset29614 Intset29614;
typedef struct Trunk29610 Trunk29610;
typedef struct Avlnode29685 Avlnode29685;
typedef struct Gcstat49814 Gcstat49814;
typedef struct TNimNode TNimNode;
typedef struct Tlexer205173 Tlexer205173;
typedef struct Tbaselexer203015 Tbaselexer203015;
typedef struct TNimObject TNimObject;
typedef struct Tllstream202204 Tllstream202204;
typedef struct Tlineinfo182337 Tlineinfo182337;
typedef struct TY531873 TY531873;
typedef struct TY531876 TY531876;
typedef struct Ttoken205169 Ttoken205169;
typedef struct Tidobj189006 Tidobj189006;
typedef struct Exception Exception;
typedef struct TSafePoint TSafePoint;
typedef struct Valueerror3646 Valueerror3646;
typedef struct Basechunk29637 Basechunk29637;
typedef struct Freecell29629 Freecell29629;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Cell47505  {
NI refcount;
TNimType* typ;
};
struct  Cellseq47521  {
NI len;
NI cap;
Cell47505** d;
};
struct  Cellset47517  {
NI counter;
NI max;
Pagedesc47513* head;
Pagedesc47513** data;
};
typedef Smallchunk29639* TY29702[512];
typedef Trunk29610* Trunkbuckets29612[256];
struct  Intset29614  {
Trunkbuckets29612 data;
};
struct  Memregion29687  {
NI minlargeobj;
NI maxlargeobj;
TY29702 freesmallchunks;
Llchunk29681* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk29641* freechunkslist;
Intset29614 chunkstarts;
Avlnode29685* root;
Avlnode29685* deleted;
Avlnode29685* last;
Avlnode29685* freeavlnodes;
};
struct  Gcstat49814  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap49818  {
Gcstack49816* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq47521 zct;
Cellseq47521 decstack;
Cellset47517 cycleroots;
Cellseq47521 tempstack;
NI recgclock;
Memregion29687 region;
Gcstat49814 stat;
};
typedef N_NIMCALL_PTR(void, TY3489) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3494) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3489 marker;
TY3494 deepcopy;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tbaselexer203015  {
  TNimObject Sup;
NI bufpos;
NCSTRING buf;
NI buflen;
Tllstream202204* stream;
NI linenumber;
NI sentinel;
NI linestart;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (Tlineinfo182337 info, NU16 msg, NimStringDesc* arg, void* ClEnv);
void* ClEnv;
} Terrorhandler205171;
struct  Tlexer205173  {
  Tbaselexer203015 Sup;
NI32 fileidx;
NI indentahead;
NI currlineindent;
NIM_BOOL strongspaces;
Terrorhandler205171 errorhandler;
};
struct TY531873 {
void* Field0;
TY531876* Field1;
};
struct TY531876 {
char dummy;
};
struct  Ttoken205169  {
NU8 toktype;
NI indent;
Tident189012* ident;
NI64 inumber;
NF fnumber;
NU8 base;
NI8 strongspacea;
NI8 strongspaceb;
NimStringDesc* literal;
NI line;
NI col;
};
struct  Tllstream202204  {
  TNimObject Sup;
NU8 kind;
FILE* f;
NimStringDesc* s;
NI rd;
NI wr;
NI lineoffset;
};
struct  Tlineinfo182337  {
NI16 line;
NI16 col;
NI32 fileindex;
};
typedef N_CLOSURE_PTR(void, TMP1242) (Tlineinfo182337 info, NU16 msg, NimStringDesc* arg);
struct  Tidobj189006  {
  TNimObject Sup;
NI id;
};
struct  Tident189012  {
  Tidobj189006 Sup;
NimStringDesc* s;
Tident189012* next;
NI h;
};
typedef NU8 TY202404[32];
struct  Exception  {
  TNimObject Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClPrc) (Exception* e, void* ClEnv);
void* ClEnv;
} TY17811;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY17811 raiseAction;
};
struct  Valueerror3646  {
  Exception Sup;
};
typedef NimStringDesc* TY205163[119];
struct  Gcstack49816  {
Gcstack49816* prev;
Gcstack49816* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY29618[16];
struct  Pagedesc47513  {
Pagedesc47513* next;
NI key;
TY29618 bits;
};
struct  Basechunk29637  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk29639  {
  Basechunk29637 Sup;
Smallchunk29639* next;
Smallchunk29639* prev;
Freecell29629* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk29681  {
NI size;
NI acc;
Llchunk29681* next;
};
struct  Bigchunk29641  {
  Basechunk29637 Sup;
Bigchunk29641* next;
Bigchunk29641* prev;
NI align;
NF data;
};
struct  Trunk29610  {
Trunk29610* next;
NI key;
TY29618 bits;
};
typedef Avlnode29685* TY29692[2];
struct  Avlnode29685  {
TY29692 link;
NI key;
NI upperbound;
NI level;
};
struct  Freecell29629  {
Freecell29629* next;
NI zerofield;
};
N_NIMCALL(Tident189012*, getident_189441)(NimStringDesc* identifier);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Cell47505*, usrtocell_51440)(void* usr);
static N_INLINE(void, rtladdzct_53001)(Cell47505* c);
N_NOINLINE(void, addzct_51417)(Cellseq47521* s, Cell47505* c);
N_NIMCALL(void, TMP1217)(void* p, NI op);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(void, openbaselexer_203023)(Tbaselexer203015* L, Tllstream202204* inputstream, NI buflen);
N_NIMCALL(void, filltoken_205310)(Ttoken205169* L);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newlen);
N_NIMCALL(void, skip_208443)(Tlexer205173* L, Ttoken205169* tok);
N_NIMCALL(void, lexmessagepos_205382)(Tlexer205173* L, NU16 msg, NI pos, NimStringDesc* arg);
N_NIMCALL(Tlineinfo182337, newlineinfo_183024)(NI32 fileinfoidx, NI line, NI col);
N_NIMCALL(void, dispmessage_205356)(Tlexer205173* L, Tlineinfo182337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, message_187095)(Tlineinfo182337 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NI, handlecrlf_206589)(Tlexer205173* L, NI pos);
N_NIMCALL(NI, getcolnumber_203038)(Tbaselexer203015* L, NI pos);
N_NIMCALL(NimStringDesc*, newstring_206558)(NCSTRING s, NI len);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_NIMCALL(void, addsourceline_187137)(NI32 fileidx, NimStringDesc* line);
N_NIMCALL(NI, handlecr_203042)(Tbaselexer203015* L, NI pos);
N_NIMCALL(NI, handlelf_203047)(Tbaselexer203015* L, NI pos);
N_NIMCALL(void, skipmultilinecomment_207050)(Tlexer205173* L, Ttoken205169* tok, NI start, NIM_BOOL isdoc);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(void, getsymbol_206808)(Tlexer205173* L, Ttoken205169* tok);
N_NIMCALL(void, lexmessage_205370)(Tlexer205173* L, NU16 msg, NimStringDesc* arg);
N_NIMCALL(Tlineinfo182337, getlineinfo_205352)(Tlexer205173* L);
static N_INLINE(NI, HEX21HEX26_137004)(NI h, NI val);
static N_INLINE(NI, HEX21HEX24_137027)(NI h);
N_NIMCALL(Tident189012*, getident_189211)(NCSTRING identifier, NI length, NI h);
N_NIMCALL(void, scancomment_207222)(Tlexer205173* L, Ttoken205169* tok);
static N_INLINE(void, endoperator_206962)(Tlexer205173* L, Ttoken205169* tok, NI pos, NI hash);
N_NIMCALL(void, getoperator_206981)(Tlexer205173* L, Ttoken205169* tok);
N_NIMCALL(void, getstring_206641)(Tlexer205173* L, Ttoken205169* tok, NIM_BOOL rawmode);
N_NIMCALL(void, getescapedchar_206419)(Tlexer205173* L, Ttoken205169* tok);
N_NIMCALL(void, handlehexchar_206287)(Tlexer205173* L, NI* xi);
N_NIMCALL(NIM_BOOL, matchtwochars_205390)(Tlexer205173* L, NIM_CHAR first, TY202404 second);
N_NIMCALL(void, handledecchars_206375)(Tlexer205173* L, NI* xi);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(void, getcharacter_206764)(Tlexer205173* L, Ttoken205169* tok);
N_NIMCALL(void, getnumber_205527)(Tlexer205173* L, Ttoken205169* Result);
N_NIMCALL(void, lexmessagelitnum_205611)(Tlexer205173* L, NU16 msg, NI startpos);
N_NIMCALL(void, matchchars_205581)(Tlexer205173* L, Ttoken205169* tok, TY202404 chars);
N_NIMCALL(void, matchunderscorechars_205532)(Tlexer205173* L, Ttoken205169* tok, TY202404 chars);
N_NIMCALL(void, internalerror_187100)(Tlineinfo182337 info, NimStringDesc* errmsg);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
N_NIMCALL(NF, nsuParseFloat)(NimStringDesc* s);
N_NIMCALL(NI, unsafeparseuint_205442)(NimStringDesc* s, NI64* b, NI start);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(void, raiseException)(Exception* e, NCSTRING ename);
N_NIMCALL(NI64, nsuParseBiggestInt)(NimStringDesc* s);
static N_INLINE(void, popSafePoint)(void);
N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass);
static N_INLINE(Exception*, getCurrentException)(void);
static N_INLINE(void, popCurrentException)(void);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_53819)(Cell47505* c);
static N_INLINE(NIM_BOOL, canbecycleroot_51458)(Cell47505* c);
static N_INLINE(void, rtladdcycleroot_52220)(Cell47505* c);
N_NOINLINE(void, incl_48247)(Cellset47517* s, Cell47505* cell);
static N_INLINE(void, decref_53401)(Cell47505* c);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(NIM_BOOL, iskeyword_205205)(NU8 kind);
N_NIMCALL(NimStringDesc*, toktostr_205281)(Ttoken205169* tok);
N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f);
N_NIMCALL(void, internalerror_187113)(NimStringDesc* errmsg);
N_NIMCALL(void, closebaselexer_203030)(Tbaselexer203015* L);
static N_INLINE(NIM_BOOL, ismagicidentseparatorrune_136008)(NCSTRING cs, NI i);
N_NIMCALL(void, openlexer_205314)(Tlexer205173* lex, NI32 fileidx, Tllstream202204* inputstream);
N_NIMCALL(NI32, fileinfoidx_183017)(NimStringDesc* filename);
N_NIMCALL(void, msgwriteln_183449)(NimStringDesc* s, NU8 flags);
STRING_LITERAL(TMP797, "", 0);
STRING_LITERAL(TMP1243, "\012", 1);
STRING_LITERAL(TMP1244, "end of multiline comment expected", 33);
STRING_LITERAL(TMP1245, "\342\200\223", 3);
STRING_LITERAL(TMP1246, "_", 1);
static NIM_CONST TY202404 TMP1247 = {
0x00, 0x00, 0x00, 0x00, 0x72, 0xEC, 0x00, 0xF4,
0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
;
static NIM_CONST TY202404 TMP1248 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP1249, " (\\", 3);
static NIM_CONST TY202404 TMP1250 = {
0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xFF, 0x03,
0x7E, 0x80, 0x00, 0x81, 0x7E, 0x82, 0x20, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST TY202404 TMP1251 = {
0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0x50, 0x02, 0x20, 0x00, 0x50, 0x02, 0x20, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST TY202404 TMP1252 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST TY202404 TMP1253 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST TY202404 TMP1254 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP1255, "getNumber", 9);
STRING_LITERAL(TMP1257, "invalid integer: ", 17);
STRING_LITERAL(TMP1270, "tkInvalid", 9);
STRING_LITERAL(TMP1271, "[EOF]", 5);
STRING_LITERAL(TMP1272, "tkSymbol", 8);
STRING_LITERAL(TMP1273, "addr", 4);
STRING_LITERAL(TMP1274, "and", 3);
STRING_LITERAL(TMP1275, "as", 2);
STRING_LITERAL(TMP1276, "asm", 3);
STRING_LITERAL(TMP1277, "atomic", 6);
STRING_LITERAL(TMP1278, "bind", 4);
STRING_LITERAL(TMP1279, "block", 5);
STRING_LITERAL(TMP1280, "break", 5);
STRING_LITERAL(TMP1281, "case", 4);
STRING_LITERAL(TMP1282, "cast", 4);
STRING_LITERAL(TMP1283, "concept", 7);
STRING_LITERAL(TMP1284, "const", 5);
STRING_LITERAL(TMP1285, "continue", 8);
STRING_LITERAL(TMP1286, "converter", 9);
STRING_LITERAL(TMP1287, "defer", 5);
STRING_LITERAL(TMP1288, "discard", 7);
STRING_LITERAL(TMP1289, "distinct", 8);
STRING_LITERAL(TMP1290, "div", 3);
STRING_LITERAL(TMP1291, "do", 2);
STRING_LITERAL(TMP1292, "elif", 4);
STRING_LITERAL(TMP1293, "else", 4);
STRING_LITERAL(TMP1294, "end", 3);
STRING_LITERAL(TMP1295, "enum", 4);
STRING_LITERAL(TMP1296, "except", 6);
STRING_LITERAL(TMP1297, "export", 6);
STRING_LITERAL(TMP1298, "finally", 7);
STRING_LITERAL(TMP1299, "for", 3);
STRING_LITERAL(TMP1300, "from", 4);
STRING_LITERAL(TMP1301, "func", 4);
STRING_LITERAL(TMP1302, "generic", 7);
STRING_LITERAL(TMP1303, "if", 2);
STRING_LITERAL(TMP1304, "import", 6);
STRING_LITERAL(TMP1305, "in", 2);
STRING_LITERAL(TMP1306, "include", 7);
STRING_LITERAL(TMP1307, "interface", 9);
STRING_LITERAL(TMP1308, "is", 2);
STRING_LITERAL(TMP1309, "isnot", 5);
STRING_LITERAL(TMP1310, "iterator", 8);
STRING_LITERAL(TMP1311, "let", 3);
STRING_LITERAL(TMP1312, "macro", 5);
STRING_LITERAL(TMP1313, "method", 6);
STRING_LITERAL(TMP1314, "mixin", 5);
STRING_LITERAL(TMP1315, "mod", 3);
STRING_LITERAL(TMP1316, "nil", 3);
STRING_LITERAL(TMP1317, "not", 3);
STRING_LITERAL(TMP1318, "notin", 5);
STRING_LITERAL(TMP1319, "object", 6);
STRING_LITERAL(TMP1320, "of", 2);
STRING_LITERAL(TMP1321, "or", 2);
STRING_LITERAL(TMP1322, "out", 3);
STRING_LITERAL(TMP1323, "proc", 4);
STRING_LITERAL(TMP1324, "ptr", 3);
STRING_LITERAL(TMP1325, "raise", 5);
STRING_LITERAL(TMP1326, "ref", 3);
STRING_LITERAL(TMP1327, "return", 6);
STRING_LITERAL(TMP1328, "shl", 3);
STRING_LITERAL(TMP1329, "shr", 3);
STRING_LITERAL(TMP1330, "static", 6);
STRING_LITERAL(TMP1331, "template", 8);
STRING_LITERAL(TMP1332, "try", 3);
STRING_LITERAL(TMP1333, "tuple", 5);
STRING_LITERAL(TMP1334, "type", 4);
STRING_LITERAL(TMP1335, "using", 5);
STRING_LITERAL(TMP1336, "var", 3);
STRING_LITERAL(TMP1337, "when", 4);
STRING_LITERAL(TMP1338, "while", 5);
STRING_LITERAL(TMP1339, "with", 4);
STRING_LITERAL(TMP1340, "without", 7);
STRING_LITERAL(TMP1341, "xor", 3);
STRING_LITERAL(TMP1342, "yield", 5);
STRING_LITERAL(TMP1343, "tkIntLit", 8);
STRING_LITERAL(TMP1344, "tkInt8Lit", 9);
STRING_LITERAL(TMP1345, "tkInt16Lit", 10);
STRING_LITERAL(TMP1346, "tkInt32Lit", 10);
STRING_LITERAL(TMP1347, "tkInt64Lit", 10);
STRING_LITERAL(TMP1348, "tkUIntLit", 9);
STRING_LITERAL(TMP1349, "tkUInt8Lit", 10);
STRING_LITERAL(TMP1350, "tkUInt16Lit", 11);
STRING_LITERAL(TMP1351, "tkUInt32Lit", 11);
STRING_LITERAL(TMP1352, "tkUInt64Lit", 11);
STRING_LITERAL(TMP1353, "tkFloatLit", 10);
STRING_LITERAL(TMP1354, "tkFloat32Lit", 12);
STRING_LITERAL(TMP1355, "tkFloat64Lit", 12);
STRING_LITERAL(TMP1356, "tkFloat128Lit", 13);
STRING_LITERAL(TMP1357, "tkStrLit", 8);
STRING_LITERAL(TMP1358, "tkRStrLit", 9);
STRING_LITERAL(TMP1359, "tkTripleStrLit", 14);
STRING_LITERAL(TMP1360, "tkGStrLit", 9);
STRING_LITERAL(TMP1361, "tkGTripleStrLit", 15);
STRING_LITERAL(TMP1362, "tkCharLit", 9);
STRING_LITERAL(TMP1363, "(", 1);
STRING_LITERAL(TMP1364, ")", 1);
STRING_LITERAL(TMP1365, "[", 1);
STRING_LITERAL(TMP1366, "]", 1);
STRING_LITERAL(TMP1367, "{", 1);
STRING_LITERAL(TMP1368, "}", 1);
STRING_LITERAL(TMP1369, "[.", 2);
STRING_LITERAL(TMP1370, ".]", 2);
STRING_LITERAL(TMP1371, "{.", 2);
STRING_LITERAL(TMP1372, ".}", 2);
STRING_LITERAL(TMP1373, "(.", 2);
STRING_LITERAL(TMP1374, ".)", 2);
STRING_LITERAL(TMP1375, ",", 1);
STRING_LITERAL(TMP1376, ";", 1);
STRING_LITERAL(TMP1377, ":", 1);
STRING_LITERAL(TMP1378, "::", 2);
STRING_LITERAL(TMP1379, "=", 1);
STRING_LITERAL(TMP1380, ".", 1);
STRING_LITERAL(TMP1381, "..", 2);
STRING_LITERAL(TMP1382, "tkOpr", 5);
STRING_LITERAL(TMP1383, "tkComment", 9);
STRING_LITERAL(TMP1384, "`", 1);
STRING_LITERAL(TMP1385, "tkSpaces", 8);
STRING_LITERAL(TMP1386, "tkInfixOpr", 10);
STRING_LITERAL(TMP1387, "tkPrefixOpr", 11);
STRING_LITERAL(TMP1388, "tkPostfixOpr", 12);
NIM_CONST TY205163 Toktypetostr_205160 = {((NimStringDesc*) &TMP1270),
((NimStringDesc*) &TMP1271),
((NimStringDesc*) &TMP1272),
((NimStringDesc*) &TMP1273),
((NimStringDesc*) &TMP1274),
((NimStringDesc*) &TMP1275),
((NimStringDesc*) &TMP1276),
((NimStringDesc*) &TMP1277),
((NimStringDesc*) &TMP1278),
((NimStringDesc*) &TMP1279),
((NimStringDesc*) &TMP1280),
((NimStringDesc*) &TMP1281),
((NimStringDesc*) &TMP1282),
((NimStringDesc*) &TMP1283),
((NimStringDesc*) &TMP1284),
((NimStringDesc*) &TMP1285),
((NimStringDesc*) &TMP1286),
((NimStringDesc*) &TMP1287),
((NimStringDesc*) &TMP1288),
((NimStringDesc*) &TMP1289),
((NimStringDesc*) &TMP1290),
((NimStringDesc*) &TMP1291),
((NimStringDesc*) &TMP1292),
((NimStringDesc*) &TMP1293),
((NimStringDesc*) &TMP1294),
((NimStringDesc*) &TMP1295),
((NimStringDesc*) &TMP1296),
((NimStringDesc*) &TMP1297),
((NimStringDesc*) &TMP1298),
((NimStringDesc*) &TMP1299),
((NimStringDesc*) &TMP1300),
((NimStringDesc*) &TMP1301),
((NimStringDesc*) &TMP1302),
((NimStringDesc*) &TMP1303),
((NimStringDesc*) &TMP1304),
((NimStringDesc*) &TMP1305),
((NimStringDesc*) &TMP1306),
((NimStringDesc*) &TMP1307),
((NimStringDesc*) &TMP1308),
((NimStringDesc*) &TMP1309),
((NimStringDesc*) &TMP1310),
((NimStringDesc*) &TMP1311),
((NimStringDesc*) &TMP1312),
((NimStringDesc*) &TMP1313),
((NimStringDesc*) &TMP1314),
((NimStringDesc*) &TMP1315),
((NimStringDesc*) &TMP1316),
((NimStringDesc*) &TMP1317),
((NimStringDesc*) &TMP1318),
((NimStringDesc*) &TMP1319),
((NimStringDesc*) &TMP1320),
((NimStringDesc*) &TMP1321),
((NimStringDesc*) &TMP1322),
((NimStringDesc*) &TMP1323),
((NimStringDesc*) &TMP1324),
((NimStringDesc*) &TMP1325),
((NimStringDesc*) &TMP1326),
((NimStringDesc*) &TMP1327),
((NimStringDesc*) &TMP1328),
((NimStringDesc*) &TMP1329),
((NimStringDesc*) &TMP1330),
((NimStringDesc*) &TMP1331),
((NimStringDesc*) &TMP1332),
((NimStringDesc*) &TMP1333),
((NimStringDesc*) &TMP1334),
((NimStringDesc*) &TMP1335),
((NimStringDesc*) &TMP1336),
((NimStringDesc*) &TMP1337),
((NimStringDesc*) &TMP1338),
((NimStringDesc*) &TMP1339),
((NimStringDesc*) &TMP1340),
((NimStringDesc*) &TMP1341),
((NimStringDesc*) &TMP1342),
((NimStringDesc*) &TMP1343),
((NimStringDesc*) &TMP1344),
((NimStringDesc*) &TMP1345),
((NimStringDesc*) &TMP1346),
((NimStringDesc*) &TMP1347),
((NimStringDesc*) &TMP1348),
((NimStringDesc*) &TMP1349),
((NimStringDesc*) &TMP1350),
((NimStringDesc*) &TMP1351),
((NimStringDesc*) &TMP1352),
((NimStringDesc*) &TMP1353),
((NimStringDesc*) &TMP1354),
((NimStringDesc*) &TMP1355),
((NimStringDesc*) &TMP1356),
((NimStringDesc*) &TMP1357),
((NimStringDesc*) &TMP1358),
((NimStringDesc*) &TMP1359),
((NimStringDesc*) &TMP1360),
((NimStringDesc*) &TMP1361),
((NimStringDesc*) &TMP1362),
((NimStringDesc*) &TMP1363),
((NimStringDesc*) &TMP1364),
((NimStringDesc*) &TMP1365),
((NimStringDesc*) &TMP1366),
((NimStringDesc*) &TMP1367),
((NimStringDesc*) &TMP1368),
((NimStringDesc*) &TMP1369),
((NimStringDesc*) &TMP1370),
((NimStringDesc*) &TMP1371),
((NimStringDesc*) &TMP1372),
((NimStringDesc*) &TMP1373),
((NimStringDesc*) &TMP1374),
((NimStringDesc*) &TMP1375),
((NimStringDesc*) &TMP1376),
((NimStringDesc*) &TMP1377),
((NimStringDesc*) &TMP1378),
((NimStringDesc*) &TMP1379),
((NimStringDesc*) &TMP1380),
((NimStringDesc*) &TMP1381),
((NimStringDesc*) &TMP1382),
((NimStringDesc*) &TMP1383),
((NimStringDesc*) &TMP1384),
((NimStringDesc*) &TMP1385),
((NimStringDesc*) &TMP1386),
((NimStringDesc*) &TMP1387),
((NimStringDesc*) &TMP1388)}
;
STRING_LITERAL(TMP1389, "keyword ", 8);
STRING_LITERAL(TMP1393, "tokToStr", 8);
STRING_LITERAL(TMP5250, "\011", 1);
STRING_LITERAL(TMP5251, " ", 1);
NI glinescompiled_205198;
Tident189012* dummyident_205304;
extern Gcheap49818 gch_49859;
extern TNimType NTI203015; /* TBaseLexer */
TNimType NTI205173; /* TLexer */
extern TNimType NTI110; /* int32 */
extern TNimType NTI104; /* int */
extern TNimType NTI130; /* bool */
TNimType NTI205171; /* (pointer, ref tuple[]) */
extern TNimType NTI142; /* pointer */
TNimType NTI531876; /* tuple[] */
TNimType NTI531875; /* ref tuple[] */
TNimType NTI205169; /* TToken */
TNimType NTI205016; /* TTokType */
extern TNimType NTI189010; /* PIdent */
extern TNimType NTI7088; /* BiggestInt */
extern TNimType NTI7090; /* BiggestFloat */
TNimType NTI205167; /* TNumericalBase */
extern TNimType NTI106; /* int8 */
extern TNimType NTI138; /* string */
extern NU32 gglobaloptions_160121;
extern NimStringDesc* tnl_167618;
extern TSafePoint* exchandler_19437;
extern TNimType NTI23625; /* ref ValueError */
extern TNimType NTI3646; /* ValueError */
extern Exception* currexception_19439;
extern TNimType NTI3640; /* OverflowError */
extern TNimType NTI3656; /* RangeError */

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

static N_INLINE(void, rtladdzct_53001)(Cell47505* c) {
	addzct_51417((&gch_49859.zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		Cell47505* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_51440(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell47505* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_51440((*dest));
		{
			(*c).refcount -= ((NI) 8);
			if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA11;
			rtladdzct_53001(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}
N_NIMCALL(void, TMP1217)(void* p, NI op) {
	TY531876* a;
	a = (TY531876*)p;
}

N_NIMCALL(void, inittoken_205306)(Ttoken205169* L) {
	(*L).toktype = ((NU8) 0);
	(*L).inumber = IL64(0);
	(*L).indent = ((NI) 0);
	(*L).strongspacea = ((NI8) 0);
	unsureAsgnRef((void**) (&(*L).literal), copyString(((NimStringDesc*) &TMP797)));
	(*L).fnumber = 0.0;
	(*L).base = ((NU8) 0);
	unsureAsgnRef((void**) (&(*L).ident), dummyident_205304);
}

N_NIMCALL(void, openlexer_205314)(Tlexer205173* lex, NI32 fileidx, Tllstream202204* inputstream) {
	Tbaselexer203015* LOC1;
	LOC1 = 0;
	LOC1 = &lex->Sup;
	openbaselexer_203023(LOC1, inputstream, ((NI) 8192));
	(*lex).fileidx = fileidx;
	(*lex).indentahead = ((NI) -1);
	(*lex).currlineindent = ((NI) 0);
	(*lex).Sup.linenumber += (*inputstream).lineoffset;
}

N_NIMCALL(void, filltoken_205310)(Ttoken205169* L) {
	(*L).toktype = ((NU8) 0);
	(*L).inumber = IL64(0);
	(*L).indent = ((NI) 0);
	(*L).strongspacea = ((NI8) 0);
	(*L).literal = setLengthStr((*L).literal, ((NI) 0));
	(*L).fnumber = 0.0;
	(*L).base = ((NU8) 0);
	unsureAsgnRef((void**) (&(*L).ident), dummyident_205304);
}

N_NIMCALL(void, dispmessage_205356)(Tlexer205173* L, Tlineinfo182337 info, NU16 msg, NimStringDesc* arg) {
	{
		if (!(*L).errorhandler.ClPrc == 0) goto LA3;
		message_187095(info, msg, arg);
	}
	goto LA1;
	LA3: ;
	{
		(*L).errorhandler.ClEnv? (*L).errorhandler.ClPrc(info, msg, arg, (*L).errorhandler.ClEnv):((TMP1242)((*L).errorhandler.ClPrc))(info, msg, arg);
	}
	LA1: ;
}

N_NIMCALL(void, lexmessagepos_205382)(Tlexer205173* L, NU16 msg, NI pos, NimStringDesc* arg) {
	Tlineinfo182337 info;
	info = newlineinfo_183024((*L).fileidx, (*L).Sup.linenumber, (NI)(pos - (*L).Sup.linestart));
	dispmessage_205356((&(*L)), info, msg, arg);
}

N_NIMCALL(NimStringDesc*, newstring_206558)(NCSTRING s, NI len) {
	NimStringDesc* result;
	result = 0;
	result = mnewString(((NI) (len)));
	{
		NI i_206580;
		NI HEX3Atmp_206582;
		NI res_206585;
		i_206580 = 0;
		HEX3Atmp_206582 = 0;
		HEX3Atmp_206582 = (len - 1);
		res_206585 = ((NI) 0);
		{
			while (1) {
				if (!(res_206585 <= HEX3Atmp_206582)) goto LA3;
				i_206580 = res_206585;
				result->data[i_206580] = s[i_206580];
				res_206585 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(NI, handlecrlf_206589)(Tlexer205173* L, NI pos) {
	NI result;
	result = 0;
	switch (((NU8)((*L).Sup.buf[pos]))) {
	case 13:
	{
		NI col_206606;
		Tbaselexer203015* LOC10;
		col_206606 = getcolnumber_203038((&(*L).Sup), pos);
		{
			if (!(((NI) 80) < col_206606)) goto LA4;
			lexmessagepos_205382(L, ((NU16) 270), pos, ((NimStringDesc*) &TMP797));
		}
		LA4: ;
		{
			NI linestart_206608;
			NimStringDesc* line_206610;
			if (!((gglobaloptions_160121 &(1U<<((NU)(((NU8) 28))&31U)))!=0)) goto LA8;
			linestart_206608 = (NI)(((NI) ((*L).Sup.buf)) + (*L).Sup.linestart);
			line_206610 = newstring_206558(((NCSTRING) (linestart_206608)), col_206606);
			addsourceline_187137((*L).fileidx, line_206610);
		}
		LA8: ;
		LOC10 = 0;
		LOC10 = &L->Sup;
		result = handlecr_203042(LOC10, pos);
	}
	break;
	case 10:
	{
		NI col_206622;
		Tbaselexer203015* LOC20;
		col_206622 = getcolnumber_203038((&(*L).Sup), pos);
		{
			if (!(((NI) 80) < col_206622)) goto LA14;
			lexmessagepos_205382(L, ((NU16) 270), pos, ((NimStringDesc*) &TMP797));
		}
		LA14: ;
		{
			NI linestart_206624;
			NimStringDesc* line_206626;
			if (!((gglobaloptions_160121 &(1U<<((NU)(((NU8) 28))&31U)))!=0)) goto LA18;
			linestart_206624 = (NI)(((NI) ((*L).Sup.buf)) + (*L).Sup.linestart);
			line_206626 = newstring_206558(((NCSTRING) (linestart_206624)), col_206622);
			addsourceline_187137((*L).fileidx, line_206626);
		}
		LA18: ;
		LOC20 = 0;
		LOC20 = &L->Sup;
		result = handlelf_203047(LOC20, pos);
	}
	break;
	default:
	{
		result = pos;
	}
	break;
	}
	return result;
}

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

N_NIMCALL(void, skipmultilinecomment_207050)(Tlexer205173* L, Ttoken205169* tok, NI start, NIM_BOOL isdoc) {
	NI pos;
	NCSTRING buf;
	NI tostrip;
	NI nesting;
	pos = start;
	buf = (*L).Sup.buf;
	tostrip = ((NI) 0);
	{
		if (!isdoc) goto LA3;
		tostrip = getcolnumber_203038((&(*L).Sup), pos);
		{
			while (1) {
				if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA6;
				pos += ((NI) 1);
			} LA6: ;
		}
		{
			if (!(((NU8)(buf[pos])) == ((NU8)(13)) || ((NU8)(buf[pos])) == ((NU8)(10)))) goto LA9;
			pos = handlecrlf_206589(L, pos);
			buf = (*L).Sup.buf;
			tostrip = ((NI) 0);
			{
				while (1) {
					if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA12;
					pos += ((NI) 1);
					tostrip += ((NI) 1);
				} LA12: ;
			}
		}
		LA9: ;
	}
	LA3: ;
	nesting = ((NI) 0);
	{
		while (1) {
			switch (((NU8)(buf[pos]))) {
			case 35:
			{
				{
					if (!isdoc) goto LA18;
					{
						NIM_BOOL LOC22;
						LOC22 = 0;
						LOC22 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(35));
						if (!(LOC22)) goto LA23;
						LOC22 = ((NU8)(buf[(NI)(pos + ((NI) 2))]) == (NU8)(91));
						LA23: ;
						if (!LOC22) goto LA24;
						nesting += ((NI) 1);
					}
					LA24: ;
					(*tok).literal = addChar((*tok).literal, 35);
				}
				goto LA16;
				LA18: ;
				{
					if (!((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(91))) goto LA27;
					nesting += ((NI) 1);
				}
				goto LA16;
				LA27: ;
				LA16: ;
				pos += ((NI) 1);
			}
			break;
			case 93:
			{
				{
					if (!isdoc) goto LA32;
					{
						NIM_BOOL LOC36;
						LOC36 = 0;
						LOC36 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(35));
						if (!(LOC36)) goto LA37;
						LOC36 = ((NU8)(buf[(NI)(pos + ((NI) 2))]) == (NU8)(35));
						LA37: ;
						if (!LOC36) goto LA38;
						{
							if (!(nesting == ((NI) 0))) goto LA42;
							pos += ((NI) 3);
							goto LA13;
						}
						LA42: ;
						nesting -= ((NI) 1);
					}
					LA38: ;
					(*tok).literal = addChar((*tok).literal, 93);
				}
				goto LA30;
				LA32: ;
				{
					if (!((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(35))) goto LA45;
					{
						if (!(nesting == ((NI) 0))) goto LA49;
						pos += ((NI) 2);
						goto LA13;
					}
					LA49: ;
					nesting -= ((NI) 1);
				}
				goto LA30;
				LA45: ;
				LA30: ;
				pos += ((NI) 1);
			}
			break;
			case 9:
			{
				lexmessagepos_205382(L, ((NU16) 11), pos, ((NimStringDesc*) &TMP797));
				pos += ((NI) 1);
				{
					if (!isdoc) goto LA54;
					(*tok).literal = addChar((*tok).literal, 9);
				}
				LA54: ;
			}
			break;
			case 13:
			case 10:
			{
				pos = handlecrlf_206589(L, pos);
				buf = (*L).Sup.buf;
				{
					NI c;
					if (!isdoc) goto LA59;
					(*tok).literal = resizeString((*tok).literal, 1);
appendString((*tok).literal, ((NimStringDesc*) &TMP1243));
					(*tok).inumber += ((NI) 1);
					c = tostrip;
					{
						while (1) {
							NIM_BOOL LOC63;
							LOC63 = 0;
							LOC63 = ((NU8)(buf[pos]) == (NU8)(32));
							if (!(LOC63)) goto LA64;
							LOC63 = (((NI) 0) < c);
							LA64: ;
							if (!LOC63) goto LA62;
							pos += ((NI) 1);
							c -= ((NI) 1);
						} LA62: ;
					}
				}
				LA59: ;
			}
			break;
			case 0:
			{
				lexmessagepos_205382(L, ((NU16) 4), pos, ((NimStringDesc*) &TMP1244));
				goto LA13;
			}
			break;
			default:
			{
				{
					if (!isdoc) goto LA69;
					(*tok).literal = addChar((*tok).literal, buf[pos]);
				}
				LA69: ;
				pos += ((NI) 1);
			}
			break;
			}
		}
	} LA13: ;
	(*L).Sup.bufpos = pos;
}

N_NIMCALL(void, skip_208443)(Tlexer205173* L, Ttoken205169* tok) {
	NI pos;
	NCSTRING buf;
	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	(*tok).strongspacea = ((NI8) 0);
	{
		while (1) {
			switch (((NU8)(buf[pos]))) {
			case 32:
			{
				pos += ((NI) 1);
				(*tok).strongspacea += ((NI) 1);
			}
			break;
			case 9:
			{
				lexmessagepos_205382(L, ((NU16) 11), pos, ((NimStringDesc*) &TMP797));
				pos += ((NI) 1);
			}
			break;
			case 13:
			case 10:
			{
				NI indent;
				pos = handlecrlf_206589(L, pos);
				buf = (*L).Sup.buf;
				indent = ((NI) 0);
				{
					while (1) {
						{
							if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA10;
							pos += ((NI) 1);
							indent += ((NI) 1);
						}
						goto LA8;
						LA10: ;
						{
							NIM_BOOL LOC13;
							LOC13 = 0;
							LOC13 = ((NU8)(buf[pos]) == (NU8)(35));
							if (!(LOC13)) goto LA14;
							LOC13 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(91));
							LA14: ;
							if (!LOC13) goto LA15;
							skipmultilinecomment_207050(L, tok, (NI)(pos + ((NI) 2)), NIM_FALSE);
							pos = (*L).Sup.bufpos;
							buf = (*L).Sup.buf;
						}
						goto LA8;
						LA15: ;
						{
							goto LA6;
						}
						LA8: ;
					}
				} LA6: ;
				(*tok).strongspacea = ((NI8) 0);
				{
					NIM_BOOL LOC20;
					NIM_BOOL LOC22;
					LOC20 = 0;
					LOC20 = ((NU8)(32) < (NU8)(buf[pos]));
					if (!(LOC20)) goto LA21;
					LOC22 = 0;
					LOC22 = !(((NU8)(buf[pos]) == (NU8)(35)));
					if (LOC22) goto LA23;
					LOC22 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(35));
					LA23: ;
					LOC20 = LOC22;
					LA21: ;
					if (!LOC20) goto LA24;
					(*tok).indent = indent;
					(*L).currlineindent = indent;
					goto LA1;
				}
				LA24: ;
			}
			break;
			case 35:
			{
				{
					if (!((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(35))) goto LA29;
					goto LA1;
				}
				LA29: ;
				{
					if (!((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(91))) goto LA33;
					skipmultilinecomment_207050(L, tok, (NI)(pos + ((NI) 2)), NIM_FALSE);
					pos = (*L).Sup.bufpos;
					buf = (*L).Sup.buf;
				}
				goto LA31;
				LA33: ;
				{
					{
						while (1) {
							if (!!((((NU8)(buf[pos])) == ((NU8)(13)) || ((NU8)(buf[pos])) == ((NU8)(10)) || ((NU8)(buf[pos])) == ((NU8)(0))))) goto LA37;
							pos += ((NI) 1);
						} LA37: ;
					}
				}
				LA31: ;
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	(*L).Sup.bufpos = pos;
}

N_NIMCALL(Tlineinfo182337, getlineinfo_205352)(Tlexer205173* L) {
	Tlineinfo182337 result;
	NI LOC1;
	memset((void*)(&result), 0, sizeof(result));
	LOC1 = 0;
	LOC1 = getcolnumber_203038((&(*L).Sup), (*L).Sup.bufpos);
	result = newlineinfo_183024((*L).fileidx, (*L).Sup.linenumber, LOC1);
	return result;
}

N_NIMCALL(void, lexmessage_205370)(Tlexer205173* L, NU16 msg, NimStringDesc* arg) {
	Tlineinfo182337 LOC1;
	LOC1 = getlineinfo_205352(L);
	dispmessage_205356(L, LOC1, msg, arg);
}

static N_INLINE(NI, HEX21HEX26_137004)(NI h, NI val) {
	NI result;
	result = 0;
	result = (NI)((NU32)(h) + (NU32)(val));
	result = (NI)((NU32)(result) + (NU32)((NI)((NU32)(result) << (NU32)(((NI) 10)))));
	result = (NI)(result ^ (NI)((NU32)(result) >> (NU32)(((NI) 6))));
	return result;
}

static N_INLINE(NI, HEX21HEX24_137027)(NI h) {
	NI result;
	result = 0;
	result = (NI)((NU32)(h) + (NU32)((NI)((NU32)(h) << (NU32)(((NI) 3)))));
	result = (NI)(result ^ (NI)((NU32)(result) >> (NU32)(((NI) 11))));
	result = (NI)((NU32)(result) + (NU32)((NI)((NU32)(result) << (NU32)(((NI) 15)))));
	return result;
}

N_NIMCALL(void, getsymbol_206808)(Tlexer205173* L, Ttoken205169* tok) {
	NI h;
	NI pos;
	NCSTRING buf;
	h = ((NI) 0);
	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	{
		while (1) {
			NIM_CHAR c;
			c = buf[pos];
			switch (((NU8)(c))) {
			case 97 ... 122:
			case 48 ... 57:
			case 128 ... 255:
			{
				{
					NIM_BOOL LOC6;
					NIM_BOOL LOC7;
					LOC6 = 0;
					LOC7 = 0;
					LOC7 = ((NU8)(c) == (NU8)(226));
					if (!(LOC7)) goto LA8;
					LOC7 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(128));
					LA8: ;
					LOC6 = LOC7;
					if (!(LOC6)) goto LA9;
					LOC6 = ((NU8)(buf[(NI)(pos + ((NI) 2))]) == (NU8)(147));
					LA9: ;
					if (!LOC6) goto LA10;
					{
						if (!!((((NU8)(buf[(NI)(pos + ((NI) 3))])) >= ((NU8)(97)) && ((NU8)(buf[(NI)(pos + ((NI) 3))])) <= ((NU8)(122)) || ((NU8)(buf[(NI)(pos + ((NI) 3))])) >= ((NU8)(65)) && ((NU8)(buf[(NI)(pos + ((NI) 3))])) <= ((NU8)(90)) || ((NU8)(buf[(NI)(pos + ((NI) 3))])) >= ((NU8)(48)) && ((NU8)(buf[(NI)(pos + ((NI) 3))])) <= ((NU8)(57)) || ((NU8)(buf[(NI)(pos + ((NI) 3))])) >= ((NU8)(128)) && ((NU8)(buf[(NI)(pos + ((NI) 3))])) <= ((NU8)(255))))) goto LA14;
						lexmessage_205370((&(*L)), ((NU16) 12), ((NimStringDesc*) &TMP1245));
						goto LA1;
					}
					LA14: ;
					pos += ((NI) 3);
				}
				goto LA4;
				LA10: ;
				{
					h = HEX21HEX26_137004(h, ((NI) (((NU8)(c)))));
					pos += ((NI) 1);
				}
				LA4: ;
			}
			break;
			case 65 ... 90:
			{
				c = ((NIM_CHAR) (((NI) ((NI)(((NI) (((NU8)(c)))) + ((NI) 32))))));
				h = HEX21HEX26_137004(h, ((NI) (((NU8)(c)))));
				pos += ((NI) 1);
			}
			break;
			case 95:
			{
				{
					if (!!((((NU8)(buf[(NI)(pos + ((NI) 1))])) >= ((NU8)(97)) && ((NU8)(buf[(NI)(pos + ((NI) 1))])) <= ((NU8)(122)) || ((NU8)(buf[(NI)(pos + ((NI) 1))])) >= ((NU8)(65)) && ((NU8)(buf[(NI)(pos + ((NI) 1))])) <= ((NU8)(90)) || ((NU8)(buf[(NI)(pos + ((NI) 1))])) >= ((NU8)(48)) && ((NU8)(buf[(NI)(pos + ((NI) 1))])) <= ((NU8)(57)) || ((NU8)(buf[(NI)(pos + ((NI) 1))])) >= ((NU8)(128)) && ((NU8)(buf[(NI)(pos + ((NI) 1))])) <= ((NU8)(255))))) goto LA21;
					lexmessage_205370((&(*L)), ((NU16) 12), ((NimStringDesc*) &TMP1246));
					goto LA1;
				}
				LA21: ;
				pos += ((NI) 1);
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	h = HEX21HEX24_137027(h);
	unsureAsgnRef((void**) (&(*tok).ident), getident_189211(((NCSTRING) ((&(*L).Sup.buf[(*L).Sup.bufpos]))), (NI)(pos - (*L).Sup.bufpos), h));
	(*L).Sup.bufpos = pos;
	{
		NIM_BOOL LOC26;
		LOC26 = 0;
		LOC26 = ((*(*tok).ident).Sup.id < ((NI) 1));
		if (LOC26) goto LA27;
		LOC26 = (((NI) 70) < (*(*tok).ident).Sup.id);
		LA27: ;
		if (!LOC26) goto LA28;
		(*tok).toktype = ((NU8) 2);
	}
	goto LA24;
	LA28: ;
	{
		(*tok).toktype = ((NU8) ((NI)((*(*tok).ident).Sup.id + ((NI) 2))));
	}
	LA24: ;
}

N_NIMCALL(void, scancomment_207222)(Tlexer205173* L, Ttoken205169* tok) {
	NI pos;
	NCSTRING buf;
	NI tostrip;
{	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	(*tok).toktype = ((NU8) 113);
	(*tok).inumber = IL64(0);
	{
		if (!((NU8)(buf[(NI)(pos + ((NI) 2))]) == (NU8)(91))) goto LA3;
		skipmultilinecomment_207050(L, tok, (NI)(pos + ((NI) 3)), NIM_TRUE);
		goto BeforeRet;
	}
	LA3: ;
	pos += ((NI) 2);
	tostrip = ((NI) 0);
	{
		while (1) {
			if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA6;
			pos += ((NI) 1);
			tostrip += ((NI) 1);
		} LA6: ;
	}
	{
		while (1) {
			NI lastbackslash;
			NI indent;
			lastbackslash = ((NI) -1);
			{
				while (1) {
					if (!!((((NU8)(buf[pos])) == ((NU8)(13)) || ((NU8)(buf[pos])) == ((NU8)(10)) || ((NU8)(buf[pos])) == ((NU8)(0))))) goto LA10;
					{
						if (!((NU8)(buf[pos]) == (NU8)(92))) goto LA13;
						lastbackslash = (NI)(pos + ((NI) 1));
					}
					LA13: ;
					(*tok).literal = addChar((*tok).literal, buf[pos]);
					pos += ((NI) 1);
				} LA10: ;
			}
			pos = handlecrlf_206589(L, pos);
			buf = (*L).Sup.buf;
			indent = ((NI) 0);
			{
				while (1) {
					if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA16;
					pos += ((NI) 1);
					indent += ((NI) 1);
				} LA16: ;
			}
			{
				NIM_BOOL LOC19;
				NI c;
				LOC19 = 0;
				LOC19 = ((NU8)(buf[pos]) == (NU8)(35));
				if (!(LOC19)) goto LA20;
				LOC19 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(35));
				LA20: ;
				if (!LOC19) goto LA21;
				(*tok).literal = resizeString((*tok).literal, 1);
appendString((*tok).literal, ((NimStringDesc*) &TMP1243));
				pos += ((NI) 2);
				c = tostrip;
				{
					while (1) {
						NIM_BOOL LOC25;
						LOC25 = 0;
						LOC25 = ((NU8)(buf[pos]) == (NU8)(32));
						if (!(LOC25)) goto LA26;
						LOC25 = (((NI) 0) < c);
						LA26: ;
						if (!LOC25) goto LA24;
						pos += ((NI) 1);
						c -= ((NI) 1);
					} LA24: ;
				}
				(*tok).inumber += ((NI) 1);
			}
			goto LA17;
			LA21: ;
			{
				{
					if (!((NU8)(32) < (NU8)(buf[pos]))) goto LA30;
					(*L).indentahead = indent;
				}
				LA30: ;
				goto LA7;
			}
			LA17: ;
		}
	} LA7: ;
	(*L).Sup.bufpos = pos;
	}BeforeRet: ;
}

static N_INLINE(void, endoperator_206962)(Tlexer205173* L, Ttoken205169* tok, NI pos, NI hash) {
	NI h;
	h = HEX21HEX24_137027(hash);
	unsureAsgnRef((void**) (&(*tok).ident), getident_189211(((NCSTRING) ((&(*L).Sup.buf[(*L).Sup.bufpos]))), (NI)(pos - (*L).Sup.bufpos), h));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*(*tok).ident).Sup.id < ((NI) 71));
		if (LOC3) goto LA4;
		LOC3 = (((NI) 75) < (*(*tok).ident).Sup.id);
		LA4: ;
		if (!LOC3) goto LA5;
		(*tok).toktype = ((NU8) 112);
	}
	goto LA1;
	LA5: ;
	{
		(*tok).toktype = ((NU8) ((NI)((NI)((*(*tok).ident).Sup.id - ((NI) 71)) + ((NI) 107))));
	}
	LA1: ;
	(*L).Sup.bufpos = pos;
}

N_NIMCALL(void, getoperator_206981)(Tlexer205173* L, Ttoken205169* tok) {
	NI pos;
	NCSTRING buf;
	NI h;
	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	h = ((NI) 0);
	{
		while (1) {
			NIM_CHAR c;
			c = buf[pos];
			{
				if (!!(((TMP1247[(NU)(((NU8)(c)))>>3] &(1U<<((NU)(((NU8)(c)))&7U)))!=0))) goto LA5;
				goto LA1;
			}
			LA5: ;
			h = HEX21HEX26_137004(h, ((NI) (((NU8)(c)))));
			pos += ((NI) 1);
		}
	} LA1: ;
	endoperator_206962(L, tok, pos, h);
	(*tok).strongspaceb = ((NI8) 0);
	{
		while (1) {
			if (!((NU8)(buf[pos]) == (NU8)(32))) goto LA8;
			pos += ((NI) 1);
			(*tok).strongspaceb += ((NI) 1);
		} LA8: ;
	}
	{
		if (!(((NU8)(buf[pos])) == ((NU8)(13)) || ((NU8)(buf[pos])) == ((NU8)(10)) || ((NU8)(buf[pos])) == ((NU8)(0)))) goto LA11;
		(*tok).strongspaceb = ((NI8) -1);
	}
	LA11: ;
}

N_NIMCALL(void, handlehexchar_206287)(Tlexer205173* L, NI* xi) {
	switch (((NU8)((*L).Sup.buf[(*L).Sup.bufpos]))) {
	case 48 ... 57:
	{
		(*xi) = (NI)((NI)((NU32)((*xi)) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[(*L).Sup.bufpos])))) - ((NI) 48)))));
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 97 ... 102:
	{
		(*xi) = (NI)((NI)((NU32)((*xi)) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[(*L).Sup.bufpos])))) - ((NI) 97)))) + ((NI) 10)))));
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 65 ... 70:
	{
		(*xi) = (NI)((NI)((NU32)((*xi)) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[(*L).Sup.bufpos])))) - ((NI) 65)))) + ((NI) 10)))));
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	default:
	{
	}
	break;
	}
}

N_NIMCALL(NIM_BOOL, matchtwochars_205390)(Tlexer205173* L, NIM_CHAR first, TY202404 second) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(first));
	if (!(LOC1)) goto LA2;
	LOC1 = ((second[(NU)(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])))>>3] &(1U<<((NU)(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])))&7U)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, handledecchars_206375)(Tlexer205173* L, NI* xi) {
	{
		while (1) {
			if (!(((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) <= ((NU8)(57)))) goto LA2;
			(*xi) = (NI)((NI)((*xi) * ((NI) 10)) + ((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[(*L).Sup.bufpos])))) - ((NI) 48)))));
			(*L).Sup.bufpos += ((NI) 1);
		} LA2: ;
	}
}

N_NIMCALL(void, getescapedchar_206419)(Tlexer205173* L, Ttoken205169* tok) {
	(*L).Sup.bufpos += ((NI) 1);
	switch (((NU8)((*L).Sup.buf[(*L).Sup.bufpos]))) {
	case 110:
	case 78:
	{
		{
			if (!((*tok).toktype == ((NU8) 92))) goto LA4;
			lexmessage_205370((&(*L)), ((NU16) 17), ((NimStringDesc*) &TMP797));
		}
		LA4: ;
		(*tok).literal = resizeString((*tok).literal, tnl_167618->Sup.len + 0);
appendString((*tok).literal, tnl_167618);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 114:
	case 82:
	case 99:
	case 67:
	{
		(*tok).literal = addChar((*tok).literal, 13);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 108:
	case 76:
	{
		(*tok).literal = addChar((*tok).literal, 10);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 102:
	case 70:
	{
		(*tok).literal = addChar((*tok).literal, 12);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 101:
	case 69:
	{
		(*tok).literal = addChar((*tok).literal, 27);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 97:
	case 65:
	{
		(*tok).literal = addChar((*tok).literal, 7);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 98:
	case 66:
	{
		(*tok).literal = addChar((*tok).literal, 8);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 118:
	case 86:
	{
		(*tok).literal = addChar((*tok).literal, 11);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 116:
	case 84:
	{
		(*tok).literal = addChar((*tok).literal, 9);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 39:
	case 34:
	{
		(*tok).literal = addChar((*tok).literal, (*L).Sup.buf[(*L).Sup.bufpos]);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 92:
	{
		(*tok).literal = addChar((*tok).literal, 92);
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	case 120:
	case 88:
	{
		NI xi;
		(*L).Sup.bufpos += ((NI) 1);
		xi = ((NI) 0);
		handlehexchar_206287(L, (&xi));
		handlehexchar_206287(L, (&xi));
		(*tok).literal = addChar((*tok).literal, ((NIM_CHAR) (((NI) (xi)))));
	}
	break;
	case 48 ... 57:
	{
		NI xi;
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = matchtwochars_205390((&(*L)), 48, TMP1248);
			if (!LOC20) goto LA21;
			lexmessage_205370((&(*L)), ((NU16) 238), ((NimStringDesc*) &TMP797));
		}
		LA21: ;
		xi = ((NI) 0);
		handledecchars_206375(L, (&xi));
		{
			if (!(xi <= ((NI) 255))) goto LA25;
			(*tok).literal = addChar((*tok).literal, ((NIM_CHAR) (((NI) (xi)))));
		}
		goto LA23;
		LA25: ;
		{
			lexmessage_205370((&(*L)), ((NU16) 8), ((NimStringDesc*) &TMP797));
		}
		LA23: ;
	}
	break;
	default:
	{
		lexmessage_205370((&(*L)), ((NU16) 8), ((NimStringDesc*) &TMP797));
	}
	break;
	}
}

N_NIMCALL(void, getstring_206641)(Tlexer205173* L, Ttoken205169* tok, NIM_BOOL rawmode) {
	NI pos;
	NCSTRING buf;
	NI line;
	pos = (NI)((*L).Sup.bufpos + ((NI) 1));
	buf = (*L).Sup.buf;
	line = (*L).Sup.linenumber;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((NU8)(buf[pos]) == (NU8)(34));
		if (!(LOC3)) goto LA4;
		LOC3 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(34));
		LA4: ;
		if (!LOC3) goto LA5;
		(*tok).toktype = ((NU8) 89);
		pos += ((NI) 2);
		{
			NI newpos;
			if (!(((NU8)(buf[pos])) == ((NU8)(32)) || ((NU8)(buf[pos])) == ((NU8)(9)))) goto LA9;
			newpos = (NI)(pos + ((NI) 1));
			{
				while (1) {
					if (!(((NU8)(buf[newpos])) == ((NU8)(32)) || ((NU8)(buf[newpos])) == ((NU8)(9)))) goto LA12;
					newpos += ((NI) 1);
				} LA12: ;
			}
			{
				if (!(((NU8)(buf[newpos])) == ((NU8)(13)) || ((NU8)(buf[newpos])) == ((NU8)(10)))) goto LA15;
				pos = newpos;
			}
			LA15: ;
		}
		LA9: ;
		pos = handlecrlf_206589(L, pos);
		buf = (*L).Sup.buf;
		{
			while (1) {
				switch (((NU8)(buf[pos]))) {
				case 34:
				{
					{
						NIM_BOOL LOC22;
						NIM_BOOL LOC23;
						LOC22 = 0;
						LOC23 = 0;
						LOC23 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(34));
						if (!(LOC23)) goto LA24;
						LOC23 = ((NU8)(buf[(NI)(pos + ((NI) 2))]) == (NU8)(34));
						LA24: ;
						LOC22 = LOC23;
						if (!(LOC22)) goto LA25;
						LOC22 = !(((NU8)(buf[(NI)(pos + ((NI) 3))]) == (NU8)(34)));
						LA25: ;
						if (!LOC22) goto LA26;
						(*L).Sup.bufpos = (NI)(pos + ((NI) 3));
						goto LA17;
					}
					LA26: ;
					(*tok).literal = addChar((*tok).literal, 34);
					pos += ((NI) 1);
				}
				break;
				case 13:
				case 10:
				{
					pos = handlecrlf_206589(L, pos);
					buf = (*L).Sup.buf;
					(*tok).literal = resizeString((*tok).literal, tnl_167618->Sup.len + 0);
appendString((*tok).literal, tnl_167618);
				}
				break;
				case 0:
				{
					NI line2;
					line2 = (*L).Sup.linenumber;
					(*L).Sup.linenumber = line;
					lexmessagepos_205382(L, ((NU16) 9), (*L).Sup.linestart, ((NimStringDesc*) &TMP797));
					(*L).Sup.linenumber = line2;
					(*L).Sup.bufpos = pos;
					goto LA17;
				}
				break;
				default:
				{
					(*tok).literal = addChar((*tok).literal, buf[pos]);
					pos += ((NI) 1);
				}
				break;
				}
			}
		} LA17: ;
	}
	goto LA1;
	LA5: ;
	{
		{
			if (!rawmode) goto LA34;
			(*tok).toktype = ((NU8) 88);
		}
		goto LA32;
		LA34: ;
		{
			(*tok).toktype = ((NU8) 87);
		}
		LA32: ;
		{
			while (1) {
				NIM_CHAR c;
				c = buf[pos];
				{
					if (!((NU8)(c) == (NU8)(34))) goto LA41;
					{
						NIM_BOOL LOC45;
						LOC45 = 0;
						LOC45 = rawmode;
						if (!(LOC45)) goto LA46;
						LOC45 = ((NU8)(buf[(NI)(pos + ((NI) 1))]) == (NU8)(34));
						LA46: ;
						if (!LOC45) goto LA47;
						pos += ((NI) 2);
						(*tok).literal = addChar((*tok).literal, 34);
					}
					goto LA43;
					LA47: ;
					{
						pos += ((NI) 1);
						goto LA37;
					}
					LA43: ;
				}
				goto LA39;
				LA41: ;
				{
					if (!(((NU8)(c)) == ((NU8)(13)) || ((NU8)(c)) == ((NU8)(10)) || ((NU8)(c)) == ((NU8)(0)))) goto LA51;
					lexmessage_205370((&(*L)), ((NU16) 10), ((NimStringDesc*) &TMP797));
					goto LA37;
				}
				goto LA39;
				LA51: ;
				{
					NIM_BOOL LOC54;
					LOC54 = 0;
					LOC54 = ((NU8)(c) == (NU8)(92));
					if (!(LOC54)) goto LA55;
					LOC54 = !(rawmode);
					LA55: ;
					if (!LOC54) goto LA56;
					(*L).Sup.bufpos = pos;
					getescapedchar_206419(L, tok);
					pos = (*L).Sup.bufpos;
				}
				goto LA39;
				LA56: ;
				{
					(*tok).literal = addChar((*tok).literal, c);
					pos += ((NI) 1);
				}
				LA39: ;
			}
		} LA37: ;
		(*L).Sup.bufpos = pos;
	}
	LA1: ;
}

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

N_NIMCALL(void, getcharacter_206764)(Tlexer205173* L, Ttoken205169* tok) {
	NIM_CHAR c;
	(*L).Sup.bufpos += ((NI) 1);
	c = (*L).Sup.buf[(*L).Sup.bufpos];
	switch (((NU8)(c))) {
	case 0 ... 31:
	case 39:
	{
		lexmessage_205370((&(*L)), ((NU16) 8), ((NimStringDesc*) &TMP797));
	}
	break;
	case 92:
	{
		getescapedchar_206419(L, tok);
	}
	break;
	default:
	{
		unsureAsgnRef((void**) (&(*tok).literal), nimCharToStr(c));
		(*L).Sup.bufpos += ((NI) 1);
	}
	break;
	}
	{
		if (!!(((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(39)))) goto LA6;
		lexmessage_205370((&(*L)), ((NU16) 19), ((NimStringDesc*) &TMP797));
	}
	LA6: ;
	(*L).Sup.bufpos += ((NI) 1);
}

N_NIMCALL(void, matchchars_205581)(Tlexer205173* L, Ttoken205169* tok, TY202404 chars) {
	NI pos;
	NCSTRING buf;
	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	{
		while (1) {
			if (!((chars[(NU)(((NU8)(buf[pos])))>>3] &(1U<<((NU)(((NU8)(buf[pos])))&7U)))!=0)) goto LA2;
			(*tok).literal = addChar((*tok).literal, buf[pos]);
			pos += ((NI) 1);
		} LA2: ;
	}
	(*L).Sup.bufpos = pos;
}

N_NIMCALL(void, lexmessagelitnum_205611)(Tlexer205173* L, NU16 msg, NI startpos) {
	NI msgpos;
	Ttoken205169 t;
	msgpos = (*L).Sup.bufpos;
	memset((void*)(&t), 0, sizeof(t));
	t.literal = copyString(((NimStringDesc*) &TMP797));
	(*L).Sup.bufpos = startpos;
	matchchars_205581(L, (&t), TMP1250);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(43)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(45)));
		if (!(LOC3)) goto LA4;
		LOC3 = (((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) == ((NU8)(101)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) == ((NU8)(69)));
		LA4: ;
		if (!LOC3) goto LA5;
		t.literal = addChar(t.literal, (*L).Sup.buf[(*L).Sup.bufpos]);
		(*L).Sup.bufpos += ((NI) 1);
		matchchars_205581(L, (&t), TMP1250);
	}
	LA5: ;
	{
		if (!((TMP1251[(NU)(((NU8)((*L).Sup.buf[(*L).Sup.bufpos])))>>3] &(1U<<((NU)(((NU8)((*L).Sup.buf[(*L).Sup.bufpos])))&7U)))!=0)) goto LA9;
		(*L).Sup.bufpos += ((NI) 1);
		t.literal = addChar(t.literal, (*L).Sup.buf[(*L).Sup.bufpos]);
		matchchars_205581(L, (&t), TMP1248);
	}
	LA9: ;
	(*L).Sup.bufpos = msgpos;
	lexmessage_205370((&(*L)), msg, t.literal);
}

N_NIMCALL(void, matchunderscorechars_205532)(Tlexer205173* L, Ttoken205169* tok, TY202404 chars) {
	NI pos;
	NCSTRING buf;
	pos = (*L).Sup.bufpos;
	buf = (*L).Sup.buf;
	{
		while (1) {
			{
				if (!((chars[(NU)(((NU8)(buf[pos])))>>3] &(1U<<((NU)(((NU8)(buf[pos])))&7U)))!=0)) goto LA5;
				(*tok).literal = addChar((*tok).literal, buf[pos]);
				pos += ((NI) 1);
			}
			goto LA3;
			LA5: ;
			{
				goto LA1;
			}
			LA3: ;
			{
				if (!((NU8)(buf[pos]) == (NU8)(95))) goto LA10;
				{
					if (!!(((chars[(NU)(((NU8)(buf[(NI)(pos + ((NI) 1))])))>>3] &(1U<<((NU)(((NU8)(buf[(NI)(pos + ((NI) 1))])))&7U)))!=0))) goto LA14;
					lexmessage_205370((&(*L)), ((NU16) 12), ((NimStringDesc*) &TMP1246));
					goto LA1;
				}
				LA14: ;
				(*tok).literal = addChar((*tok).literal, 95);
				pos += ((NI) 1);
			}
			LA10: ;
		}
	} LA1: ;
	(*L).Sup.bufpos = pos;
}

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

N_NIMCALL(NI, unsafeparseuint_205442)(NimStringDesc* s, NI64* b, NI start) {
	NI result;
	NI i;
	result = 0;
	i = start;
	{
		if (!(((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)))) goto LA3;
		(*b) = IL64(0);
		{
			while (1) {
				if (!(((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)))) goto LA6;
				(*b) = (NI64)((NI64)((*b) * IL64(10)) + ((NI64) ((NI)(((NI) (((NU8)(s->data[i])))) - ((NI) 48)))));
				i += ((NI) 1);
				{
					while (1) {
						if (!((NU8)(s->data[i]) == (NU8)(95))) goto LA8;
						i += ((NI) 1);
					} LA8: ;
				}
			} LA6: ;
		}
		result = (NI)(i - start);
	}
	LA3: ;
	return result;
}

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

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

static N_INLINE(NIM_BOOL, canbecycleroot_51458)(Cell47505* c) {
	NIM_BOOL result;
	result = 0;
	result = !((((*(*c).typ).flags &(1U<<((NU)(((NU8) 1))&7U)))!=0));
	return result;
}

static N_INLINE(void, rtladdcycleroot_52220)(Cell47505* c) {
	{
		if (!!((((NI) ((NI)((*c).refcount & ((NI) 3)))) == ((NI) 3)))) goto LA3;
		(*c).refcount = (NI)((NI)((*c).refcount & ((NI) -4)) | ((NI) 3));
		incl_48247((&gch_49859.cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_53819)(Cell47505* c) {
	(*c).refcount = (NI)((NU32)((*c).refcount) + (NU32)(((NI) 8)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_51458(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_52220(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_53401)(Cell47505* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_53001(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_51458(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_52220(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

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

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

N_NIMCALL(void, getnumber_205527)(Tlexer205173* L, Ttoken205169* Result) {
	NI startpos;
	NI endpos;
	NI64 volatile xi;
	NIM_BOOL isbase10;
	NI postpos;
	NI pos;
	TSafePoint TMP1256;
	startpos = 0;
	endpos = 0;
	xi = 0;
	isbase10 = NIM_TRUE;
	(*Result).toktype = ((NU8) 73);
	unsureAsgnRef((void**) (&(*Result).literal), copyString(((NimStringDesc*) &TMP797)));
	(*Result).base = ((NU8) 0);
	startpos = (*L).Sup.bufpos;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(48));
		if (!(LOC3)) goto LA4;
		LOC3 = (((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(66)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(67)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) == ((NU8)(79)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) == ((NU8)(88)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(98)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(99)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) == ((NU8)(111)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) == ((NU8)(120)));
		LA4: ;
		if (!LOC3) goto LA5;
		isbase10 = NIM_FALSE;
		(*Result).literal = addChar((*Result).literal, 48);
		(*L).Sup.bufpos += ((NI) 1);
		switch (((NU8)((*L).Sup.buf[(*L).Sup.bufpos]))) {
		case 79:
		{
			lexmessagelitnum_205611(L, ((NU16) 15), startpos);
		}
		break;
		case 120:
		case 88:
		{
			(*Result).literal = addChar((*Result).literal, 120);
			(*L).Sup.bufpos += ((NI) 1);
			matchunderscorechars_205532(L, Result, TMP1252);
		}
		break;
		case 111:
		case 99:
		case 67:
		{
			(*Result).literal = addChar((*Result).literal, 99);
			(*L).Sup.bufpos += ((NI) 1);
			matchunderscorechars_205532(L, Result, TMP1253);
		}
		break;
		case 98:
		case 66:
		{
			(*Result).literal = addChar((*Result).literal, 98);
			(*L).Sup.bufpos += ((NI) 1);
			matchunderscorechars_205532(L, Result, TMP1254);
		}
		break;
		default:
		{
			Tlineinfo182337 LOC12;
			LOC12 = getlineinfo_205352((&(*L)));
			internalerror_187100(LOC12, ((NimStringDesc*) &TMP1255));
		}
		break;
		}
	}
	goto LA1;
	LA5: ;
	{
		matchunderscorechars_205532(L, Result, TMP1248);
		{
			NIM_BOOL LOC16;
			LOC16 = 0;
			LOC16 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(46));
			if (!(LOC16)) goto LA17;
			LOC16 = (((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(57)));
			LA17: ;
			if (!LOC16) goto LA18;
			(*Result).toktype = ((NU8) 85);
			(*Result).literal = addChar((*Result).literal, 46);
			(*L).Sup.bufpos += ((NI) 1);
			matchunderscorechars_205532(L, Result, TMP1248);
		}
		LA18: ;
		{
			if (!(((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(101)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(69)))) goto LA22;
			(*Result).toktype = ((NU8) 85);
			(*Result).literal = addChar((*Result).literal, 101);
			(*L).Sup.bufpos += ((NI) 1);
			{
				if (!(((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(43)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) == ((NU8)(45)))) goto LA26;
				(*Result).literal = addChar((*Result).literal, (*L).Sup.buf[(*L).Sup.bufpos]);
				(*L).Sup.bufpos += ((NI) 1);
			}
			LA26: ;
			matchunderscorechars_205532(L, Result, TMP1248);
		}
		LA22: ;
	}
	LA1: ;
	endpos = (*L).Sup.bufpos;
	postpos = endpos;
	{
		if (!((TMP1251[(NU)(((NU8)((*L).Sup.buf[postpos])))>>3] &(1U<<((NU)(((NU8)((*L).Sup.buf[postpos])))&7U)))!=0)) goto LA30;
		{
			if (!((NU8)((*L).Sup.buf[postpos]) == (NU8)(39))) goto LA34;
			postpos += ((NI) 1);
		}
		LA34: ;
		switch (((NU8)((*L).Sup.buf[postpos]))) {
		case 102:
		case 70:
		{
			postpos += ((NI) 1);
			{
				NIM_BOOL LOC39;
				LOC39 = 0;
				LOC39 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(51));
				if (!(LOC39)) goto LA40;
				LOC39 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(50));
				LA40: ;
				if (!LOC39) goto LA41;
				(*Result).toktype = ((NU8) 84);
				postpos += ((NI) 2);
			}
			goto LA37;
			LA41: ;
			{
				NIM_BOOL LOC44;
				LOC44 = 0;
				LOC44 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(54));
				if (!(LOC44)) goto LA45;
				LOC44 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(52));
				LA45: ;
				if (!LOC44) goto LA46;
				(*Result).toktype = ((NU8) 85);
				postpos += ((NI) 2);
			}
			goto LA37;
			LA46: ;
			{
				NIM_BOOL LOC49;
				NIM_BOOL LOC50;
				LOC49 = 0;
				LOC50 = 0;
				LOC50 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(49));
				if (!(LOC50)) goto LA51;
				LOC50 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(50));
				LA51: ;
				LOC49 = LOC50;
				if (!(LOC49)) goto LA52;
				LOC49 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 2))]) == (NU8)(56));
				LA52: ;
				if (!LOC49) goto LA53;
				(*Result).toktype = ((NU8) 86);
				postpos += ((NI) 3);
			}
			goto LA37;
			LA53: ;
			{
				(*Result).toktype = ((NU8) 84);
			}
			LA37: ;
		}
		break;
		case 100:
		case 68:
		{
			postpos += ((NI) 1);
			(*Result).toktype = ((NU8) 85);
		}
		break;
		case 105:
		case 73:
		{
			postpos += ((NI) 1);
			{
				NIM_BOOL LOC60;
				LOC60 = 0;
				LOC60 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(54));
				if (!(LOC60)) goto LA61;
				LOC60 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(52));
				LA61: ;
				if (!LOC60) goto LA62;
				(*Result).toktype = ((NU8) 77);
				postpos += ((NI) 2);
			}
			goto LA58;
			LA62: ;
			{
				NIM_BOOL LOC65;
				LOC65 = 0;
				LOC65 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(51));
				if (!(LOC65)) goto LA66;
				LOC65 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(50));
				LA66: ;
				if (!LOC65) goto LA67;
				(*Result).toktype = ((NU8) 76);
				postpos += ((NI) 2);
			}
			goto LA58;
			LA67: ;
			{
				NIM_BOOL LOC70;
				LOC70 = 0;
				LOC70 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(49));
				if (!(LOC70)) goto LA71;
				LOC70 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(54));
				LA71: ;
				if (!LOC70) goto LA72;
				(*Result).toktype = ((NU8) 75);
				postpos += ((NI) 2);
			}
			goto LA58;
			LA72: ;
			{
				if (!((NU8)((*L).Sup.buf[postpos]) == (NU8)(56))) goto LA75;
				(*Result).toktype = ((NU8) 74);
				postpos += ((NI) 1);
			}
			goto LA58;
			LA75: ;
			{
				lexmessagelitnum_205611(L, ((NU16) 14), startpos);
			}
			LA58: ;
		}
		break;
		case 117:
		case 85:
		{
			postpos += ((NI) 1);
			{
				NIM_BOOL LOC81;
				LOC81 = 0;
				LOC81 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(54));
				if (!(LOC81)) goto LA82;
				LOC81 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(52));
				LA82: ;
				if (!LOC81) goto LA83;
				(*Result).toktype = ((NU8) 82);
				postpos += ((NI) 2);
			}
			goto LA79;
			LA83: ;
			{
				NIM_BOOL LOC86;
				LOC86 = 0;
				LOC86 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(51));
				if (!(LOC86)) goto LA87;
				LOC86 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(50));
				LA87: ;
				if (!LOC86) goto LA88;
				(*Result).toktype = ((NU8) 81);
				postpos += ((NI) 2);
			}
			goto LA79;
			LA88: ;
			{
				NIM_BOOL LOC91;
				LOC91 = 0;
				LOC91 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(49));
				if (!(LOC91)) goto LA92;
				LOC91 = ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))]) == (NU8)(54));
				LA92: ;
				if (!LOC91) goto LA93;
				(*Result).toktype = ((NU8) 80);
				postpos += ((NI) 2);
			}
			goto LA79;
			LA93: ;
			{
				if (!((NU8)((*L).Sup.buf[postpos]) == (NU8)(56))) goto LA96;
				(*Result).toktype = ((NU8) 79);
				postpos += ((NI) 1);
			}
			goto LA79;
			LA96: ;
			{
				(*Result).toktype = ((NU8) 78);
			}
			LA79: ;
		}
		break;
		default:
		{
			lexmessagelitnum_205611(L, ((NU16) 14), startpos);
		}
		break;
		}
	}
	LA30: ;
	{
		NIM_BOOL LOC102;
		NIM_BOOL LOC104;
		LOC102 = 0;
		LOC102 = (((NU8)((*L).Sup.buf[postpos])) == ((NU8)(39)) || ((NU8)((*L).Sup.buf[postpos])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[postpos])) <= ((NU8)(57)) || ((NU8)((*L).Sup.buf[postpos])) >= ((NU8)(65)) && ((NU8)((*L).Sup.buf[postpos])) <= ((NU8)(70)) || ((NU8)((*L).Sup.buf[postpos])) == ((NU8)(88)) || ((NU8)((*L).Sup.buf[postpos])) == ((NU8)(95)) || ((NU8)((*L).Sup.buf[postpos])) >= ((NU8)(97)) && ((NU8)((*L).Sup.buf[postpos])) <= ((NU8)(102)) || ((NU8)((*L).Sup.buf[postpos])) == ((NU8)(111)) || ((NU8)((*L).Sup.buf[postpos])) == ((NU8)(120)));
		if (LOC102) goto LA103;
		LOC104 = 0;
		LOC104 = ((NU8)((*L).Sup.buf[postpos]) == (NU8)(46));
		if (!(LOC104)) goto LA105;
		LOC104 = (((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(NI)(postpos + ((NI) 1))])) <= ((NU8)(57)));
		LA105: ;
		LOC102 = LOC104;
		LA103: ;
		if (!LOC102) goto LA106;
		lexmessagelitnum_205611(L, ((NU16) 14), startpos);
	}
	LA106: ;
	(*L).Sup.bufpos = startpos;
	pos = startpos;
	pushSafePoint(&TMP1256);
	TMP1256.status = _setjmp(TMP1256.context);
	if (TMP1256.status == 0) {
		{
			NIM_BOOL LOC111;
			LOC111 = 0;
			LOC111 = ((NU8)((*L).Sup.buf[pos]) == (NU8)(48));
			if (!(LOC111)) goto LA112;
			LOC111 = (((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(88)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(120)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(111)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(99)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(67)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(98)) || ((NU8)((*L).Sup.buf[(NI)(pos + ((NI) 1))])) == ((NU8)(66)));
			LA112: ;
			if (!LOC111) goto LA113;
			pos += ((NI) 2);
			xi = IL64(0);
			switch (((NU8)((*L).Sup.buf[(NI)(pos - ((NI) 1))]))) {
			case 98:
			case 66:
			{
				(*Result).base = ((NU8) 1);
				{
					while (1) {
						if (!(pos < endpos)) goto LA117;
						{
							if (!!(((NU8)((*L).Sup.buf[pos]) == (NU8)(95)))) goto LA120;
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(1))) | ((NI64) ((NI)(((NI) (((NU8)((*L).Sup.buf[pos])))) - ((NI) 48)))));
						}
						LA120: ;
						pos += ((NI) 1);
					} LA117: ;
				}
			}
			break;
			case 111:
			case 99:
			case 67:
			{
				(*Result).base = ((NU8) 2);
				{
					while (1) {
						if (!(pos < endpos)) goto LA124;
						{
							if (!!(((NU8)((*L).Sup.buf[pos]) == (NU8)(95)))) goto LA127;
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(3))) | ((NI64) ((NI)(((NI) (((NU8)((*L).Sup.buf[pos])))) - ((NI) 48)))));
						}
						LA127: ;
						pos += ((NI) 1);
					} LA124: ;
				}
			}
			break;
			case 120:
			case 88:
			{
				(*Result).base = ((NU8) 3);
				{
					while (1) {
						if (!(pos < endpos)) goto LA131;
						switch (((NU8)((*L).Sup.buf[pos]))) {
						case 95:
						{
							pos += ((NI) 1);
						}
						break;
						case 48 ... 57:
						{
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(4))) | ((NI64) ((NI)(((NI) (((NU8)((*L).Sup.buf[pos])))) - ((NI) 48)))));
							pos += ((NI) 1);
						}
						break;
						case 97 ... 102:
						{
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(4))) | ((NI64) ((NI)(((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[pos])))) - ((NI) 97)))) + ((NI) 10)))));
							pos += ((NI) 1);
						}
						break;
						case 65 ... 70:
						{
							xi = (NI64)((NI64)((NU64)(xi) << (NU64)(IL64(4))) | ((NI64) ((NI)(((NI) ((NI)(((NI) (((NU8)((*L).Sup.buf[pos])))) - ((NI) 65)))) + ((NI) 10)))));
							pos += ((NI) 1);
						}
						break;
						default:
						{
							goto LA130;
						}
						break;
						}
					} LA131: ;
				} LA130: ;
			}
			break;
			default:
			{
				Tlineinfo182337 LOC138;
				LOC138 = getlineinfo_205352((&(*L)));
				internalerror_187100(LOC138, ((NimStringDesc*) &TMP1255));
			}
			break;
			}
			switch ((*Result).toktype) {
			case ((NU8) 73):
			case ((NU8) 77):
			{
				(*Result).inumber = xi;
			}
			break;
			case ((NU8) 74):
			{
				(*Result).inumber = ((NI64) (((NI8)(NU8)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 75):
			{
				(*Result).inumber = ((NI64) (((NI16)(NU16)(NU)(((NI) (xi))))));
			}
			break;
			case ((NU8) 76):
			{
				(*Result).inumber = ((NI64) (((NI32)(NU32)(NU64)(xi))));
			}
			break;
			case ((NU8) 78):
			case ((NU8) 82):
			{
				(*Result).inumber = xi;
			}
			break;
			case ((NU8) 79):
			{
				(*Result).inumber = ((NI64) (((NU8) (((NI8)(NU8)(NU)(((NI) (xi))))))));
			}
			break;
			case ((NU8) 80):
			{
				(*Result).inumber = ((NI64) (((NU16) (((NI16)(NU16)(NU)(((NI) (xi))))))));
			}
			break;
			case ((NU8) 81):
			{
				(*Result).inumber = ((NI64) (((NU32) (((NI32)(NU32)(NU64)(xi))))));
			}
			break;
			case ((NU8) 84):
			{
				(*Result).fnumber = ((NF) ((*((NF32*) ((&xi))))));
			}
			break;
			case ((NU8) 85):
			{
				(*Result).fnumber = (*((NF*) ((&xi))));
			}
			break;
			default:
			{
				Tlineinfo182337 LOC150;
				LOC150 = getlineinfo_205352((&(*L)));
				internalerror_187100(LOC150, ((NimStringDesc*) &TMP1255));
			}
			break;
			}
			{
				NIM_BOOL outofrange;
				if (!!(((*Result).toktype == ((NU8) 83) || (*Result).toktype == ((NU8) 84) || (*Result).toktype == ((NU8) 85) || (*Result).toktype == ((NU8) 86)))) goto LA153;
				switch ((*Result).toktype) {
				case ((NU8) 79):
				case ((NU8) 80):
				case ((NU8) 81):
				{
					outofrange = !(((*Result).inumber == xi));
				}
				break;
				case ((NU8) 74):
				{
					outofrange = (IL64(255) < xi);
				}
				break;
				case ((NU8) 75):
				{
					outofrange = (IL64(65535) < xi);
				}
				break;
				case ((NU8) 76):
				{
					outofrange = (IL64(4294967295) < xi);
				}
				break;
				default:
				{
					outofrange = NIM_FALSE;
				}
				break;
				}
				{
					if (!outofrange) goto LA162;
					lexmessagelitnum_205611(L, ((NU16) 16), startpos);
				}
				LA162: ;
			}
			LA153: ;
		}
		goto LA109;
		LA113: ;
		{
			NIM_BOOL outofrange;
			switch ((*Result).toktype) {
			case ((NU8) 83):
			case ((NU8) 84):
			case ((NU8) 85):
			case ((NU8) 86):
			{
				(*Result).fnumber = nsuParseFloat((*Result).literal);
			}
			break;
			case ((NU8) 82):
			{
				NI len;
				xi = IL64(0);
				len = unsafeparseuint_205442((*Result).literal, (&xi), ((NI) 0));
				{
					NIM_BOOL LOC169;
					Valueerror3646* volatile e_206194;
					NimStringDesc* LOC173;
					NimStringDesc* LOC174;
					LOC169 = 0;
					LOC169 = !((len == ((*Result).literal ? (*Result).literal->Sup.len : 0)));
					if (LOC169) goto LA170;
					LOC169 = (len == ((NI) 0));
					LA170: ;
					if (!LOC169) goto LA171;
					e_206194 = 0;
					e_206194 = (Valueerror3646*) newObj((&NTI23625), sizeof(Valueerror3646));
					(*e_206194).Sup.Sup.m_type = (&NTI3646);
					LOC173 = 0;
					LOC174 = 0;
					LOC174 = nimInt64ToStr(xi);
					LOC173 = rawNewString(LOC174->Sup.len + 17);
appendString(LOC173, ((NimStringDesc*) &TMP1257));
appendString(LOC173, LOC174);
					asgnRefNoCycle((void**) (&(*e_206194).Sup.message), LOC173);
					raiseException((Exception*)e_206194, "ValueError");
				}
				LA171: ;
				(*Result).inumber = xi;
			}
			break;
			default:
			{
				(*Result).inumber = nsuParseBiggestInt((*Result).literal);
			}
			break;
			}
			switch ((*Result).toktype) {
			case ((NU8) 74):
			{
				NIM_BOOL LOC177;
				LOC177 = 0;
				LOC177 = ((*Result).inumber < IL64(-128));
				if (LOC177) goto LA178;
				LOC177 = (IL64(127) < (*Result).inumber);
				LA178: ;
				outofrange = LOC177;
			}
			break;
			case ((NU8) 79):
			{
				NIM_BOOL LOC180;
				LOC180 = 0;
				LOC180 = ((*Result).inumber < IL64(0));
				if (LOC180) goto LA181;
				LOC180 = (IL64(255) < (*Result).inumber);
				LA181: ;
				outofrange = LOC180;
			}
			break;
			case ((NU8) 75):
			{
				NIM_BOOL LOC183;
				LOC183 = 0;
				LOC183 = ((*Result).inumber < IL64(-32768));
				if (LOC183) goto LA184;
				LOC183 = (IL64(32767) < (*Result).inumber);
				LA184: ;
				outofrange = LOC183;
			}
			break;
			case ((NU8) 80):
			{
				NIM_BOOL LOC186;
				LOC186 = 0;
				LOC186 = ((*Result).inumber < IL64(0));
				if (LOC186) goto LA187;
				LOC186 = (IL64(65535) < (*Result).inumber);
				LA187: ;
				outofrange = LOC186;
			}
			break;
			case ((NU8) 76):
			{
				NIM_BOOL LOC189;
				LOC189 = 0;
				LOC189 = ((*Result).inumber < IL64(-2147483648));
				if (LOC189) goto LA190;
				LOC189 = (IL64(2147483647) < (*Result).inumber);
				LA190: ;
				outofrange = LOC189;
			}
			break;
			case ((NU8) 81):
			{
				NIM_BOOL LOC192;
				LOC192 = 0;
				LOC192 = ((*Result).inumber < IL64(0));
				if (LOC192) goto LA193;
				LOC192 = (IL64(4294967295) < (*Result).inumber);
				LA193: ;
				outofrange = LOC192;
			}
			break;
			default:
			{
				outofrange = NIM_FALSE;
			}
			break;
			}
			{
				if (!outofrange) goto LA197;
				lexmessagelitnum_205611(L, ((NU16) 16), startpos);
			}
			LA197: ;
		}
		LA109: ;
		{
			if (!((*Result).toktype == ((NU8) 73))) goto LA201;
			{
				NIM_BOOL LOC205;
				LOC205 = 0;
				LOC205 = ((*Result).inumber < IL64(-2147483648));
				if (LOC205) goto LA206;
				LOC205 = (IL64(2147483647) < (*Result).inumber);
				LA206: ;
				if (!LOC205) goto LA207;
				(*Result).toktype = ((NU8) 77);
			}
			LA207: ;
		}
		LA201: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI3646))) {
			TMP1256.status = 0;
			lexmessagelitnum_205611(L, ((NU16) 14), startpos);
			popCurrentException();
		}
		else 		if (isObj(getCurrentException()->Sup.m_type, (&NTI3640))||isObj(getCurrentException()->Sup.m_type, (&NTI3656))) {
			TMP1256.status = 0;
			lexmessagelitnum_205611(L, ((NU16) 16), startpos);
			popCurrentException();
		}
	}
	if (TMP1256.status != 0) reraiseException();
	(*L).Sup.bufpos = postpos;
}

N_NIMCALL(void, rawgettok_208824)(Tlexer205173* L, Ttoken205169* tok) {
	NIM_CHAR c;
	filltoken_205310(tok);
	{
		if (!(((NI) 0) <= (*L).indentahead)) goto LA3;
		(*tok).indent = (*L).indentahead;
		(*L).currlineindent = (*L).indentahead;
		(*L).indentahead = ((NI) -1);
	}
	goto LA1;
	LA3: ;
	{
		(*tok).indent = ((NI) -1);
	}
	LA1: ;
	skip_208443(L, tok);
	c = (*L).Sup.buf[(*L).Sup.bufpos];
	(*tok).line = (*L).Sup.linenumber;
	(*tok).col = getcolnumber_203038((&(*L).Sup), (*L).Sup.bufpos);
	{
		if (!(((NU8)(c)) >= ((NU8)(65)) && ((NU8)(c)) <= ((NU8)(81)) || ((NU8)(c)) >= ((NU8)(83)) && ((NU8)(c)) <= ((NU8)(90)) || ((NU8)(c)) >= ((NU8)(97)) && ((NU8)(c)) <= ((NU8)(107)) || ((NU8)(c)) >= ((NU8)(109)) && ((NU8)(c)) <= ((NU8)(113)) || ((NU8)(c)) >= ((NU8)(115)) && ((NU8)(c)) <= ((NU8)(122)) || ((NU8)(c)) >= ((NU8)(128)) && ((NU8)(c)) <= ((NU8)(255)))) goto LA8;
		getsymbol_206808(L, tok);
	}
	goto LA6;
	LA8: ;
	{
		switch (((NU8)(c))) {
		case 35:
		{
			scancomment_207222(L, tok);
		}
		break;
		case 42:
		{
			{
				NIM_BOOL LOC15;
				NI h;
				LOC15 = 0;
				LOC15 = ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(58));
				if (!(LOC15)) goto LA16;
				LOC15 = !(((TMP1247[(NU)(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 2))])))>>3] &(1U<<((NU)(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 2))])))&7U)))!=0));
				LA16: ;
				if (!LOC15) goto LA17;
				h = HEX21HEX26_137004(((NI) 0), ((NI) 42));
				endoperator_206962(L, tok, (NI)((*L).Sup.bufpos + ((NI) 1)), h);
			}
			goto LA13;
			LA17: ;
			{
				getoperator_206981(L, tok);
			}
			LA13: ;
		}
		break;
		case 44:
		{
			(*tok).toktype = ((NU8) 105);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 108:
		{
			{
				if (!!((((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(57)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(65)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(90)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) == ((NU8)(95)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(97)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(122)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) >= ((NU8)(128)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))])) <= ((NU8)(255))))) goto LA24;
				lexmessage_205370((&(*L)), ((NU16) 243), ((NimStringDesc*) &TMP797));
			}
			LA24: ;
			getsymbol_206808(L, tok);
		}
		break;
		case 114:
		case 82:
		{
			{
				if (!((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(34))) goto LA29;
				(*L).Sup.bufpos += ((NI) 1);
				getstring_206641(L, tok, NIM_TRUE);
			}
			goto LA27;
			LA29: ;
			{
				getsymbol_206808(L, tok);
			}
			LA27: ;
		}
		break;
		case 40:
		{
			(*L).Sup.bufpos += ((NI) 1);
			{
				NIM_BOOL LOC35;
				LOC35 = 0;
				LOC35 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(46));
				if (!(LOC35)) goto LA36;
				LOC35 = !(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(46)));
				LA36: ;
				if (!LOC35) goto LA37;
				(*tok).toktype = ((NU8) 103);
				(*L).Sup.bufpos += ((NI) 1);
			}
			goto LA33;
			LA37: ;
			{
				(*tok).toktype = ((NU8) 93);
			}
			LA33: ;
		}
		break;
		case 41:
		{
			(*tok).toktype = ((NU8) 94);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 91:
		{
			(*L).Sup.bufpos += ((NI) 1);
			{
				NIM_BOOL LOC44;
				LOC44 = 0;
				LOC44 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(46));
				if (!(LOC44)) goto LA45;
				LOC44 = !(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(46)));
				LA45: ;
				if (!LOC44) goto LA46;
				(*tok).toktype = ((NU8) 99);
				(*L).Sup.bufpos += ((NI) 1);
			}
			goto LA42;
			LA46: ;
			{
				(*tok).toktype = ((NU8) 95);
			}
			LA42: ;
		}
		break;
		case 93:
		{
			(*tok).toktype = ((NU8) 96);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 46:
		{
			{
				if (!((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(93))) goto LA53;
				(*tok).toktype = ((NU8) 100);
				(*L).Sup.bufpos += ((NI) 2);
			}
			goto LA51;
			LA53: ;
			{
				if (!((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(125))) goto LA56;
				(*tok).toktype = ((NU8) 102);
				(*L).Sup.bufpos += ((NI) 2);
			}
			goto LA51;
			LA56: ;
			{
				if (!((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(41))) goto LA59;
				(*tok).toktype = ((NU8) 104);
				(*L).Sup.bufpos += ((NI) 2);
			}
			goto LA51;
			LA59: ;
			{
				getoperator_206981(L, tok);
			}
			LA51: ;
		}
		break;
		case 123:
		{
			(*L).Sup.bufpos += ((NI) 1);
			{
				NIM_BOOL LOC65;
				LOC65 = 0;
				LOC65 = ((NU8)((*L).Sup.buf[(*L).Sup.bufpos]) == (NU8)(46));
				if (!(LOC65)) goto LA66;
				LOC65 = !(((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos + ((NI) 1))]) == (NU8)(46)));
				LA66: ;
				if (!LOC65) goto LA67;
				(*tok).toktype = ((NU8) 101);
				(*L).Sup.bufpos += ((NI) 1);
			}
			goto LA63;
			LA67: ;
			{
				(*tok).toktype = ((NU8) 97);
			}
			LA63: ;
		}
		break;
		case 125:
		{
			(*tok).toktype = ((NU8) 98);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 59:
		{
			(*tok).toktype = ((NU8) 106);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 96:
		{
			(*tok).toktype = ((NU8) 114);
			(*L).Sup.bufpos += ((NI) 1);
		}
		break;
		case 95:
		{
			(*L).Sup.bufpos += ((NI) 1);
			{
				if (!!((((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) >= ((NU8)(97)) && ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) <= ((NU8)(122)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) >= ((NU8)(65)) && ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) <= ((NU8)(90)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) <= ((NU8)(57)) || ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) >= ((NU8)(128)) && ((NU8)((*L).Sup.buf[(*L).Sup.bufpos])) <= ((NU8)(255))))) goto LA76;
				(*tok).toktype = ((NU8) 2);
				unsureAsgnRef((void**) (&(*tok).ident), getident_189441(((NimStringDesc*) &TMP1246)));
			}
			goto LA74;
			LA76: ;
			{
				NimStringDesc* LOC79;
				NimStringDesc* LOC80;
				unsureAsgnRef((void**) (&(*tok).literal), nimCharToStr(c));
				(*tok).toktype = ((NU8) 0);
				LOC79 = 0;
				LOC80 = 0;
				LOC80 = nimIntToStr(((NI) (((NU8)(c)))));
				LOC79 = rawNewString(LOC80->Sup.len + 5);
appendChar(LOC79, c);
appendString(LOC79, ((NimStringDesc*) &TMP1249));
appendString(LOC79, LOC80);
appendChar(LOC79, 41);
				lexmessage_205370((&(*L)), ((NU16) 12), LOC79);
			}
			LA74: ;
		}
		break;
		case 34:
		{
			NIM_BOOL rawmode;
			NIM_BOOL LOC82;
			LOC82 = 0;
			LOC82 = (((NI) 0) < (*L).Sup.bufpos);
			if (!(LOC82)) goto LA83;
			LOC82 = (((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) >= ((NU8)(97)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) <= ((NU8)(122)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) >= ((NU8)(65)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) <= ((NU8)(90)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) >= ((NU8)(48)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) <= ((NU8)(57)) || ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) >= ((NU8)(128)) && ((NU8)((*L).Sup.buf[(NI)((*L).Sup.bufpos - ((NI) 1))])) <= ((NU8)(255)));
			LA83: ;
			rawmode = LOC82;
			getstring_206641(L, tok, rawmode);
			{
				if (!rawmode) goto LA86;
				(*tok).toktype += ((NI) 2);
			}
			LA86: ;
		}
		break;
		case 39:
		{
			(*tok).toktype = ((NU8) 92);
			getcharacter_206764(L, tok);
			(*tok).toktype = ((NU8) 92);
		}
		break;
		case 48 ... 57:
		{
			getnumber_205527(L, (&(*tok)));
		}
		break;
		default:
		{
			{
				if (!((TMP1247[(NU)(((NU8)(c)))>>3] &(1U<<((NU)(((NU8)(c)))&7U)))!=0)) goto LA93;
				getoperator_206981(L, tok);
			}
			goto LA91;
			LA93: ;
			{
				if (!((NU8)(c) == (NU8)(0))) goto LA96;
				(*tok).toktype = ((NU8) 1);
				(*tok).indent = ((NI) 0);
			}
			goto LA91;
			LA96: ;
			{
				NimStringDesc* LOC99;
				NimStringDesc* LOC100;
				unsureAsgnRef((void**) (&(*tok).literal), nimCharToStr(c));
				(*tok).toktype = ((NU8) 0);
				LOC99 = 0;
				LOC100 = 0;
				LOC100 = nimIntToStr(((NI) (((NU8)(c)))));
				LOC99 = rawNewString(LOC100->Sup.len + 5);
appendChar(LOC99, c);
appendString(LOC99, ((NimStringDesc*) &TMP1249));
appendString(LOC99, LOC100);
appendChar(LOC99, 41);
				lexmessage_205370((&(*L)), ((NU16) 12), LOC99);
				(*L).Sup.bufpos += ((NI) 1);
			}
			LA91: ;
		}
		break;
		}
	}
	LA6: ;
}

N_NIMCALL(void, lexmessagetok_205375)(Tlexer205173* L, NU16 msg, Ttoken205169* tok, NimStringDesc* arg) {
	Tlineinfo182337 info;
	info = newlineinfo_183024((*L).fileidx, (*tok).line, (*tok).col);
	dispmessage_205356(L, info, msg, arg);
}

N_NIMCALL(NIM_BOOL, iskeyword_205205)(NU8 kind) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = (((NU8) 3) <= kind);
	if (!(LOC1)) goto LA2;
	LOC1 = (kind <= ((NU8) 72));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NimStringDesc*, toktostr_205281)(Ttoken205169* tok) {
	NimStringDesc* result;
	result = 0;
	switch ((*tok).toktype) {
	case ((NU8) 73) ... ((NU8) 77):
	{
		result = nimInt64ToStr((*tok).inumber);
	}
	break;
	case ((NU8) 83) ... ((NU8) 85):
	{
		result = nimFloatToStr((*tok).fnumber);
	}
	break;
	case ((NU8) 0):
	case ((NU8) 87) ... ((NU8) 92):
	case ((NU8) 113):
	{
		result = copyString((*tok).literal);
	}
	break;
	case ((NU8) 93) ... ((NU8) 107):
	case ((NU8) 1):
	case ((NU8) 114):
	{
		result = copyString(Toktypetostr_205160[((*tok).toktype)- 0]);
	}
	break;
	default:
	{
		{
			if (!!(((*tok).ident == NIM_NIL))) goto LA8;
			result = copyString((*(*tok).ident).s);
		}
		goto LA6;
		LA8: ;
		{
			internalerror_187113(((NimStringDesc*) &TMP1393));
			result = copyString(((NimStringDesc*) &TMP797));
		}
		LA6: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, prettytok_205297)(Ttoken205169* tok) {
	NimStringDesc* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = iskeyword_205205((*tok).toktype);
		if (!LOC3) goto LA4;
		LOC6 = 0;
		LOC6 = rawNewString((*(*tok).ident).s->Sup.len + 8);
appendString(LOC6, ((NimStringDesc*) &TMP1389));
appendString(LOC6, (*(*tok).ident).s);
		result = LOC6;
	}
	goto LA1;
	LA4: ;
	{
		result = toktostr_205281(tok);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, closelexer_205335)(Tlexer205173* lex) {
	Tbaselexer203015* LOC1;
	glinescompiled_205198 += (*lex).Sup.linenumber;
	LOC1 = 0;
	LOC1 = &lex->Sup;
	closebaselexer_203030(LOC1);
}

static N_INLINE(NIM_BOOL, ismagicidentseparatorrune_136008)(NCSTRING cs, NI i) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((NU8)(cs[i]) == (NU8)(226));
	if (!(LOC2)) goto LA3;
	LOC2 = ((NU8)(cs[(NI)(i + ((NI) 1))]) == (NU8)(128));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = ((NU8)(cs[(NI)(i + ((NI) 2))]) == (NU8)(147));
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NIM_BOOL, isnimidentifier_205227)(NimStringDesc* s) {
	NIM_BOOL result;
{	result = 0;
	{
		NI i;
		NI slen;
		if (!(((NU8)(s->data[((NI) 0)])) >= ((NU8)(97)) && ((NU8)(s->data[((NI) 0)])) <= ((NU8)(122)) || ((NU8)(s->data[((NI) 0)])) >= ((NU8)(65)) && ((NU8)(s->data[((NI) 0)])) <= ((NU8)(90)) || ((NU8)(s->data[((NI) 0)])) >= ((NU8)(128)) && ((NU8)(s->data[((NI) 0)])) <= ((NU8)(255)))) goto LA3;
		i = ((NI) 1);
		slen = (s ? s->Sup.len : 0);
		{
			while (1) {
				if (!(i < slen)) goto LA6;
				{
					if (!((NU8)(s->data[i]) == (NU8)(95))) goto LA9;
					i += ((NI) 1);
				}
				goto LA7;
				LA9: ;
				{
					NIM_BOOL LOC12;
					LOC12 = 0;
					LOC12 = ismagicidentseparatorrune_136008(s->data, i);
					if (!LOC12) goto LA13;
					i += ((NI) 3);
				}
				goto LA7;
				LA13: ;
				LA7: ;
				{
					if (!!((((NU8)(s->data[i])) >= ((NU8)(97)) && ((NU8)(s->data[i])) <= ((NU8)(122)) || ((NU8)(s->data[i])) >= ((NU8)(65)) && ((NU8)(s->data[i])) <= ((NU8)(90)) || ((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)) || ((NU8)(s->data[i])) >= ((NU8)(128)) && ((NU8)(s->data[i])) <= ((NU8)(255))))) goto LA17;
					goto BeforeRet;
				}
				LA17: ;
				i += ((NI) 1);
			} LA6: ;
		}
		result = NIM_TRUE;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, openlexer_205329)(Tlexer205173* lex, NimStringDesc* filename, Tllstream202204* inputstream) {
	NI32 LOC1;
	LOC1 = 0;
	LOC1 = fileinfoidx_183017(filename);
	openlexer_205314(lex, LOC1, inputstream);
}

N_NIMCALL(void, printtok_205301)(Ttoken205169* tok) {
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	NimStringDesc* LOC4;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = nimIntToStr((*tok).line);
	LOC3 = 0;
	LOC3 = nimIntToStr((*tok).col);
	LOC4 = 0;
	LOC4 = toktostr_205281(tok);
	LOC1 = rawNewString(LOC2->Sup.len + LOC3->Sup.len + Toktypetostr_205160[((*tok).toktype)- 0]->Sup.len + LOC4->Sup.len + 3);
appendString(LOC1, LOC2);
appendString(LOC1, ((NimStringDesc*) &TMP1377));
appendString(LOC1, LOC3);
appendString(LOC1, ((NimStringDesc*) &TMP5250));
appendString(LOC1, Toktypetostr_205160[((*tok).toktype)- 0]);
appendString(LOC1, ((NimStringDesc*) &TMP5251));
appendString(LOC1, LOC4);
	msgwriteln_183449(LOC1, 0);
}
NIM_EXTERNC N_NOINLINE(void, compiler_lexerInit000)(void) {
	asgnRefNoCycle((void**) (&dummyident_205304), getident_189441(((NimStringDesc*) &TMP797)));
}

NIM_EXTERNC N_NOINLINE(void, compiler_lexerDatInit000)(void) {
static TNimNode* TMP1215[5];
static TNimNode* TMP1216[2];
static TNimNode* TMP1218[11];
static TNimNode* TMP1219[119];
NI TMP1221;
static char* NIM_CONST TMP1220[119] = {
"tkInvalid", 
"tkEof", 
"tkSymbol", 
"tkAddr", 
"tkAnd", 
"tkAs", 
"tkAsm", 
"tkAtomic", 
"tkBind", 
"tkBlock", 
"tkBreak", 
"tkCase", 
"tkCast", 
"tkConcept", 
"tkConst", 
"tkContinue", 
"tkConverter", 
"tkDefer", 
"tkDiscard", 
"tkDistinct", 
"tkDiv", 
"tkDo", 
"tkElif", 
"tkElse", 
"tkEnd", 
"tkEnum", 
"tkExcept", 
"tkExport", 
"tkFinally", 
"tkFor", 
"tkFrom", 
"tkFunc", 
"tkGeneric", 
"tkIf", 
"tkImport", 
"tkIn", 
"tkInclude", 
"tkInterface", 
"tkIs", 
"tkIsnot", 
"tkIterator", 
"tkLet", 
"tkMacro", 
"tkMethod", 
"tkMixin", 
"tkMod", 
"tkNil", 
"tkNot", 
"tkNotin", 
"tkObject", 
"tkOf", 
"tkOr", 
"tkOut", 
"tkProc", 
"tkPtr", 
"tkRaise", 
"tkRef", 
"tkReturn", 
"tkShl", 
"tkShr", 
"tkStatic", 
"tkTemplate", 
"tkTry", 
"tkTuple", 
"tkType", 
"tkUsing", 
"tkVar", 
"tkWhen", 
"tkWhile", 
"tkWith", 
"tkWithout", 
"tkXor", 
"tkYield", 
"tkIntLit", 
"tkInt8Lit", 
"tkInt16Lit", 
"tkInt32Lit", 
"tkInt64Lit", 
"tkUIntLit", 
"tkUInt8Lit", 
"tkUInt16Lit", 
"tkUInt32Lit", 
"tkUInt64Lit", 
"tkFloatLit", 
"tkFloat32Lit", 
"tkFloat64Lit", 
"tkFloat128Lit", 
"tkStrLit", 
"tkRStrLit", 
"tkTripleStrLit", 
"tkGStrLit", 
"tkGTripleStrLit", 
"tkCharLit", 
"tkParLe", 
"tkParRi", 
"tkBracketLe", 
"tkBracketRi", 
"tkCurlyLe", 
"tkCurlyRi", 
"tkBracketDotLe", 
"tkBracketDotRi", 
"tkCurlyDotLe", 
"tkCurlyDotRi", 
"tkParDotLe", 
"tkParDotRi", 
"tkComma", 
"tkSemiColon", 
"tkColon", 
"tkColonColon", 
"tkEquals", 
"tkDot", 
"tkDotDot", 
"tkOpr", 
"tkComment", 
"tkAccent", 
"tkSpaces", 
"tkInfixOpr", 
"tkPrefixOpr", 
"tkPostfixOpr"};
static TNimNode* TMP1222[4];
NI TMP1224;
static char* NIM_CONST TMP1223[4] = {
"base10", 
"base2", 
"base8", 
"base16"};
static TNimNode TMP791[147];
NTI205173.size = sizeof(Tlexer205173);
NTI205173.kind = 17;
NTI205173.base = (&NTI203015);
TMP1215[0] = &TMP791[1];
TMP791[1].kind = 1;
TMP791[1].offset = offsetof(Tlexer205173, fileidx);
TMP791[1].typ = (&NTI110);
TMP791[1].name = "fileIdx";
TMP1215[1] = &TMP791[2];
TMP791[2].kind = 1;
TMP791[2].offset = offsetof(Tlexer205173, indentahead);
TMP791[2].typ = (&NTI104);
TMP791[2].name = "indentAhead";
TMP1215[2] = &TMP791[3];
TMP791[3].kind = 1;
TMP791[3].offset = offsetof(Tlexer205173, currlineindent);
TMP791[3].typ = (&NTI104);
TMP791[3].name = "currLineIndent";
TMP1215[3] = &TMP791[4];
TMP791[4].kind = 1;
TMP791[4].offset = offsetof(Tlexer205173, strongspaces);
TMP791[4].typ = (&NTI130);
TMP791[4].name = "strongSpaces";
TMP1215[4] = &TMP791[5];
NTI205171.size = sizeof(TY531873);
NTI205171.kind = 18;
NTI205171.base = 0;
NTI205171.flags = 2;
TMP1216[0] = &TMP791[7];
TMP791[7].kind = 1;
TMP791[7].offset = offsetof(TY531873, Field0);
TMP791[7].typ = (&NTI142);
TMP791[7].name = "Field0";
TMP1216[1] = &TMP791[8];
NTI531876.size = sizeof(TY531876);
NTI531876.kind = 18;
NTI531876.base = 0;
NTI531876.flags = 3;
TMP791[9].len = 0; TMP791[9].kind = 2;
NTI531876.node = &TMP791[9];
NTI531875.size = sizeof(TY531876*);
NTI531875.kind = 22;
NTI531875.base = (&NTI531876);
NTI531875.flags = 2;
NTI531875.marker = TMP1217;
TMP791[8].kind = 1;
TMP791[8].offset = offsetof(TY531873, Field1);
TMP791[8].typ = (&NTI531875);
TMP791[8].name = "Field1";
TMP791[6].len = 2; TMP791[6].kind = 2; TMP791[6].sons = &TMP1216[0];
NTI205171.node = &TMP791[6];
TMP791[5].kind = 1;
TMP791[5].offset = offsetof(Tlexer205173, errorhandler);
TMP791[5].typ = (&NTI205171);
TMP791[5].name = "errorHandler";
TMP791[0].len = 5; TMP791[0].kind = 2; TMP791[0].sons = &TMP1215[0];
NTI205173.node = &TMP791[0];
NTI205169.size = sizeof(Ttoken205169);
NTI205169.kind = 18;
NTI205169.base = 0;
NTI205169.flags = 2;
TMP1218[0] = &TMP791[11];
NTI205016.size = sizeof(NU8);
NTI205016.kind = 14;
NTI205016.base = 0;
NTI205016.flags = 3;
for (TMP1221 = 0; TMP1221 < 119; TMP1221++) {
TMP791[TMP1221+12].kind = 1;
TMP791[TMP1221+12].offset = TMP1221;
TMP791[TMP1221+12].name = TMP1220[TMP1221];
TMP1219[TMP1221] = &TMP791[TMP1221+12];
}
TMP791[131].len = 119; TMP791[131].kind = 2; TMP791[131].sons = &TMP1219[0];
NTI205016.node = &TMP791[131];
TMP791[11].kind = 1;
TMP791[11].offset = offsetof(Ttoken205169, toktype);
TMP791[11].typ = (&NTI205016);
TMP791[11].name = "tokType";
TMP1218[1] = &TMP791[132];
TMP791[132].kind = 1;
TMP791[132].offset = offsetof(Ttoken205169, indent);
TMP791[132].typ = (&NTI104);
TMP791[132].name = "indent";
TMP1218[2] = &TMP791[133];
TMP791[133].kind = 1;
TMP791[133].offset = offsetof(Ttoken205169, ident);
TMP791[133].typ = (&NTI189010);
TMP791[133].name = "ident";
TMP1218[3] = &TMP791[134];
TMP791[134].kind = 1;
TMP791[134].offset = offsetof(Ttoken205169, inumber);
TMP791[134].typ = (&NTI7088);
TMP791[134].name = "iNumber";
TMP1218[4] = &TMP791[135];
TMP791[135].kind = 1;
TMP791[135].offset = offsetof(Ttoken205169, fnumber);
TMP791[135].typ = (&NTI7090);
TMP791[135].name = "fNumber";
TMP1218[5] = &TMP791[136];
NTI205167.size = sizeof(NU8);
NTI205167.kind = 14;
NTI205167.base = 0;
NTI205167.flags = 3;
for (TMP1224 = 0; TMP1224 < 4; TMP1224++) {
TMP791[TMP1224+137].kind = 1;
TMP791[TMP1224+137].offset = TMP1224;
TMP791[TMP1224+137].name = TMP1223[TMP1224];
TMP1222[TMP1224] = &TMP791[TMP1224+137];
}
TMP791[141].len = 4; TMP791[141].kind = 2; TMP791[141].sons = &TMP1222[0];
NTI205167.node = &TMP791[141];
TMP791[136].kind = 1;
TMP791[136].offset = offsetof(Ttoken205169, base);
TMP791[136].typ = (&NTI205167);
TMP791[136].name = "base";
TMP1218[6] = &TMP791[142];
TMP791[142].kind = 1;
TMP791[142].offset = offsetof(Ttoken205169, strongspacea);
TMP791[142].typ = (&NTI106);
TMP791[142].name = "strongSpaceA";
TMP1218[7] = &TMP791[143];
TMP791[143].kind = 1;
TMP791[143].offset = offsetof(Ttoken205169, strongspaceb);
TMP791[143].typ = (&NTI106);
TMP791[143].name = "strongSpaceB";
TMP1218[8] = &TMP791[144];
TMP791[144].kind = 1;
TMP791[144].offset = offsetof(Ttoken205169, literal);
TMP791[144].typ = (&NTI138);
TMP791[144].name = "literal";
TMP1218[9] = &TMP791[145];
TMP791[145].kind = 1;
TMP791[145].offset = offsetof(Ttoken205169, line);
TMP791[145].typ = (&NTI104);
TMP791[145].name = "line";
TMP1218[10] = &TMP791[146];
TMP791[146].kind = 1;
TMP791[146].offset = offsetof(Ttoken205169, col);
TMP791[146].typ = (&NTI104);
TMP791[146].name = "col";
TMP791[10].len = 11; TMP791[10].kind = 2; TMP791[10].sons = &TMP1218[0];
NTI205169.node = &TMP791[10];
}

