text: /* Generated by Nim Compiler v1.6.2 */
  #define NIM_INTBITS 64
  
  #include "nimbase.h"
  #include <stdio.h>
  #include <setjmp.h>
  #include <string.h>
  #undef LANGUAGE_C
  #undef MIPSEB
  #undef MIPSEL
  #undef PPC
  #undef R3000
  #undef R4000
  #undef i386
  #undef linux
  #undef mips
  #undef near
  #undef far
  #undef powerpc
  #undef unix
  #define nimfr_(x, y)
  #define nimln_(x, y)
  typedef struct TNimType TNimType;
  typedef struct TNimNode TNimNode;
  typedef struct tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ;
  typedef struct RootObj RootObj;
  typedef struct NimStringDesc NimStringDesc;
  typedef struct TGenericSeq TGenericSeq;
  typedef struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA;
  typedef struct tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ;
  typedef struct Exception Exception;
  typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
  typedef struct TSafePoint TSafePoint;
  typedef struct tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw;
  typedef struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA;
  typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
  typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
  typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
  typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
  typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
  typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
  typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
  typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
  typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
  typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
  typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
  typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
  typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
  typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
  typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
  typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
  typedef struct tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw;
  typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
  typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
  typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
  typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
  typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
  struct TNimType {
  NI size;
  NI align;
  tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
  tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
  TNimType* base;
  TNimNode* node;
  void* finalizer;
  tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
  tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
  };
  typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
  struct TNimNode {
  tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
  NI offset;
  TNimType* typ;
  NCSTRING name;
  NI len;
  TNimNode** sons;
  };
  struct RootObj {
  TNimType* m_type;
  };
  typedef N_NIMCALL_PTR(void, tyProc__JQrsH08b4uPTH9cyFPlVOZg) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__9bmhFrLahRsL2hltfRDVtlQ) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  typedef N_NIMCALL_PTR(void, tyProc__3svSoGIUJIsHkaBL7q4DAQ) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NI pos);
  typedef N_NIMCALL_PTR(NI, tyProc__xflqkf2D1uVClg70czEDHA) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  struct TGenericSeq {
  NI len;
  NI reserved;
  };
  struct NimStringDesc {
    TGenericSeq Sup;
  NIM_CHAR data[SEQ_DECL_SIZE];
  };
  typedef N_NIMCALL_PTR(NI, tyProc__c9c0f59ak4YGQ6neEym8LPKw) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** buffer, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA slice);
  typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__7jFfqMk9ajToCz6Hv9atCA4A) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** line);
  typedef N_NIMCALL_PTR(NI, tyProc__2VVzVL9bOnKhj1eZKkf9cEuA) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  typedef N_NIMCALL_PTR(void, tyProc__ki6p1QyfOkJLQJ9aw5NI0AQ) (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  struct tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ {
    RootObj Sup;
  tyProc__JQrsH08b4uPTH9cyFPlVOZg closeImpl;
  tyProc__9bmhFrLahRsL2hltfRDVtlQ atEndImpl;
  tyProc__3svSoGIUJIsHkaBL7q4DAQ setPositionImpl;
  tyProc__xflqkf2D1uVClg70czEDHA getPositionImpl;
  tyProc__c9c0f59ak4YGQ6neEym8LPKw readDataStrImpl;
  tyProc__7jFfqMk9ajToCz6Hv9atCA4A readLineImpl;
  tyProc__2VVzVL9bOnKhj1eZKkf9cEuA readDataImpl;
  tyProc__2VVzVL9bOnKhj1eZKkf9cEuA peekDataImpl;
  tyProc__ki6p1QyfOkJLQJ9aw5NI0AQ writeDataImpl;
  tyProc__JQrsH08b4uPTH9cyFPlVOZg flushImpl;
  };
  struct tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ {
    tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ Sup;
  FILE* f;
  };
  typedef NU8 tyEnum_FileSeekPos__I9aQjuvWxs8BspGbxwsngWw;
  struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA {
  NI a;
  NI b;
  };
  struct Exception {
    RootObj Sup;
  Exception* parent;
  NCSTRING name;
  NimStringDesc* message;
  tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
  Exception* up;
  };
  typedef long tyArray__TcvIiMAJvcwzNLsZkfnFnQ[25];
  struct TSafePoint {
  TSafePoint* prev;
  NI status;
  jmp_buf context;
  };
  struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA {
    Exception Sup;
  };
  struct tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw {
    tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
  };
  struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
  NI refcount;
  TNimType* typ;
  };
  struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
  void* bottom;
  };
  struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
  NI len;
  NI cap;
  tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
  };
  typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
  typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
  typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
  typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
  typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
  struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
  tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
  };
  typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
  struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
  tyArray__0aOLqZchNi8nWtMTi8ND8w link;
  NI key;
  NI upperBound;
  NI level;
  };
  struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
  tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
  NI Field1;
  };
  typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
  struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
  NI len;
  tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
  tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
  };
  struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
  NI minLargeObj;
  NI maxLargeObj;
  tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
  NU32 flBitmap;
  tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
  tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
  tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
  NI currMem;
  NI maxMem;
  NI freeMem;
  NI occ;
  NI lastSize;
  tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
  tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
  tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
  tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
  tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
  NIM_BOOL locked;
  NIM_BOOL blockChunkSizeIncrease;
  NI nextChunkSize;
  tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
  tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
  };
  struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
  NI stackScans;
  NI cycleCollections;
  NI maxThreshold;
  NI maxStackSize;
  NI maxStackCells;
  NI cycleTableSize;
  NI64 maxPause;
  };
  struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
  NI counter;
  NI max;
  tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
  tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
  };
  struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
  tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
  NI cycleThreshold;
  NI zctThreshold;
  tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
  tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
  tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
  NI recGcLock;
  tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
  tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
  tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
  tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
  NI gcThreadId;
  };
  struct tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw {
    tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ Sup;
  NimStringDesc* data;
  NI pos;
  };
  typedef NU8 tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg;
  struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
  NCSTRING procname;
  NI line;
  NCSTRING filename;
  };
  struct tySequence__uB9b75OUPRENsBAu4AnoePA {
    TGenericSeq Sup;
    tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
  };
  static N_NIMCALL(void, Marker_tyRef__1G0jiQbe7KwD5ADza5AZaw)(void* p, NI op);
  N_LIB_PRIVATE N_NIMCALL(void, writeData__pureZstreams_168)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s);
  static N_NIMCALL(void, Marker_tyRef__y4kGpp4Cn6oTOCWBJMIxAg)(void* p, NI op);
  N_LIB_PRIVATE N_NOINLINE(void*, newObj)(TNimType* typ, NI size);
  N_LIB_PRIVATE N_NIMCALL(void, fsClose__pureZstreams_757)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  N_LIB_PRIVATE N_NIMCALL(void, close__systemZio_217)(FILE* f);
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, fsAtEnd__pureZstreams_774)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, endOfFile__systemZio_337)(FILE* f);
  N_LIB_PRIVATE N_NIMCALL(void, fsSetPosition__pureZstreams_777)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NI pos);
  N_LIB_PRIVATE N_NIMCALL(void, setFilePos__systemZio_439)(FILE* f, NI64 pos, tyEnum_FileSeekPos__I9aQjuvWxs8BspGbxwsngWw relativeTo);
  N_LIB_PRIVATE N_NIMCALL(NI, fsGetPosition__pureZstreams_780)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  N_LIB_PRIVATE N_NIMCALL(NI64, getFilePos__systemZio_452)(FILE* f);
  N_LIB_PRIVATE N_NIMCALL(NI, fsReadDataStr__pureZstreams_788)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** buffer, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA slice);
  N_LIB_PRIVATE N_NIMCALL(NI, readBuffer__systemZio_144)(FILE* f, void* buffer, NI len);
  N_LIB_PRIVATE N_NIMCALL(NI, fsReadData__pureZstreams_783)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, fsReadLine__pureZstreams_804)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** line);
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, readLine__systemZio_238)(FILE* f, NimStringDesc** line);
  N_LIB_PRIVATE N_NIMCALL(NI, fsPeekData__pureZstreams_794)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  static N_INLINE(void, pushSafePoint)(TSafePoint* s);
  static N_INLINE(void, popSafePoint)(void);
  N_LIB_PRIVATE N_NIMCALL(void, nimLeaveFinally)(void);
  N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void);
  N_LIB_PRIVATE N_NIMCALL(void, fsWriteData__pureZstreams_800)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  N_LIB_PRIVATE N_NIMCALL(NI, writeBuffer__systemZio_176)(FILE* f, void* buffer, NI len);
  N_LIB_PRIVATE N_NIMCALL(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*, newEIO__pureZstreams_2)(NimStringDesc* msg);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
  static N_INLINE(void, nimGCunrefNoCycle)(void* p);
  static N_INLINE(void, decRef__system_5324)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
  static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
  static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
  static N_INLINE(void, rtlAddZCT__system_5322)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
  N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5273)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
  static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5279)(void* usr);
  N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
  N_LIB_PRIVATE N_NIMCALL(void, fsFlush__pureZstreams_772)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  N_LIB_PRIVATE N_NIMCALL(void, flushFile__systemZio_226)(FILE* f);
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, atEnd__pureZstreams_63)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  N_LIB_PRIVATE N_NIMCALL(NIM_CHAR, readChar__pureZstreams_202)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  N_LIB_PRIVATE N_NIMCALL(NI, readData__pureZstreams_75)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen);
  N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
  N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
  static N_NIMCALL(void, Marker_tyRef__Z9cj1NxLXx79cYy9c4gbj6CAA)(void* p, NI op);
  N_LIB_PRIVATE N_NIMCALL(void, ssClose__pureZstreams_673)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  static N_INLINE(void, asgnRef)(void** dest, void* src);
  static N_INLINE(void, incRef__system_5317)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
  static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, ssAtEnd__pureZstreams_558)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  N_LIB_PRIVATE N_NIMCALL(void, ssSetPosition__pureZstreams_580)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NI pos);
  N_LIB_PRIVATE N_NIMCALL(NI, clamp__pureZstreams_584)(NI x, NI a, NI b);
  N_LIB_PRIVATE N_NIMCALL(NI, ssGetPosition__pureZstreams_590)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s);
  N_LIB_PRIVATE N_NIMCALL(NI, ssReadDataStr__pureZstreams_594)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** buffer, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA slice);
  static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size);
  static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
  N_LIB_PRIVATE N_NIMCALL(NI, ssReadData__pureZstreams_648)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  N_LIB_PRIVATE N_NIMCALL(NI, ssPeekData__pureZstreams_658)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  N_LIB_PRIVATE N_NIMCALL(void, ssWriteData__pureZstreams_664)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen);
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, open__systemZio_392)(FILE** f, NimStringDesc* filename, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode, NI bufSize);
  N_LIB_PRIVATE N_NIMCALL(tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*, newFileStream__pureZstreams_808)(FILE* f);
  extern TNimType NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_;
  N_LIB_PRIVATE TNimType NTIstreamobj__THYguAi9bSgidczZ3ywEIMQ_;
  N_LIB_PRIVATE TNimType NTIprocLs58streamTLOnimcall_gcsafeOT__JQrsH08b4uPTH9cyFPlVOZg_;
  N_LIB_PRIVATE TNimType NTIprocLs58streamT58boolLOnimcall_gcsafeOT__9bmhFrLahRsL2hltfRDVtlQ_;
  N_LIB_PRIVATE TNimType NTIprocLs58stream_pos58intTLOnimcall_gcsafeOT__3svSoGIUJIsHkaBL7q4DAQ_;
  N_LIB_PRIVATE TNimType NTIprocLs58streamT58intLOnimcall_gcsafeOT__xflqkf2D1uVClg70czEDHA_;
  N_LIB_PRIVATE TNimType NTIprocLs58stream_buffer58varstring_slice58sliceLsystemOintTT58intLOnimcall_gcsafeOT__c9c0f59ak4YGQ6neEym8LPKw_;
  N_LIB_PRIVATE TNimType NTIprocLs58stream_line58varstringT58boolLOnimcall_gcsafeOT__7jFfqMk9ajToCz6Hv9atCA4A_;
  N_LIB_PRIVATE TNimType NTIprocLs58stream_buffer58pointer_buflen58intT58intLOnimcall_gcsafeOT__2VVzVL9bOnKhj1eZKkf9cEuA_;
  N_LIB_PRIVATE TNimType NTIprocLs58stream_buffer58pointer_buflen58intTLOnimcall_gcsafeOT__ki6p1QyfOkJLQJ9aw5NI0AQ_;
  N_LIB_PRIVATE TNimType NTIstream__1G0jiQbe7KwD5ADza5AZaw_;
  N_LIB_PRIVATE TNimType NTIfilestreamobj__9bEVSsOIpkY9cf5lCtaS39bPQ_;
  extern TNimType NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_;
  N_LIB_PRIVATE TNimType NTIfilestream__y4kGpp4Cn6oTOCWBJMIxAg_;
  extern TNimType NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_;
  extern TNimType NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_;
  STRING_LITERAL(TM__Ue7tnBcsL67VCiRfvt8q0A_4, "cannot write to stream", 22);
  STRING_LITERAL(TM__Ue7tnBcsL67VCiRfvt8q0A_5, "cannot read from stream", 23);
  N_LIB_PRIVATE TNimType NTIstringstreamobj__Olau5FPRehZBBEB77FHnfw_;
  extern TNimType NTIstring__77mFvmsOLKik79ci2hXkHEg_;
  extern TNimType NTIint__rR5Bzr1D5krxoo1NcNyeMA_;
  N_LIB_PRIVATE TNimType NTIstringstream__Z9cj1NxLXx79cYy9c4gbj6CAA_;
  extern TSafePoint* excHandler__system_2565;
  extern TSafePoint* excHandler__system_2565;
  extern TSafePoint* excHandler__system_2565;
  extern TSafePoint* excHandler__system_2565;
  extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5226;
  static N_NIMCALL(void, Marker_tyRef__1G0jiQbe7KwD5ADza5AZaw)(void* p, NI op) {
  	tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* a;
  	a = (tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ*)p;
  }
  N_LIB_PRIVATE N_NIMCALL(void, writeData__pureZstreams_168)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen) {
  	(*s).writeDataImpl(s, buffer, bufLen);
  }
  static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s) {
  	NCSTRING result;
  	result = (NCSTRING)0;
  	{
  		NIM_BOOL T3_;
  		T3_ = (NIM_BOOL)0;
  		T3_ = (s == ((NimStringDesc*) NIM_NIL));
  		if (T3_) goto LA4_;
  		T3_ = ((*s).Sup.len == ((NI) 0));
  		LA4_: ;
  		if (!T3_) goto LA5_;
  		result = "";
  	}
  	goto LA1_;
  	LA5_: ;
  	{
  		result = ((NCSTRING) ((*s).data));
  	}
  	LA1_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(void, write__pureZstreams_177)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc* x) {
  	{
  		if (!(((NI) 0) < (x ? x->Sup.len : 0))) goto LA3_;
  		writeData__pureZstreams_168(s, ((void*) (nimToCStringConv(x))), (x ? x->Sup.len : 0));
  	}
  	LA3_: ;
  }
  static N_NIMCALL(void, Marker_tyRef__y4kGpp4Cn6oTOCWBJMIxAg)(void* p, NI op) {
  	tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ* a;
  	a = (tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*)p;
  }
  N_LIB_PRIVATE N_NIMCALL(void, fsClose__pureZstreams_757)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s) {
  	{
  		if (!!(((*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f == ((FILE*) NIM_NIL)))) goto LA3_;
  		close__systemZio_217((*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f);
  		(*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f = ((FILE*) NIM_NIL);
  	}
  	LA3_: ;
  }
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, fsAtEnd__pureZstreams_774)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s) {
  	NIM_BOOL result;
  {	result = (NIM_BOOL)0;
  	result = endOfFile__systemZio_337((*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f);
  	goto BeforeRet_;
  	}BeforeRet_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(void, fsSetPosition__pureZstreams_777)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NI pos) {
  	setFilePos__systemZio_439((*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f, ((NI64) (pos)), ((tyEnum_FileSeekPos__I9aQjuvWxs8BspGbxwsngWw) 0));
  }
  N_LIB_PRIVATE N_NIMCALL(NI, fsGetPosition__pureZstreams_780)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s) {
  	NI result;
  	NI64 T1_;
  {	result = (NI)0;
  	T1_ = (NI64)0;
  	T1_ = getFilePos__systemZio_452((*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f);
  	result = ((NI) (T1_));
  	goto BeforeRet_;
  	}BeforeRet_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(NI, fsReadDataStr__pureZstreams_788)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** buffer, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA slice) {
  	NI result;
  	result = (NI)0;
  	result = readBuffer__systemZio_144((*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f, ((void*) ((&(*buffer)->data[slice.a]))), ((NI) ((NI)((NI)(slice.b + ((NI) 1)) - slice.a))));
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(NI, fsReadData__pureZstreams_783)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen) {
  	NI result;
  	result = (NI)0;
  	result = readBuffer__systemZio_144((*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f, buffer, ((NI) (bufLen)));
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, fsReadLine__pureZstreams_804)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** line) {
  	NIM_BOOL result;
  	result = (NIM_BOOL)0;
  	result = readLine__systemZio_238((*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f, line);
  	return result;
  }
  static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
  	(*s).prev = excHandler__system_2565;
  	excHandler__system_2565 = s;
  }
  static N_INLINE(void, popSafePoint)(void) {
  	excHandler__system_2565 = (*excHandler__system_2565).prev;
  }
  N_LIB_PRIVATE N_NIMCALL(NI, fsPeekData__pureZstreams_794)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen) {
  	NI result;
  	NI pos;
  	TSafePoint TM__Ue7tnBcsL67VCiRfvt8q0A_3;
  	result = (NI)0;
  	pos = fsGetPosition__pureZstreams_780(s);
  	pushSafePoint(&TM__Ue7tnBcsL67VCiRfvt8q0A_3);
  	TM__Ue7tnBcsL67VCiRfvt8q0A_3.status = setjmp(TM__Ue7tnBcsL67VCiRfvt8q0A_3.context);
  	if (TM__Ue7tnBcsL67VCiRfvt8q0A_3.status == 0) {
  	result = readBuffer__systemZio_144((*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f, buffer, ((NI) (bufLen)));
  	popSafePoint();
  	}
  	else {
  		popSafePoint();
  	}
  	{
  		fsSetPosition__pureZstreams_777(s, pos);
  		if (TM__Ue7tnBcsL67VCiRfvt8q0A_3.status != 0) nimLeaveFinally();
  	}
  	if (TM__Ue7tnBcsL67VCiRfvt8q0A_3.status != 0) reraiseException();
  	return result;
  }
  static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
  	NI result;
  	result = (NI)0;
  	result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
  	return result;
  }
  static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
  	NIM_BOOL result;
  	result = (NIM_BOOL)0;
  	result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
  	return result;
  }
  static N_INLINE(void, rtlAddZCT__system_5322)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
  	addZCT__system_5273((&gch__system_5226.zct), c);
  }
  static N_INLINE(void, decRef__system_5324)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
  	(*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
  	{
  		NIM_BOOL T3_;
  		T3_ = (NIM_BOOL)0;
  		T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
  		if (!T3_) goto LA4_;
  		rtlAddZCT__system_5322(c);
  	}
  	LA4_: ;
  }
  static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5279)(void* usr) {
  	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
  	NI T1_;
  	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
  	T1_ = (NI)0;
  	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 16));
  	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
  	return result;
  }
  static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
  	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
  	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
  	T1_ = usrToCell__system_5279(p);
  	decRef__system_5324(T1_);
  }
  N_LIB_PRIVATE N_NIMCALL(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*, newEIO__pureZstreams_2)(NimStringDesc* msg) {
  	tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* result;
  	NimStringDesc* T1_;
  	result = NIM_NIL;
  	result = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
  	(*result).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
  	(*result).Sup.Sup.name = "IOError";
  	T1_ = NIM_NIL;
  	T1_ = (*result).Sup.Sup.message; (*result).Sup.Sup.message = copyStringRC1(msg);
  	if (T1_) nimGCunrefNoCycle(T1_);
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(void, fsWriteData__pureZstreams_800)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen) {
  	{
  		NI T3_;
  		tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T6_;
  		T3_ = (NI)0;
  		T3_ = writeBuffer__systemZio_176((*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f, buffer, ((NI) (bufLen)));
  		if (!!((T3_ == bufLen))) goto LA4_;
  		T6_ = NIM_NIL;
  		T6_ = newEIO__pureZstreams_2(((NimStringDesc*) &TM__Ue7tnBcsL67VCiRfvt8q0A_4));
  		raiseExceptionEx((Exception*)T6_, "IOError", "fsWriteData", "streams.nim", 1320);
  	}
  	LA4_: ;
  }
  N_LIB_PRIVATE N_NIMCALL(void, fsFlush__pureZstreams_772)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s) {
  	flushFile__systemZio_226((*((tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) (s))).f);
  }
  N_LIB_PRIVATE N_NIMCALL(tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*, newFileStream__pureZstreams_808)(FILE* f) {
  	tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ* result;
  	result = NIM_NIL;
  	result = (tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*) newObj((&NTIfilestream__y4kGpp4Cn6oTOCWBJMIxAg_), sizeof(tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ));
  	(*result).Sup.Sup.m_type = (&NTIfilestreamobj__9bEVSsOIpkY9cf5lCtaS39bPQ_);
  	(*result).f = f;
  	(*result).Sup.closeImpl = fsClose__pureZstreams_757;
  	(*result).Sup.atEndImpl = fsAtEnd__pureZstreams_774;
  	(*result).Sup.setPositionImpl = fsSetPosition__pureZstreams_777;
  	(*result).Sup.getPositionImpl = fsGetPosition__pureZstreams_780;
  	(*result).Sup.readDataStrImpl = fsReadDataStr__pureZstreams_788;
  	(*result).Sup.readDataImpl = fsReadData__pureZstreams_783;
  	(*result).Sup.readLineImpl = fsReadLine__pureZstreams_804;
  	(*result).Sup.peekDataImpl = fsPeekData__pureZstreams_794;
  	(*result).Sup.writeDataImpl = fsWriteData__pureZstreams_800;
  	(*result).Sup.flushImpl = fsFlush__pureZstreams_772;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(void, close__pureZstreams_57)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s) {
  	{
  		if (!!(((*s).closeImpl == 0))) goto LA3_;
  		(*s).closeImpl(s);
  	}
  	LA3_: ;
  }
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, atEnd__pureZstreams_63)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s) {
  	NIM_BOOL result;
  	result = (NIM_BOOL)0;
  	result = (*s).atEndImpl(s);
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(NI, readData__pureZstreams_75)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen) {
  	NI result;
  	result = (NI)0;
  	result = (*s).readDataImpl(s, buffer, bufLen);
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(NIM_CHAR, readChar__pureZstreams_202)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s) {
  	NIM_CHAR result;
  	result = (NIM_CHAR)0;
  	{
  		{
  			NI T4_;
  			T4_ = (NI)0;
  			T4_ = readData__pureZstreams_75(s, ((void*) ((&result))), ((NI) 1));
  			if (!!((T4_ == ((NI) 1)))) goto LA5_;
  			result = 0;
  		}
  		LA5_: ;
  	}
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readLine__pureZstreams_539)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s) {
  	NimStringDesc* result;
  	result = NIM_NIL;
  	result = ((NimStringDesc*) NIM_NIL);
  	{
  		NIM_BOOL T3_;
  		tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T6_;
  		T3_ = (NIM_BOOL)0;
  		T3_ = atEnd__pureZstreams_63(s);
  		if (!T3_) goto LA4_;
  		T6_ = NIM_NIL;
  		T6_ = newEIO__pureZstreams_2(((NimStringDesc*) &TM__Ue7tnBcsL67VCiRfvt8q0A_5));
  		raiseExceptionEx((Exception*)T6_, "IOError", "readLine", "streams.nim", 1068);
  	}
  	LA4_: ;
  	{
  		while (1) {
  			NIM_CHAR c;
  			c = readChar__pureZstreams_202(s);
  			{
  				if (!((NU8)(c) == (NU8)(13))) goto LA11_;
  				c = readChar__pureZstreams_202(s);
  				goto LA7;
  			}
  			LA11_: ;
  			{
  				NIM_BOOL T15_;
  				T15_ = (NIM_BOOL)0;
  				T15_ = ((NU8)(c) == (NU8)(10));
  				if (T15_) goto LA16_;
  				T15_ = ((NU8)(c) == (NU8)(0));
  				LA16_: ;
  				if (!T15_) goto LA17_;
  				goto LA7;
  			}
  			goto LA13_;
  			LA17_: ;
  			{
  				result = addChar(result, c);
  			}
  			LA13_: ;
  		}
  	} LA7: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, readLine__pureZstreams_524)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** line) {
  	NIM_BOOL result;
  {	result = (NIM_BOOL)0;
  	{
  		if (!!(((*s).readLineImpl == NIM_NIL))) goto LA3_;
  		result = (*s).readLineImpl(s, line);
  	}
  	goto LA1_;
  	LA3_: ;
  	{
  		unsureAsgnRef((void**) (&(*line)), setLengthStr((*line), ((NI) 0)));
  		{
  			while (1) {
  				NIM_CHAR c;
  				c = readChar__pureZstreams_202(s);
  				{
  					if (!((NU8)(c) == (NU8)(13))) goto LA10_;
  					c = readChar__pureZstreams_202(s);
  					goto LA6;
  				}
  				goto LA8_;
  				LA10_: ;
  				{
  					if (!((NU8)(c) == (NU8)(10))) goto LA13_;
  					goto LA6;
  				}
  				goto LA8_;
  				LA13_: ;
  				{
  					if (!((NU8)(c) == (NU8)(0))) goto LA16_;
  					{
  						if (!(((NI) 0) < ((*line) ? (*line)->Sup.len : 0))) goto LA20_;
  						goto LA6;
  					}
  					goto LA18_;
  					LA20_: ;
  					{
  						result = NIM_FALSE;
  						goto BeforeRet_;
  					}
  					LA18_: ;
  				}
  				goto LA8_;
  				LA16_: ;
  				LA8_: ;
  				unsureAsgnRef((void**) (&(*line)), addChar((*line), c));
  			}
  		} LA6: ;
  		result = NIM_TRUE;
  	}
  	LA1_: ;
  	}BeforeRet_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(NI, readDataStr__pureZstreams_81)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** buffer, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA slice) {
  	NI result;
  	result = (NI)0;
  	{
  		if (!!(((*s).readDataStrImpl == NIM_NIL))) goto LA3_;
  		result = (*s).readDataStrImpl(s, buffer, slice);
  	}
  	goto LA1_;
  	LA3_: ;
  	{
  		result = readData__pureZstreams_75(s, ((void*) ((&(*buffer)->data[slice.a]))), (NI)((NI)(slice.b + ((NI) 1)) - slice.a));
  	}
  	LA1_: ;
  	return result;
  }
  static N_NIMCALL(void, Marker_tyRef__Z9cj1NxLXx79cYy9c4gbj6CAA)(void* p, NI op) {
  	tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw* a;
  	a = (tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*)p;
  	nimGCvisit((void*)(*a).data, op);
  }
  static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
  	NI result;
  	result = (NI)0;
  	result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
  	return result;
  }
  static N_INLINE(void, incRef__system_5317)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
  	(*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
  }
  static N_INLINE(void, asgnRef)(void** dest, void* src) {
  	{
  		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
  		if (!!((src == NIM_NIL))) goto LA3_;
  		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
  		T5_ = usrToCell__system_5279(src);
  		incRef__system_5317(T5_);
  	}
  	LA3_: ;
  	{
  		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
  		if (!!(((*dest) == NIM_NIL))) goto LA8_;
  		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
  		T10_ = usrToCell__system_5279((*dest));
  		decRef__system_5324(T10_);
  	}
  	LA8_: ;
  	(*dest) = src;
  }
  N_LIB_PRIVATE N_NIMCALL(void, ssClose__pureZstreams_673)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s) {
  	tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw* s_2;
  	s_2 = ((tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*) (s));
  	asgnRef((void**) (&(*s_2).data), ((NimStringDesc*) NIM_NIL));
  }
  N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, ssAtEnd__pureZstreams_558)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s) {
  	NIM_BOOL result;
  	tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw* s_2;
  {	result = (NIM_BOOL)0;
  	s_2 = ((tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*) (s));
  	result = (((*s_2).data ? (*s_2).data->Sup.len : 0) <= (*s_2).pos);
  	goto BeforeRet_;
  	}BeforeRet_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(NI, clamp__pureZstreams_584)(NI x, NI a, NI b) {
  	NI result;
  {	result = (NI)0;
  	{
  		if (!(x < a)) goto LA3_;
  		result = a;
  		goto BeforeRet_;
  	}
  	LA3_: ;
  	{
  		if (!(b < x)) goto LA7_;
  		result = b;
  		goto BeforeRet_;
  	}
  	LA7_: ;
  	result = x;
  	goto BeforeRet_;
  	}BeforeRet_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(void, ssSetPosition__pureZstreams_580)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NI pos) {
  	tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw* s_2;
  	s_2 = ((tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*) (s));
  	(*s_2).pos = clamp__pureZstreams_584(pos, ((NI) 0), ((*s_2).data ? (*s_2).data->Sup.len : 0));
  }
  N_LIB_PRIVATE N_NIMCALL(NI, ssGetPosition__pureZstreams_590)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s) {
  	NI result;
  	tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw* s_2;
  {	result = (NI)0;
  	s_2 = ((tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*) (s));
  	result = (*s_2).pos;
  	goto BeforeRet_;
  	}BeforeRet_: ;
  	return result;
  }
  static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
  	void* T1_;
  	T1_ = (void*)0;
  	T1_ = memcpy(dest, source, ((size_t) (size)));
  }
  static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size) {
  	nimCopyMem(dest, source, size);
  }
  N_LIB_PRIVATE N_NIMCALL(NI, ssReadDataStr__pureZstreams_594)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, NimStringDesc** buffer, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA slice) {
  	NI result;
  	tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw* s_2;
  	result = (NI)0;
  	s_2 = ((tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*) (s));
  	result = (((NI)((NI)(slice.b + ((NI) 1)) - slice.a) <= (NI)(((*s_2).data ? (*s_2).data->Sup.len : 0) - (*s_2).pos)) ? (NI)((NI)(slice.b + ((NI) 1)) - slice.a) : (NI)(((*s_2).data ? (*s_2).data->Sup.len : 0) - (*s_2).pos));
  	{
  		if (!(((NI) 0) < result)) goto LA3_;
  		{
  			copyMem__system_1727(((void*) ((&(*buffer)->data[slice.a]))), ((void*) ((&(*s_2).data->data[(*s_2).pos]))), ((NI) (result)));
  		}
  		(*s_2).pos += result;
  	}
  	goto LA1_;
  	LA3_: ;
  	{
  		result = ((NI) 0);
  	}
  	LA1_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(NI, ssReadData__pureZstreams_648)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen) {
  	NI result;
  	tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw* s_2;
  	result = (NI)0;
  	s_2 = ((tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*) (s));
  	result = ((bufLen <= (NI)(((*s_2).data ? (*s_2).data->Sup.len : 0) - (*s_2).pos)) ? bufLen : (NI)(((*s_2).data ? (*s_2).data->Sup.len : 0) - (*s_2).pos));
  	{
  		if (!(((NI) 0) < result)) goto LA3_;
  		copyMem__system_1727(buffer, ((void*) ((&(*s_2).data->data[(*s_2).pos]))), ((NI) (result)));
  		(*s_2).pos += result;
  	}
  	goto LA1_;
  	LA3_: ;
  	{
  		result = ((NI) 0);
  	}
  	LA1_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(NI, ssPeekData__pureZstreams_658)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen) {
  	NI result;
  	tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw* s_2;
  	result = (NI)0;
  	s_2 = ((tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*) (s));
  	result = ((bufLen <= (NI)(((*s_2).data ? (*s_2).data->Sup.len : 0) - (*s_2).pos)) ? bufLen : (NI)(((*s_2).data ? (*s_2).data->Sup.len : 0) - (*s_2).pos));
  	{
  		if (!(((NI) 0) < result)) goto LA3_;
  		copyMem__system_1727(buffer, ((void*) ((&(*s_2).data->data[(*s_2).pos]))), ((NI) (result)));
  	}
  	goto LA1_;
  	LA3_: ;
  	{
  		result = ((NI) 0);
  	}
  	LA1_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(void, ssWriteData__pureZstreams_664)(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ* s, void* buffer, NI bufLen) {
  	tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw* s_2;
  {	s_2 = ((tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*) (s));
  	{
  		if (!(bufLen <= ((NI) 0))) goto LA3_;
  		goto BeforeRet_;
  	}
  	LA3_: ;
  	{
  		if (!(((*s_2).data ? (*s_2).data->Sup.len : 0) < (NI)((*s_2).pos + bufLen))) goto LA7_;
  		asgnRef((void**) (&(*s_2).data), setLengthStr((*s_2).data, ((NI) ((NI)((*s_2).pos + bufLen)))));
  	}
  	LA7_: ;
  	copyMem__system_1727(((void*) ((&(*s_2).data->data[(*s_2).pos]))), buffer, ((NI) (bufLen)));
  	(*s_2).pos += bufLen;
  	}BeforeRet_: ;
  }
  N_LIB_PRIVATE N_NIMCALL(tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*, newStringStream__pureZstreams_676)(NimStringDesc* s) {
  	tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw* result;
  	NimStringDesc* T1_;
  	result = NIM_NIL;
  	result = (tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*) newObj((&NTIstringstream__Z9cj1NxLXx79cYy9c4gbj6CAA_), sizeof(tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw));
  	(*result).Sup.Sup.m_type = (&NTIstringstreamobj__Olau5FPRehZBBEB77FHnfw_);
  	T1_ = NIM_NIL;
  	T1_ = (*result).data; (*result).data = copyStringRC1(s);
  	if (T1_) nimGCunrefNoCycle(T1_);
  	(*result).pos = ((NI) 0);
  	(*result).Sup.closeImpl = ssClose__pureZstreams_673;
  	(*result).Sup.atEndImpl = ssAtEnd__pureZstreams_558;
  	(*result).Sup.setPositionImpl = ssSetPosition__pureZstreams_580;
  	(*result).Sup.getPositionImpl = ssGetPosition__pureZstreams_590;
  	(*result).Sup.readDataStrImpl = ssReadDataStr__pureZstreams_594;
  	(*result).Sup.readDataImpl = ssReadData__pureZstreams_648;
  	(*result).Sup.peekDataImpl = ssPeekData__pureZstreams_658;
  	(*result).Sup.writeDataImpl = ssWriteData__pureZstreams_664;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*, newFileStream__pureZstreams_832)(NimStringDesc* filename, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode, NI bufSize) {
  	tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ* result;
  	FILE* f;
  	result = NIM_NIL;
  	f = (FILE*)0;
  	{
  		NIM_BOOL T3_;
  		T3_ = (NIM_BOOL)0;
  		T3_ = open__systemZio_392(&f, filename, mode, bufSize);
  		if (!T3_) goto LA4_;
  		result = newFileStream__pureZstreams_808(f);
  	}
  	LA4_: ;
  	return result;
  }
  N_LIB_PRIVATE N_NIMCALL(void, stdlib_streamsDatInit000)(void) {
  static TNimNode* TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[10];
  static TNimNode* TM__Ue7tnBcsL67VCiRfvt8q0A_6_2[2];
  static TNimNode TM__Ue7tnBcsL67VCiRfvt8q0A_0[15];
  NTIstreamobj__THYguAi9bSgidczZ3ywEIMQ_.size = sizeof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ);
  NTIstreamobj__THYguAi9bSgidczZ3ywEIMQ_.align = NIM_ALIGNOF(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ);
  NTIstreamobj__THYguAi9bSgidczZ3ywEIMQ_.kind = 17;
  NTIstreamobj__THYguAi9bSgidczZ3ywEIMQ_.base = (&NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_);
  NTIstreamobj__THYguAi9bSgidczZ3ywEIMQ_.flags = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[0] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[1];
  NTIprocLs58streamTLOnimcall_gcsafeOT__JQrsH08b4uPTH9cyFPlVOZg_.size = sizeof(tyProc__JQrsH08b4uPTH9cyFPlVOZg);
  NTIprocLs58streamTLOnimcall_gcsafeOT__JQrsH08b4uPTH9cyFPlVOZg_.align = NIM_ALIGNOF(tyProc__JQrsH08b4uPTH9cyFPlVOZg);
  NTIprocLs58streamTLOnimcall_gcsafeOT__JQrsH08b4uPTH9cyFPlVOZg_.kind = 25;
  NTIprocLs58streamTLOnimcall_gcsafeOT__JQrsH08b4uPTH9cyFPlVOZg_.base = 0;
  NTIprocLs58streamTLOnimcall_gcsafeOT__JQrsH08b4uPTH9cyFPlVOZg_.flags = 3;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[1].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[1].offset = offsetof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ, closeImpl);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[1].typ = (&NTIprocLs58streamTLOnimcall_gcsafeOT__JQrsH08b4uPTH9cyFPlVOZg_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[1].name = "closeImpl";
  TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[1] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[2];
  NTIprocLs58streamT58boolLOnimcall_gcsafeOT__9bmhFrLahRsL2hltfRDVtlQ_.size = sizeof(tyProc__9bmhFrLahRsL2hltfRDVtlQ);
  NTIprocLs58streamT58boolLOnimcall_gcsafeOT__9bmhFrLahRsL2hltfRDVtlQ_.align = NIM_ALIGNOF(tyProc__9bmhFrLahRsL2hltfRDVtlQ);
  NTIprocLs58streamT58boolLOnimcall_gcsafeOT__9bmhFrLahRsL2hltfRDVtlQ_.kind = 25;
  NTIprocLs58streamT58boolLOnimcall_gcsafeOT__9bmhFrLahRsL2hltfRDVtlQ_.base = 0;
  NTIprocLs58streamT58boolLOnimcall_gcsafeOT__9bmhFrLahRsL2hltfRDVtlQ_.flags = 3;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[2].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[2].offset = offsetof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ, atEndImpl);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[2].typ = (&NTIprocLs58streamT58boolLOnimcall_gcsafeOT__9bmhFrLahRsL2hltfRDVtlQ_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[2].name = "atEndImpl";
  TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[2] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[3];
  NTIprocLs58stream_pos58intTLOnimcall_gcsafeOT__3svSoGIUJIsHkaBL7q4DAQ_.size = sizeof(tyProc__3svSoGIUJIsHkaBL7q4DAQ);
  NTIprocLs58stream_pos58intTLOnimcall_gcsafeOT__3svSoGIUJIsHkaBL7q4DAQ_.align = NIM_ALIGNOF(tyProc__3svSoGIUJIsHkaBL7q4DAQ);
  NTIprocLs58stream_pos58intTLOnimcall_gcsafeOT__3svSoGIUJIsHkaBL7q4DAQ_.kind = 25;
  NTIprocLs58stream_pos58intTLOnimcall_gcsafeOT__3svSoGIUJIsHkaBL7q4DAQ_.base = 0;
  NTIprocLs58stream_pos58intTLOnimcall_gcsafeOT__3svSoGIUJIsHkaBL7q4DAQ_.flags = 3;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[3].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[3].offset = offsetof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ, setPositionImpl);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[3].typ = (&NTIprocLs58stream_pos58intTLOnimcall_gcsafeOT__3svSoGIUJIsHkaBL7q4DAQ_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[3].name = "setPositionImpl";
  TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[3] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[4];
  NTIprocLs58streamT58intLOnimcall_gcsafeOT__xflqkf2D1uVClg70czEDHA_.size = sizeof(tyProc__xflqkf2D1uVClg70czEDHA);
  NTIprocLs58streamT58intLOnimcall_gcsafeOT__xflqkf2D1uVClg70czEDHA_.align = NIM_ALIGNOF(tyProc__xflqkf2D1uVClg70czEDHA);
  NTIprocLs58streamT58intLOnimcall_gcsafeOT__xflqkf2D1uVClg70czEDHA_.kind = 25;
  NTIprocLs58streamT58intLOnimcall_gcsafeOT__xflqkf2D1uVClg70czEDHA_.base = 0;
  NTIprocLs58streamT58intLOnimcall_gcsafeOT__xflqkf2D1uVClg70czEDHA_.flags = 3;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[4].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[4].offset = offsetof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ, getPositionImpl);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[4].typ = (&NTIprocLs58streamT58intLOnimcall_gcsafeOT__xflqkf2D1uVClg70czEDHA_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[4].name = "getPositionImpl";
  TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[4] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[5];
  NTIprocLs58stream_buffer58varstring_slice58sliceLsystemOintTT58intLOnimcall_gcsafeOT__c9c0f59ak4YGQ6neEym8LPKw_.size = sizeof(tyProc__c9c0f59ak4YGQ6neEym8LPKw);
  NTIprocLs58stream_buffer58varstring_slice58sliceLsystemOintTT58intLOnimcall_gcsafeOT__c9c0f59ak4YGQ6neEym8LPKw_.align = NIM_ALIGNOF(tyProc__c9c0f59ak4YGQ6neEym8LPKw);
  NTIprocLs58stream_buffer58varstring_slice58sliceLsystemOintTT58intLOnimcall_gcsafeOT__c9c0f59ak4YGQ6neEym8LPKw_.kind = 25;
  NTIprocLs58stream_buffer58varstring_slice58sliceLsystemOintTT58intLOnimcall_gcsafeOT__c9c0f59ak4YGQ6neEym8LPKw_.base = 0;
  NTIprocLs58stream_buffer58varstring_slice58sliceLsystemOintTT58intLOnimcall_gcsafeOT__c9c0f59ak4YGQ6neEym8LPKw_.flags = 3;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[5].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[5].offset = offsetof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ, readDataStrImpl);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[5].typ = (&NTIprocLs58stream_buffer58varstring_slice58sliceLsystemOintTT58intLOnimcall_gcsafeOT__c9c0f59ak4YGQ6neEym8LPKw_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[5].name = "readDataStrImpl";
  TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[5] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[6];
  NTIprocLs58stream_line58varstringT58boolLOnimcall_gcsafeOT__7jFfqMk9ajToCz6Hv9atCA4A_.size = sizeof(tyProc__7jFfqMk9ajToCz6Hv9atCA4A);
  NTIprocLs58stream_line58varstringT58boolLOnimcall_gcsafeOT__7jFfqMk9ajToCz6Hv9atCA4A_.align = NIM_ALIGNOF(tyProc__7jFfqMk9ajToCz6Hv9atCA4A);
  NTIprocLs58stream_line58varstringT58boolLOnimcall_gcsafeOT__7jFfqMk9ajToCz6Hv9atCA4A_.kind = 25;
  NTIprocLs58stream_line58varstringT58boolLOnimcall_gcsafeOT__7jFfqMk9ajToCz6Hv9atCA4A_.base = 0;
  NTIprocLs58stream_line58varstringT58boolLOnimcall_gcsafeOT__7jFfqMk9ajToCz6Hv9atCA4A_.flags = 3;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[6].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[6].offset = offsetof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ, readLineImpl);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[6].typ = (&NTIprocLs58stream_line58varstringT58boolLOnimcall_gcsafeOT__7jFfqMk9ajToCz6Hv9atCA4A_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[6].name = "readLineImpl";
  TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[6] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[7];
  NTIprocLs58stream_buffer58pointer_buflen58intT58intLOnimcall_gcsafeOT__2VVzVL9bOnKhj1eZKkf9cEuA_.size = sizeof(tyProc__2VVzVL9bOnKhj1eZKkf9cEuA);
  NTIprocLs58stream_buffer58pointer_buflen58intT58intLOnimcall_gcsafeOT__2VVzVL9bOnKhj1eZKkf9cEuA_.align = NIM_ALIGNOF(tyProc__2VVzVL9bOnKhj1eZKkf9cEuA);
  NTIprocLs58stream_buffer58pointer_buflen58intT58intLOnimcall_gcsafeOT__2VVzVL9bOnKhj1eZKkf9cEuA_.kind = 25;
  NTIprocLs58stream_buffer58pointer_buflen58intT58intLOnimcall_gcsafeOT__2VVzVL9bOnKhj1eZKkf9cEuA_.base = 0;
  NTIprocLs58stream_buffer58pointer_buflen58intT58intLOnimcall_gcsafeOT__2VVzVL9bOnKhj1eZKkf9cEuA_.flags = 3;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[7].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[7].offset = offsetof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ, readDataImpl);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[7].typ = (&NTIprocLs58stream_buffer58pointer_buflen58intT58intLOnimcall_gcsafeOT__2VVzVL9bOnKhj1eZKkf9cEuA_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[7].name = "readDataImpl";
  TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[7] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[8];
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[8].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[8].offset = offsetof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ, peekDataImpl);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[8].typ = (&NTIprocLs58stream_buffer58pointer_buflen58intT58intLOnimcall_gcsafeOT__2VVzVL9bOnKhj1eZKkf9cEuA_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[8].name = "peekDataImpl";
  TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[8] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[9];
  NTIprocLs58stream_buffer58pointer_buflen58intTLOnimcall_gcsafeOT__ki6p1QyfOkJLQJ9aw5NI0AQ_.size = sizeof(tyProc__ki6p1QyfOkJLQJ9aw5NI0AQ);
  NTIprocLs58stream_buffer58pointer_buflen58intTLOnimcall_gcsafeOT__ki6p1QyfOkJLQJ9aw5NI0AQ_.align = NIM_ALIGNOF(tyProc__ki6p1QyfOkJLQJ9aw5NI0AQ);
  NTIprocLs58stream_buffer58pointer_buflen58intTLOnimcall_gcsafeOT__ki6p1QyfOkJLQJ9aw5NI0AQ_.kind = 25;
  NTIprocLs58stream_buffer58pointer_buflen58intTLOnimcall_gcsafeOT__ki6p1QyfOkJLQJ9aw5NI0AQ_.base = 0;
  NTIprocLs58stream_buffer58pointer_buflen58intTLOnimcall_gcsafeOT__ki6p1QyfOkJLQJ9aw5NI0AQ_.flags = 3;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[9].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[9].offset = offsetof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ, writeDataImpl);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[9].typ = (&NTIprocLs58stream_buffer58pointer_buflen58intTLOnimcall_gcsafeOT__ki6p1QyfOkJLQJ9aw5NI0AQ_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[9].name = "writeDataImpl";
  TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[9] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[10];
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[10].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[10].offset = offsetof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ, flushImpl);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[10].typ = (&NTIprocLs58streamTLOnimcall_gcsafeOT__JQrsH08b4uPTH9cyFPlVOZg_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[10].name = "flushImpl";
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[0].len = 10; TM__Ue7tnBcsL67VCiRfvt8q0A_0[0].kind = 2; TM__Ue7tnBcsL67VCiRfvt8q0A_0[0].sons = &TM__Ue7tnBcsL67VCiRfvt8q0A_2_10[0];
  NTIstreamobj__THYguAi9bSgidczZ3ywEIMQ_.node = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[0];
  NTIstream__1G0jiQbe7KwD5ADza5AZaw_.size = sizeof(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ*);
  NTIstream__1G0jiQbe7KwD5ADza5AZaw_.align = NIM_ALIGNOF(tyObject_StreamObj__THYguAi9bSgidczZ3ywEIMQ*);
  NTIstream__1G0jiQbe7KwD5ADza5AZaw_.kind = 22;
  NTIstream__1G0jiQbe7KwD5ADza5AZaw_.base = (&NTIstreamobj__THYguAi9bSgidczZ3ywEIMQ_);
  NTIstream__1G0jiQbe7KwD5ADza5AZaw_.marker = Marker_tyRef__1G0jiQbe7KwD5ADza5AZaw;
  NTIfilestreamobj__9bEVSsOIpkY9cf5lCtaS39bPQ_.size = sizeof(tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ);
  NTIfilestreamobj__9bEVSsOIpkY9cf5lCtaS39bPQ_.align = NIM_ALIGNOF(tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ);
  NTIfilestreamobj__9bEVSsOIpkY9cf5lCtaS39bPQ_.kind = 17;
  NTIfilestreamobj__9bEVSsOIpkY9cf5lCtaS39bPQ_.base = (&NTIstreamobj__THYguAi9bSgidczZ3ywEIMQ_);
  NTIfilestreamobj__9bEVSsOIpkY9cf5lCtaS39bPQ_.flags = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[11].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[11].offset = offsetof(tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ, f);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[11].typ = (&NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[11].name = "f";
  NTIfilestreamobj__9bEVSsOIpkY9cf5lCtaS39bPQ_.node = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[11];
  NTIfilestream__y4kGpp4Cn6oTOCWBJMIxAg_.size = sizeof(tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*);
  NTIfilestream__y4kGpp4Cn6oTOCWBJMIxAg_.align = NIM_ALIGNOF(tyObject_FileStreamObj__9bEVSsOIpkY9cf5lCtaS39bPQ*);
  NTIfilestream__y4kGpp4Cn6oTOCWBJMIxAg_.kind = 22;
  NTIfilestream__y4kGpp4Cn6oTOCWBJMIxAg_.base = (&NTIfilestreamobj__9bEVSsOIpkY9cf5lCtaS39bPQ_);
  NTIfilestream__y4kGpp4Cn6oTOCWBJMIxAg_.marker = Marker_tyRef__y4kGpp4Cn6oTOCWBJMIxAg;
  NTIstringstreamobj__Olau5FPRehZBBEB77FHnfw_.size = sizeof(tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw);
  NTIstringstreamobj__Olau5FPRehZBBEB77FHnfw_.align = NIM_ALIGNOF(tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw);
  NTIstringstreamobj__Olau5FPRehZBBEB77FHnfw_.kind = 17;
  NTIstringstreamobj__Olau5FPRehZBBEB77FHnfw_.base = (&NTIstreamobj__THYguAi9bSgidczZ3ywEIMQ_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_6_2[0] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[13];
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[13].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[13].offset = offsetof(tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw, data);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[13].typ = (&NTIstring__77mFvmsOLKik79ci2hXkHEg_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[13].name = "data";
  TM__Ue7tnBcsL67VCiRfvt8q0A_6_2[1] = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[14];
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[14].kind = 1;
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[14].offset = offsetof(tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw, pos);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[14].typ = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[14].name = "pos";
  TM__Ue7tnBcsL67VCiRfvt8q0A_0[12].len = 2; TM__Ue7tnBcsL67VCiRfvt8q0A_0[12].kind = 2; TM__Ue7tnBcsL67VCiRfvt8q0A_0[12].sons = &TM__Ue7tnBcsL67VCiRfvt8q0A_6_2[0];
  NTIstringstreamobj__Olau5FPRehZBBEB77FHnfw_.node = &TM__Ue7tnBcsL67VCiRfvt8q0A_0[12];
  NTIstringstream__Z9cj1NxLXx79cYy9c4gbj6CAA_.size = sizeof(tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*);
  NTIstringstream__Z9cj1NxLXx79cYy9c4gbj6CAA_.align = NIM_ALIGNOF(tyObject_StringStreamObj__Olau5FPRehZBBEB77FHnfw*);
  NTIstringstream__Z9cj1NxLXx79cYy9c4gbj6CAA_.kind = 22;
  NTIstringstream__Z9cj1NxLXx79cYy9c4gbj6CAA_.base = (&NTIstringstreamobj__Olau5FPRehZBBEB77FHnfw_);
  NTIstringstream__Z9cj1NxLXx79cYy9c4gbj6CAA_.marker = Marker_tyRef__Z9cj1NxLXx79cYy9c4gbj6CAA;
  }
  
  