/* Generated by Nim Compiler v0.16.0 */
/*   (c) 2017 Andreas Rumpf */
/* The generated code is subject to the original license. */
/* Compiled for: Linux, arm, gcc */
/* Command for C compiler:
   gcc -c  -w -O3 -fno-strict-aliasing -fPIC  -I/build/nim/src/Nim-0.16.0/lib -o lib/nimcache/stdlib_strutils.o lib/nimcache/stdlib_strutils.c */
#define NIM_INTBITS 32

#include "nimbase.h"
#include <string.h>
#include <stdio.h>
#undef linux
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct TY_sM4lkSb7zS6F7OVMvW9cffQ TY_sM4lkSb7zS6F7OVMvW9cffQ;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Cell_1zcF9cV8XIAtbN8h5HRUB8g Cell_1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct Valueerror_Gi06FkNeykJn7mrqRZYrkA Valueerror_Gi06FkNeykJn7mrqRZYrkA;
typedef struct Exception Exception;
typedef struct TNimObject TNimObject;
typedef struct Slice_qL3WGViqT0p5sVr4YFHsLg Slice_qL3WGViqT0p5sVr4YFHsLg;
typedef struct TY_qwqHTkRvwhrRyENtudHQ7g TY_qwqHTkRvwhrRyENtudHQ7g;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NU8 TY_nmiMWKVIe46vacnhAFrQvw_Set[32];
typedef NU8 Tnimkind_jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 Tnimtypeflag_v8QUszD1sWlSIWZz7mC4bQ_Set;
typedef N_NIMCALL_PTR(void, TY_ojoeKfW4VYIm36I9cpDTQIg) (void* p0, NI op0);
typedef N_NIMCALL_PTR(void*, TY_WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p0);
struct  TNimType  {
NI size;
Tnimkind_jIBKr1ejBgsfM33Kxw4j7A kind;
Tnimtypeflag_v8QUszD1sWlSIWZz7mC4bQ_Set flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY_ojoeKfW4VYIm36I9cpDTQIg marker;
TY_WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 Tnimnodekind_unfNsxrcATrufDZmpBq4HQ;
struct  TNimNode  {
Tnimnodekind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  Cell_1zcF9cV8XIAtbN8h5HRUB8g  {
NI refcount;
TNimType* typ;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Exception  {
  TNimObject Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
struct  Valueerror_Gi06FkNeykJn7mrqRZYrkA  {
  Exception Sup;
};
struct  Slice_qL3WGViqT0p5sVr4YFHsLg  {
NI a;
NI b;
};
typedef NI TY_9cc9aPiDa8VaWjVcFLabEDZQ[256];
typedef NU8 Floatformatmode_pNvEoaqwoxKyoASD11vSgQ;
typedef NIM_CHAR TY_9bPFPkkEEeeNM9bKgiV8Q49cg[6];
typedef NIM_CHAR TY_Kn8ZOVsorvcNLB4isUeMzQ[2501];
typedef NIM_CHAR TY_vB7L5YKNrMfbzoUubCEcYg[3];
typedef NimStringDesc* TY_nHXaesL0DJZHyVS07ARPRA[1];
struct TY_sM4lkSb7zS6F7OVMvW9cffQ {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct TY_qwqHTkRvwhrRyENtudHQ7g {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaAsciiChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaNumericChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsDigitChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsSpaceAsciiChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsLowerAsciiChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsUpperAsciiChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaAsciiStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaNumericStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsDigitStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsSpaceAsciiStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsLowerAsciiStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsUpperAsciiStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_CHAR, nsuToLowerAsciiChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToLowerAsciiStr)(NimStringDesc* s0);
N_NIMCALL(NimStringDesc*, mnewString)(NI len0);
N_NIMCALL(NimStringDesc*, mnewString)(NI len0);
N_LIB_EXPORT N_CDECL(NIM_CHAR, nsuToUpperAsciiChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToUpperAsciiStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuCapitalizeAscii)(NimStringDesc* s0);
static N_INLINE(void, appendChar)(NimStringDesc* dest0, NIM_CHAR c0);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s0, NI start0);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s0, NI first0);
static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0);
static N_INLINE(void, copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem)(void* dest0, void* source0, NI size0);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsSpaceChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsLowerChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsUpperChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsSpaceStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsLowerStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsUpperStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_CHAR, nsuToLowerChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToLowerStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_CHAR, nsuToUpperChar)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToUpperStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuCapitalize)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuNormalize)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_setLengthStr)(NimStringDesc* s0, NI newlen0);
N_LIB_EXPORT N_CDECL(NI, nsuCmpIgnoreCase)(NimStringDesc* a0, NimStringDesc* b0);
N_LIB_EXPORT N_CDECL(NI, nsuCmpIgnoreStyle)(NimStringDesc* a0, NimStringDesc* b0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuStrip)(NimStringDesc* s0, NIM_BOOL leading0, NIM_BOOL trailing0, TY_nmiMWKVIe46vacnhAFrQvw_Set chars0);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI start_WPWyPKk58Cr5a6XFFviMjg, NI last0);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI first0, NI last0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToOctal)(NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsNilOrEmpty)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsNilOrWhitespace)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuSplitWhitespace)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(void, nimrtl_nimGCvisit)(void* d0, NI op0);
static N_NIMCALL(void, Marker_TY_sM4lkSb7zS6F7OVMvW9cffQ)(void* p, NI op);
N_LIB_EXPORT N_CDECL(void*, nimrtl_newSeq)(TNimType* typ0, NI len0);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq0, NI elemsize0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_copyStringRC1)(NimStringDesc* src0);
static N_INLINE(void, nimGCunrefNoCycle)(void* p0);
static N_INLINE(Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr0);
N_LIB_EXPORT N_CDECL(void, nimrtl_rtlAddZCT)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuSplitLines)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NI, nsuCountLines)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuSplitCharSet)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set seps0, NI maxsplit0);
N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuSplitChar)(NimStringDesc* s0, NIM_CHAR sep0, NI maxsplit0);
N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuSplitString)(NimStringDesc* s0, NimStringDesc* sep0, NI maxsplit0);
N_NOINLINE(void, raiseassert_PpfSiTIeNpMAb9a5o6SglJw)(NimStringDesc* msg0);
N_NIMCALL(NIM_BOOL, substreq_7ngl0F5lryTkSAj7sYQ7pw)(NimStringDesc* s0, NI pos0, NimStringDesc* substr0);
N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuRSplitCharSet)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set seps0, NI maxsplit0);
N_NIMCALL(void, reverse_LoixoqZetR6FfezoPedx8w)(NimStringDesc** a0, NI a0Len0);
N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuRSplitChar)(NimStringDesc* s0, NIM_CHAR sep0, NI maxsplit0);
N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuRSplitString)(NimStringDesc* s0, NimStringDesc* sep0, NI maxsplit0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToHex)(NI64 x0, NI len0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuIntToStr)(NI x0, NI minchars0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_nimIntToStr)(NI x0);
N_LIB_EXPORT N_CDECL(NI, nsuParseInt)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NI, npuParseInt)(NimStringDesc* s0, NI* number0, NI start0);
N_LIB_EXPORT N_CDECL(void*, nimrtl_newObj)(TNimType* typ0, NI size0);
static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0);
N_LIB_EXPORT N_CDECL(void, nimrtl_raiseException)(Exception* e0, NCSTRING ename0);
N_LIB_EXPORT N_CDECL(NI64, nsuParseBiggestInt)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NI, npuParseBiggestInt)(NimStringDesc* s0, NI64* number0, NI start0);
N_LIB_EXPORT N_CDECL(NU, nsuParseUInt)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NI, npuParseUInt)(NimStringDesc* s0, NU* number0, NI start0);
N_LIB_EXPORT N_CDECL(NU64, nsuParseBiggestUInt)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NI, npuParseBiggestUInt)(NimStringDesc* s0, NU64* number0, NI start0);
N_LIB_EXPORT N_CDECL(NF, nsuParseFloat)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NI, npuParseFloat)(NimStringDesc* s0, NF* number0, NI start0);
N_LIB_EXPORT N_CDECL(NI, nsuParseHexInt)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuRepeatChar)(NIM_CHAR c0, NI count0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuRepeatStr)(NimStringDesc* s0, NI n0);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_resizeString)(NimStringDesc* dest0, NI addlen0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuAlignString)(NimStringDesc* s0, NI count0, NIM_CHAR padding0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_copyString)(NimStringDesc* src0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuWordWrap)(NimStringDesc* s0, NI maxlinewidth0, NIM_BOOL splitlongwords0, TY_nmiMWKVIe46vacnhAFrQvw_Set seps0, NimStringDesc* newline0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuIndent)(NimStringDesc* s0, NI count0, NimStringDesc* padding0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuUnindent)(NimStringDesc* s0, NI count0, NimStringDesc* padding0);
static N_INLINE(NimStringDesc*, HEX5BHEX5D_Sq9b57KCLKZryBwyHy49aBswstrutils)(NimStringDesc* s0, Slice_qL3WGViqT0p5sVr4YFHsLg x0);
static N_INLINE(Slice_qL3WGViqT0p5sVr4YFHsLg, HEX2EHEX2E_18yoMoUbfoITYgEZSwZDYAstrutils)(NI a0, NI b0);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a0, NimStringDesc* b0);
static N_INLINE(NIM_BOOL, equalmem_DCrUjdaMvFDHaR1hs7sQGwstrutils)(void* a0, void* b0, NI size0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuUnindentAll)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s0, NimStringDesc* prefix0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuEndsWith)(NimStringDesc* s0, NimStringDesc* suffix0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuContinuesWith)(NimStringDesc* s0, NimStringDesc* substr0, NI start0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuJoinSep)(NimStringDesc** a0, NI a0Len0, NimStringDesc* sep0);
N_LIB_EXPORT N_CDECL(NI, nsuFindStr)(NimStringDesc* s0, NimStringDesc* sub0, NI start0);
N_NIMCALL(void, preprocesssub_IhQT0o4blhF4hbhCz0srsw)(NimStringDesc* sub0, NI* a0);
N_NIMCALL(NI, findaux_twow8DFxO4IDgSmpDGkD0g)(NimStringDesc* s0, NimStringDesc* sub0, NI start0, TY_9cc9aPiDa8VaWjVcFLabEDZQ a0);
N_LIB_EXPORT N_CDECL(NI, nsuFindChar)(NimStringDesc* s0, NIM_CHAR sub0, NI start0);
N_LIB_EXPORT N_CDECL(NI, nsuFindCharSet)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set chars0, NI start0);
N_LIB_EXPORT N_CDECL(NI, nimrtl_rfind)(NimStringDesc* s0, NIM_CHAR sub0, NI start0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuCenterString)(NimStringDesc* s0, NI width0, NIM_CHAR fillchar0);
N_LIB_EXPORT N_CDECL(NI, nsuCountString)(NimStringDesc* s0, NimStringDesc* sub0, NIM_BOOL overlapping0);
N_LIB_EXPORT N_CDECL(NI, nsuCountChar)(NimStringDesc* s0, NIM_CHAR sub0);
N_LIB_EXPORT N_CDECL(NI, nsuCountCharSet)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set subs0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuReplaceStr)(NimStringDesc* s0, NimStringDesc* sub0, NimStringDesc* by0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuReplaceChar)(NimStringDesc* s0, NIM_CHAR sub0, NIM_CHAR by0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuReplaceWord)(NimStringDesc* s0, NimStringDesc* sub0, NimStringDesc* by0);
N_LIB_EXPORT N_CDECL(void, nsuDelete)(NimStringDesc** s0, NI first0, NI last0);
N_LIB_EXPORT N_CDECL(NI, nsuParseOctInt)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToOct)(NI64 x0, NI len0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToBin)(NI64 x0, NI len0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuInsertSep)(NimStringDesc* s0, NIM_CHAR sep0, NI digits0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuEscape)(NimStringDesc* s0, NimStringDesc* prefix0, NimStringDesc* suffix0);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s0, NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuUnescape)(NimStringDesc* s0, NimStringDesc* prefix0, NimStringDesc* suffix0);
N_LIB_EXPORT N_CDECL(NI, npuParseHex)(NimStringDesc* s0, NI* number0, NI start0, NI maxlen0);
N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuValidIdentifier)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NI, nsuEditDistance)(NimStringDesc* a0, NimStringDesc* b0);
static N_NIMCALL(void, Marker_TY_qwqHTkRvwhrRyENtudHQ7g)(void* p, NI op);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuformatBiggestFloat)(NF f0, Floatformatmode_pNvEoaqwoxKyoASD11vSgQ format0, NI precision0, NIM_CHAR decimalsep0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuformatFloat)(NF f0, Floatformatmode_pNvEoaqwoxKyoASD11vSgQ format0, NI precision0, NIM_CHAR decimalsep0);
N_LIB_EXPORT N_CDECL(void, nsuAddf)(NimStringDesc** s0, NimStringDesc* formatstr0, NimStringDesc** a0, NI a0Len0);
N_NOINLINE(void, invalidformatstring_61EJWW6vRISEo9a8gt0tusw)(void);
N_NIMCALL(NI, findnormalized_SW1VCMDsxPTtzxnYrf3N6w)(NimStringDesc* x0, NimStringDesc** inarray0, NI inarray0Len0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr0, NimStringDesc** a0, NI a0Len0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr0, NimStringDesc* a0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuFormatVarargs)(NimStringDesc* formatstr0, NimStringDesc** a0, NI a0Len0);
N_LIB_EXPORT N_CDECL(void, nsuRemoveSuffixCharSet)(NimStringDesc** s0, TY_nmiMWKVIe46vacnhAFrQvw_Set chars0);
N_LIB_EXPORT N_CDECL(void, nsuRemoveSuffixChar)(NimStringDesc** s0, NIM_CHAR c0);
N_LIB_EXPORT N_CDECL(void, nsuRemoveSuffixString)(NimStringDesc** s0, NimStringDesc* suffix0);
extern TNimType NTI_77mFvmsOLKik79ci2hXkHEg;
TNimType NTI_sM4lkSb7zS6F7OVMvW9cffQ;
extern TNimType NTI_yCEN9anxCD6mzBxGjuaRBdg;
extern TNimType NTI_Gi06FkNeykJn7mrqRZYrkA;
extern TNimType NTI_rR5Bzr1D5krxoo1NcNyeMA;
TNimType NTI_qwqHTkRvwhrRyENtudHQ7g;
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_2, "\012  0 < len(sep) ", 16);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_3, "0123456789ABCDEF", 16);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_4, "invalid integer: ", 17);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_5, "invalid unsigned integer: ", 26);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_6, "invalid float: ", 15);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_7, "", 0);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_8, "\012", 1);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_9, " ", 1);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_10, "\\x", 2);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_11, "\\\\", 2);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_12, "\\\'", 2);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_13, "\\\"", 2);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_14, "String does not start with a prefix of: ", 40);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_15, "\\", 1);
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_16, "String does not end with a suffix of: ", 38);
NIM_CONST TY_vB7L5YKNrMfbzoUubCEcYg floatformattochar_WVISPus3ZqCVSuP9bzn9cVxw = {103,
102,
101}
;
STRING_LITERAL(T_JGc9b9bh2D3nTdUR7TGyq8aA_17, "invalid format string", 21);
static NIM_CONST TY_nmiMWKVIe46vacnhAFrQvw_Set T_JGc9b9bh2D3nTdUR7TGyq8aA_18 = {
0x00, 0x24, 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, 0x00, 0x00, 0x00, 0x00, 0x00}
;

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaAsciiChar)(NIM_CHAR c0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	result0 = (((NU8)(c0)) >= ((NU8)(65)) && ((NU8)(c0)) <= ((NU8)(90)) || ((NU8)(c0)) >= ((NU8)(97)) && ((NU8)(c0)) <= ((NU8)(122)));
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaNumericChar)(NIM_CHAR c0) {
	NIM_BOOL result0;
	NIM_BOOL LOC1;
{	result0 = (NIM_BOOL)0;
	LOC1 = (NIM_BOOL)0;
	LOC1 = (((NU8)(c0)) >= ((NU8)(65)) && ((NU8)(c0)) <= ((NU8)(90)) || ((NU8)(c0)) >= ((NU8)(97)) && ((NU8)(c0)) <= ((NU8)(122)));
	if (LOC1) goto LA2;
	LOC1 = (((NU8)(c0)) >= ((NU8)(48)) && ((NU8)(c0)) <= ((NU8)(57)));
	LA2: ;
	result0 = LOC1;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsDigitChar)(NIM_CHAR c0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	result0 = (((NU8)(c0)) >= ((NU8)(48)) && ((NU8)(c0)) <= ((NU8)(57)));
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsSpaceAsciiChar)(NIM_CHAR c0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	result0 = (((NU8)(c0)) == ((NU8)(32)) || ((NU8)(c0)) == ((NU8)(9)) || ((NU8)(c0)) == ((NU8)(11)) || ((NU8)(c0)) == ((NU8)(13)) || ((NU8)(c0)) == ((NU8)(10)) || ((NU8)(c0)) == ((NU8)(12)));
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsLowerAsciiChar)(NIM_CHAR c0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	result0 = (((NU8)(c0)) >= ((NU8)(97)) && ((NU8)(c0)) <= ((NU8)(122)));
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsUpperAsciiChar)(NIM_CHAR c0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	result0 = (((NU8)(c0)) >= ((NU8)(65)) && ((NU8)(c0)) <= ((NU8)(90)));
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaAsciiStr)(NimStringDesc* s0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!((s0 ? s0->Sup.len : 0) == ((NI) 0))) goto LA3;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	result0 = NIM_TRUE;
	{
		NIM_CHAR c_TQVB9c0XkCcraUR0qBu1PLQ;
		NI i_9cEasRZfiknblDxh2GD1g4A;
		NI L_h2LD25mnP2JuJepNknZ1IA;
		c_TQVB9c0XkCcraUR0qBu1PLQ = (NIM_CHAR)0;
		i_9cEasRZfiknblDxh2GD1g4A = ((NI) 0);
		L_h2LD25mnP2JuJepNknZ1IA = (s0 ? s0->Sup.len : 0);
		{
			while (1) {
				NIM_BOOL LOC8;
				if (!(i_9cEasRZfiknblDxh2GD1g4A < L_h2LD25mnP2JuJepNknZ1IA)) goto LA7;
				c_TQVB9c0XkCcraUR0qBu1PLQ = s0->data[i_9cEasRZfiknblDxh2GD1g4A];
				LOC8 = (NIM_BOOL)0;
				LOC8 = nsuIsAlphaAsciiChar(c_TQVB9c0XkCcraUR0qBu1PLQ);
				if (!(LOC8)) goto LA9;
				LOC8 = result0;
				LA9: ;
				result0 = LOC8;
				i_9cEasRZfiknblDxh2GD1g4A += ((NI) 1);
			} LA7: ;
		}
	}
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaNumericStr)(NimStringDesc* s0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!((s0 ? s0->Sup.len : 0) == ((NI) 0))) goto LA3;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	result0 = NIM_TRUE;
	{
		NIM_CHAR c_CEPbJZr240uNcijW7XJa3A;
		NI i_7hG9bjr6NKFOjQ32ednSxdA;
		NI L_Wl9aZ1mdoYOJnl3KsJdfy9aQ;
		c_CEPbJZr240uNcijW7XJa3A = (NIM_CHAR)0;
		i_7hG9bjr6NKFOjQ32ednSxdA = ((NI) 0);
		L_Wl9aZ1mdoYOJnl3KsJdfy9aQ = (s0 ? s0->Sup.len : 0);
		{
			while (1) {
				NIM_BOOL LOC8;
				if (!(i_7hG9bjr6NKFOjQ32ednSxdA < L_Wl9aZ1mdoYOJnl3KsJdfy9aQ)) goto LA7;
				c_CEPbJZr240uNcijW7XJa3A = s0->data[i_7hG9bjr6NKFOjQ32ednSxdA];
				LOC8 = (NIM_BOOL)0;
				LOC8 = nsuIsAlphaNumericChar(c_CEPbJZr240uNcijW7XJa3A);
				if (!(LOC8)) goto LA9;
				LOC8 = result0;
				LA9: ;
				result0 = LOC8;
				i_7hG9bjr6NKFOjQ32ednSxdA += ((NI) 1);
			} LA7: ;
		}
	}
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsDigitStr)(NimStringDesc* s0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!((s0 ? s0->Sup.len : 0) == ((NI) 0))) goto LA3;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	result0 = NIM_TRUE;
	{
		NIM_CHAR c_9aTJ1SA2n02poWvsvzh17xg;
		NI i_J2PFjUHpRz070H8VSK5fVw;
		NI L_5dw3qDOMeqiHJuJ1a7YcYA;
		c_9aTJ1SA2n02poWvsvzh17xg = (NIM_CHAR)0;
		i_J2PFjUHpRz070H8VSK5fVw = ((NI) 0);
		L_5dw3qDOMeqiHJuJ1a7YcYA = (s0 ? s0->Sup.len : 0);
		{
			while (1) {
				NIM_BOOL LOC8;
				if (!(i_J2PFjUHpRz070H8VSK5fVw < L_5dw3qDOMeqiHJuJ1a7YcYA)) goto LA7;
				c_9aTJ1SA2n02poWvsvzh17xg = s0->data[i_J2PFjUHpRz070H8VSK5fVw];
				LOC8 = (NIM_BOOL)0;
				LOC8 = nsuIsDigitChar(c_9aTJ1SA2n02poWvsvzh17xg);
				if (!(LOC8)) goto LA9;
				LOC8 = result0;
				LA9: ;
				result0 = LOC8;
				i_J2PFjUHpRz070H8VSK5fVw += ((NI) 1);
			} LA7: ;
		}
	}
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsSpaceAsciiStr)(NimStringDesc* s0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!((s0 ? s0->Sup.len : 0) == ((NI) 0))) goto LA3;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	result0 = NIM_TRUE;
	{
		NIM_CHAR c_sAz1HyxKSIFdolB8xk9bXTg;
		NI i_jD4lUVtTKbCojZCUb1t1lQ;
		NI L_cyfDnRaQejgNH9b9bJy442uQ;
		c_sAz1HyxKSIFdolB8xk9bXTg = (NIM_CHAR)0;
		i_jD4lUVtTKbCojZCUb1t1lQ = ((NI) 0);
		L_cyfDnRaQejgNH9b9bJy442uQ = (s0 ? s0->Sup.len : 0);
		{
			while (1) {
				if (!(i_jD4lUVtTKbCojZCUb1t1lQ < L_cyfDnRaQejgNH9b9bJy442uQ)) goto LA7;
				c_sAz1HyxKSIFdolB8xk9bXTg = s0->data[i_jD4lUVtTKbCojZCUb1t1lQ];
				{
					NIM_BOOL LOC10;
					LOC10 = (NIM_BOOL)0;
					LOC10 = nsuIsSpaceAsciiChar(c_sAz1HyxKSIFdolB8xk9bXTg);
					if (!!(LOC10)) goto LA11;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA11: ;
				i_jD4lUVtTKbCojZCUb1t1lQ += ((NI) 1);
			} LA7: ;
		}
	}
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsLowerAsciiStr)(NimStringDesc* s0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!((s0 ? s0->Sup.len : 0) == ((NI) 0))) goto LA3;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_CHAR c_RNHHXYT5dl5fKBRx9abo3Sg;
		NI i_Bt3wHmWFB7B9cR8JFEWW78Q;
		NI L_P0tGLDdvyZFuGigGoOsNsw;
		c_RNHHXYT5dl5fKBRx9abo3Sg = (NIM_CHAR)0;
		i_Bt3wHmWFB7B9cR8JFEWW78Q = ((NI) 0);
		L_P0tGLDdvyZFuGigGoOsNsw = (s0 ? s0->Sup.len : 0);
		{
			while (1) {
				if (!(i_Bt3wHmWFB7B9cR8JFEWW78Q < L_P0tGLDdvyZFuGigGoOsNsw)) goto LA7;
				c_RNHHXYT5dl5fKBRx9abo3Sg = s0->data[i_Bt3wHmWFB7B9cR8JFEWW78Q];
				{
					NIM_BOOL LOC10;
					LOC10 = (NIM_BOOL)0;
					LOC10 = nsuIsLowerAsciiChar(c_RNHHXYT5dl5fKBRx9abo3Sg);
					if (!!(LOC10)) goto LA11;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA11: ;
				i_Bt3wHmWFB7B9cR8JFEWW78Q += ((NI) 1);
			} LA7: ;
		}
	}
	result0 = NIM_TRUE;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsUpperAsciiStr)(NimStringDesc* s0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!((s0 ? s0->Sup.len : 0) == ((NI) 0))) goto LA3;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_CHAR c_PYiB5g4DJPIErOZoXWqb2A;
		NI i_Dza7c9aeYMithfRsCIPET1A;
		NI L_ipS4hSKZm4bV4Uk3zI59b2A;
		c_PYiB5g4DJPIErOZoXWqb2A = (NIM_CHAR)0;
		i_Dza7c9aeYMithfRsCIPET1A = ((NI) 0);
		L_ipS4hSKZm4bV4Uk3zI59b2A = (s0 ? s0->Sup.len : 0);
		{
			while (1) {
				if (!(i_Dza7c9aeYMithfRsCIPET1A < L_ipS4hSKZm4bV4Uk3zI59b2A)) goto LA7;
				c_PYiB5g4DJPIErOZoXWqb2A = s0->data[i_Dza7c9aeYMithfRsCIPET1A];
				{
					NIM_BOOL LOC10;
					LOC10 = (NIM_BOOL)0;
					LOC10 = nsuIsUpperAsciiChar(c_PYiB5g4DJPIErOZoXWqb2A);
					if (!!(LOC10)) goto LA11;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA11: ;
				i_Dza7c9aeYMithfRsCIPET1A += ((NI) 1);
			} LA7: ;
		}
	}
	result0 = NIM_TRUE;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_CHAR, nsuToLowerAsciiChar)(NIM_CHAR c0) {
	NIM_CHAR result0;
	result0 = (NIM_CHAR)0;
	{
		if (!(((NU8)(c0)) >= ((NU8)(65)) && ((NU8)(c0)) <= ((NU8)(90)))) goto LA3;
		result0 = ((NIM_CHAR) (((NI) ((NI)(((NI) (((NU8)(c0)))) + ((NI) 32))))));
	}
	goto LA1;
	LA3: ;
	{
		result0 = c0;
	}
	LA1: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToLowerAsciiStr)(NimStringDesc* s0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = mnewString(((NI) ((s0 ? s0->Sup.len : 0))));
	{
		NI i_Q4ErNf9cOnD9bQiwEaTZI6PA;
		NI HEX3Atmp_GYbw9c9aYs4vIjnQGiCqmtRg;
		NI res_kjxR3eSoP8WNRp9c4KDSe2w;
		i_Q4ErNf9cOnD9bQiwEaTZI6PA = (NI)0;
		HEX3Atmp_GYbw9c9aYs4vIjnQGiCqmtRg = (NI)0;
		HEX3Atmp_GYbw9c9aYs4vIjnQGiCqmtRg = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
		res_kjxR3eSoP8WNRp9c4KDSe2w = ((NI) 0);
		{
			while (1) {
				if (!(res_kjxR3eSoP8WNRp9c4KDSe2w <= HEX3Atmp_GYbw9c9aYs4vIjnQGiCqmtRg)) goto LA3;
				i_Q4ErNf9cOnD9bQiwEaTZI6PA = res_kjxR3eSoP8WNRp9c4KDSe2w;
				result0->data[i_Q4ErNf9cOnD9bQiwEaTZI6PA] = nsuToLowerAsciiChar(s0->data[i_Q4ErNf9cOnD9bQiwEaTZI6PA]);
				res_kjxR3eSoP8WNRp9c4KDSe2w += ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_CHAR, nsuToUpperAsciiChar)(NIM_CHAR c0) {
	NIM_CHAR result0;
	result0 = (NIM_CHAR)0;
	{
		if (!(((NU8)(c0)) >= ((NU8)(97)) && ((NU8)(c0)) <= ((NU8)(122)))) goto LA3;
		result0 = ((NIM_CHAR) (((NI) ((NI)(((NI) (((NU8)(c0)))) - ((NI) 32))))));
	}
	goto LA1;
	LA3: ;
	{
		result0 = c0;
	}
	LA1: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToUpperAsciiStr)(NimStringDesc* s0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = mnewString(((NI) ((s0 ? s0->Sup.len : 0))));
	{
		NI i_bJ3uWInrdTIZsXP6S4SR6g;
		NI HEX3Atmp_cLAI28mV1vNofv8iUy9cfIA;
		NI res_6Er44VYrFXKdt7VeWUJjaQ;
		i_bJ3uWInrdTIZsXP6S4SR6g = (NI)0;
		HEX3Atmp_cLAI28mV1vNofv8iUy9cfIA = (NI)0;
		HEX3Atmp_cLAI28mV1vNofv8iUy9cfIA = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
		res_6Er44VYrFXKdt7VeWUJjaQ = ((NI) 0);
		{
			while (1) {
				if (!(res_6Er44VYrFXKdt7VeWUJjaQ <= HEX3Atmp_cLAI28mV1vNofv8iUy9cfIA)) goto LA3;
				i_bJ3uWInrdTIZsXP6S4SR6g = res_6Er44VYrFXKdt7VeWUJjaQ;
				result0->data[i_bJ3uWInrdTIZsXP6S4SR6g] = nsuToUpperAsciiChar(s0->data[i_bJ3uWInrdTIZsXP6S4SR6g]);
				res_6Er44VYrFXKdt7VeWUJjaQ += ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

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

static N_INLINE(void, copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem)(void* dest0, void* source0, NI size0) {
	void* LOC1;
	LOC1 = (void*)0;
	LOC1 = memcpy(dest0, source0, ((size_t) (size0)));
}

static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0) {
	copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) ((&(*dest0).data[((*dest0).Sup.len)- 0]))), ((void*) ((*src0).data)), ((NI) ((NI)((*src0).Sup.len + ((NI) 1)))));
	(*dest0).Sup.len += (*src0).Sup.len;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuCapitalizeAscii)(NimStringDesc* s0) {
	NimStringDesc* result0;
	NimStringDesc* LOC1;
	NIM_CHAR LOC2;
	NimStringDesc* LOC3;
	result0 = (NimStringDesc*)0;
	LOC1 = (NimStringDesc*)0;
	LOC2 = (NIM_CHAR)0;
	LOC2 = nsuToUpperAsciiChar(s0->data[((NI) 0)]);
	LOC3 = (NimStringDesc*)0;
	LOC3 = copyStr(s0, ((NI) 1));
	LOC1 = rawNewString(LOC3->Sup.len + 1);
appendChar(LOC1, LOC2);
appendString(LOC1, LOC3);
	result0 = LOC1;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsSpaceChar)(NIM_CHAR c0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = nsuIsSpaceAsciiChar(c0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsLowerChar)(NIM_CHAR c0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = nsuIsLowerAsciiChar(c0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsUpperChar)(NIM_CHAR c0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = nsuIsUpperAsciiChar(c0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaChar)(NIM_CHAR c0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = nsuIsAlphaAsciiChar(c0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsAlphaStr)(NimStringDesc* s0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = nsuIsAlphaAsciiStr(s0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsSpaceStr)(NimStringDesc* s0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = nsuIsSpaceAsciiStr(s0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsLowerStr)(NimStringDesc* s0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = nsuIsLowerAsciiStr(s0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsUpperStr)(NimStringDesc* s0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = nsuIsUpperAsciiStr(s0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_CHAR, nsuToLowerChar)(NIM_CHAR c0) {
	NIM_CHAR result0;
	result0 = (NIM_CHAR)0;
	result0 = nsuToLowerAsciiChar(c0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToLowerStr)(NimStringDesc* s0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = nsuToLowerAsciiStr(s0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_CHAR, nsuToUpperChar)(NIM_CHAR c0) {
	NIM_CHAR result0;
	result0 = (NIM_CHAR)0;
	result0 = nsuToUpperAsciiChar(c0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToUpperStr)(NimStringDesc* s0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = nsuToUpperAsciiStr(s0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuCapitalize)(NimStringDesc* s0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = nsuCapitalizeAscii(s0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuNormalize)(NimStringDesc* s0) {
	NimStringDesc* result0;
	NI j0;
	result0 = (NimStringDesc*)0;
	result0 = mnewString(((NI) ((s0 ? s0->Sup.len : 0))));
	j0 = ((NI) 0);
	{
		NI i_jpbFLgkKR9chZipjHint9c4g;
		NI HEX3Atmp_ULpmQ4pwpkB9ac9cKHbK9cXJw;
		NI res_9aRtiCFskeEOMEBziesZaaQ;
		i_jpbFLgkKR9chZipjHint9c4g = (NI)0;
		HEX3Atmp_ULpmQ4pwpkB9ac9cKHbK9cXJw = (NI)0;
		HEX3Atmp_ULpmQ4pwpkB9ac9cKHbK9cXJw = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
		res_9aRtiCFskeEOMEBziesZaaQ = ((NI) 0);
		{
			while (1) {
				if (!(res_9aRtiCFskeEOMEBziesZaaQ <= HEX3Atmp_ULpmQ4pwpkB9ac9cKHbK9cXJw)) goto LA3;
				i_jpbFLgkKR9chZipjHint9c4g = res_9aRtiCFskeEOMEBziesZaaQ;
				{
					if (!(((NU8)(s0->data[i_jpbFLgkKR9chZipjHint9c4g])) >= ((NU8)(65)) && ((NU8)(s0->data[i_jpbFLgkKR9chZipjHint9c4g])) <= ((NU8)(90)))) goto LA6;
					result0->data[j0] = ((NIM_CHAR) (((NI) ((NI)(((NI) (((NU8)(s0->data[i_jpbFLgkKR9chZipjHint9c4g])))) + ((NI) 32))))));
					j0 += ((NI) 1);
				}
				goto LA4;
				LA6: ;
				{
					if (!!(((NU8)(s0->data[i_jpbFLgkKR9chZipjHint9c4g]) == (NU8)(95)))) goto LA9;
					result0->data[j0] = s0->data[i_jpbFLgkKR9chZipjHint9c4g];
					j0 += ((NI) 1);
				}
				goto LA4;
				LA9: ;
				LA4: ;
				res_9aRtiCFskeEOMEBziesZaaQ += ((NI) 1);
			} LA3: ;
		}
	}
	{
		if (!!((j0 == (s0 ? s0->Sup.len : 0)))) goto LA13;
		result0 = nimrtl_setLengthStr(result0, ((NI) (j0)));
	}
	LA13: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nsuCmpIgnoreCase)(NimStringDesc* a0, NimStringDesc* b0) {
	NI result0;
	NI i0;
	NI m0;
{	result0 = (NI)0;
	i0 = ((NI) 0);
	m0 = (((a0 ? a0->Sup.len : 0) <= (b0 ? b0->Sup.len : 0)) ? (a0 ? a0->Sup.len : 0) : (b0 ? b0->Sup.len : 0));
	{
		while (1) {
			NIM_CHAR LOC3;
			NIM_CHAR LOC4;
			if (!(i0 < m0)) goto LA2;
			LOC3 = (NIM_CHAR)0;
			LOC3 = nsuToLowerAsciiChar(a0->data[i0]);
			LOC4 = (NIM_CHAR)0;
			LOC4 = nsuToLowerAsciiChar(b0->data[i0]);
			result0 = (NI)(((NI) (((NU8)(LOC3)))) - ((NI) (((NU8)(LOC4)))));
			{
				if (!!((result0 == ((NI) 0)))) goto LA7;
				goto BeforeRet;
			}
			LA7: ;
			i0 += ((NI) 1);
		} LA2: ;
	}
	result0 = (NI)((a0 ? a0->Sup.len : 0) - (b0 ? b0->Sup.len : 0));
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nsuCmpIgnoreStyle)(NimStringDesc* a0, NimStringDesc* b0) {
	NI result0;
	NI i0;
	NI j0;
	result0 = (NI)0;
	i0 = ((NI) 0);
	j0 = ((NI) 0);
	{
		while (1) {
			NIM_CHAR aa0;
			NIM_CHAR bb0;
			{
				while (1) {
					if (!((NU8)(a0->data[i0]) == (NU8)(95))) goto LA4;
					i0 += ((NI) 1);
				} LA4: ;
			}
			{
				while (1) {
					if (!((NU8)(b0->data[j0]) == (NU8)(95))) goto LA6;
					j0 += ((NI) 1);
				} LA6: ;
			}
			aa0 = nsuToLowerAsciiChar(a0->data[i0]);
			bb0 = nsuToLowerAsciiChar(b0->data[j0]);
			result0 = (NI)(((NI) (((NU8)(aa0)))) - ((NI) (((NU8)(bb0)))));
			{
				NIM_BOOL LOC9;
				LOC9 = (NIM_BOOL)0;
				LOC9 = !((result0 == ((NI) 0)));
				if (LOC9) goto LA10;
				LOC9 = ((NU8)(aa0) == (NU8)(0));
				LA10: ;
				if (!LOC9) goto LA11;
				goto LA1;
			}
			LA11: ;
			i0 += ((NI) 1);
			j0 += ((NI) 1);
		}
	} LA1: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuStrip)(NimStringDesc* s0, NIM_BOOL leading0, NIM_BOOL trailing0, TY_nmiMWKVIe46vacnhAFrQvw_Set chars0) {
	NimStringDesc* result0;
	NI first0;
	NI last0;
	result0 = (NimStringDesc*)0;
	first0 = ((NI) 0);
	last0 = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
	{
		if (!leading0) goto LA3;
		{
			while (1) {
				if (!((chars0[(NU)(((NU8)(s0->data[first0])))>>3] &(1U<<((NU)(((NU8)(s0->data[first0])))&7U)))!=0)) goto LA6;
				first0 += ((NI) 1);
			} LA6: ;
		}
	}
	LA3: ;
	{
		if (!trailing0) goto LA9;
		{
			while (1) {
				NIM_BOOL LOC13;
				LOC13 = (NIM_BOOL)0;
				LOC13 = (((NI) 0) <= last0);
				if (!(LOC13)) goto LA14;
				LOC13 = ((chars0[(NU)(((NU8)(s0->data[last0])))>>3] &(1U<<((NU)(((NU8)(s0->data[last0])))&7U)))!=0);
				LA14: ;
				if (!LOC13) goto LA12;
				last0 -= ((NI) 1);
			} LA12: ;
		}
	}
	LA9: ;
	result0 = copyStrLast(s0, first0, last0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToOctal)(NIM_CHAR c0) {
	NimStringDesc* result0;
	NI val0;
	result0 = (NimStringDesc*)0;
	result0 = mnewString(((NI) 3));
	val0 = ((NU8)(c0));
	{
		NI i_9cfVWLIQccp8ssOepJfZqOQ;
		NI res_9bbCZUKnBnPxqgLCvr9ag9aHA;
		i_9cfVWLIQccp8ssOepJfZqOQ = (NI)0;
		res_9bbCZUKnBnPxqgLCvr9ag9aHA = ((NI) 2);
		{
			while (1) {
				if (!(((NI) 0) <= res_9bbCZUKnBnPxqgLCvr9ag9aHA)) goto LA3;
				i_9cfVWLIQccp8ssOepJfZqOQ = res_9bbCZUKnBnPxqgLCvr9ag9aHA;
				result0->data[i_9cfVWLIQccp8ssOepJfZqOQ] = ((NIM_CHAR) (((NI) ((NI)(((NI) ((NI)(((NI) (val0)) % ((NI) 8)))) + ((NI) 48))))));
				val0 = ((NI) ((NI)(((NI) (val0)) / ((NI) 8))));
				res_9bbCZUKnBnPxqgLCvr9ag9aHA -= ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsNilOrEmpty)(NimStringDesc* s0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = ((s0 ? s0->Sup.len : 0) == ((NI) 0));
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuIsNilOrWhitespace)(NimStringDesc* s0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!((s0 ? s0->Sup.len : 0) == ((NI) 0))) goto LA3;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	result0 = NIM_TRUE;
	{
		NIM_CHAR c_I8Rjf09bSH2zsX9b4IC9bLsAg;
		NI i_K9aUrjjadD6S9amSqs70HMjw;
		NI L_DJ7Yh0D09bdrKXZYXp9buitA;
		c_I8Rjf09bSH2zsX9b4IC9bLsAg = (NIM_CHAR)0;
		i_K9aUrjjadD6S9amSqs70HMjw = ((NI) 0);
		L_DJ7Yh0D09bdrKXZYXp9buitA = (s0 ? s0->Sup.len : 0);
		{
			while (1) {
				if (!(i_K9aUrjjadD6S9amSqs70HMjw < L_DJ7Yh0D09bdrKXZYXp9buitA)) goto LA7;
				c_I8Rjf09bSH2zsX9b4IC9bLsAg = s0->data[i_K9aUrjjadD6S9amSqs70HMjw];
				{
					NIM_BOOL LOC10;
					LOC10 = (NIM_BOOL)0;
					LOC10 = nsuIsSpaceAsciiChar(c_I8Rjf09bSH2zsX9b4IC9bLsAg);
					if (!!(LOC10)) goto LA11;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA11: ;
				i_K9aUrjjadD6S9amSqs70HMjw += ((NI) 1);
			} LA7: ;
		}
	}
	}BeforeRet: ;
	return result0;
}
static N_NIMCALL(void, Marker_TY_sM4lkSb7zS6F7OVMvW9cffQ)(void* p, NI op) {
	TY_sM4lkSb7zS6F7OVMvW9cffQ* a;
	NI LOC1;
	a = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)p;
	LOC1 = (NI)0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimrtl_nimGCvisit((void*)a->data[LOC1], op);
	}
}

static N_INLINE(Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* result0;
	result0 = (Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	result0 = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g*) ((NI)((NU32)(((NI) (usr0))) - (NU32)(((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g))))));
	return result0;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
	c0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(p0);
	{
		(*c0).refcount -= ((NI) 8);
		if (!((NU32)((*c0).refcount) < (NU32)(((NI) 8)))) goto LA3;
		nimrtl_rtlAddZCT(c0);
	}
	LA3: ;
}

N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuSplitWhitespace)(NimStringDesc* s0) {
	TY_sM4lkSb7zS6F7OVMvW9cffQ* result0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) nimrtl_newSeq((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	{
		NimStringDesc* x_KSh9bc59bocX7g0wzxhAjk6A;
		NI last_vdpZMA7A7gfaezhF9c8VaVA;
		NI splits_SJrcUCzjJr1BzL6k9bCsCsg;
		x_KSh9bc59bocX7g0wzxhAjk6A = (NimStringDesc*)0;
		last_vdpZMA7A7gfaezhF9c8VaVA = ((NI) 0);
		splits_SJrcUCzjJr1BzL6k9bCsCsg = ((NI) -1);
		{
			while (1) {
				NI first_mrSSsbx0eHi9b4jljrdZV9ag;
				if (!(last_vdpZMA7A7gfaezhF9c8VaVA < (s0 ? s0->Sup.len : 0))) goto LA3;
				{
					while (1) {
						if (!(((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(32)) || ((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(9)) || ((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(11)) || ((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(13)) || ((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(10)) || ((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(12)))) goto LA5;
						last_vdpZMA7A7gfaezhF9c8VaVA += ((NI) 1);
					} LA5: ;
				}
				first_mrSSsbx0eHi9b4jljrdZV9ag = last_vdpZMA7A7gfaezhF9c8VaVA;
				{
					while (1) {
						NIM_BOOL LOC8;
						LOC8 = (NIM_BOOL)0;
						LOC8 = (last_vdpZMA7A7gfaezhF9c8VaVA < (s0 ? s0->Sup.len : 0));
						if (!(LOC8)) goto LA9;
						LOC8 = !((((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(32)) || ((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(9)) || ((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(11)) || ((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(13)) || ((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(10)) || ((NU8)(s0->data[last_vdpZMA7A7gfaezhF9c8VaVA])) == ((NU8)(12))));
						LA9: ;
						if (!LOC8) goto LA7;
						last_vdpZMA7A7gfaezhF9c8VaVA += ((NI) 1);
					} LA7: ;
				}
				{
					NimStringDesc* LOC18;
					if (!(first_mrSSsbx0eHi9b4jljrdZV9ag <= (NI)(last_vdpZMA7A7gfaezhF9c8VaVA - ((NI) 1)))) goto LA12;
					{
						if (!(splits_SJrcUCzjJr1BzL6k9bCsCsg == ((NI) 0))) goto LA16;
						last_vdpZMA7A7gfaezhF9c8VaVA = (s0 ? s0->Sup.len : 0);
					}
					LA16: ;
					x_KSh9bc59bocX7g0wzxhAjk6A = copyStrLast(s0, first_mrSSsbx0eHi9b4jljrdZV9ag, (NI)(last_vdpZMA7A7gfaezhF9c8VaVA - ((NI) 1)));
					result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(result0)->Sup, sizeof(NimStringDesc*));
					LOC18 = (NimStringDesc*)0;
					LOC18 = result0->data[result0->Sup.len]; result0->data[result0->Sup.len] = nimrtl_copyStringRC1(x_KSh9bc59bocX7g0wzxhAjk6A);
					if (LOC18) nimGCunrefNoCycle(LOC18);
					++result0->Sup.len;
					{
						if (!(splits_SJrcUCzjJr1BzL6k9bCsCsg == ((NI) 0))) goto LA21;
						goto LA2;
					}
					LA21: ;
					splits_SJrcUCzjJr1BzL6k9bCsCsg -= ((NI) 1);
				}
				LA12: ;
			} LA3: ;
		} LA2: ;
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuSplitLines)(NimStringDesc* s0) {
	TY_sM4lkSb7zS6F7OVMvW9cffQ* result0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) nimrtl_newSeq((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	{
		NimStringDesc* x_zYncTh9au2UWLdMDtV9blOmw;
		NI first_POqoN5RwyEHNEODLQhSnYg;
		NI last_pzn81CIBawZVmyUqMWdguA;
		x_zYncTh9au2UWLdMDtV9blOmw = (NimStringDesc*)0;
		first_POqoN5RwyEHNEODLQhSnYg = ((NI) 0);
		last_pzn81CIBawZVmyUqMWdguA = ((NI) 0);
		{
			while (1) {
				NimStringDesc* LOC6;
				{
					while (1) {
						if (!!((((NU8)(s0->data[last_pzn81CIBawZVmyUqMWdguA])) == ((NU8)(0)) || ((NU8)(s0->data[last_pzn81CIBawZVmyUqMWdguA])) == ((NU8)(13)) || ((NU8)(s0->data[last_pzn81CIBawZVmyUqMWdguA])) == ((NU8)(10))))) goto LA5;
						last_pzn81CIBawZVmyUqMWdguA += ((NI) 1);
					} LA5: ;
				}
				x_zYncTh9au2UWLdMDtV9blOmw = copyStrLast(s0, first_POqoN5RwyEHNEODLQhSnYg, (NI)(last_pzn81CIBawZVmyUqMWdguA - ((NI) 1)));
				result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(result0)->Sup, sizeof(NimStringDesc*));
				LOC6 = (NimStringDesc*)0;
				LOC6 = result0->data[result0->Sup.len]; result0->data[result0->Sup.len] = nimrtl_copyStringRC1(x_zYncTh9au2UWLdMDtV9blOmw);
				if (LOC6) nimGCunrefNoCycle(LOC6);
				++result0->Sup.len;
				{
					if (!((NU8)(s0->data[last_pzn81CIBawZVmyUqMWdguA]) == (NU8)(10))) goto LA9;
					last_pzn81CIBawZVmyUqMWdguA += ((NI) 1);
				}
				goto LA7;
				LA9: ;
				{
					if (!((NU8)(s0->data[last_pzn81CIBawZVmyUqMWdguA]) == (NU8)(13))) goto LA12;
					last_pzn81CIBawZVmyUqMWdguA += ((NI) 1);
					{
						if (!((NU8)(s0->data[last_pzn81CIBawZVmyUqMWdguA]) == (NU8)(10))) goto LA16;
						last_pzn81CIBawZVmyUqMWdguA += ((NI) 1);
					}
					LA16: ;
				}
				goto LA7;
				LA12: ;
				{
					goto LA2;
				}
				LA7: ;
				first_POqoN5RwyEHNEODLQhSnYg = last_pzn81CIBawZVmyUqMWdguA;
			}
		} LA2: ;
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nsuCountLines)(NimStringDesc* s0) {
	NI result0;
	NI i0;
	result0 = (NI)0;
	i0 = ((NI) 0);
	{
		while (1) {
			if (!(i0 < (s0 ? s0->Sup.len : 0))) goto LA2;
			switch (((NU8)(s0->data[i0]))) {
			case 13:
			{
				{
					if (!((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(10))) goto LA6;
					i0 += ((NI) 1);
				}
				LA6: ;
				result0 += ((NI) 1);
			}
			break;
			case 10:
			{
				result0 += ((NI) 1);
			}
			break;
			default:
			{
			}
			break;
			}
			i0 += ((NI) 1);
		} LA2: ;
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuSplitCharSet)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set seps0, NI maxsplit0) {
	TY_sM4lkSb7zS6F7OVMvW9cffQ* result0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) nimrtl_newSeq((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	{
		NimStringDesc* x_i1RTC8M8gCw2O9bxltRP9bug;
		NI last_aZS3H8Em9avjIiTx5gJVWWg;
		NI splits_1KoAqytD225d59az3YUN6QQ;
		x_i1RTC8M8gCw2O9bxltRP9bug = (NimStringDesc*)0;
		last_aZS3H8Em9avjIiTx5gJVWWg = ((NI) 0);
		splits_1KoAqytD225d59az3YUN6QQ = maxsplit0;
		{
			if (!(((NI) 0) < (s0 ? s0->Sup.len : 0))) goto LA4;
			{
				while (1) {
					NI first_PdTEqNTipVVUckMLTj8beg;
					NimStringDesc* LOC16;
					if (!(last_aZS3H8Em9avjIiTx5gJVWWg <= (s0 ? s0->Sup.len : 0))) goto LA7;
					first_PdTEqNTipVVUckMLTj8beg = last_aZS3H8Em9avjIiTx5gJVWWg;
					{
						while (1) {
							NIM_BOOL LOC10;
							LOC10 = (NIM_BOOL)0;
							LOC10 = (last_aZS3H8Em9avjIiTx5gJVWWg < (s0 ? s0->Sup.len : 0));
							if (!(LOC10)) goto LA11;
							LOC10 = !(((seps0[(NU)(((NU8)(s0->data[last_aZS3H8Em9avjIiTx5gJVWWg])))>>3] &(1U<<((NU)(((NU8)(s0->data[last_aZS3H8Em9avjIiTx5gJVWWg])))&7U)))!=0));
							LA11: ;
							if (!LOC10) goto LA9;
							last_aZS3H8Em9avjIiTx5gJVWWg += ((NI) 1);
						} LA9: ;
					}
					{
						if (!(splits_1KoAqytD225d59az3YUN6QQ == ((NI) 0))) goto LA14;
						last_aZS3H8Em9avjIiTx5gJVWWg = (s0 ? s0->Sup.len : 0);
					}
					LA14: ;
					x_i1RTC8M8gCw2O9bxltRP9bug = copyStrLast(s0, first_PdTEqNTipVVUckMLTj8beg, (NI)(last_aZS3H8Em9avjIiTx5gJVWWg - ((NI) 1)));
					result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(result0)->Sup, sizeof(NimStringDesc*));
					LOC16 = (NimStringDesc*)0;
					LOC16 = result0->data[result0->Sup.len]; result0->data[result0->Sup.len] = nimrtl_copyStringRC1(x_i1RTC8M8gCw2O9bxltRP9bug);
					if (LOC16) nimGCunrefNoCycle(LOC16);
					++result0->Sup.len;
					{
						if (!(splits_1KoAqytD225d59az3YUN6QQ == ((NI) 0))) goto LA19;
						goto LA6;
					}
					LA19: ;
					splits_1KoAqytD225d59az3YUN6QQ -= ((NI) 1);
					last_aZS3H8Em9avjIiTx5gJVWWg += ((NI) 1);
				} LA7: ;
			} LA6: ;
		}
		LA4: ;
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuSplitChar)(NimStringDesc* s0, NIM_CHAR sep0, NI maxsplit0) {
	TY_sM4lkSb7zS6F7OVMvW9cffQ* result0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) nimrtl_newSeq((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	{
		NimStringDesc* x_i1RTC8M8gCw2O9bxltRP9bug_2;
		NI last_aZS3H8Em9avjIiTx5gJVWWg_2;
		NI splits_1KoAqytD225d59az3YUN6QQ_2;
		x_i1RTC8M8gCw2O9bxltRP9bug_2 = (NimStringDesc*)0;
		last_aZS3H8Em9avjIiTx5gJVWWg_2 = ((NI) 0);
		splits_1KoAqytD225d59az3YUN6QQ_2 = maxsplit0;
		{
			if (!(((NI) 0) < (s0 ? s0->Sup.len : 0))) goto LA4;
			{
				while (1) {
					NI first_PdTEqNTipVVUckMLTj8beg_2;
					NimStringDesc* LOC16;
					if (!(last_aZS3H8Em9avjIiTx5gJVWWg_2 <= (s0 ? s0->Sup.len : 0))) goto LA7;
					first_PdTEqNTipVVUckMLTj8beg_2 = last_aZS3H8Em9avjIiTx5gJVWWg_2;
					{
						while (1) {
							NIM_BOOL LOC10;
							LOC10 = (NIM_BOOL)0;
							LOC10 = (last_aZS3H8Em9avjIiTx5gJVWWg_2 < (s0 ? s0->Sup.len : 0));
							if (!(LOC10)) goto LA11;
							LOC10 = !(((NU8)(s0->data[last_aZS3H8Em9avjIiTx5gJVWWg_2]) == (NU8)(sep0)));
							LA11: ;
							if (!LOC10) goto LA9;
							last_aZS3H8Em9avjIiTx5gJVWWg_2 += ((NI) 1);
						} LA9: ;
					}
					{
						if (!(splits_1KoAqytD225d59az3YUN6QQ_2 == ((NI) 0))) goto LA14;
						last_aZS3H8Em9avjIiTx5gJVWWg_2 = (s0 ? s0->Sup.len : 0);
					}
					LA14: ;
					x_i1RTC8M8gCw2O9bxltRP9bug_2 = copyStrLast(s0, first_PdTEqNTipVVUckMLTj8beg_2, (NI)(last_aZS3H8Em9avjIiTx5gJVWWg_2 - ((NI) 1)));
					result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(result0)->Sup, sizeof(NimStringDesc*));
					LOC16 = (NimStringDesc*)0;
					LOC16 = result0->data[result0->Sup.len]; result0->data[result0->Sup.len] = nimrtl_copyStringRC1(x_i1RTC8M8gCw2O9bxltRP9bug_2);
					if (LOC16) nimGCunrefNoCycle(LOC16);
					++result0->Sup.len;
					{
						if (!(splits_1KoAqytD225d59az3YUN6QQ_2 == ((NI) 0))) goto LA19;
						goto LA6;
					}
					LA19: ;
					splits_1KoAqytD225d59az3YUN6QQ_2 -= ((NI) 1);
					last_aZS3H8Em9avjIiTx5gJVWWg_2 += ((NI) 1);
				} LA7: ;
			} LA6: ;
		}
		LA4: ;
	}
	return result0;
}

N_NIMCALL(NIM_BOOL, substreq_7ngl0F5lryTkSAj7sYQ7pw)(NimStringDesc* s0, NI pos0, NimStringDesc* substr0) {
	NIM_BOOL result0;
	NI i0;
	NI length0;
{	result0 = (NIM_BOOL)0;
	i0 = ((NI) 0);
	length0 = (substr0 ? substr0->Sup.len : 0);
	{
		while (1) {
			NIM_BOOL LOC3;
			LOC3 = (NIM_BOOL)0;
			LOC3 = (i0 < length0);
			if (!(LOC3)) goto LA4;
			LOC3 = ((NU8)(s0->data[(NI)(pos0 + i0)]) == (NU8)(substr0->data[i0]));
			LA4: ;
			if (!LOC3) goto LA2;
			i0 += ((NI) 1);
		} LA2: ;
	}
	result0 = (i0 == length0);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuSplitString)(NimStringDesc* s0, NimStringDesc* sep0, NI maxsplit0) {
	TY_sM4lkSb7zS6F7OVMvW9cffQ* result0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)0;
	{
		if (!!((((NI) 0) < (sep0 ? sep0->Sup.len : 0)))) goto LA3;
		raiseassert_PpfSiTIeNpMAb9a5o6SglJw(((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_2));
	}
	LA3: ;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) nimrtl_newSeq((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	{
		NimStringDesc* x_i1RTC8M8gCw2O9bxltRP9bug_3;
		NI last_aZS3H8Em9avjIiTx5gJVWWg_3;
		NI splits_1KoAqytD225d59az3YUN6QQ_3;
		x_i1RTC8M8gCw2O9bxltRP9bug_3 = (NimStringDesc*)0;
		last_aZS3H8Em9avjIiTx5gJVWWg_3 = ((NI) 0);
		splits_1KoAqytD225d59az3YUN6QQ_3 = maxsplit0;
		{
			if (!(((NI) 0) < (s0 ? s0->Sup.len : 0))) goto LA8;
			{
				while (1) {
					NI first_PdTEqNTipVVUckMLTj8beg_3;
					NimStringDesc* LOC21;
					if (!(last_aZS3H8Em9avjIiTx5gJVWWg_3 <= (s0 ? s0->Sup.len : 0))) goto LA11;
					first_PdTEqNTipVVUckMLTj8beg_3 = last_aZS3H8Em9avjIiTx5gJVWWg_3;
					{
						while (1) {
							NIM_BOOL LOC14;
							NIM_BOOL LOC16;
							LOC14 = (NIM_BOOL)0;
							LOC14 = (last_aZS3H8Em9avjIiTx5gJVWWg_3 < (s0 ? s0->Sup.len : 0));
							if (!(LOC14)) goto LA15;
							LOC16 = (NIM_BOOL)0;
							LOC16 = substreq_7ngl0F5lryTkSAj7sYQ7pw(s0, last_aZS3H8Em9avjIiTx5gJVWWg_3, sep0);
							LOC14 = !(LOC16);
							LA15: ;
							if (!LOC14) goto LA13;
							last_aZS3H8Em9avjIiTx5gJVWWg_3 += ((NI) 1);
						} LA13: ;
					}
					{
						if (!(splits_1KoAqytD225d59az3YUN6QQ_3 == ((NI) 0))) goto LA19;
						last_aZS3H8Em9avjIiTx5gJVWWg_3 = (s0 ? s0->Sup.len : 0);
					}
					LA19: ;
					x_i1RTC8M8gCw2O9bxltRP9bug_3 = copyStrLast(s0, first_PdTEqNTipVVUckMLTj8beg_3, (NI)(last_aZS3H8Em9avjIiTx5gJVWWg_3 - ((NI) 1)));
					result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(result0)->Sup, sizeof(NimStringDesc*));
					LOC21 = (NimStringDesc*)0;
					LOC21 = result0->data[result0->Sup.len]; result0->data[result0->Sup.len] = nimrtl_copyStringRC1(x_i1RTC8M8gCw2O9bxltRP9bug_3);
					if (LOC21) nimGCunrefNoCycle(LOC21);
					++result0->Sup.len;
					{
						if (!(splits_1KoAqytD225d59az3YUN6QQ_3 == ((NI) 0))) goto LA24;
						goto LA10;
					}
					LA24: ;
					splits_1KoAqytD225d59az3YUN6QQ_3 -= ((NI) 1);
					last_aZS3H8Em9avjIiTx5gJVWWg_3 += (sep0 ? sep0->Sup.len : 0);
				} LA11: ;
			} LA10: ;
		}
		LA8: ;
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuRSplitCharSet)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set seps0, NI maxsplit0) {
	TY_sM4lkSb7zS6F7OVMvW9cffQ* result0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) nimrtl_newSeq((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	{
		NimStringDesc* x_aUbozeDgbd4b5GXhCB7f5Q;
		NI last_nvZUuuQKE9br3bfHD4nUE1A;
		NI first_0zBJdc87PSNN9acdsVgN3MQ;
		NI splits_7BNnmwdPRqx0b3kLDddUww;
		NI startpos_vwMRdaRxTAdqJmIO09bgy7w;
		x_aUbozeDgbd4b5GXhCB7f5Q = (NimStringDesc*)0;
		last_nvZUuuQKE9br3bfHD4nUE1A = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
		first_0zBJdc87PSNN9acdsVgN3MQ = last_nvZUuuQKE9br3bfHD4nUE1A;
		splits_7BNnmwdPRqx0b3kLDddUww = maxsplit0;
		startpos_vwMRdaRxTAdqJmIO09bgy7w = ((NI) 0);
		{
			if (!(((NI) 0) < (s0 ? s0->Sup.len : 0))) goto LA4;
			{
				while (1) {
					NimStringDesc* LOC21;
					if (!(((NI) -1) <= first_0zBJdc87PSNN9acdsVgN3MQ)) goto LA7;
					{
						while (1) {
							NIM_BOOL LOC10;
							LOC10 = (NIM_BOOL)0;
							LOC10 = (((NI) 0) <= first_0zBJdc87PSNN9acdsVgN3MQ);
							if (!(LOC10)) goto LA11;
							LOC10 = !(((seps0[(NU)(((NU8)(s0->data[first_0zBJdc87PSNN9acdsVgN3MQ])))>>3] &(1U<<((NU)(((NU8)(s0->data[first_0zBJdc87PSNN9acdsVgN3MQ])))&7U)))!=0));
							LA11: ;
							if (!LOC10) goto LA9;
							first_0zBJdc87PSNN9acdsVgN3MQ -= ((NI) 1);
						} LA9: ;
					}
					{
						if (!(splits_7BNnmwdPRqx0b3kLDddUww == ((NI) 0))) goto LA14;
						first_0zBJdc87PSNN9acdsVgN3MQ = ((NI) -1);
					}
					LA14: ;
					{
						if (!(first_0zBJdc87PSNN9acdsVgN3MQ == ((NI) -1))) goto LA18;
						startpos_vwMRdaRxTAdqJmIO09bgy7w = ((NI) 0);
					}
					goto LA16;
					LA18: ;
					{
						startpos_vwMRdaRxTAdqJmIO09bgy7w = (NI)(first_0zBJdc87PSNN9acdsVgN3MQ + ((NI) 1));
					}
					LA16: ;
					x_aUbozeDgbd4b5GXhCB7f5Q = copyStrLast(s0, startpos_vwMRdaRxTAdqJmIO09bgy7w, last_nvZUuuQKE9br3bfHD4nUE1A);
					result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(result0)->Sup, sizeof(NimStringDesc*));
					LOC21 = (NimStringDesc*)0;
					LOC21 = result0->data[result0->Sup.len]; result0->data[result0->Sup.len] = nimrtl_copyStringRC1(x_aUbozeDgbd4b5GXhCB7f5Q);
					if (LOC21) nimGCunrefNoCycle(LOC21);
					++result0->Sup.len;
					{
						if (!(splits_7BNnmwdPRqx0b3kLDddUww == ((NI) 0))) goto LA24;
						goto LA6;
					}
					LA24: ;
					splits_7BNnmwdPRqx0b3kLDddUww -= ((NI) 1);
					first_0zBJdc87PSNN9acdsVgN3MQ -= ((NI) 1);
					last_nvZUuuQKE9br3bfHD4nUE1A = first_0zBJdc87PSNN9acdsVgN3MQ;
				} LA7: ;
			} LA6: ;
		}
		LA4: ;
	}
	reverse_LoixoqZetR6FfezoPedx8w(result0->data, result0->Sup.len);
	return result0;
}

N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuRSplitChar)(NimStringDesc* s0, NIM_CHAR sep0, NI maxsplit0) {
	TY_sM4lkSb7zS6F7OVMvW9cffQ* result0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) nimrtl_newSeq((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	{
		NimStringDesc* x_aUbozeDgbd4b5GXhCB7f5Q_2;
		NI last_nvZUuuQKE9br3bfHD4nUE1A_2;
		NI first_0zBJdc87PSNN9acdsVgN3MQ_2;
		NI splits_7BNnmwdPRqx0b3kLDddUww_2;
		NI startpos_vwMRdaRxTAdqJmIO09bgy7w_2;
		x_aUbozeDgbd4b5GXhCB7f5Q_2 = (NimStringDesc*)0;
		last_nvZUuuQKE9br3bfHD4nUE1A_2 = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
		first_0zBJdc87PSNN9acdsVgN3MQ_2 = last_nvZUuuQKE9br3bfHD4nUE1A_2;
		splits_7BNnmwdPRqx0b3kLDddUww_2 = maxsplit0;
		startpos_vwMRdaRxTAdqJmIO09bgy7w_2 = ((NI) 0);
		{
			if (!(((NI) 0) < (s0 ? s0->Sup.len : 0))) goto LA4;
			{
				while (1) {
					NimStringDesc* LOC21;
					if (!(((NI) -1) <= first_0zBJdc87PSNN9acdsVgN3MQ_2)) goto LA7;
					{
						while (1) {
							NIM_BOOL LOC10;
							LOC10 = (NIM_BOOL)0;
							LOC10 = (((NI) 0) <= first_0zBJdc87PSNN9acdsVgN3MQ_2);
							if (!(LOC10)) goto LA11;
							LOC10 = !(((NU8)(s0->data[first_0zBJdc87PSNN9acdsVgN3MQ_2]) == (NU8)(sep0)));
							LA11: ;
							if (!LOC10) goto LA9;
							first_0zBJdc87PSNN9acdsVgN3MQ_2 -= ((NI) 1);
						} LA9: ;
					}
					{
						if (!(splits_7BNnmwdPRqx0b3kLDddUww_2 == ((NI) 0))) goto LA14;
						first_0zBJdc87PSNN9acdsVgN3MQ_2 = ((NI) -1);
					}
					LA14: ;
					{
						if (!(first_0zBJdc87PSNN9acdsVgN3MQ_2 == ((NI) -1))) goto LA18;
						startpos_vwMRdaRxTAdqJmIO09bgy7w_2 = ((NI) 0);
					}
					goto LA16;
					LA18: ;
					{
						startpos_vwMRdaRxTAdqJmIO09bgy7w_2 = (NI)(first_0zBJdc87PSNN9acdsVgN3MQ_2 + ((NI) 1));
					}
					LA16: ;
					x_aUbozeDgbd4b5GXhCB7f5Q_2 = copyStrLast(s0, startpos_vwMRdaRxTAdqJmIO09bgy7w_2, last_nvZUuuQKE9br3bfHD4nUE1A_2);
					result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(result0)->Sup, sizeof(NimStringDesc*));
					LOC21 = (NimStringDesc*)0;
					LOC21 = result0->data[result0->Sup.len]; result0->data[result0->Sup.len] = nimrtl_copyStringRC1(x_aUbozeDgbd4b5GXhCB7f5Q_2);
					if (LOC21) nimGCunrefNoCycle(LOC21);
					++result0->Sup.len;
					{
						if (!(splits_7BNnmwdPRqx0b3kLDddUww_2 == ((NI) 0))) goto LA24;
						goto LA6;
					}
					LA24: ;
					splits_7BNnmwdPRqx0b3kLDddUww_2 -= ((NI) 1);
					first_0zBJdc87PSNN9acdsVgN3MQ_2 -= ((NI) 1);
					last_nvZUuuQKE9br3bfHD4nUE1A_2 = first_0zBJdc87PSNN9acdsVgN3MQ_2;
				} LA7: ;
			} LA6: ;
		}
		LA4: ;
	}
	reverse_LoixoqZetR6FfezoPedx8w(result0->data, result0->Sup.len);
	return result0;
}

N_LIB_EXPORT N_CDECL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nsuRSplitString)(NimStringDesc* s0, NimStringDesc* sep0, NI maxsplit0) {
	TY_sM4lkSb7zS6F7OVMvW9cffQ* result0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) nimrtl_newSeq((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	{
		NimStringDesc* x_aUbozeDgbd4b5GXhCB7f5Q_3;
		NI last_nvZUuuQKE9br3bfHD4nUE1A_3;
		NI first_0zBJdc87PSNN9acdsVgN3MQ_3;
		NI splits_7BNnmwdPRqx0b3kLDddUww_3;
		NI startpos_vwMRdaRxTAdqJmIO09bgy7w_3;
		x_aUbozeDgbd4b5GXhCB7f5Q_3 = (NimStringDesc*)0;
		last_nvZUuuQKE9br3bfHD4nUE1A_3 = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
		first_0zBJdc87PSNN9acdsVgN3MQ_3 = last_nvZUuuQKE9br3bfHD4nUE1A_3;
		splits_7BNnmwdPRqx0b3kLDddUww_3 = maxsplit0;
		startpos_vwMRdaRxTAdqJmIO09bgy7w_3 = ((NI) 0);
		{
			if (!(((NI) 0) < (s0 ? s0->Sup.len : 0))) goto LA4;
			{
				while (1) {
					NimStringDesc* LOC22;
					if (!(((NI) -1) <= first_0zBJdc87PSNN9acdsVgN3MQ_3)) goto LA7;
					{
						while (1) {
							NIM_BOOL LOC10;
							NIM_BOOL LOC12;
							LOC10 = (NIM_BOOL)0;
							LOC10 = (((NI) 0) <= first_0zBJdc87PSNN9acdsVgN3MQ_3);
							if (!(LOC10)) goto LA11;
							LOC12 = (NIM_BOOL)0;
							LOC12 = substreq_7ngl0F5lryTkSAj7sYQ7pw(s0, first_0zBJdc87PSNN9acdsVgN3MQ_3, sep0);
							LOC10 = !(LOC12);
							LA11: ;
							if (!LOC10) goto LA9;
							first_0zBJdc87PSNN9acdsVgN3MQ_3 -= ((NI) 1);
						} LA9: ;
					}
					{
						if (!(splits_7BNnmwdPRqx0b3kLDddUww_3 == ((NI) 0))) goto LA15;
						first_0zBJdc87PSNN9acdsVgN3MQ_3 = ((NI) -1);
					}
					LA15: ;
					{
						if (!(first_0zBJdc87PSNN9acdsVgN3MQ_3 == ((NI) -1))) goto LA19;
						startpos_vwMRdaRxTAdqJmIO09bgy7w_3 = ((NI) 0);
					}
					goto LA17;
					LA19: ;
					{
						startpos_vwMRdaRxTAdqJmIO09bgy7w_3 = (NI)(first_0zBJdc87PSNN9acdsVgN3MQ_3 + (sep0 ? sep0->Sup.len : 0));
					}
					LA17: ;
					x_aUbozeDgbd4b5GXhCB7f5Q_3 = copyStrLast(s0, startpos_vwMRdaRxTAdqJmIO09bgy7w_3, last_nvZUuuQKE9br3bfHD4nUE1A_3);
					result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(result0)->Sup, sizeof(NimStringDesc*));
					LOC22 = (NimStringDesc*)0;
					LOC22 = result0->data[result0->Sup.len]; result0->data[result0->Sup.len] = nimrtl_copyStringRC1(x_aUbozeDgbd4b5GXhCB7f5Q_3);
					if (LOC22) nimGCunrefNoCycle(LOC22);
					++result0->Sup.len;
					{
						if (!(splits_7BNnmwdPRqx0b3kLDddUww_3 == ((NI) 0))) goto LA25;
						goto LA6;
					}
					LA25: ;
					splits_7BNnmwdPRqx0b3kLDddUww_3 -= ((NI) 1);
					first_0zBJdc87PSNN9acdsVgN3MQ_3 -= ((NI) 1);
					last_nvZUuuQKE9br3bfHD4nUE1A_3 = first_0zBJdc87PSNN9acdsVgN3MQ_3;
				} LA7: ;
			} LA6: ;
		}
		LA4: ;
	}
	reverse_LoixoqZetR6FfezoPedx8w(result0->data, result0->Sup.len);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToHex)(NI64 x0, NI len0) {
	NimStringDesc* result0;
	NI64 n0;
	result0 = (NimStringDesc*)0;
	n0 = x0;
	result0 = mnewString(((NI) (len0)));
	{
		NI j_jtVhfoYpXeRJUwm8SjFcYA;
		NI HEX3Atmp_DL9bYykBTQPZcxEnrzhm9cYg;
		NI res_K9cSgDvHGGBxWzGn3Ng0Dkw;
		j_jtVhfoYpXeRJUwm8SjFcYA = (NI)0;
		HEX3Atmp_DL9bYykBTQPZcxEnrzhm9cYg = (NI)0;
		HEX3Atmp_DL9bYykBTQPZcxEnrzhm9cYg = (NI)(((NI) (len0)) - ((NI) 1));
		res_K9cSgDvHGGBxWzGn3Ng0Dkw = ((NI) (HEX3Atmp_DL9bYykBTQPZcxEnrzhm9cYg));
		{
			while (1) {
				if (!(((NI) 0) <= res_K9cSgDvHGGBxWzGn3Ng0Dkw)) goto LA3;
				j_jtVhfoYpXeRJUwm8SjFcYA = ((NI) (res_K9cSgDvHGGBxWzGn3Ng0Dkw));
				result0->data[j_jtVhfoYpXeRJUwm8SjFcYA] = ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_3)->data[(NI64)(n0 & IL64(15))];
				n0 = (NI64)((NU64)(n0) >> (NU64)(((NI) 4)));
				{
					NIM_BOOL LOC6;
					LOC6 = (NIM_BOOL)0;
					LOC6 = (n0 == IL64(0));
					if (!(LOC6)) goto LA7;
					LOC6 = (x0 < IL64(0));
					LA7: ;
					if (!LOC6) goto LA8;
					n0 = IL64(-1);
				}
				LA8: ;
				res_K9cSgDvHGGBxWzGn3Ng0Dkw -= ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuIntToStr)(NI x0, NI minchars0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = nimrtl_nimIntToStr((x0 > 0? (x0) : -(x0)));
	{
		NI i_0WI5azliNHYkVYV8ChzA6A;
		NI HEX3Atmp_fSOxXjlVMUMPmJjXyPHj4Q;
		NI res_9aPdOY13II9avtAIzc2NHzgg;
		i_0WI5azliNHYkVYV8ChzA6A = (NI)0;
		HEX3Atmp_fSOxXjlVMUMPmJjXyPHj4Q = (NI)0;
		HEX3Atmp_fSOxXjlVMUMPmJjXyPHj4Q = (NI)(((NI) (minchars0)) - (result0 ? result0->Sup.len : 0));
		res_9aPdOY13II9avtAIzc2NHzgg = ((NI) 1);
		{
			while (1) {
				NimStringDesc* LOC4;
				if (!(res_9aPdOY13II9avtAIzc2NHzgg <= HEX3Atmp_fSOxXjlVMUMPmJjXyPHj4Q)) goto LA3;
				i_0WI5azliNHYkVYV8ChzA6A = res_9aPdOY13II9avtAIzc2NHzgg;
				LOC4 = (NimStringDesc*)0;
				LOC4 = rawNewString(result0->Sup.len + 1);
appendChar(LOC4, 48);
appendString(LOC4, result0);
				result0 = LOC4;
				res_9aPdOY13II9avtAIzc2NHzgg += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NimStringDesc* LOC9;
		if (!(x0 < ((NI) 0))) goto LA7;
		LOC9 = (NimStringDesc*)0;
		LOC9 = rawNewString(result0->Sup.len + 1);
appendChar(LOC9, 45);
appendString(LOC9, result0);
		result0 = LOC9;
	}
	LA7: ;
	return result0;
}

static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0) {
	{
		Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
		if (!!((src0 == NIM_NIL))) goto LA3;
		c0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(src0);
		(*c0).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
		if (!!(((*dest0) == NIM_NIL))) goto LA7;
		c0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem((*dest0));
		{
			(*c0).refcount -= ((NI) 8);
			if (!((NU32)((*c0).refcount) < (NU32)(((NI) 8)))) goto LA11;
			nimrtl_rtlAddZCT(c0);
		}
		LA11: ;
	}
	LA7: ;
	(*dest0) = src0;
}

N_LIB_EXPORT N_CDECL(NI, nsuParseInt)(NimStringDesc* s0) {
	NI result0;
	NI L0;
	result0 = (NI)0;
	L0 = npuParseInt(s0, (&result0), ((NI) 0));
	{
		NIM_BOOL LOC3;
		Valueerror_Gi06FkNeykJn7mrqRZYrkA* e_h9cJEojVqoNVqDKVeb0IKjg;
		NimStringDesc* LOC7;
		LOC3 = (NIM_BOOL)0;
		LOC3 = !((L0 == (s0 ? s0->Sup.len : 0)));
		if (LOC3) goto LA4;
		LOC3 = (L0 == ((NI) 0));
		LA4: ;
		if (!LOC3) goto LA5;
		e_h9cJEojVqoNVqDKVeb0IKjg = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)0;
		e_h9cJEojVqoNVqDKVeb0IKjg = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*) nimrtl_newObj((&NTI_yCEN9anxCD6mzBxGjuaRBdg), sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA));
		(*e_h9cJEojVqoNVqDKVeb0IKjg).Sup.Sup.m_type = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
		LOC7 = (NimStringDesc*)0;
		LOC7 = rawNewString(s0->Sup.len + 17);
appendString(LOC7, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_4));
appendString(LOC7, s0);
		asgnRefNoCycle((void**) (&(*e_h9cJEojVqoNVqDKVeb0IKjg).Sup.message), LOC7);
		nimrtl_raiseException((Exception*)e_h9cJEojVqoNVqDKVeb0IKjg, "ValueError");
	}
	LA5: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NI64, nsuParseBiggestInt)(NimStringDesc* s0) {
	NI64 result0;
	NI L0;
	result0 = (NI64)0;
	L0 = npuParseBiggestInt(s0, (&result0), ((NI) 0));
	{
		NIM_BOOL LOC3;
		Valueerror_Gi06FkNeykJn7mrqRZYrkA* e_p4geovby25ZtMrv9aTrThJw;
		NimStringDesc* LOC7;
		LOC3 = (NIM_BOOL)0;
		LOC3 = !((L0 == (s0 ? s0->Sup.len : 0)));
		if (LOC3) goto LA4;
		LOC3 = (L0 == ((NI) 0));
		LA4: ;
		if (!LOC3) goto LA5;
		e_p4geovby25ZtMrv9aTrThJw = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)0;
		e_p4geovby25ZtMrv9aTrThJw = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*) nimrtl_newObj((&NTI_yCEN9anxCD6mzBxGjuaRBdg), sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA));
		(*e_p4geovby25ZtMrv9aTrThJw).Sup.Sup.m_type = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
		LOC7 = (NimStringDesc*)0;
		LOC7 = rawNewString(s0->Sup.len + 17);
appendString(LOC7, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_4));
appendString(LOC7, s0);
		asgnRefNoCycle((void**) (&(*e_p4geovby25ZtMrv9aTrThJw).Sup.message), LOC7);
		nimrtl_raiseException((Exception*)e_p4geovby25ZtMrv9aTrThJw, "ValueError");
	}
	LA5: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NU, nsuParseUInt)(NimStringDesc* s0) {
	NU result0;
	NI L0;
	result0 = (NU)0;
	L0 = npuParseUInt(s0, (&result0), ((NI) 0));
	{
		NIM_BOOL LOC3;
		Valueerror_Gi06FkNeykJn7mrqRZYrkA* e_mTHT0zxSLbGHSrKViE58oQ;
		NimStringDesc* LOC7;
		LOC3 = (NIM_BOOL)0;
		LOC3 = !((L0 == (s0 ? s0->Sup.len : 0)));
		if (LOC3) goto LA4;
		LOC3 = (L0 == ((NI) 0));
		LA4: ;
		if (!LOC3) goto LA5;
		e_mTHT0zxSLbGHSrKViE58oQ = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)0;
		e_mTHT0zxSLbGHSrKViE58oQ = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*) nimrtl_newObj((&NTI_yCEN9anxCD6mzBxGjuaRBdg), sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA));
		(*e_mTHT0zxSLbGHSrKViE58oQ).Sup.Sup.m_type = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
		LOC7 = (NimStringDesc*)0;
		LOC7 = rawNewString(s0->Sup.len + 26);
appendString(LOC7, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_5));
appendString(LOC7, s0);
		asgnRefNoCycle((void**) (&(*e_mTHT0zxSLbGHSrKViE58oQ).Sup.message), LOC7);
		nimrtl_raiseException((Exception*)e_mTHT0zxSLbGHSrKViE58oQ, "ValueError");
	}
	LA5: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NU64, nsuParseBiggestUInt)(NimStringDesc* s0) {
	NU64 result0;
	NI L0;
	result0 = (NU64)0;
	L0 = npuParseBiggestUInt(s0, (&result0), ((NI) 0));
	{
		NIM_BOOL LOC3;
		Valueerror_Gi06FkNeykJn7mrqRZYrkA* e_O0XEbD7qS9bH17Y59aTsopqw;
		NimStringDesc* LOC7;
		LOC3 = (NIM_BOOL)0;
		LOC3 = !((L0 == (s0 ? s0->Sup.len : 0)));
		if (LOC3) goto LA4;
		LOC3 = (L0 == ((NI) 0));
		LA4: ;
		if (!LOC3) goto LA5;
		e_O0XEbD7qS9bH17Y59aTsopqw = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)0;
		e_O0XEbD7qS9bH17Y59aTsopqw = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*) nimrtl_newObj((&NTI_yCEN9anxCD6mzBxGjuaRBdg), sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA));
		(*e_O0XEbD7qS9bH17Y59aTsopqw).Sup.Sup.m_type = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
		LOC7 = (NimStringDesc*)0;
		LOC7 = rawNewString(s0->Sup.len + 26);
appendString(LOC7, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_5));
appendString(LOC7, s0);
		asgnRefNoCycle((void**) (&(*e_O0XEbD7qS9bH17Y59aTsopqw).Sup.message), LOC7);
		nimrtl_raiseException((Exception*)e_O0XEbD7qS9bH17Y59aTsopqw, "ValueError");
	}
	LA5: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NF, nsuParseFloat)(NimStringDesc* s0) {
	NF result0;
	NI L0;
	result0 = (NF)0;
	L0 = npuParseFloat(s0, (&result0), ((NI) 0));
	{
		NIM_BOOL LOC3;
		Valueerror_Gi06FkNeykJn7mrqRZYrkA* e_tBQ1yEygRNCXyDbW7d5n0Q;
		NimStringDesc* LOC7;
		LOC3 = (NIM_BOOL)0;
		LOC3 = !((L0 == (s0 ? s0->Sup.len : 0)));
		if (LOC3) goto LA4;
		LOC3 = (L0 == ((NI) 0));
		LA4: ;
		if (!LOC3) goto LA5;
		e_tBQ1yEygRNCXyDbW7d5n0Q = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)0;
		e_tBQ1yEygRNCXyDbW7d5n0Q = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*) nimrtl_newObj((&NTI_yCEN9anxCD6mzBxGjuaRBdg), sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA));
		(*e_tBQ1yEygRNCXyDbW7d5n0Q).Sup.Sup.m_type = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
		LOC7 = (NimStringDesc*)0;
		LOC7 = rawNewString(s0->Sup.len + 15);
appendString(LOC7, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_6));
appendString(LOC7, s0);
		asgnRefNoCycle((void**) (&(*e_tBQ1yEygRNCXyDbW7d5n0Q).Sup.message), LOC7);
		nimrtl_raiseException((Exception*)e_tBQ1yEygRNCXyDbW7d5n0Q, "ValueError");
	}
	LA5: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nsuParseHexInt)(NimStringDesc* s0) {
	NI result0;
	NI i0;
	result0 = (NI)0;
	i0 = ((NI) 0);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = (NIM_BOOL)0;
		LOC3 = ((NU8)(s0->data[i0]) == (NU8)(48));
		if (!(LOC3)) goto LA4;
		LOC5 = (NIM_BOOL)0;
		LOC5 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(120));
		if (LOC5) goto LA6;
		LOC5 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(88));
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA7;
		i0 += ((NI) 2);
	}
	goto LA1;
	LA7: ;
	{
		if (!((NU8)(s0->data[i0]) == (NU8)(35))) goto LA10;
		i0 += ((NI) 1);
	}
	goto LA1;
	LA10: ;
	LA1: ;
	{
		while (1) {
			switch (((NU8)(s0->data[i0]))) {
			case 95:
			{
				i0 += ((NI) 1);
			}
			break;
			case 48 ... 57:
			{
				result0 = (NI)((NI)((NU32)(result0) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48)))));
				i0 += ((NI) 1);
			}
			break;
			case 97 ... 102:
			{
				result0 = (NI)((NI)((NU32)(result0) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 97)))) + ((NI) 10)))));
				i0 += ((NI) 1);
			}
			break;
			case 65 ... 70:
			{
				result0 = (NI)((NI)((NU32)(result0) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 65)))) + ((NI) 10)))));
				i0 += ((NI) 1);
			}
			break;
			case 0:
			{
				goto LA12;
			}
			break;
			default:
			{
				Valueerror_Gi06FkNeykJn7mrqRZYrkA* e_s9a8HynXzFiyMdNic0A3chQ;
				NimStringDesc* LOC20;
				e_s9a8HynXzFiyMdNic0A3chQ = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)0;
				e_s9a8HynXzFiyMdNic0A3chQ = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*) nimrtl_newObj((&NTI_yCEN9anxCD6mzBxGjuaRBdg), sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA));
				(*e_s9a8HynXzFiyMdNic0A3chQ).Sup.Sup.m_type = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
				LOC20 = (NimStringDesc*)0;
				LOC20 = rawNewString(s0->Sup.len + 17);
appendString(LOC20, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_4));
appendString(LOC20, s0);
				asgnRefNoCycle((void**) (&(*e_s9a8HynXzFiyMdNic0A3chQ).Sup.message), LOC20);
				nimrtl_raiseException((Exception*)e_s9a8HynXzFiyMdNic0A3chQ, "ValueError");
			}
			break;
			}
		}
	} LA12: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuRepeatChar)(NIM_CHAR c0, NI count0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = mnewString(count0);
	{
		NI i_3GQd65NoQ8GRAK9aKcUCkqQ;
		NI HEX3Atmp_dzdTGA9bp9cdFQ4FdPqfyPrQ;
		NI res_ZCK9av0K5RQEcyuf9cJ7G5eg;
		i_3GQd65NoQ8GRAK9aKcUCkqQ = (NI)0;
		HEX3Atmp_dzdTGA9bp9cdFQ4FdPqfyPrQ = (NI)0;
		HEX3Atmp_dzdTGA9bp9cdFQ4FdPqfyPrQ = (NI)(((NI) (count0)) - ((NI) 1));
		res_ZCK9av0K5RQEcyuf9cJ7G5eg = ((NI) 0);
		{
			while (1) {
				if (!(res_ZCK9av0K5RQEcyuf9cJ7G5eg <= ((NI) (HEX3Atmp_dzdTGA9bp9cdFQ4FdPqfyPrQ)))) goto LA3;
				i_3GQd65NoQ8GRAK9aKcUCkqQ = ((NI) (res_ZCK9av0K5RQEcyuf9cJ7G5eg));
				result0->data[i_3GQd65NoQ8GRAK9aKcUCkqQ] = c0;
				res_ZCK9av0K5RQEcyuf9cJ7G5eg += ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuRepeatStr)(NimStringDesc* s0, NI n0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) ((NI)(((NI) (n0)) * (s0 ? s0->Sup.len : 0)))));
	{
		NI i_3GQd65NoQ8GRAK9aKcUCkqQ_2;
		NI res_ZCK9av0K5RQEcyuf9cJ7G5eg_2;
		i_3GQd65NoQ8GRAK9aKcUCkqQ_2 = (NI)0;
		res_ZCK9av0K5RQEcyuf9cJ7G5eg_2 = ((NI) 1);
		{
			while (1) {
				if (!(res_ZCK9av0K5RQEcyuf9cJ7G5eg_2 <= ((NI) (n0)))) goto LA3;
				i_3GQd65NoQ8GRAK9aKcUCkqQ_2 = ((NI) (res_ZCK9av0K5RQEcyuf9cJ7G5eg_2));
				result0 = nimrtl_resizeString(result0, s0->Sup.len + 0);
appendString(result0, s0);
				res_ZCK9av0K5RQEcyuf9cJ7G5eg_2 += ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuAlignString)(NimStringDesc* s0, NI count0, NIM_CHAR padding0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		NI spaces0;
		if (!((s0 ? s0->Sup.len : 0) < ((NI) (count0)))) goto LA3;
		result0 = mnewString(count0);
		spaces0 = (NI)(((NI) (count0)) - (s0 ? s0->Sup.len : 0));
		{
			NI i_JmCSpIFE9bsqWGvCHmrwCiA;
			NI HEX3Atmp_7pgZ59aTLOuG9aXHym9bTiYcQ;
			NI res_NN0JGlls350dnHQgbS3kXw;
			i_JmCSpIFE9bsqWGvCHmrwCiA = (NI)0;
			HEX3Atmp_7pgZ59aTLOuG9aXHym9bTiYcQ = (NI)0;
			HEX3Atmp_7pgZ59aTLOuG9aXHym9bTiYcQ = (NI)(spaces0 - ((NI) 1));
			res_NN0JGlls350dnHQgbS3kXw = ((NI) 0);
			{
				while (1) {
					if (!(res_NN0JGlls350dnHQgbS3kXw <= HEX3Atmp_7pgZ59aTLOuG9aXHym9bTiYcQ)) goto LA7;
					i_JmCSpIFE9bsqWGvCHmrwCiA = res_NN0JGlls350dnHQgbS3kXw;
					result0->data[i_JmCSpIFE9bsqWGvCHmrwCiA] = padding0;
					res_NN0JGlls350dnHQgbS3kXw += ((NI) 1);
				} LA7: ;
			}
		}
		{
			NI i_JmCSpIFE9bsqWGvCHmrwCiA_2;
			NI HEX3Atmp_7pgZ59aTLOuG9aXHym9bTiYcQ_2;
			NI res_NN0JGlls350dnHQgbS3kXw_2;
			i_JmCSpIFE9bsqWGvCHmrwCiA_2 = (NI)0;
			HEX3Atmp_7pgZ59aTLOuG9aXHym9bTiYcQ_2 = (NI)0;
			HEX3Atmp_7pgZ59aTLOuG9aXHym9bTiYcQ_2 = (NI)(((NI) (count0)) - ((NI) 1));
			res_NN0JGlls350dnHQgbS3kXw_2 = spaces0;
			{
				while (1) {
					if (!(res_NN0JGlls350dnHQgbS3kXw_2 <= ((NI) (HEX3Atmp_7pgZ59aTLOuG9aXHym9bTiYcQ_2)))) goto LA10;
					i_JmCSpIFE9bsqWGvCHmrwCiA_2 = ((NI) (res_NN0JGlls350dnHQgbS3kXw_2));
					result0->data[i_JmCSpIFE9bsqWGvCHmrwCiA_2] = s0->data[(NI)(((NI) (i_JmCSpIFE9bsqWGvCHmrwCiA_2)) - spaces0)];
					res_NN0JGlls350dnHQgbS3kXw_2 += ((NI) 1);
				} LA10: ;
			}
		}
	}
	goto LA1;
	LA3: ;
	{
		result0 = nimrtl_copyString(s0);
	}
	LA1: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuWordWrap)(NimStringDesc* s0, NI maxlinewidth0, NIM_BOOL splitlongwords0, TY_nmiMWKVIe46vacnhAFrQvw_Set seps0, NimStringDesc* newline0) {
	NimStringDesc* result0;
	NI spaceleft0;
	NimStringDesc* lastsep0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) ((NI)((s0 ? s0->Sup.len : 0) + (NI)((NU32)((s0 ? s0->Sup.len : 0)) >> (NU32)(((NI) 6)))))));
	spaceleft0 = maxlinewidth0;
	lastsep0 = nimrtl_copyString(((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_7));
	{
		NimStringDesc* word_W19cNmg19b6g8U6eW6hocntg;
		NIM_BOOL issep_wrvpWhLxNN8K0lBeIDoLyA;
		NI i_dMfT3z1YkwaHaTuOYa4jkw;
		word_W19cNmg19b6g8U6eW6hocntg = (NimStringDesc*)0;
		issep_wrvpWhLxNN8K0lBeIDoLyA = (NIM_BOOL)0;
		i_dMfT3z1YkwaHaTuOYa4jkw = ((NI) 0);
		{
			while (1) {
				NI j_4lrnqafapH9ceNuKSvZCs3w;
				NIM_BOOL issep_wrvpWhLxNN8K0lBeIDoLyA_2;
				j_4lrnqafapH9ceNuKSvZCs3w = i_dMfT3z1YkwaHaTuOYa4jkw;
				issep_wrvpWhLxNN8K0lBeIDoLyA_2 = ((seps0[(NU)(((NU8)(s0->data[j_4lrnqafapH9ceNuKSvZCs3w])))>>3] &(1U<<((NU)(((NU8)(s0->data[j_4lrnqafapH9ceNuKSvZCs3w])))&7U)))!=0);
				{
					while (1) {
						NIM_BOOL LOC6;
						LOC6 = (NIM_BOOL)0;
						LOC6 = (j_4lrnqafapH9ceNuKSvZCs3w < (s0 ? s0->Sup.len : 0));
						if (!(LOC6)) goto LA7;
						LOC6 = (((seps0[(NU)(((NU8)(s0->data[j_4lrnqafapH9ceNuKSvZCs3w])))>>3] &(1U<<((NU)(((NU8)(s0->data[j_4lrnqafapH9ceNuKSvZCs3w])))&7U)))!=0) == issep_wrvpWhLxNN8K0lBeIDoLyA_2);
						LA7: ;
						if (!LOC6) goto LA5;
						j_4lrnqafapH9ceNuKSvZCs3w += ((NI) 1);
					} LA5: ;
				}
				{
					if (!(i_dMfT3z1YkwaHaTuOYa4jkw < j_4lrnqafapH9ceNuKSvZCs3w)) goto LA10;
					word_W19cNmg19b6g8U6eW6hocntg = copyStrLast(s0, i_dMfT3z1YkwaHaTuOYa4jkw, (NI)(j_4lrnqafapH9ceNuKSvZCs3w - ((NI) 1)));
					issep_wrvpWhLxNN8K0lBeIDoLyA = issep_wrvpWhLxNN8K0lBeIDoLyA_2;
					{
						{
							if (!issep_wrvpWhLxNN8K0lBeIDoLyA) goto LA15;
							lastsep0 = nimrtl_copyString(word_W19cNmg19b6g8U6eW6hocntg);
							spaceleft0 = (NI)(spaceleft0 - (word_W19cNmg19b6g8U6eW6hocntg ? word_W19cNmg19b6g8U6eW6hocntg->Sup.len : 0));
							goto LA12;
						}
						LA15: ;
						{
							if (!(spaceleft0 < (word_W19cNmg19b6g8U6eW6hocntg ? word_W19cNmg19b6g8U6eW6hocntg->Sup.len : 0))) goto LA19;
							{
								NIM_BOOL LOC23;
								NimStringDesc* LOC27;
								NI w0;
								NI wordleft0;
								LOC23 = (NIM_BOOL)0;
								LOC23 = splitlongwords0;
								if (!(LOC23)) goto LA24;
								LOC23 = (maxlinewidth0 < (word_W19cNmg19b6g8U6eW6hocntg ? word_W19cNmg19b6g8U6eW6hocntg->Sup.len : 0));
								LA24: ;
								if (!LOC23) goto LA25;
								LOC27 = (NimStringDesc*)0;
								LOC27 = copyStrLast(word_W19cNmg19b6g8U6eW6hocntg, ((NI) 0), (NI)(spaceleft0 - ((NI) 1)));
								result0 = nimrtl_resizeString(result0, LOC27->Sup.len + 0);
appendString(result0, LOC27);
								w0 = (NI)(spaceleft0 + ((NI) 1));
								wordleft0 = (NI)((word_W19cNmg19b6g8U6eW6hocntg ? word_W19cNmg19b6g8U6eW6hocntg->Sup.len : 0) - spaceleft0);
								{
									while (1) {
										NI L0;
										NimStringDesc* LOC30;
										if (!(((NI) 0) < wordleft0)) goto LA29;
										result0 = nimrtl_resizeString(result0, newline0->Sup.len + 0);
appendString(result0, newline0);
										L0 = ((maxlinewidth0 <= wordleft0) ? maxlinewidth0 : wordleft0);
										spaceleft0 = (NI)(maxlinewidth0 - L0);
										LOC30 = (NimStringDesc*)0;
										LOC30 = copyStrLast(word_W19cNmg19b6g8U6eW6hocntg, w0, (NI)((NI)(w0 + L0) - ((NI) 1)));
										result0 = nimrtl_resizeString(result0, LOC30->Sup.len + 0);
appendString(result0, LOC30);
										w0 += L0;
										wordleft0 -= L0;
									} LA29: ;
								}
							}
							goto LA21;
							LA25: ;
							{
								spaceleft0 = (NI)(maxlinewidth0 - (word_W19cNmg19b6g8U6eW6hocntg ? word_W19cNmg19b6g8U6eW6hocntg->Sup.len : 0));
								result0 = nimrtl_resizeString(result0, newline0->Sup.len + 0);
appendString(result0, newline0);
								result0 = nimrtl_resizeString(result0, word_W19cNmg19b6g8U6eW6hocntg->Sup.len + 0);
appendString(result0, word_W19cNmg19b6g8U6eW6hocntg);
							}
							LA21: ;
						}
						goto LA17;
						LA19: ;
						{
							NimStringDesc* LOC33;
							spaceleft0 = (NI)(spaceleft0 - (word_W19cNmg19b6g8U6eW6hocntg ? word_W19cNmg19b6g8U6eW6hocntg->Sup.len : 0));
							LOC33 = (NimStringDesc*)0;
							LOC33 = rawNewString(lastsep0->Sup.len + word_W19cNmg19b6g8U6eW6hocntg->Sup.len + 0);
appendString(LOC33, lastsep0);
appendString(LOC33, word_W19cNmg19b6g8U6eW6hocntg);
							result0 = nimrtl_resizeString(result0, LOC33->Sup.len + 0);
appendString(result0, LOC33);
							lastsep0 = nimrtl_setLengthStr(lastsep0, ((NI) 0));
						}
						LA17: ;
					} LA12: ;
				}
				goto LA8;
				LA10: ;
				{
					goto LA2;
				}
				LA8: ;
				i_dMfT3z1YkwaHaTuOYa4jkw = j_4lrnqafapH9ceNuKSvZCs3w;
			}
		} LA2: ;
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuIndent)(NimStringDesc* s0, NI count0, NimStringDesc* padding0) {
	NimStringDesc* result0;
	NI i0;
	result0 = (NimStringDesc*)0;
	result0 = nimrtl_copyString(((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_7));
	i0 = ((NI) 0);
	{
		NimStringDesc* line_FKkjag1nGSPFcwMLMCi9bRA;
		NI first_a5mmrXHGJSOvklp9b9atsWLg;
		NI last_FV0Pokn9aZSy8jDz9bWP2D2w;
		line_FKkjag1nGSPFcwMLMCi9bRA = (NimStringDesc*)0;
		first_a5mmrXHGJSOvklp9b9atsWLg = ((NI) 0);
		last_FV0Pokn9aZSy8jDz9bWP2D2w = ((NI) 0);
		{
			while (1) {
				{
					while (1) {
						if (!!((((NU8)(s0->data[last_FV0Pokn9aZSy8jDz9bWP2D2w])) == ((NU8)(0)) || ((NU8)(s0->data[last_FV0Pokn9aZSy8jDz9bWP2D2w])) == ((NU8)(13)) || ((NU8)(s0->data[last_FV0Pokn9aZSy8jDz9bWP2D2w])) == ((NU8)(10))))) goto LA5;
						last_FV0Pokn9aZSy8jDz9bWP2D2w += ((NI) 1);
					} LA5: ;
				}
				line_FKkjag1nGSPFcwMLMCi9bRA = copyStrLast(s0, first_a5mmrXHGJSOvklp9b9atsWLg, (NI)(last_FV0Pokn9aZSy8jDz9bWP2D2w - ((NI) 1)));
				{
					if (!!((i0 == ((NI) 0)))) goto LA8;
					result0 = nimrtl_resizeString(result0, 1);
appendString(result0, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_8));
				}
				LA8: ;
				{
					NI j_9bC1fEWBljcoaLzIE5uRC5g;
					NI res_xSTj6CXkPJ7KMjOaq74ALQ;
					j_9bC1fEWBljcoaLzIE5uRC5g = (NI)0;
					res_xSTj6CXkPJ7KMjOaq74ALQ = ((NI) 1);
					{
						while (1) {
							if (!(res_xSTj6CXkPJ7KMjOaq74ALQ <= ((NI) (count0)))) goto LA12;
							j_9bC1fEWBljcoaLzIE5uRC5g = ((NI) (res_xSTj6CXkPJ7KMjOaq74ALQ));
							result0 = nimrtl_resizeString(result0, padding0->Sup.len + 0);
appendString(result0, padding0);
							res_xSTj6CXkPJ7KMjOaq74ALQ += ((NI) 1);
						} LA12: ;
					}
				}
				result0 = nimrtl_resizeString(result0, line_FKkjag1nGSPFcwMLMCi9bRA->Sup.len + 0);
appendString(result0, line_FKkjag1nGSPFcwMLMCi9bRA);
				i0 += ((NI) 1);
				{
					if (!((NU8)(s0->data[last_FV0Pokn9aZSy8jDz9bWP2D2w]) == (NU8)(10))) goto LA15;
					last_FV0Pokn9aZSy8jDz9bWP2D2w += ((NI) 1);
				}
				goto LA13;
				LA15: ;
				{
					if (!((NU8)(s0->data[last_FV0Pokn9aZSy8jDz9bWP2D2w]) == (NU8)(13))) goto LA18;
					last_FV0Pokn9aZSy8jDz9bWP2D2w += ((NI) 1);
					{
						if (!((NU8)(s0->data[last_FV0Pokn9aZSy8jDz9bWP2D2w]) == (NU8)(10))) goto LA22;
						last_FV0Pokn9aZSy8jDz9bWP2D2w += ((NI) 1);
					}
					LA22: ;
				}
				goto LA13;
				LA18: ;
				{
					goto LA2;
				}
				LA13: ;
				first_a5mmrXHGJSOvklp9b9atsWLg = last_FV0Pokn9aZSy8jDz9bWP2D2w;
			}
		} LA2: ;
	}
	return result0;
}

static N_INLINE(NimStringDesc*, HEX5BHEX5D_Sq9b57KCLKZryBwyHy49aBswstrutils)(NimStringDesc* s0, Slice_qL3WGViqT0p5sVr4YFHsLg x0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = copyStrLast(s0, x0.a, x0.b);
	return result0;
}

static N_INLINE(Slice_qL3WGViqT0p5sVr4YFHsLg, HEX2EHEX2E_18yoMoUbfoITYgEZSwZDYAstrutils)(NI a0, NI b0) {
	Slice_qL3WGViqT0p5sVr4YFHsLg result0;
	memset((void*)(&result0), 0, sizeof(result0));
	result0.a = a0;
	result0.b = b0;
	return result0;
}

static N_INLINE(NIM_BOOL, equalmem_DCrUjdaMvFDHaR1hs7sQGwstrutils)(void* a0, void* b0, NI size0) {
	NIM_BOOL result0;
	int LOC1;
	result0 = (NIM_BOOL)0;
	LOC1 = (int)0;
	LOC1 = memcmp(a0, b0, ((size_t) (size0)));
	result0 = (LOC1 == ((NI32) 0));
	return result0;
}

static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a0, NimStringDesc* b0) {
	NIM_BOOL result0;
	NIM_BOOL LOC11;
{	result0 = (NIM_BOOL)0;
	{
		if (!(a0 == b0)) goto LA3;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = (NIM_BOOL)0;
		LOC7 = (a0 == NIM_NIL);
		if (LOC7) goto LA8;
		LOC7 = (b0 == NIM_NIL);
		LA8: ;
		if (!LOC7) goto LA9;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA9: ;
	LOC11 = (NIM_BOOL)0;
	LOC11 = ((*a0).Sup.len == (*b0).Sup.len);
	if (!(LOC11)) goto LA12;
	LOC11 = equalmem_DCrUjdaMvFDHaR1hs7sQGwstrutils(((void*) ((*a0).data)), ((void*) ((*b0).data)), ((NI) ((*a0).Sup.len)));
	LA12: ;
	result0 = LOC11;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuUnindent)(NimStringDesc* s0, NI count0, NimStringDesc* padding0) {
	NimStringDesc* result0;
	NI i0;
	result0 = (NimStringDesc*)0;
	result0 = nimrtl_copyString(((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_7));
	i0 = ((NI) 0);
	{
		NimStringDesc* line_ffuHxesMz9cKJSSGfq0xX4Q;
		NI first_T0HYyk38Ujxnja2FcBdtzA;
		NI last_t8zuIlUtDejAgTVBjImWyQ;
		line_ffuHxesMz9cKJSSGfq0xX4Q = (NimStringDesc*)0;
		first_T0HYyk38Ujxnja2FcBdtzA = ((NI) 0);
		last_t8zuIlUtDejAgTVBjImWyQ = ((NI) 0);
		{
			while (1) {
				NI indentcount0;
				Slice_qL3WGViqT0p5sVr4YFHsLg LOC19;
				NimStringDesc* LOC20;
				{
					while (1) {
						if (!!((((NU8)(s0->data[last_t8zuIlUtDejAgTVBjImWyQ])) == ((NU8)(0)) || ((NU8)(s0->data[last_t8zuIlUtDejAgTVBjImWyQ])) == ((NU8)(13)) || ((NU8)(s0->data[last_t8zuIlUtDejAgTVBjImWyQ])) == ((NU8)(10))))) goto LA5;
						last_t8zuIlUtDejAgTVBjImWyQ += ((NI) 1);
					} LA5: ;
				}
				line_ffuHxesMz9cKJSSGfq0xX4Q = copyStrLast(s0, first_T0HYyk38Ujxnja2FcBdtzA, (NI)(last_t8zuIlUtDejAgTVBjImWyQ - ((NI) 1)));
				{
					if (!!((i0 == ((NI) 0)))) goto LA8;
					result0 = nimrtl_resizeString(result0, 1);
appendString(result0, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_8));
				}
				LA8: ;
				indentcount0 = ((NI) 0);
				{
					NI j_EL21l9cdb654PlTjA9civiFw;
					NI HEX3Atmp_qrUkl09cWFclmNc8fDQkdDA;
					NI i_K9cOCxTOsWFMPFZaTCSam9aQ;
					j_EL21l9cdb654PlTjA9civiFw = (NI)0;
					HEX3Atmp_qrUkl09cWFclmNc8fDQkdDA = (NI)0;
					HEX3Atmp_qrUkl09cWFclmNc8fDQkdDA = ((NI) (count0));
					i_K9cOCxTOsWFMPFZaTCSam9aQ = ((NI) 0);
					{
						while (1) {
							if (!(i_K9cOCxTOsWFMPFZaTCSam9aQ < HEX3Atmp_qrUkl09cWFclmNc8fDQkdDA)) goto LA12;
							j_EL21l9cdb654PlTjA9civiFw = i_K9cOCxTOsWFMPFZaTCSam9aQ;
							indentcount0 += ((NI) 1);
							{
								Slice_qL3WGViqT0p5sVr4YFHsLg LOC15;
								NimStringDesc* LOC16;
								LOC15 = HEX2EHEX2E_18yoMoUbfoITYgEZSwZDYAstrutils(j_EL21l9cdb654PlTjA9civiFw, (NI)(j_EL21l9cdb654PlTjA9civiFw + ((padding0 ? padding0->Sup.len : 0) - 1)));
								LOC16 = (NimStringDesc*)0;
								LOC16 = HEX5BHEX5D_Sq9b57KCLKZryBwyHy49aBswstrutils(line_ffuHxesMz9cKJSSGfq0xX4Q, LOC15);
								if (!!(eqStrings(LOC16, padding0))) goto LA17;
								indentcount0 = j_EL21l9cdb654PlTjA9civiFw;
								goto LA10;
							}
							LA17: ;
							i_K9cOCxTOsWFMPFZaTCSam9aQ += ((NI) 1);
						} LA12: ;
					}
				} LA10: ;
				LOC19 = HEX2EHEX2E_18yoMoUbfoITYgEZSwZDYAstrutils((NI)(indentcount0 * (padding0 ? padding0->Sup.len : 0)), (NI)((line_ffuHxesMz9cKJSSGfq0xX4Q ? line_ffuHxesMz9cKJSSGfq0xX4Q->Sup.len : 0) - ((NI) 1)));
				LOC20 = (NimStringDesc*)0;
				LOC20 = HEX5BHEX5D_Sq9b57KCLKZryBwyHy49aBswstrutils(line_ffuHxesMz9cKJSSGfq0xX4Q, LOC19);
				result0 = nimrtl_resizeString(result0, LOC20->Sup.len + 0);
appendString(result0, LOC20);
				i0 += ((NI) 1);
				{
					if (!((NU8)(s0->data[last_t8zuIlUtDejAgTVBjImWyQ]) == (NU8)(10))) goto LA23;
					last_t8zuIlUtDejAgTVBjImWyQ += ((NI) 1);
				}
				goto LA21;
				LA23: ;
				{
					if (!((NU8)(s0->data[last_t8zuIlUtDejAgTVBjImWyQ]) == (NU8)(13))) goto LA26;
					last_t8zuIlUtDejAgTVBjImWyQ += ((NI) 1);
					{
						if (!((NU8)(s0->data[last_t8zuIlUtDejAgTVBjImWyQ]) == (NU8)(10))) goto LA30;
						last_t8zuIlUtDejAgTVBjImWyQ += ((NI) 1);
					}
					LA30: ;
				}
				goto LA21;
				LA26: ;
				{
					goto LA2;
				}
				LA21: ;
				first_T0HYyk38Ujxnja2FcBdtzA = last_t8zuIlUtDejAgTVBjImWyQ;
			}
		} LA2: ;
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuUnindentAll)(NimStringDesc* s0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = nsuUnindent(s0, ((NI) 1000), ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_9));
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s0, NimStringDesc* prefix0) {
	NIM_BOOL result0;
	NI i0;
{	result0 = (NIM_BOOL)0;
	i0 = ((NI) 0);
	{
		while (1) {
			{
				if (!((NU8)(prefix0->data[i0]) == (NU8)(0))) goto LA5;
				result0 = NIM_TRUE;
				goto BeforeRet;
			}
			LA5: ;
			{
				if (!!(((NU8)(s0->data[i0]) == (NU8)(prefix0->data[i0])))) goto LA9;
				result0 = NIM_FALSE;
				goto BeforeRet;
			}
			LA9: ;
			i0 += ((NI) 1);
		}
	}
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuEndsWith)(NimStringDesc* s0, NimStringDesc* suffix0) {
	NIM_BOOL result0;
	NI i0;
	NI j0;
{	result0 = (NIM_BOOL)0;
	i0 = ((NI) 0);
	j0 = (NI)((s0 ? s0->Sup.len : 0) - (suffix0 ? suffix0->Sup.len : 0));
	{
		while (1) {
			if (!((NU32)((NI)(i0 + j0)) < (NU32)((s0 ? s0->Sup.len : 0)))) goto LA2;
			{
				if (!!(((NU8)(s0->data[(NI)(i0 + j0)]) == (NU8)(suffix0->data[i0])))) goto LA5;
				result0 = NIM_FALSE;
				goto BeforeRet;
			}
			LA5: ;
			i0 += ((NI) 1);
		} LA2: ;
	}
	{
		if (!((NU8)(suffix0->data[i0]) == (NU8)(0))) goto LA9;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA9: ;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuContinuesWith)(NimStringDesc* s0, NimStringDesc* substr0, NI start0) {
	NIM_BOOL result0;
	NI i0;
{	result0 = (NIM_BOOL)0;
	i0 = ((NI) 0);
	{
		while (1) {
			{
				if (!((NU8)(substr0->data[i0]) == (NU8)(0))) goto LA5;
				result0 = NIM_TRUE;
				goto BeforeRet;
			}
			LA5: ;
			{
				if (!!(((NU8)(s0->data[(NI)(i0 + ((NI) (start0)))]) == (NU8)(substr0->data[i0])))) goto LA9;
				result0 = NIM_FALSE;
				goto BeforeRet;
			}
			LA9: ;
			i0 += ((NI) 1);
		}
	}
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuJoinSep)(NimStringDesc** a0, NI a0Len0, NimStringDesc* sep0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		NI L0;
		if (!(((NI) 0) < a0Len0)) goto LA3;
		L0 = (NI)((sep0 ? sep0->Sup.len : 0) * (NI)(a0Len0 - ((NI) 1)));
		{
			NI i_fREibIaKmq2zYiljMJVMRQ;
			NI HEX3Atmp_l8p5x5I1Hq3gH840mqBnBA;
			NI res_on8ifzaDBjEBmA4tjFkP9bQ;
			i_fREibIaKmq2zYiljMJVMRQ = (NI)0;
			HEX3Atmp_l8p5x5I1Hq3gH840mqBnBA = (NI)0;
			HEX3Atmp_l8p5x5I1Hq3gH840mqBnBA = (a0Len0-1);
			res_on8ifzaDBjEBmA4tjFkP9bQ = ((NI) 0);
			{
				while (1) {
					if (!(res_on8ifzaDBjEBmA4tjFkP9bQ <= HEX3Atmp_l8p5x5I1Hq3gH840mqBnBA)) goto LA7;
					i_fREibIaKmq2zYiljMJVMRQ = res_on8ifzaDBjEBmA4tjFkP9bQ;
					L0 += (a0[i_fREibIaKmq2zYiljMJVMRQ] ? a0[i_fREibIaKmq2zYiljMJVMRQ]->Sup.len : 0);
					res_on8ifzaDBjEBmA4tjFkP9bQ += ((NI) 1);
				} LA7: ;
			}
		}
		result0 = rawNewString(((NI) (L0)));
		result0 = nimrtl_resizeString(result0, a0[((NI) 0)]->Sup.len + 0);
appendString(result0, a0[((NI) 0)]);
		{
			NI i_fREibIaKmq2zYiljMJVMRQ_2;
			NI HEX3Atmp_l8p5x5I1Hq3gH840mqBnBA_2;
			NI res_on8ifzaDBjEBmA4tjFkP9bQ_2;
			i_fREibIaKmq2zYiljMJVMRQ_2 = (NI)0;
			HEX3Atmp_l8p5x5I1Hq3gH840mqBnBA_2 = (NI)0;
			HEX3Atmp_l8p5x5I1Hq3gH840mqBnBA_2 = (a0Len0-1);
			res_on8ifzaDBjEBmA4tjFkP9bQ_2 = ((NI) 1);
			{
				while (1) {
					if (!(res_on8ifzaDBjEBmA4tjFkP9bQ_2 <= HEX3Atmp_l8p5x5I1Hq3gH840mqBnBA_2)) goto LA10;
					i_fREibIaKmq2zYiljMJVMRQ_2 = res_on8ifzaDBjEBmA4tjFkP9bQ_2;
					result0 = nimrtl_resizeString(result0, sep0->Sup.len + 0);
appendString(result0, sep0);
					result0 = nimrtl_resizeString(result0, a0[i_fREibIaKmq2zYiljMJVMRQ_2]->Sup.len + 0);
appendString(result0, a0[i_fREibIaKmq2zYiljMJVMRQ_2]);
					res_on8ifzaDBjEBmA4tjFkP9bQ_2 += ((NI) 1);
				} LA10: ;
			}
		}
	}
	goto LA1;
	LA3: ;
	{
		result0 = nimrtl_copyString(((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_7));
	}
	LA1: ;
	return result0;
}

N_NIMCALL(void, preprocesssub_IhQT0o4blhF4hbhCz0srsw)(NimStringDesc* sub0, NI* a0) {
	NI m0;
	m0 = (sub0 ? sub0->Sup.len : 0);
	{
		NI i_e6Fq2F2KbLiz5Un9cYQeH0A;
		NI res_559coKXM747stwdhO9at4t6g;
		i_e6Fq2F2KbLiz5Un9cYQeH0A = (NI)0;
		res_559coKXM747stwdhO9at4t6g = ((NI) 0);
		{
			while (1) {
				if (!(res_559coKXM747stwdhO9at4t6g <= ((NI) 255))) goto LA3;
				i_e6Fq2F2KbLiz5Un9cYQeH0A = res_559coKXM747stwdhO9at4t6g;
				a0[(((NU8)(((NIM_CHAR) (((NI) (i_e6Fq2F2KbLiz5Un9cYQeH0A)))))))- 0] = (NI)(m0 + ((NI) 1));
				res_559coKXM747stwdhO9at4t6g += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NI i_e6Fq2F2KbLiz5Un9cYQeH0A_2;
		NI HEX3Atmp_hfvQ2kAAQr6ctPB7eJPykg;
		NI res_559coKXM747stwdhO9at4t6g_2;
		i_e6Fq2F2KbLiz5Un9cYQeH0A_2 = (NI)0;
		HEX3Atmp_hfvQ2kAAQr6ctPB7eJPykg = (NI)0;
		HEX3Atmp_hfvQ2kAAQr6ctPB7eJPykg = (NI)(m0 - ((NI) 1));
		res_559coKXM747stwdhO9at4t6g_2 = ((NI) 0);
		{
			while (1) {
				if (!(res_559coKXM747stwdhO9at4t6g_2 <= HEX3Atmp_hfvQ2kAAQr6ctPB7eJPykg)) goto LA6;
				i_e6Fq2F2KbLiz5Un9cYQeH0A_2 = res_559coKXM747stwdhO9at4t6g_2;
				a0[(((NU8)(sub0->data[i_e6Fq2F2KbLiz5Un9cYQeH0A_2])))- 0] = (NI)(m0 - i_e6Fq2F2KbLiz5Un9cYQeH0A_2);
				res_559coKXM747stwdhO9at4t6g_2 += ((NI) 1);
			} LA6: ;
		}
	}
}

N_NIMCALL(NI, findaux_twow8DFxO4IDgSmpDGkD0g)(NimStringDesc* s0, NimStringDesc* sub0, NI start0, TY_9cc9aPiDa8VaWjVcFLabEDZQ a0) {
	NI result0;
	NI m0;
	NI n0;
	NI j0;
{	result0 = (NI)0;
	m0 = (sub0 ? sub0->Sup.len : 0);
	n0 = (s0 ? s0->Sup.len : 0);
	j0 = start0;
	{
		while (1) {
			if (!(j0 <= (NI)(n0 - m0))) goto LA2;
			{
				{
					NI k_uC7XjvS9c2GS6xLhF08s2tA;
					NI HEX3Atmp_lYkEjs4J5uPVOwALJAm4zA;
					NI res_FImOo74aopp4R0IZMqyDTw;
					k_uC7XjvS9c2GS6xLhF08s2tA = (NI)0;
					HEX3Atmp_lYkEjs4J5uPVOwALJAm4zA = (NI)0;
					HEX3Atmp_lYkEjs4J5uPVOwALJAm4zA = (NI)(m0 - ((NI) 1));
					res_FImOo74aopp4R0IZMqyDTw = ((NI) 0);
					{
						while (1) {
							if (!(res_FImOo74aopp4R0IZMqyDTw <= HEX3Atmp_lYkEjs4J5uPVOwALJAm4zA)) goto LA6;
							k_uC7XjvS9c2GS6xLhF08s2tA = res_FImOo74aopp4R0IZMqyDTw;
							{
								if (!!(((NU8)(sub0->data[k_uC7XjvS9c2GS6xLhF08s2tA]) == (NU8)(s0->data[(NI)(k_uC7XjvS9c2GS6xLhF08s2tA + j0)])))) goto LA9;
								goto LA3;
							}
							LA9: ;
							res_FImOo74aopp4R0IZMqyDTw += ((NI) 1);
						} LA6: ;
					}
				}
				result0 = j0;
				goto BeforeRet;
			} LA3: ;
			j0 += a0[(((NU8)(s0->data[(NI)(j0 + m0)])))- 0];
		} LA2: ;
	}
	result0 = ((NI) -1);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nsuFindStr)(NimStringDesc* s0, NimStringDesc* sub0, NI start0) {
	NI result0;
	TY_9cc9aPiDa8VaWjVcFLabEDZQ a0;
	result0 = (NI)0;
	preprocesssub_IhQT0o4blhF4hbhCz0srsw(sub0, a0);
	result0 = findaux_twow8DFxO4IDgSmpDGkD0g(s0, sub0, ((NI) (start0)), a0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nsuFindChar)(NimStringDesc* s0, NIM_CHAR sub0, NI start0) {
	NI result0;
{	result0 = (NI)0;
	{
		NI i_S4Ts5NaQRo1vHKx5LGYx5w;
		NI HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q;
		NI res_dBqJ9biAHlqcB0S3Zb0ahAw;
		i_S4Ts5NaQRo1vHKx5LGYx5w = (NI)0;
		HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q = (NI)0;
		HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
		res_dBqJ9biAHlqcB0S3Zb0ahAw = ((NI) (start0));
		{
			while (1) {
				if (!(res_dBqJ9biAHlqcB0S3Zb0ahAw <= HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q)) goto LA3;
				i_S4Ts5NaQRo1vHKx5LGYx5w = res_dBqJ9biAHlqcB0S3Zb0ahAw;
				{
					if (!((NU8)(sub0) == (NU8)(s0->data[i_S4Ts5NaQRo1vHKx5LGYx5w]))) goto LA6;
					result0 = i_S4Ts5NaQRo1vHKx5LGYx5w;
					goto BeforeRet;
				}
				LA6: ;
				res_dBqJ9biAHlqcB0S3Zb0ahAw += ((NI) 1);
			} LA3: ;
		}
	}
	result0 = ((NI) -1);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nsuFindCharSet)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set chars0, NI start0) {
	NI result0;
{	result0 = (NI)0;
	{
		NI i_S4Ts5NaQRo1vHKx5LGYx5w_2;
		NI HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q_2;
		NI res_dBqJ9biAHlqcB0S3Zb0ahAw_2;
		i_S4Ts5NaQRo1vHKx5LGYx5w_2 = (NI)0;
		HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q_2 = (NI)0;
		HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q_2 = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
		res_dBqJ9biAHlqcB0S3Zb0ahAw_2 = ((NI) (start0));
		{
			while (1) {
				if (!(res_dBqJ9biAHlqcB0S3Zb0ahAw_2 <= HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q_2)) goto LA3;
				i_S4Ts5NaQRo1vHKx5LGYx5w_2 = res_dBqJ9biAHlqcB0S3Zb0ahAw_2;
				{
					if (!((chars0[(NU)(((NU8)(s0->data[i_S4Ts5NaQRo1vHKx5LGYx5w_2])))>>3] &(1U<<((NU)(((NU8)(s0->data[i_S4Ts5NaQRo1vHKx5LGYx5w_2])))&7U)))!=0)) goto LA6;
					result0 = i_S4Ts5NaQRo1vHKx5LGYx5w_2;
					goto BeforeRet;
				}
				LA6: ;
				res_dBqJ9biAHlqcB0S3Zb0ahAw_2 += ((NI) 1);
			} LA3: ;
		}
	}
	result0 = ((NI) -1);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nimrtl_rfind)(NimStringDesc* s0, NIM_CHAR sub0, NI start0) {
	NI result0;
	NI realstart0;
{	result0 = (NI)0;
	{
		if (!(start0 == ((NI) -1))) goto LA3;
		realstart0 = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
	}
	goto LA1;
	LA3: ;
	{
		realstart0 = start0;
	}
	LA1: ;
	{
		NI i_7AkPDL3lh619bGHIADM86Zg;
		NI res_9cdVoqs2NohttrcNz5m8JWg;
		i_7AkPDL3lh619bGHIADM86Zg = (NI)0;
		res_9cdVoqs2NohttrcNz5m8JWg = realstart0;
		{
			while (1) {
				if (!(((NI) 0) <= res_9cdVoqs2NohttrcNz5m8JWg)) goto LA8;
				i_7AkPDL3lh619bGHIADM86Zg = res_9cdVoqs2NohttrcNz5m8JWg;
				{
					if (!((NU8)(sub0) == (NU8)(s0->data[i_7AkPDL3lh619bGHIADM86Zg]))) goto LA11;
					result0 = i_7AkPDL3lh619bGHIADM86Zg;
					goto BeforeRet;
				}
				LA11: ;
				res_9cdVoqs2NohttrcNz5m8JWg -= ((NI) 1);
			} LA8: ;
		}
	}
	result0 = ((NI) -1);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuCenterString)(NimStringDesc* s0, NI width0, NIM_CHAR fillchar0) {
	NimStringDesc* result0;
	NI charsleft0;
	NI leftpadding0;
{	result0 = (NimStringDesc*)0;
	{
		if (!(width0 <= (s0 ? s0->Sup.len : 0))) goto LA3;
		result0 = nimrtl_copyString(s0);
		goto BeforeRet;
	}
	LA3: ;
	result0 = mnewString(((NI) (width0)));
	charsleft0 = (NI)(width0 - (s0 ? s0->Sup.len : 0));
	leftpadding0 = (NI)(charsleft0 / ((NI) 2));
	{
		NI i_9bD1SoxlLY9at9b7iUxwqY3mw;
		NI i_9bD1SoxlLY9at9b7iUxwqY3mw_2;
		i_9bD1SoxlLY9at9b7iUxwqY3mw = (NI)0;
		i_9bD1SoxlLY9at9b7iUxwqY3mw_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_9bD1SoxlLY9at9b7iUxwqY3mw_2 < width0)) goto LA7;
				i_9bD1SoxlLY9at9b7iUxwqY3mw = i_9bD1SoxlLY9at9b7iUxwqY3mw_2;
				{
					NIM_BOOL LOC10;
					LOC10 = (NIM_BOOL)0;
					LOC10 = (leftpadding0 <= i_9bD1SoxlLY9at9b7iUxwqY3mw);
					if (!(LOC10)) goto LA11;
					LOC10 = (i_9bD1SoxlLY9at9b7iUxwqY3mw < (NI)(leftpadding0 + (s0 ? s0->Sup.len : 0)));
					LA11: ;
					if (!LOC10) goto LA12;
					result0->data[i_9bD1SoxlLY9at9b7iUxwqY3mw] = s0->data[(NI)(i_9bD1SoxlLY9at9b7iUxwqY3mw - leftpadding0)];
				}
				goto LA8;
				LA12: ;
				{
					result0->data[i_9bD1SoxlLY9at9b7iUxwqY3mw] = fillchar0;
				}
				LA8: ;
				i_9bD1SoxlLY9at9b7iUxwqY3mw_2 += ((NI) 1);
			} LA7: ;
		}
	}
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nsuCountString)(NimStringDesc* s0, NimStringDesc* sub0, NIM_BOOL overlapping0) {
	NI result0;
	NI i0;
	result0 = (NI)0;
	i0 = ((NI) 0);
	{
		while (1) {
			i0 = nsuFindStr(s0, sub0, ((NI) (i0)));
			{
				if (!(i0 < ((NI) 0))) goto LA5;
				goto LA1;
			}
			LA5: ;
			{
				if (!overlapping0) goto LA9;
				i0 += ((NI) 1);
			}
			goto LA7;
			LA9: ;
			{
				i0 += (sub0 ? sub0->Sup.len : 0);
			}
			LA7: ;
			result0 += ((NI) 1);
		}
	} LA1: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nsuCountChar)(NimStringDesc* s0, NIM_CHAR sub0) {
	NI result0;
	result0 = (NI)0;
	{
		NIM_CHAR c_lmarcavoz9allcsfmQIH9bJw;
		NI i_4JX6iKqsmGS83hhF53aM3w;
		NI L_89cAP9acYY2ilFDYfceVuhGQ;
		c_lmarcavoz9allcsfmQIH9bJw = (NIM_CHAR)0;
		i_4JX6iKqsmGS83hhF53aM3w = ((NI) 0);
		L_89cAP9acYY2ilFDYfceVuhGQ = (s0 ? s0->Sup.len : 0);
		{
			while (1) {
				if (!(i_4JX6iKqsmGS83hhF53aM3w < L_89cAP9acYY2ilFDYfceVuhGQ)) goto LA3;
				c_lmarcavoz9allcsfmQIH9bJw = s0->data[i_4JX6iKqsmGS83hhF53aM3w];
				{
					if (!((NU8)(c_lmarcavoz9allcsfmQIH9bJw) == (NU8)(sub0))) goto LA6;
					result0 += ((NI) 1);
				}
				LA6: ;
				i_4JX6iKqsmGS83hhF53aM3w += ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nsuCountCharSet)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set subs0) {
	NI result0;
	result0 = (NI)0;
	{
		NIM_CHAR c_lmarcavoz9allcsfmQIH9bJw_2;
		NI i_4JX6iKqsmGS83hhF53aM3w_2;
		NI L_89cAP9acYY2ilFDYfceVuhGQ_2;
		c_lmarcavoz9allcsfmQIH9bJw_2 = (NIM_CHAR)0;
		i_4JX6iKqsmGS83hhF53aM3w_2 = ((NI) 0);
		L_89cAP9acYY2ilFDYfceVuhGQ_2 = (s0 ? s0->Sup.len : 0);
		{
			while (1) {
				if (!(i_4JX6iKqsmGS83hhF53aM3w_2 < L_89cAP9acYY2ilFDYfceVuhGQ_2)) goto LA3;
				c_lmarcavoz9allcsfmQIH9bJw_2 = s0->data[i_4JX6iKqsmGS83hhF53aM3w_2];
				{
					if (!((subs0[(NU)(((NU8)(c_lmarcavoz9allcsfmQIH9bJw_2)))>>3] &(1U<<((NU)(((NU8)(c_lmarcavoz9allcsfmQIH9bJw_2)))&7U)))!=0)) goto LA6;
					result0 += ((NI) 1);
				}
				LA6: ;
				i_4JX6iKqsmGS83hhF53aM3w_2 += ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuReplaceStr)(NimStringDesc* s0, NimStringDesc* sub0, NimStringDesc* by0) {
	NimStringDesc* result0;
	TY_9cc9aPiDa8VaWjVcFLabEDZQ a0;
	NI i0;
	NimStringDesc* LOC8;
	result0 = (NimStringDesc*)0;
	result0 = nimrtl_copyString(((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_7));
	preprocesssub_IhQT0o4blhF4hbhCz0srsw(sub0, a0);
	i0 = ((NI) 0);
	{
		while (1) {
			NI j0;
			NimStringDesc* LOC7;
			j0 = findaux_twow8DFxO4IDgSmpDGkD0g(s0, sub0, i0, a0);
			{
				if (!(j0 < ((NI) 0))) goto LA5;
				goto LA1;
			}
			LA5: ;
			LOC7 = (NimStringDesc*)0;
			LOC7 = copyStrLast(s0, i0, (NI)(j0 - ((NI) 1)));
			result0 = nimrtl_resizeString(result0, LOC7->Sup.len + 0);
appendString(result0, LOC7);
			result0 = nimrtl_resizeString(result0, by0->Sup.len + 0);
appendString(result0, by0);
			i0 = (NI)(j0 + (sub0 ? sub0->Sup.len : 0));
		}
	} LA1: ;
	LOC8 = (NimStringDesc*)0;
	LOC8 = copyStr(s0, i0);
	result0 = nimrtl_resizeString(result0, LOC8->Sup.len + 0);
appendString(result0, LOC8);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuReplaceChar)(NimStringDesc* s0, NIM_CHAR sub0, NIM_CHAR by0) {
	NimStringDesc* result0;
	NI i0;
	result0 = (NimStringDesc*)0;
	result0 = mnewString(((NI) ((s0 ? s0->Sup.len : 0))));
	i0 = ((NI) 0);
	{
		while (1) {
			if (!(i0 < (s0 ? s0->Sup.len : 0))) goto LA2;
			{
				if (!((NU8)(s0->data[i0]) == (NU8)(sub0))) goto LA5;
				result0->data[i0] = by0;
			}
			goto LA3;
			LA5: ;
			{
				result0->data[i0] = s0->data[i0];
			}
			LA3: ;
			i0 += ((NI) 1);
		} LA2: ;
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuReplaceWord)(NimStringDesc* s0, NimStringDesc* sub0, NimStringDesc* by0) {
	NimStringDesc* result0;
	TY_9cc9aPiDa8VaWjVcFLabEDZQ a0;
	NI i0;
	NimStringDesc* LOC20;
	result0 = (NimStringDesc*)0;
	result0 = nimrtl_copyString(((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_7));
	preprocesssub_IhQT0o4blhF4hbhCz0srsw(sub0, a0);
	i0 = ((NI) 0);
	{
		while (1) {
			NI j0;
			j0 = findaux_twow8DFxO4IDgSmpDGkD0g(s0, sub0, i0, a0);
			{
				if (!(j0 < ((NI) 0))) goto LA5;
				goto LA1;
			}
			LA5: ;
			{
				NIM_BOOL LOC9;
				NIM_BOOL LOC10;
				NIM_BOOL LOC13;
				NimStringDesc* LOC17;
				LOC9 = (NIM_BOOL)0;
				LOC10 = (NIM_BOOL)0;
				LOC10 = (j0 == ((NI) 0));
				if (LOC10) goto LA11;
				LOC10 = !((((NU8)(s0->data[(NI)(j0 - ((NI) 1))])) >= ((NU8)(97)) && ((NU8)(s0->data[(NI)(j0 - ((NI) 1))])) <= ((NU8)(122)) || ((NU8)(s0->data[(NI)(j0 - ((NI) 1))])) >= ((NU8)(65)) && ((NU8)(s0->data[(NI)(j0 - ((NI) 1))])) <= ((NU8)(90)) || ((NU8)(s0->data[(NI)(j0 - ((NI) 1))])) >= ((NU8)(48)) && ((NU8)(s0->data[(NI)(j0 - ((NI) 1))])) <= ((NU8)(57)) || ((NU8)(s0->data[(NI)(j0 - ((NI) 1))])) == ((NU8)(95)) || ((NU8)(s0->data[(NI)(j0 - ((NI) 1))])) >= ((NU8)(128)) && ((NU8)(s0->data[(NI)(j0 - ((NI) 1))])) <= ((NU8)(255))));
				LA11: ;
				LOC9 = LOC10;
				if (!(LOC9)) goto LA12;
				LOC13 = (NIM_BOOL)0;
				LOC13 = ((s0 ? s0->Sup.len : 0) <= (NI)(j0 + (sub0 ? sub0->Sup.len : 0)));
				if (LOC13) goto LA14;
				LOC13 = !((((NU8)(s0->data[(NI)(j0 + (sub0 ? sub0->Sup.len : 0))])) >= ((NU8)(97)) && ((NU8)(s0->data[(NI)(j0 + (sub0 ? sub0->Sup.len : 0))])) <= ((NU8)(122)) || ((NU8)(s0->data[(NI)(j0 + (sub0 ? sub0->Sup.len : 0))])) >= ((NU8)(65)) && ((NU8)(s0->data[(NI)(j0 + (sub0 ? sub0->Sup.len : 0))])) <= ((NU8)(90)) || ((NU8)(s0->data[(NI)(j0 + (sub0 ? sub0->Sup.len : 0))])) >= ((NU8)(48)) && ((NU8)(s0->data[(NI)(j0 + (sub0 ? sub0->Sup.len : 0))])) <= ((NU8)(57)) || ((NU8)(s0->data[(NI)(j0 + (sub0 ? sub0->Sup.len : 0))])) == ((NU8)(95)) || ((NU8)(s0->data[(NI)(j0 + (sub0 ? sub0->Sup.len : 0))])) >= ((NU8)(128)) && ((NU8)(s0->data[(NI)(j0 + (sub0 ? sub0->Sup.len : 0))])) <= ((NU8)(255))));
				LA14: ;
				LOC9 = LOC13;
				LA12: ;
				if (!LOC9) goto LA15;
				LOC17 = (NimStringDesc*)0;
				LOC17 = copyStrLast(s0, i0, (NI)(j0 - ((NI) 1)));
				result0 = nimrtl_resizeString(result0, LOC17->Sup.len + 0);
appendString(result0, LOC17);
				result0 = nimrtl_resizeString(result0, by0->Sup.len + 0);
appendString(result0, by0);
				i0 = (NI)(j0 + (sub0 ? sub0->Sup.len : 0));
			}
			goto LA7;
			LA15: ;
			{
				NimStringDesc* LOC19;
				LOC19 = (NimStringDesc*)0;
				LOC19 = copyStrLast(s0, i0, j0);
				result0 = nimrtl_resizeString(result0, LOC19->Sup.len + 0);
appendString(result0, LOC19);
				i0 = (NI)(j0 + ((NI) 1));
			}
			LA7: ;
		}
	} LA1: ;
	LOC20 = (NimStringDesc*)0;
	LOC20 = copyStr(s0, i0);
	result0 = nimrtl_resizeString(result0, LOC20->Sup.len + 0);
appendString(result0, LOC20);
	return result0;
}

N_LIB_EXPORT N_CDECL(void, nsuDelete)(NimStringDesc** s0, NI first0, NI last0) {
	NI i0;
	NI j0;
	NI newlen0;
	i0 = first0;
	j0 = (NI)(last0 + ((NI) 1));
	newlen0 = (NI)((NI)(((*s0) ? (*s0)->Sup.len : 0) - j0) + i0);
	{
		while (1) {
			if (!(i0 < newlen0)) goto LA2;
			(*s0)->data[i0] = (*s0)->data[j0];
			i0 += ((NI) 1);
			j0 += ((NI) 1);
		} LA2: ;
	}
	(*s0) = nimrtl_setLengthStr((*s0), ((NI) (newlen0)));
}

N_LIB_EXPORT N_CDECL(NI, nsuParseOctInt)(NimStringDesc* s0) {
	NI result0;
	NI i0;
	result0 = (NI)0;
	i0 = ((NI) 0);
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = (NIM_BOOL)0;
		LOC3 = ((NU8)(s0->data[i0]) == (NU8)(48));
		if (!(LOC3)) goto LA4;
		LOC5 = (NIM_BOOL)0;
		LOC5 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(111));
		if (LOC5) goto LA6;
		LOC5 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(79));
		LA6: ;
		LOC3 = LOC5;
		LA4: ;
		if (!LOC3) goto LA7;
		i0 += ((NI) 2);
	}
	LA7: ;
	{
		while (1) {
			switch (((NU8)(s0->data[i0]))) {
			case 95:
			{
				i0 += ((NI) 1);
			}
			break;
			case 48 ... 55:
			{
				result0 = (NI)((NI)((NU32)(result0) << (NU32)(((NI) 3))) | ((NI) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48)))));
				i0 += ((NI) 1);
			}
			break;
			case 0:
			{
				goto LA9;
			}
			break;
			default:
			{
				Valueerror_Gi06FkNeykJn7mrqRZYrkA* e_Yb9bdEUEFBmUQPPUgp89bEag;
				NimStringDesc* LOC15;
				e_Yb9bdEUEFBmUQPPUgp89bEag = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)0;
				e_Yb9bdEUEFBmUQPPUgp89bEag = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*) nimrtl_newObj((&NTI_yCEN9anxCD6mzBxGjuaRBdg), sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA));
				(*e_Yb9bdEUEFBmUQPPUgp89bEag).Sup.Sup.m_type = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
				LOC15 = (NimStringDesc*)0;
				LOC15 = rawNewString(s0->Sup.len + 17);
appendString(LOC15, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_4));
appendString(LOC15, s0);
				asgnRefNoCycle((void**) (&(*e_Yb9bdEUEFBmUQPPUgp89bEag).Sup.message), LOC15);
				nimrtl_raiseException((Exception*)e_Yb9bdEUEFBmUQPPUgp89bEag, "ValueError");
			}
			break;
			}
		}
	} LA9: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToOct)(NI64 x0, NI len0) {
	NimStringDesc* result0;
	NI64 mask0;
	NI64 shift0;
	result0 = (NimStringDesc*)0;
	mask0 = IL64(7);
	shift0 = IL64(0);
	result0 = mnewString(((NI) (len0)));
	{
		NI j_XC9cjPBvqVuZpNFrvZwEV9aQ;
		NI HEX3Atmp_Xi8UrXd9cedzMYMg9bT89bm3Q;
		NI res_BJZqaBTiRvKJyZFMDSG6og;
		j_XC9cjPBvqVuZpNFrvZwEV9aQ = (NI)0;
		HEX3Atmp_Xi8UrXd9cedzMYMg9bT89bm3Q = (NI)0;
		HEX3Atmp_Xi8UrXd9cedzMYMg9bT89bm3Q = (NI)(((NI) (len0)) - ((NI) 1));
		res_BJZqaBTiRvKJyZFMDSG6og = ((NI) (HEX3Atmp_Xi8UrXd9cedzMYMg9bT89bm3Q));
		{
			while (1) {
				if (!(((NI) 0) <= res_BJZqaBTiRvKJyZFMDSG6og)) goto LA3;
				j_XC9cjPBvqVuZpNFrvZwEV9aQ = ((NI) (res_BJZqaBTiRvKJyZFMDSG6og));
				result0->data[j_XC9cjPBvqVuZpNFrvZwEV9aQ] = ((NIM_CHAR) (((NI) ((NI)(((NI) ((NI64)((NU64)((NI64)(x0 & mask0)) >> (NU64)(shift0)))) + ((NI) 48))))));
				shift0 = (NI64)(shift0 + IL64(3));
				mask0 = (NI64)((NU64)(mask0) << (NU64)(((NI) 3)));
				res_BJZqaBTiRvKJyZFMDSG6og -= ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuToBin)(NI64 x0, NI len0) {
	NimStringDesc* result0;
	NI64 mask0;
	NI64 shift0;
	result0 = (NimStringDesc*)0;
	mask0 = IL64(1);
	shift0 = IL64(0);
	result0 = mnewString(((NI) (len0)));
	{
		NI j_kqDQW71AcD1YE9ck9aCt9bP0g;
		NI HEX3Atmp_LyFPJREsdrXwEph89a66kMQ;
		NI res_27cjPOiZUK3BZEBNVpPExw;
		j_kqDQW71AcD1YE9ck9aCt9bP0g = (NI)0;
		HEX3Atmp_LyFPJREsdrXwEph89a66kMQ = (NI)0;
		HEX3Atmp_LyFPJREsdrXwEph89a66kMQ = (NI)(((NI) (len0)) - ((NI) 1));
		res_27cjPOiZUK3BZEBNVpPExw = ((NI) (HEX3Atmp_LyFPJREsdrXwEph89a66kMQ));
		{
			while (1) {
				if (!(((NI) 0) <= res_27cjPOiZUK3BZEBNVpPExw)) goto LA3;
				j_kqDQW71AcD1YE9ck9aCt9bP0g = ((NI) (res_27cjPOiZUK3BZEBNVpPExw));
				result0->data[j_kqDQW71AcD1YE9ck9aCt9bP0g] = ((NIM_CHAR) (((NI) ((NI)(((NI) ((NI64)((NU64)((NI64)(x0 & mask0)) >> (NU64)(shift0)))) + ((NI) 48))))));
				shift0 = (NI64)(shift0 + IL64(1));
				mask0 = (NI64)((NU64)(mask0) << (NU64)(((NI) 1)));
				res_27cjPOiZUK3BZEBNVpPExw -= ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuInsertSep)(NimStringDesc* s0, NIM_CHAR sep0, NI digits0) {
	NimStringDesc* result0;
	NI L0;
	NI j0;
	result0 = (NimStringDesc*)0;
	L0 = (NI)((NI)((NI)((s0 ? s0->Sup.len : 0) - ((NI) 1)) / digits0) + (s0 ? s0->Sup.len : 0));
	result0 = mnewString(((NI) (L0)));
	j0 = ((NI) 0);
	L0 -= ((NI) 1);
	{
		NI i_eoE9b0orWp1w8RCbQnHomoA;
		NI HEX3Atmp_GhhYQqcR8yKS54hNV39bb6A;
		NI res_PFO5E9b3SbGPj2NzU9cpMgEQ;
		i_eoE9b0orWp1w8RCbQnHomoA = (NI)0;
		HEX3Atmp_GhhYQqcR8yKS54hNV39bb6A = (NI)0;
		HEX3Atmp_GhhYQqcR8yKS54hNV39bb6A = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
		res_PFO5E9b3SbGPj2NzU9cpMgEQ = HEX3Atmp_GhhYQqcR8yKS54hNV39bb6A;
		{
			while (1) {
				if (!(((NI) 0) <= res_PFO5E9b3SbGPj2NzU9cpMgEQ)) goto LA3;
				i_eoE9b0orWp1w8RCbQnHomoA = res_PFO5E9b3SbGPj2NzU9cpMgEQ;
				{
					if (!(j0 == digits0)) goto LA6;
					result0->data[L0] = sep0;
					L0 -= ((NI) 1);
					j0 = ((NI) 0);
				}
				LA6: ;
				result0->data[L0] = s0->data[i_eoE9b0orWp1w8RCbQnHomoA];
				j0 += ((NI) 1);
				L0 -= ((NI) 1);
				res_PFO5E9b3SbGPj2NzU9cpMgEQ -= ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuEscape)(NimStringDesc* s0, NimStringDesc* prefix0, NimStringDesc* suffix0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) ((NI)((s0 ? s0->Sup.len : 0) + (NI)((NU32)((s0 ? s0->Sup.len : 0)) >> (NU32)(((NI) 2)))))));
	result0 = nimrtl_resizeString(result0, prefix0->Sup.len + 0);
appendString(result0, prefix0);
	{
		NIM_CHAR c_YVXQcNuWEzuXn6dlnxCkxg;
		NI i_ITzZJ02U1apTS7zwtlf6FQ;
		NI L_c1dMvDAXseN0SGb0n7Q9asg;
		c_YVXQcNuWEzuXn6dlnxCkxg = (NIM_CHAR)0;
		i_ITzZJ02U1apTS7zwtlf6FQ = ((NI) 0);
		L_c1dMvDAXseN0SGb0n7Q9asg = (s0 ? s0->Sup.len : 0);
		{
			while (1) {
				if (!(i_ITzZJ02U1apTS7zwtlf6FQ < L_c1dMvDAXseN0SGb0n7Q9asg)) goto LA3;
				c_YVXQcNuWEzuXn6dlnxCkxg = s0->data[i_ITzZJ02U1apTS7zwtlf6FQ];
				switch (((NU8)(c_YVXQcNuWEzuXn6dlnxCkxg))) {
				case 0 ... 31:
				case 128 ... 255:
				{
					NimStringDesc* LOC5;
					result0 = nimrtl_resizeString(result0, 2);
appendString(result0, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_10));
					LOC5 = (NimStringDesc*)0;
					LOC5 = nsuToHex(((NI64) (((NU8)(c_YVXQcNuWEzuXn6dlnxCkxg)))), ((NI) 2));
					result0 = nimrtl_resizeString(result0, LOC5->Sup.len + 0);
appendString(result0, LOC5);
				}
				break;
				case 92:
				{
					result0 = nimrtl_resizeString(result0, 2);
appendString(result0, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_11));
				}
				break;
				case 39:
				{
					result0 = nimrtl_resizeString(result0, 2);
appendString(result0, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_12));
				}
				break;
				case 34:
				{
					result0 = nimrtl_resizeString(result0, 2);
appendString(result0, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_13));
				}
				break;
				default:
				{
					result0 = addChar(result0, c_YVXQcNuWEzuXn6dlnxCkxg);
				}
				break;
				}
				i_ITzZJ02U1apTS7zwtlf6FQ += ((NI) 1);
			} LA3: ;
		}
	}
	result0 = nimrtl_resizeString(result0, suffix0->Sup.len + 0);
appendString(result0, suffix0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuUnescape)(NimStringDesc* s0, NimStringDesc* prefix0, NimStringDesc* suffix0) {
	NimStringDesc* result0;
	NI i0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) ((s0 ? s0->Sup.len : 0))));
	i0 = (prefix0 ? prefix0->Sup.len : 0);
	{
		NIM_BOOL LOC3;
		Valueerror_Gi06FkNeykJn7mrqRZYrkA* e_VK58Fsev9aW9bfjIvgdTIUeQ;
		NimStringDesc* LOC6;
		LOC3 = (NIM_BOOL)0;
		LOC3 = nsuStartsWith(s0, prefix0);
		if (!!(LOC3)) goto LA4;
		e_VK58Fsev9aW9bfjIvgdTIUeQ = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)0;
		e_VK58Fsev9aW9bfjIvgdTIUeQ = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*) nimrtl_newObj((&NTI_yCEN9anxCD6mzBxGjuaRBdg), sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA));
		(*e_VK58Fsev9aW9bfjIvgdTIUeQ).Sup.Sup.m_type = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
		LOC6 = (NimStringDesc*)0;
		LOC6 = rawNewString(prefix0->Sup.len + 40);
appendString(LOC6, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_14));
appendString(LOC6, prefix0);
		asgnRefNoCycle((void**) (&(*e_VK58Fsev9aW9bfjIvgdTIUeQ).Sup.message), LOC6);
		nimrtl_raiseException((Exception*)e_VK58Fsev9aW9bfjIvgdTIUeQ, "ValueError");
	}
	LA4: ;
	{
		while (1) {
			{
				if (!(i0 == (NI)((s0 ? s0->Sup.len : 0) - (suffix0 ? suffix0->Sup.len : 0)))) goto LA11;
				goto LA7;
			}
			LA11: ;
			switch (((NU8)(s0->data[i0]))) {
			case 92:
			{
				switch (((NU8)(s0->data[(NI)(i0 + ((NI) 1))]))) {
				case 120:
				{
					NI c0;
					NI LOC15;
					i0 += ((NI) 2);
					c0 = (NI)0;
					LOC15 = (NI)0;
					LOC15 = npuParseHex(s0, (&c0), i0, ((NI) 2));
					i0 += LOC15;
					result0 = addChar(result0, ((NIM_CHAR) (((NI) (c0)))));
					i0 -= ((NI) 2);
				}
				break;
				case 92:
				{
					result0 = addChar(result0, 92);
				}
				break;
				case 39:
				{
					result0 = addChar(result0, 39);
				}
				break;
				case 34:
				{
					result0 = addChar(result0, 34);
				}
				break;
				default:
				{
					NimStringDesc* LOC20;
					LOC20 = (NimStringDesc*)0;
					LOC20 = rawNewString(2);
appendString(LOC20, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_15));
appendChar(LOC20, s0->data[(NI)(i0 + ((NI) 1))]);
					result0 = nimrtl_resizeString(result0, LOC20->Sup.len + 0);
appendString(result0, LOC20);
				}
				break;
				}
				i0 += ((NI) 1);
			}
			break;
			case 0:
			{
				goto LA7;
			}
			break;
			default:
			{
				result0 = addChar(result0, s0->data[i0]);
			}
			break;
			}
			i0 += ((NI) 1);
		}
	} LA7: ;
	{
		NIM_BOOL LOC25;
		Valueerror_Gi06FkNeykJn7mrqRZYrkA* e_VK58Fsev9aW9bfjIvgdTIUeQ_2;
		NimStringDesc* LOC28;
		LOC25 = (NIM_BOOL)0;
		LOC25 = nsuEndsWith(s0, suffix0);
		if (!!(LOC25)) goto LA26;
		e_VK58Fsev9aW9bfjIvgdTIUeQ_2 = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)0;
		e_VK58Fsev9aW9bfjIvgdTIUeQ_2 = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*) nimrtl_newObj((&NTI_yCEN9anxCD6mzBxGjuaRBdg), sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA));
		(*e_VK58Fsev9aW9bfjIvgdTIUeQ_2).Sup.Sup.m_type = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
		LOC28 = (NimStringDesc*)0;
		LOC28 = rawNewString(suffix0->Sup.len + 38);
appendString(LOC28, ((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_16));
appendString(LOC28, suffix0);
		asgnRefNoCycle((void**) (&(*e_VK58Fsev9aW9bfjIvgdTIUeQ_2).Sup.message), LOC28);
		nimrtl_raiseException((Exception*)e_VK58Fsev9aW9bfjIvgdTIUeQ_2, "ValueError");
	}
	LA26: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NIM_BOOL, nsuValidIdentifier)(NimStringDesc* s0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!(((NU8)(s0->data[((NI) 0)])) >= ((NU8)(97)) && ((NU8)(s0->data[((NI) 0)])) <= ((NU8)(122)) || ((NU8)(s0->data[((NI) 0)])) >= ((NU8)(65)) && ((NU8)(s0->data[((NI) 0)])) <= ((NU8)(90)) || ((NU8)(s0->data[((NI) 0)])) == ((NU8)(95)))) goto LA3;
		{
			NI i_kdepIKo5b9a9bdodpfKsKPjQ;
			NI HEX3Atmp_ckhgDlLidjAPliar8ygyJg;
			NI res_5sTVwls9b7uP9bpiI1edPiSg;
			i_kdepIKo5b9a9bdodpfKsKPjQ = (NI)0;
			HEX3Atmp_ckhgDlLidjAPliar8ygyJg = (NI)0;
			HEX3Atmp_ckhgDlLidjAPliar8ygyJg = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
			res_5sTVwls9b7uP9bpiI1edPiSg = ((NI) 1);
			{
				while (1) {
					if (!(res_5sTVwls9b7uP9bpiI1edPiSg <= HEX3Atmp_ckhgDlLidjAPliar8ygyJg)) goto LA7;
					i_kdepIKo5b9a9bdodpfKsKPjQ = res_5sTVwls9b7uP9bpiI1edPiSg;
					{
						if (!!((((NU8)(s0->data[i_kdepIKo5b9a9bdodpfKsKPjQ])) >= ((NU8)(97)) && ((NU8)(s0->data[i_kdepIKo5b9a9bdodpfKsKPjQ])) <= ((NU8)(122)) || ((NU8)(s0->data[i_kdepIKo5b9a9bdodpfKsKPjQ])) >= ((NU8)(65)) && ((NU8)(s0->data[i_kdepIKo5b9a9bdodpfKsKPjQ])) <= ((NU8)(90)) || ((NU8)(s0->data[i_kdepIKo5b9a9bdodpfKsKPjQ])) >= ((NU8)(48)) && ((NU8)(s0->data[i_kdepIKo5b9a9bdodpfKsKPjQ])) <= ((NU8)(57)) || ((NU8)(s0->data[i_kdepIKo5b9a9bdodpfKsKPjQ])) == ((NU8)(95))))) goto LA10;
						result0 = NIM_FALSE;
						goto BeforeRet;
					}
					LA10: ;
					res_5sTVwls9b7uP9bpiI1edPiSg += ((NI) 1);
				} LA7: ;
			}
		}
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	}BeforeRet: ;
	return result0;
}
static N_NIMCALL(void, Marker_TY_qwqHTkRvwhrRyENtudHQ7g)(void* p, NI op) {
	TY_qwqHTkRvwhrRyENtudHQ7g* a;
	NI LOC1;
	a = (TY_qwqHTkRvwhrRyENtudHQ7g*)p;
	LOC1 = (NI)0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	}
}

N_LIB_EXPORT N_CDECL(NI, nsuEditDistance)(NimStringDesc* a0, NimStringDesc* b0) {
	NI result0;
	NI len10;
	NI len20;
	NI s0;
	NI half0;
	TY_qwqHTkRvwhrRyENtudHQ7g* row0;
	NI e0;
{	result0 = (NI)0;
	len10 = (a0 ? a0->Sup.len : 0);
	len20 = (b0 ? b0->Sup.len : 0);
	{
		if (!(len20 < len10)) goto LA3;
		result0 = nsuEditDistance(b0, a0);
		goto BeforeRet;
	}
	LA3: ;
	s0 = ((NI) 0);
	{
		while (1) {
			NIM_BOOL LOC7;
			LOC7 = (NIM_BOOL)0;
			LOC7 = ((NU8)(a0->data[s0]) == (NU8)(b0->data[s0]));
			if (!(LOC7)) goto LA8;
			LOC7 = !(((NU8)(a0->data[s0]) == (NU8)(0)));
			LA8: ;
			if (!LOC7) goto LA6;
			s0 += ((NI) 1);
			len10 -= ((NI) 1);
			len20 -= ((NI) 1);
		} LA6: ;
	}
	{
		while (1) {
			NIM_BOOL LOC11;
			NIM_BOOL LOC12;
			LOC11 = (NIM_BOOL)0;
			LOC12 = (NIM_BOOL)0;
			LOC12 = (((NI) 0) < len10);
			if (!(LOC12)) goto LA13;
			LOC12 = (((NI) 0) < len20);
			LA13: ;
			LOC11 = LOC12;
			if (!(LOC11)) goto LA14;
			LOC11 = ((NU8)(a0->data[(NI)((NI)(s0 + len10) - ((NI) 1))]) == (NU8)(b0->data[(NI)((NI)(s0 + len20) - ((NI) 1))]));
			LA14: ;
			if (!LOC11) goto LA10;
			len10 -= ((NI) 1);
			len20 -= ((NI) 1);
		} LA10: ;
	}
	{
		if (!(len10 == ((NI) 0))) goto LA17;
		result0 = len20;
		goto BeforeRet;
	}
	LA17: ;
	{
		if (!(len20 == ((NI) 0))) goto LA21;
		result0 = len10;
		goto BeforeRet;
	}
	LA21: ;
	{
		if (!(len10 == ((NI) 1))) goto LA25;
		{
			NI j_kg8DGhmvgpNieu0C1IhILw;
			NI HEX3Atmp_xFLNemjfyYUA175ccFs2FA;
			NI res_9bn69bN2OAbsk7CAAZ9av6HWQ;
			j_kg8DGhmvgpNieu0C1IhILw = (NI)0;
			HEX3Atmp_xFLNemjfyYUA175ccFs2FA = (NI)0;
			HEX3Atmp_xFLNemjfyYUA175ccFs2FA = (NI)((NI)(s0 + len20) - ((NI) 1));
			res_9bn69bN2OAbsk7CAAZ9av6HWQ = s0;
			{
				while (1) {
					if (!(res_9bn69bN2OAbsk7CAAZ9av6HWQ <= HEX3Atmp_xFLNemjfyYUA175ccFs2FA)) goto LA29;
					j_kg8DGhmvgpNieu0C1IhILw = res_9bn69bN2OAbsk7CAAZ9av6HWQ;
					{
						if (!((NU8)(a0->data[s0]) == (NU8)(b0->data[j_kg8DGhmvgpNieu0C1IhILw]))) goto LA32;
						result0 = (NI)(len20 - ((NI) 1));
						goto BeforeRet;
					}
					LA32: ;
					res_9bn69bN2OAbsk7CAAZ9av6HWQ += ((NI) 1);
				} LA29: ;
			}
		}
		result0 = len20;
		goto BeforeRet;
	}
	LA25: ;
	len10 += ((NI) 1);
	len20 += ((NI) 1);
	half0 = (NI)((NU32)(len10) >> (NU32)(((NI) 1)));
	row0 = (TY_qwqHTkRvwhrRyENtudHQ7g*)0;
	row0 = (TY_qwqHTkRvwhrRyENtudHQ7g*) nimrtl_newSeq((&NTI_qwqHTkRvwhrRyENtudHQ7g), ((NI) (len20)));
	e0 = (NI)((NI)(s0 + len20) - ((NI) 1));
	{
		NI i_UnjN9a2G04lQQfWLf5NByXw;
		NI HEX3Atmp_xFLNemjfyYUA175ccFs2FA_2;
		NI res_9bn69bN2OAbsk7CAAZ9av6HWQ_2;
		i_UnjN9a2G04lQQfWLf5NByXw = (NI)0;
		HEX3Atmp_xFLNemjfyYUA175ccFs2FA_2 = (NI)0;
		HEX3Atmp_xFLNemjfyYUA175ccFs2FA_2 = (NI)((NI)(len20 - half0) - ((NI) 1));
		res_9bn69bN2OAbsk7CAAZ9av6HWQ_2 = ((NI) 1);
		{
			while (1) {
				if (!(res_9bn69bN2OAbsk7CAAZ9av6HWQ_2 <= HEX3Atmp_xFLNemjfyYUA175ccFs2FA_2)) goto LA36;
				i_UnjN9a2G04lQQfWLf5NByXw = res_9bn69bN2OAbsk7CAAZ9av6HWQ_2;
				row0->data[i_UnjN9a2G04lQQfWLf5NByXw] = i_UnjN9a2G04lQQfWLf5NByXw;
				res_9bn69bN2OAbsk7CAAZ9av6HWQ_2 += ((NI) 1);
			} LA36: ;
		}
	}
	row0->data[((NI) 0)] = (NI)((NI)(len10 - half0) - ((NI) 1));
	{
		NI i_UnjN9a2G04lQQfWLf5NByXw_2;
		NI HEX3Atmp_xFLNemjfyYUA175ccFs2FA_3;
		NI res_9bn69bN2OAbsk7CAAZ9av6HWQ_3;
		i_UnjN9a2G04lQQfWLf5NByXw_2 = (NI)0;
		HEX3Atmp_xFLNemjfyYUA175ccFs2FA_3 = (NI)0;
		HEX3Atmp_xFLNemjfyYUA175ccFs2FA_3 = (NI)(len10 - ((NI) 1));
		res_9bn69bN2OAbsk7CAAZ9av6HWQ_3 = ((NI) 1);
		{
			while (1) {
				NIM_CHAR char10;
				NI char2p0;
				NI D0;
				NI x0;
				NI p0;
				if (!(res_9bn69bN2OAbsk7CAAZ9av6HWQ_3 <= HEX3Atmp_xFLNemjfyYUA175ccFs2FA_3)) goto LA39;
				i_UnjN9a2G04lQQfWLf5NByXw_2 = res_9bn69bN2OAbsk7CAAZ9av6HWQ_3;
				char10 = a0->data[(NI)((NI)(i_UnjN9a2G04lQQfWLf5NByXw_2 + s0) - ((NI) 1))];
				char2p0 = (NI)0;
				D0 = (NI)0;
				x0 = (NI)0;
				p0 = (NI)0;
				{
					NI offset0;
					NI c30;
					if (!((NI)(len10 - half0) <= i_UnjN9a2G04lQQfWLf5NByXw_2)) goto LA42;
					offset0 = (NI)((NI)(i_UnjN9a2G04lQQfWLf5NByXw_2 - len10) + half0);
					char2p0 = offset0;
					p0 = offset0;
					c30 = (NI)(row0->data[p0] + ((NI) (!(((NU8)(char10) == (NU8)(b0->data[(NI)(s0 + char2p0)]))))));
					p0 += ((NI) 1);
					char2p0 += ((NI) 1);
					x0 = (NI)(row0->data[p0] + ((NI) 1));
					D0 = x0;
					{
						if (!(c30 < x0)) goto LA46;
						x0 = c30;
					}
					LA46: ;
					row0->data[p0] = x0;
					p0 += ((NI) 1);
				}
				goto LA40;
				LA42: ;
				{
					p0 = ((NI) 1);
					char2p0 = ((NI) 0);
					D0 = i_UnjN9a2G04lQQfWLf5NByXw_2;
					x0 = i_UnjN9a2G04lQQfWLf5NByXw_2;
				}
				LA40: ;
				{
					if (!(i_UnjN9a2G04lQQfWLf5NByXw_2 <= (NI)(half0 + ((NI) 1)))) goto LA51;
					e0 = (NI)((NI)((NI)(len20 + i_UnjN9a2G04lQQfWLf5NByXw_2) - half0) - ((NI) 2));
				}
				LA51: ;
				{
					while (1) {
						NI c30;
						if (!(p0 <= e0)) goto LA54;
						D0 -= ((NI) 1);
						c30 = (NI)(D0 + ((NI) (!(((NU8)(char10) == (NU8)(b0->data[(NI)(char2p0 + s0)]))))));
						char2p0 += ((NI) 1);
						x0 += ((NI) 1);
						{
							if (!(c30 < x0)) goto LA57;
							x0 = c30;
						}
						LA57: ;
						D0 = (NI)(row0->data[p0] + ((NI) 1));
						{
							if (!(D0 < x0)) goto LA61;
							x0 = D0;
						}
						LA61: ;
						row0->data[p0] = x0;
						p0 += ((NI) 1);
					} LA54: ;
				}
				{
					NI c30;
					if (!(i_UnjN9a2G04lQQfWLf5NByXw_2 <= half0)) goto LA65;
					D0 -= ((NI) 1);
					c30 = (NI)(D0 + ((NI) (!(((NU8)(char10) == (NU8)(b0->data[(NI)(char2p0 + s0)]))))));
					x0 += ((NI) 1);
					{
						if (!(c30 < x0)) goto LA69;
						x0 = c30;
					}
					LA69: ;
					row0->data[p0] = x0;
				}
				LA65: ;
				res_9bn69bN2OAbsk7CAAZ9av6HWQ_3 += ((NI) 1);
			} LA39: ;
		}
	}
	result0 = row0->data[e0];
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuformatBiggestFloat)(NF f0, Floatformatmode_pNvEoaqwoxKyoASD11vSgQ format0, NI precision0, NIM_CHAR decimalsep0) {
	NimStringDesc* result0;
	TY_9bPFPkkEEeeNM9bKgiV8Q49cg frmtstr0;
	TY_Kn8ZOVsorvcNLB4isUeMzQ buf0;
	int L0;
	result0 = (NimStringDesc*)0;
	L0 = (int)0;
	frmtstr0[(((NI) 0))- 0] = 37;
	{
		if (!(((NI) 0) < ((NI) (precision0)))) goto LA3;
		frmtstr0[(((NI) 1))- 0] = 35;
		frmtstr0[(((NI) 2))- 0] = 46;
		frmtstr0[(((NI) 3))- 0] = 42;
		frmtstr0[(((NI) 4))- 0] = floatformattochar_WVISPus3ZqCVSuP9bzn9cVxw[(format0)- 0];
		frmtstr0[(((NI) 5))- 0] = 0;
		L0 = sprintf(((NCSTRING) (buf0)), ((NCSTRING) (frmtstr0)), precision0, f0);
	}
	goto LA1;
	LA3: ;
	{
		frmtstr0[(((NI) 1))- 0] = floatformattochar_WVISPus3ZqCVSuP9bzn9cVxw[(format0)- 0];
		frmtstr0[(((NI) 2))- 0] = 0;
		L0 = sprintf(((NCSTRING) (buf0)), ((NCSTRING) (frmtstr0)), f0);
	}
	LA1: ;
	result0 = mnewString(((NI) (L0)));
	{
		int i_79aZpkWszIJKpa3OfOokBJQ;
		int i_79aZpkWszIJKpa3OfOokBJQ_2;
		i_79aZpkWszIJKpa3OfOokBJQ = (int)0;
		i_79aZpkWszIJKpa3OfOokBJQ_2 = ((int) 0);
		{
			while (1) {
				if (!(i_79aZpkWszIJKpa3OfOokBJQ_2 < L0)) goto LA8;
				i_79aZpkWszIJKpa3OfOokBJQ = i_79aZpkWszIJKpa3OfOokBJQ_2;
				{
					if (!(((NU8)(buf0[(i_79aZpkWszIJKpa3OfOokBJQ)- 0])) == ((NU8)(46)) || ((NU8)(buf0[(i_79aZpkWszIJKpa3OfOokBJQ)- 0])) == ((NU8)(44)))) goto LA11;
					result0->data[i_79aZpkWszIJKpa3OfOokBJQ] = decimalsep0;
				}
				goto LA9;
				LA11: ;
				{
					result0->data[i_79aZpkWszIJKpa3OfOokBJQ] = buf0[(i_79aZpkWszIJKpa3OfOokBJQ)- 0];
				}
				LA9: ;
				i_79aZpkWszIJKpa3OfOokBJQ_2 += ((NI) 1);
			} LA8: ;
		}
	}
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuformatFloat)(NF f0, Floatformatmode_pNvEoaqwoxKyoASD11vSgQ format0, NI precision0, NIM_CHAR decimalsep0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = nsuformatBiggestFloat(f0, format0, precision0, decimalsep0);
	return result0;
}

N_NOINLINE(void, invalidformatstring_61EJWW6vRISEo9a8gt0tusw)(void) {
	Valueerror_Gi06FkNeykJn7mrqRZYrkA* e_L35A58svp4sBF5unURnN4A;
	NimStringDesc* LOC1;
	e_L35A58svp4sBF5unURnN4A = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)0;
	e_L35A58svp4sBF5unURnN4A = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*) nimrtl_newObj((&NTI_yCEN9anxCD6mzBxGjuaRBdg), sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA));
	(*e_L35A58svp4sBF5unURnN4A).Sup.Sup.m_type = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
	LOC1 = (NimStringDesc*)0;
	LOC1 = (*e_L35A58svp4sBF5unURnN4A).Sup.message; (*e_L35A58svp4sBF5unURnN4A).Sup.message = nimrtl_copyStringRC1(((NimStringDesc*) &T_JGc9b9bh2D3nTdUR7TGyq8aA_17));
	if (LOC1) nimGCunrefNoCycle(LOC1);
	nimrtl_raiseException((Exception*)e_L35A58svp4sBF5unURnN4A, "ValueError");
}

N_NIMCALL(NI, findnormalized_SW1VCMDsxPTtzxnYrf3N6w)(NimStringDesc* x0, NimStringDesc** inarray0, NI inarray0Len0) {
	NI result0;
	NI i0;
{	result0 = (NI)0;
	i0 = ((NI) 0);
	{
		while (1) {
			if (!(i0 < (inarray0Len0-1))) goto LA2;
			{
				NI LOC5;
				LOC5 = (NI)0;
				LOC5 = nsuCmpIgnoreStyle(x0, inarray0[i0]);
				if (!(LOC5 == ((NI) 0))) goto LA6;
				result0 = i0;
				goto BeforeRet;
			}
			LA6: ;
			i0 += ((NI) 2);
		} LA2: ;
	}
	result0 = ((NI) -1);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(void, nsuAddf)(NimStringDesc** s0, NimStringDesc* formatstr0, NimStringDesc** a0, NI a0Len0) {
	NI i0;
	NI num0;
	i0 = ((NI) 0);
	num0 = ((NI) 0);
	{
		while (1) {
			if (!(i0 < (formatstr0 ? formatstr0->Sup.len : 0))) goto LA2;
			{
				if (!((NU8)(formatstr0->data[i0]) == (NU8)(36))) goto LA5;
				switch (((NU8)(formatstr0->data[(NI)(i0 + ((NI) 1))]))) {
				case 35:
				{
					{
						if (!((NU32)((a0Len0-1)) < (NU32)(num0))) goto LA10;
						invalidformatstring_61EJWW6vRISEo9a8gt0tusw();
					}
					LA10: ;
					(*s0) = nimrtl_resizeString((*s0), a0[num0]->Sup.len + 0);
appendString((*s0), a0[num0]);
					i0 += ((NI) 2);
					num0 += ((NI) 1);
				}
				break;
				case 36:
				{
					(*s0) = addChar((*s0), 36);
					i0 += ((NI) 2);
				}
				break;
				case 49 ... 57:
				case 45:
				{
					NI j0;
					NIM_BOOL negative0;
					NI idx0;
					j0 = ((NI) 0);
					i0 += ((NI) 1);
					negative0 = ((NU8)(formatstr0->data[i0]) == (NU8)(45));
					{
						if (!negative0) goto LA16;
						i0 += ((NI) 1);
					}
					LA16: ;
					{
						while (1) {
							if (!(((NU8)(formatstr0->data[i0])) >= ((NU8)(48)) && ((NU8)(formatstr0->data[i0])) <= ((NU8)(57)))) goto LA19;
							j0 = (NI)((NI)((NI)(j0 * ((NI) 10)) + ((NI) (((NU8)(formatstr0->data[i0]))))) - ((NI) 48));
							i0 += ((NI) 1);
						} LA19: ;
					}
					{
						if (!!(negative0)) goto LA22;
						idx0 = (NI)(j0 - ((NI) 1));
					}
					goto LA20;
					LA22: ;
					{
						idx0 = (NI)(a0Len0 - j0);
					}
					LA20: ;
					{
						if (!((NU32)((a0Len0-1)) < (NU32)(idx0))) goto LA27;
						invalidformatstring_61EJWW6vRISEo9a8gt0tusw();
					}
					LA27: ;
					(*s0) = nimrtl_resizeString((*s0), a0[idx0]->Sup.len + 0);
appendString((*s0), a0[idx0]);
				}
				break;
				case 123:
				{
					NI j0;
					NI x0;
					NimStringDesc* LOC32;
					j0 = (NI)(i0 + ((NI) 1));
					{
						while (1) {
							if (!!((((NU8)(formatstr0->data[j0])) == ((NU8)(0)) || ((NU8)(formatstr0->data[j0])) == ((NU8)(125))))) goto LA31;
							j0 += ((NI) 1);
						} LA31: ;
					}
					LOC32 = (NimStringDesc*)0;
					LOC32 = copyStrLast(formatstr0, (NI)(i0 + ((NI) 2)), (NI)(j0 - ((NI) 1)));
					x0 = findnormalized_SW1VCMDsxPTtzxnYrf3N6w(LOC32, a0, a0Len0);
					{
						NIM_BOOL LOC35;
						LOC35 = (NIM_BOOL)0;
						LOC35 = (((NI) 0) <= x0);
						if (!(LOC35)) goto LA36;
						LOC35 = (x0 < (a0Len0-1));
						LA36: ;
						if (!LOC35) goto LA37;
						(*s0) = nimrtl_resizeString((*s0), a0[(NI)(x0 + ((NI) 1))]->Sup.len + 0);
appendString((*s0), a0[(NI)(x0 + ((NI) 1))]);
					}
					goto LA33;
					LA37: ;
					{
						invalidformatstring_61EJWW6vRISEo9a8gt0tusw();
					}
					LA33: ;
					i0 = (NI)(j0 + ((NI) 1));
				}
				break;
				case 97 ... 122:
				case 65 ... 90:
				case 128 ... 255:
				case 95:
				{
					NI j0;
					NI x0;
					NimStringDesc* LOC43;
					j0 = (NI)(i0 + ((NI) 1));
					{
						while (1) {
							if (!(((NU8)(formatstr0->data[j0])) >= ((NU8)(97)) && ((NU8)(formatstr0->data[j0])) <= ((NU8)(122)) || ((NU8)(formatstr0->data[j0])) >= ((NU8)(65)) && ((NU8)(formatstr0->data[j0])) <= ((NU8)(90)) || ((NU8)(formatstr0->data[j0])) >= ((NU8)(48)) && ((NU8)(formatstr0->data[j0])) <= ((NU8)(57)) || ((NU8)(formatstr0->data[j0])) >= ((NU8)(128)) && ((NU8)(formatstr0->data[j0])) <= ((NU8)(255)) || ((NU8)(formatstr0->data[j0])) == ((NU8)(95)))) goto LA42;
							j0 += ((NI) 1);
						} LA42: ;
					}
					LOC43 = (NimStringDesc*)0;
					LOC43 = copyStrLast(formatstr0, (NI)(i0 + ((NI) 1)), (NI)(j0 - ((NI) 1)));
					x0 = findnormalized_SW1VCMDsxPTtzxnYrf3N6w(LOC43, a0, a0Len0);
					{
						NIM_BOOL LOC46;
						LOC46 = (NIM_BOOL)0;
						LOC46 = (((NI) 0) <= x0);
						if (!(LOC46)) goto LA47;
						LOC46 = (x0 < (a0Len0-1));
						LA47: ;
						if (!LOC46) goto LA48;
						(*s0) = nimrtl_resizeString((*s0), a0[(NI)(x0 + ((NI) 1))]->Sup.len + 0);
appendString((*s0), a0[(NI)(x0 + ((NI) 1))]);
					}
					goto LA44;
					LA48: ;
					{
						invalidformatstring_61EJWW6vRISEo9a8gt0tusw();
					}
					LA44: ;
					i0 = j0;
				}
				break;
				default:
				{
					invalidformatstring_61EJWW6vRISEo9a8gt0tusw();
				}
				break;
				}
			}
			goto LA3;
			LA5: ;
			{
				(*s0) = addChar((*s0), formatstr0->data[i0]);
				i0 += ((NI) 1);
			}
			LA3: ;
		} LA2: ;
	}
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr0, NimStringDesc** a0, NI a0Len0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) ((NI)((formatstr0 ? formatstr0->Sup.len : 0) + (NI)((NU32)(a0Len0) << (NU32)(((NI) 4)))))));
	nsuAddf((&result0), formatstr0, a0, a0Len0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr0, NimStringDesc* a0) {
	NimStringDesc* result0;
	TY_nHXaesL0DJZHyVS07ARPRA LOC1;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) ((NI)((formatstr0 ? formatstr0->Sup.len : 0) + (a0 ? a0->Sup.len : 0)))));
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = nimrtl_copyString(a0);
	nsuAddf((&result0), formatstr0, LOC1, 1);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nsuFormatVarargs)(NimStringDesc* formatstr0, NimStringDesc** a0, NI a0Len0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) ((NI)((formatstr0 ? formatstr0->Sup.len : 0) + a0Len0))));
	nsuAddf((&result0), formatstr0, a0, a0Len0);
	return result0;
}

N_LIB_EXPORT N_CDECL(void, nsuRemoveSuffixCharSet)(NimStringDesc** s0, TY_nmiMWKVIe46vacnhAFrQvw_Set chars0) {
	NI last0;
	last0 = (NI)(((*s0) ? (*s0)->Sup.len : 0) - ((NI) 1));
	{
		if (!(memcmp(chars0, T_JGc9b9bh2D3nTdUR7TGyq8aA_18, 32)==0)) goto LA3;
		{
			if (!((NU8)((*s0)->data[last0]) == (NU8)(10))) goto LA7;
			last0 -= ((NI) 1);
		}
		LA7: ;
		{
			if (!((NU8)((*s0)->data[last0]) == (NU8)(13))) goto LA11;
			last0 -= ((NI) 1);
		}
		LA11: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!((chars0[(NU)(((NU8)((*s0)->data[last0])))>>3] &(1U<<((NU)(((NU8)((*s0)->data[last0])))&7U)))!=0)) goto LA16;
			last0 -= ((NI) 1);
		}
		LA16: ;
	}
	LA1: ;
	(*s0) = nimrtl_setLengthStr((*s0), ((NI) ((NI)(last0 + ((NI) 1)))));
}

N_LIB_EXPORT N_CDECL(void, nsuRemoveSuffixChar)(NimStringDesc** s0, NIM_CHAR c0) {
	TY_nmiMWKVIe46vacnhAFrQvw_Set LOC1;
	memset(LOC1, 0, sizeof(LOC1));
	LOC1[(NU)(((NU8)(c0)))>>3] |=(1U<<((NU)(((NU8)(c0)))&7U));
	nsuRemoveSuffixCharSet(s0, LOC1);
}

N_LIB_EXPORT N_CDECL(void, nsuRemoveSuffixString)(NimStringDesc** s0, NimStringDesc* suffix0) {
	NI newlen0;
	newlen0 = ((*s0) ? (*s0)->Sup.len : 0);
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = nsuEndsWith((*s0), suffix0);
		if (!LOC3) goto LA4;
		newlen0 -= (suffix0 ? suffix0->Sup.len : 0);
	}
	LA4: ;
	(*s0) = nimrtl_setLengthStr((*s0), ((NI) (newlen0)));
}

N_NIMCALL(NIM_BOOL, contains_m1TSS3QwQPclQATuiRuVZg)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set chars0) {
	NIM_BOOL result0;
	NI LOC1;
{	result0 = (NIM_BOOL)0;
	LOC1 = (NI)0;
	LOC1 = nsuFindCharSet(s0, chars0, ((NI) 0));
	result0 = (((NI) 0) <= LOC1);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, allcharsinset_wVfr4F6j4mVzI8ggLoMVdw)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set theset0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		NIM_CHAR c_OfX9ahk9c2gxTAqT6o9cLontQ;
		NI i_YukgSFsRpghxM0a8yZJrxw;
		NI L_yJ2xOhbK0cwCgg3gx7kF9cg;
		c_OfX9ahk9c2gxTAqT6o9cLontQ = (NIM_CHAR)0;
		i_YukgSFsRpghxM0a8yZJrxw = ((NI) 0);
		L_yJ2xOhbK0cwCgg3gx7kF9cg = (s0 ? s0->Sup.len : 0);
		{
			while (1) {
				if (!(i_YukgSFsRpghxM0a8yZJrxw < L_yJ2xOhbK0cwCgg3gx7kF9cg)) goto LA3;
				c_OfX9ahk9c2gxTAqT6o9cLontQ = s0->data[i_YukgSFsRpghxM0a8yZJrxw];
				{
					if (!!(((theset0[(NU)(((NU8)(c_OfX9ahk9c2gxTAqT6o9cLontQ)))>>3] &(1U<<((NU)(((NU8)(c_OfX9ahk9c2gxTAqT6o9cLontQ)))&7U)))!=0))) goto LA6;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA6: ;
				i_YukgSFsRpghxM0a8yZJrxw += ((NI) 1);
			} LA3: ;
		}
	}
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}
NIM_EXTERNC N_NOINLINE(void, stdlib_strutilsInit000)(void) {
}

NIM_EXTERNC N_NOINLINE(void, stdlib_strutilsDatInit000)(void) {
NTI_sM4lkSb7zS6F7OVMvW9cffQ.size = sizeof(TY_sM4lkSb7zS6F7OVMvW9cffQ*);
NTI_sM4lkSb7zS6F7OVMvW9cffQ.kind = 24;
NTI_sM4lkSb7zS6F7OVMvW9cffQ.base = (&NTI_77mFvmsOLKik79ci2hXkHEg);
NTI_sM4lkSb7zS6F7OVMvW9cffQ.flags = 2;
NTI_sM4lkSb7zS6F7OVMvW9cffQ.marker = Marker_TY_sM4lkSb7zS6F7OVMvW9cffQ;
NTI_qwqHTkRvwhrRyENtudHQ7g.size = sizeof(TY_qwqHTkRvwhrRyENtudHQ7g*);
NTI_qwqHTkRvwhrRyENtudHQ7g.kind = 24;
NTI_qwqHTkRvwhrRyENtudHQ7g.base = (&NTI_rR5Bzr1D5krxoo1NcNyeMA);
NTI_qwqHTkRvwhrRyENtudHQ7g.flags = 2;
NTI_qwqHTkRvwhrRyENtudHQ7g.marker = Marker_TY_qwqHTkRvwhrRyENtudHQ7g;
}

