nandi/vflutter_ffipublic Fork 0
472eb493bac94bdcb79a38829ccca0c541256fef
Commits
Clone
git clone https://git.rickub.com/nandi/vflutter_ffi.git
git clone ssh://git@rickub.com/nandi/vflutter_ffi.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

nimflutter_03.c · 2549 lines · 82.1 KBC Blame HistoryRaw
Replace V with Nim 472eb49 nandithebull 20h ago1/* Generated by Nim Compiler v2.2.0 */
2#define NIM_INTBITS 64
3
4#include "nimbase.h"
5#include <string.h>
6#include <sys/mman.h>
7#include <stdio.h>
8#include <stdlib.h>
9#include <signal.h>
10#undef LANGUAGE_C
11#undef MIPSEB
12#undef MIPSEL
13#undef PPC
14#undef R3000
15#undef R4000
16#undef i386
17#undef linux
18#undef mips
19#undef near
20#undef far
21#undef powerpc
22#undef unix
23typedef struct tySequence__aNpJjaoUowCQc7fBn3wtDQ tySequence__aNpJjaoUowCQc7fBn3wtDQ;
24typedef struct tySequence__aNpJjaoUowCQc7fBn3wtDQ_Content tySequence__aNpJjaoUowCQc7fBn3wtDQ_Content;
25typedef struct Exception Exception;
26typedef struct NimStrPayload NimStrPayload;
27typedef struct NimStringV2 NimStringV2;
28typedef struct tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg;
29typedef struct tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA;
30typedef struct tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g;
31typedef struct tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ;
32typedef struct tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA;
33typedef struct tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg;
34typedef struct tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg;
35typedef struct tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ;
36typedef struct tyTuple__hnXneaaGpqadwTHCdtBUrg tyTuple__hnXneaaGpqadwTHCdtBUrg;
37typedef struct tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg;
38typedef struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ;
39typedef struct tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA;
40typedef struct TNimTypeV2 TNimTypeV2;
41typedef struct RootObj RootObj;
42typedef struct tySequence__8XHFOeTbUzLnvMyFAUC3Tg tySequence__8XHFOeTbUzLnvMyFAUC3Tg;
43typedef struct tySequence__8XHFOeTbUzLnvMyFAUC3Tg_Content tySequence__8XHFOeTbUzLnvMyFAUC3Tg_Content;
44typedef struct tyObject_StackTraceEntry__7n1SrnFOXN4peBryWqJMvQ tyObject_StackTraceEntry__7n1SrnFOXN4peBryWqJMvQ;
45struct tySequence__aNpJjaoUowCQc7fBn3wtDQ {
46 NI len; tySequence__aNpJjaoUowCQc7fBn3wtDQ_Content* p;
47};
48typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__9axCnCRMUx32AHzFgBrzSMg) (Exception* e_p0);
49typedef N_NIMCALL_PTR(void, tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ) (void);
50typedef N_NIMCALL_PTR(void, tyProc__NFmM6mqUOVW3cJg4yvk8Fw) (Exception* e_p0);
51struct NimStrPayload {
52 NI cap;
53 NIM_CHAR data[SEQ_DECL_SIZE];
54};
55struct NimStringV2 {
56 NI len;
57 NimStrPayload* p;
58};
59typedef N_NIMCALL_PTR(void, tyProc__W6IXMh2CA4X1rFYGjUb4yg) (NimStringV2 msg_p0);
60typedef tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* tyArray__0HQdtIqtKJoAiThHSbtBQA[256];
61typedef tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* tyArray__XmMLlJQDH9a09bkWaqOA7sYw[256];
62typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
63typedef tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* tyArray__XPZ2BGOoN7MiJZ53A8hO7Q[32];
64typedef tyArray__XPZ2BGOoN7MiJZ53A8hO7Q tyArray__q0aKN8e9aGccro86M8TuatA[24];
65typedef tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* tyArray__1B3xg0GrwWq7q9crvT1c9bWQ[256];
66struct tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg {
67 tyArray__1B3xg0GrwWq7q9crvT1c9bWQ data;
68};
69struct tyTuple__hnXneaaGpqadwTHCdtBUrg {
70 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* Field0;
71 NI Field1;
72};
73typedef tyTuple__hnXneaaGpqadwTHCdtBUrg tyArray__jn06c7SdV7noGtDlCUkKuw[30];
74struct tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ {
75 NI len;
76 tyArray__jn06c7SdV7noGtDlCUkKuw chunks;
77 tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ* next;
78};
79struct tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg {
80 tyArray__0HQdtIqtKJoAiThHSbtBQA freeSmallChunks;
81 tyArray__XmMLlJQDH9a09bkWaqOA7sYw sharedFreeLists;
82 NU32 flBitmap;
83 tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
84 tyArray__q0aKN8e9aGccro86M8TuatA matrix;
85 tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA* llmem;
86 NI currMem;
87 NI maxMem;
88 NI freeMem;
89 NI occ;
90 NI lastSize;
91 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* sharedFreeListBigChunks;
92 tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg chunkStarts;
93 NIM_BOOL lockActive;
94 NIM_BOOL locked;
95 NIM_BOOL blockChunkSizeIncrease;
96 NI nextChunkSize;
97 tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ heapLinks;
98};
99struct tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg {
100 NI prevSize;
101 NI size;
102 tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* owner;
103};
104struct tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA {
105 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg Sup;
106 tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* next;
107 tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* prev;
108 tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* freeList;
109 NI32 free;
110 NU32 acc;
111 NI foreignCells;
112 NIM_ALIGN(16) NU8 data[SEQ_DECL_SIZE];
113};
114typedef NI8 tyArray__mkmEeKAWtk2yS9bBb1lUWXA[256];
115struct tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ {
116 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg Sup;
117 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* next;
118 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* prev;
119 NIM_ALIGN(16) NU8 data[SEQ_DECL_SIZE];
120};
121struct tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA {
122 NI size;
123 NI acc;
124 tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA* next;
125};
126typedef NU tyArray__VqSA39cBDWnwnJySTumCdjw[8];
127struct tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg {
128 tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* next;
129 NI key;
130 tyArray__VqSA39cBDWnwnJySTumCdjw bits;
131};
132struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ {
133 NI Field0;
134 NI Field1;
135};
136struct tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g {
137 tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* next;
138 NI alignment;
139};
140struct tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA {
141 NI rc;
142};
143struct TNimTypeV2 {
144 void* destructor;
145 NI size;
146 NI16 align;
147 NI16 depth;
148 NU32* display;
149 void* traceImpl;
150 void* typeInfoV1;
151 NI flags;
152 void* vTable[SEQ_DECL_SIZE];
153};
154typedef N_NIMCALL_PTR(void, tyProc__4SVlZZPmetqBimNsH9cHcOA) (void* p_p0);
155struct RootObj {
156 TNimTypeV2* m_type;
157};
158struct tySequence__8XHFOeTbUzLnvMyFAUC3Tg {
159 NI len; tySequence__8XHFOeTbUzLnvMyFAUC3Tg_Content* p;
160};
161struct Exception {
162 RootObj Sup;
163 Exception* parent;
164 NCSTRING name;
165 NimStringV2 message;
166 tySequence__8XHFOeTbUzLnvMyFAUC3Tg trace;
167 Exception* up;
168};
169typedef N_NOCONV_PTR(void, tyProc__gx1DG571q2UZkCl7Jq3AOg) (int a_p0);
170typedef NIM_CHAR tyArray__gpc2RrLEcWgv7ONpLYNHOw[2001];
171struct tyObject_StackTraceEntry__7n1SrnFOXN4peBryWqJMvQ {
172 NCSTRING procname;
173 NI line;
174 NCSTRING filename;
175};
176typedef struct {
177N_NIMCALL_PTR(void, ClP_0) (void* ClE_0);
178void* ClE_0;
179} tyProc__HzVCwACFYM9cx9aV62PdjtuA;
180struct tySequence__aNpJjaoUowCQc7fBn3wtDQ_Content { NI cap; tyProc__HzVCwACFYM9cx9aV62PdjtuA data[SEQ_DECL_SIZE]; };
181struct tySequence__8XHFOeTbUzLnvMyFAUC3Tg_Content { NI cap; tyObject_StackTraceEntry__7n1SrnFOXN4peBryWqJMvQ data[SEQ_DECL_SIZE]; };
182N_LIB_PRIVATE N_NOCONV(void, signalHandler)(int sign_p0);
183N_LIB_PRIVATE N_NIMCALL(void, showErrorMessage__system_u3285)(NCSTRING data_p0, NI length_p1);
184N_LIB_PRIVATE N_NIMCALL(NimStringV2, cstrToNimstr)(NCSTRING str_p0);
185static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1);
186static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2);
187static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
188N_LIB_PRIVATE N_NIMCALL(NimStringV2, toNimStr)(NCSTRING str_p0, NI len_p1);
189N_LIB_PRIVATE N_NOCONV(void*, allocSharedImpl)(NI size_p0);
190N_LIB_PRIVATE N_NOCONV(void*, allocImpl__system_u1742)(NI size_p0);
191N_LIB_PRIVATE N_NIMCALL(void*, alloc__system_u5976)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, NI size_p1);
192N_LIB_PRIVATE N_NIMCALL(void*, rawAlloc__system_u5718)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI requestedSize_p1);
193static N_INLINE(NI, roundup__system_u4701)(NI x_p0, NI v_p1);
194N_LIB_PRIVATE N_NIMCALL(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*, getSmallChunk__system_u5560)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0);
195N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, getBigChunk__system_u5532)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1);
196static N_INLINE(void, mappingSearch__system_u4861)(NI* r_p0, NI* fl_p1, NI* sl_p2);
197static N_INLINE(NI, msbit__system_u4836)(NU32 x_p0);
198static N_INLINE(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, findSuitableBlock__system_u4894)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI* fl_p1, NI* sl_p2);
199static N_INLINE(NI, lsbit__system_u4844)(NU32 x_p0);
200N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, requestOsChunks__system_u5434)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1);
201N_LIB_PRIVATE N_NIMCALL(void*, allocPages__system_u5021)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1);
202static N_INLINE(void*, osAllocPages__system_u4721)(NI size_p0);
203N_LIB_PRIVATE N_NOINLINE(void, raiseOutOfMem__system_u4696)(void);
204static N_INLINE(void, rawWrite)(FILE* f_p0, NCSTRING s_p1);
205N_LIB_PRIVATE N_NIMCALL(void*, tryAllocPages__system_u5025)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1);
206static N_INLINE(void*, osTryAllocPages__system_u4724)(NI size_p0);
207static N_INLINE(void, incCurrMem__system_u5001)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI bytes_p1);
208N_LIB_PRIVATE N_NIMCALL(tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ*, addHeapLink__system_u5064)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* p_p1, NI size_p2);
209N_LIB_PRIVATE N_NIMCALL(void*, llAlloc__system_u5029)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1);
210static N_INLINE(void, zeroMem__system_u1723)(void* p_p0, NI size_p1);
211static N_INLINE(NI, pluspercent___system_u787)(NI x_p0, NI y_p1);
212N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__system_u5196)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p0, NI key_p1);
213N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*, intSetGet__system_u5150)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* t_p0, NI key_p1);
214static N_INLINE(NI, pageIndex__system_u5417)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0);
215static N_INLINE(NI, minuspercent___system_u807)(NI x_p0, NI y_p1);
216N_LIB_PRIVATE N_NIMCALL(void, splitChunk__system_u5503)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI size_p2);
217N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, splitChunk2__system_u5482)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI size_p2);
218static N_INLINE(void, updatePrevSize__system_u5477)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI prevSize_p2);
219static N_INLINE(NIM_BOOL, isAccessible__system_u5459)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, void* p_p1);
220static N_INLINE(NI, pageIndex__system_u5424)(void* p_p0);
221N_LIB_PRIVATE N_NIMCALL(void, incl__system_u5234)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p1, NI key_p2);
222N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*, intSetPut__system_u5179)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* t_p1, NI key_p2);
223N_LIB_PRIVATE N_NIMCALL(void, addChunkToMatrix__system_u4991)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1);
224static N_INLINE(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ, mappingInsert__system_u4879)(NI r_p0);
225static N_INLINE(void, setBit__system_u4847)(NI nr_p0, NU32* dest_p1);
226N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix2__system_u4982)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1, NI fl_p2, NI sl_p3);
227static N_INLINE(void, clearBit__system_u4854)(NI nr_p0, NU32* dest_p1);
228N_LIB_PRIVATE N_NIMCALL(void, compensateCounters__system_u5651)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1, NI size_p2);
229static N_INLINE(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*, pageAddr__system_u5431)(void* p_p0);
230static N_INLINE(void, listAdd__system_u5750)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA** head_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1);
231static N_INLINE(void, listRemove__system_u5827)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA** head_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1);
232N_LIB_PRIVATE N_NIMCALL(void, freeDeferredObjects__system_u5686)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* root_p1);
233N_LIB_PRIVATE N_NIMCALL(void, deallocBigChunk__system_u5578)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1);
234N_LIB_PRIVATE N_NIMCALL(void, freeHugeChunk__system_u5556)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1);
235N_LIB_PRIVATE N_NIMCALL(void, excl__system_u5256)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p0, NI key_p1);
236static N_INLINE(void, decCurrMem__system_u5009)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI bytes_p1);
237static N_INLINE(void, osDeallocPages__system_u4727)(void* p_p0, NI size_p1);
238N_LIB_PRIVATE N_NIMCALL(void, freeBigChunk__system_u5508)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1);
239static N_INLINE(NIM_BOOL, chunkUnused__system_u5332)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0);
240static N_INLINE(NIM_BOOL, isSmallChunk__system_u5326)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0);
241N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix__system_u4943)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1);
242static N_INLINE(void, addToSharedFreeListBigChunks__system_u5589)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1);
243N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, getHugeChunk__system_u5552)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1);
244static N_INLINE(void, copyMem__system_u1726)(void* dest_p0, void* source_p1, NI size_p2);
245static N_INLINE(void, nimCopyMem)(void* dest_p0, void* source_p1, NI size_p2);
246static N_INLINE(NI, nimCStrLen)(NCSTRING a_p0);
247N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
248N_LIB_PRIVATE N_NOCONV(void, deallocSharedImpl__system_u1759)(void* p_p0);
249N_LIB_PRIVATE N_NOCONV(void, deallocImpl__system_u1746)(void* p_p0);
250N_LIB_PRIVATE N_NIMCALL(void, dealloc__system_u5984)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, void* p_p1);
251N_LIB_PRIVATE N_NIMCALL(void, rawDealloc__system_u5894)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, void* p_p1);
252static N_INLINE(void, addToSharedFreeList__system_u5613)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p0, tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* f_p1, NI size_p2);
253static N_INLINE(void, popCurrentException)(void);
254N_LIB_PRIVATE N_NIMCALL(void, eqcopy___stdZtypedthreads_u211)(Exception** dest_p0, Exception* src_p1);
255static N_INLINE(void, nimIncRef)(void* p_p0);
256static N_INLINE(NIM_BOOL, nimDecRefIsLast)(void* p_p0);
257N_LIB_PRIVATE N_NIMCALL(void, nimDestroyAndDispose)(void* p_p0);
258N_LIB_PRIVATE N_NIMCALL(void, nimRawDispose)(void* p_p0, NI alignment_p1);
259N_LIB_PRIVATE N_NIMCALL(NI, align__system_u1628)(NI address_p0, NI alignment_p1);
260N_LIB_PRIVATE N_NIMCALL(void, alignedDealloc)(void* p_p0, NI align_p1);
261N_LIB_PRIVATE N_NIMCALL(void, writeToStdErr__system_u3280)(NCSTRING msg_p0, NI length_p1);
262static N_INLINE(void, rawWriteString)(FILE* f_p0, NCSTRING s_p1, NI length_p2);
263N_LIB_PRIVATE N_NIMCALL(void, registerSignalHandler__system_u3798)(void);
264N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledError__system_u3573)(Exception* e_p0);
265N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledErrorAux__system_u3494)(Exception* e_p0);
266N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___system_u3465)(tySequence__8XHFOeTbUzLnvMyFAUC3Tg stackTraceEntries_p0);
267N_NIMCALL(NimStringV2, rawNewString)(NI cap_p0);
268static N_INLINE(void, appendString)(NimStringV2* dest_p0, NimStringV2 src_p1);
269N_LIB_PRIVATE N_NIMCALL(void, prepareAdd)(NimStringV2* s_p0, NI addLen_p1);
270static N_INLINE(NI, resize__system_u2198)(NI old_p0);
271N_LIB_PRIVATE N_NOCONV(void*, reallocSharedImpl__system_u1761)(void* p_p0, NI newSize_p1);
272N_LIB_PRIVATE N_NOCONV(void*, reallocImpl__system_u1748)(void* p_p0, NI newSize_p1);
273N_LIB_PRIVATE N_NIMCALL(void*, realloc__system_u5987)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, void* p_p1, NI newsize_p2);
274N_LIB_PRIVATE N_NIMCALL(NI, ptrSize__system_u5964)(void* p_p0);
275N_LIB_PRIVATE N_NIMCALL(void, add__system_u2870)(NimStringV2* x_p0, NCSTRING y_p1);
276static N_INLINE(void, nimAddCharV1)(NimStringV2* s_p0, NIM_CHAR c_p1);
277static N_INLINE(void, addInt__stdZprivateZdigitsutils_u195)(NimStringV2* result_p0, NI x_p1);
278N_LIB_PRIVATE N_NIMCALL(void, addInt__stdZprivateZdigitsutils_u178)(NimStringV2* result_p0, NI64 x_p1);
279N_LIB_PRIVATE N_NOCONV(void*, reallocShared0Impl__system_u1764)(void* p_p0, NI oldSize_p1, NI newSize_p2);
280N_LIB_PRIVATE N_NOCONV(void*, realloc0Impl__system_u1751)(void* p_p0, NI oldSize_p1, NI newSize_p2);
281static N_INLINE(NCSTRING, nimToCStringConv)(NimStringV2 s_p0);
282N_LIB_PRIVATE N_NIMCALL(void, eqsink___stdZtypedthreads_u217)(Exception** dest_p0, Exception* src_p1);
283N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
284static const struct {
285 NI cap; NIM_CHAR data[17+1];
286} TM__Q5wkpxktOdTGvlSRo9bzt9aw_2 = { 17 | NIM_STRLIT_FLAG, "[[reraised from:\012" };
287static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_3 = {17, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_2};
288static const struct {
289 NI cap; NIM_CHAR data[3+1];
290} TM__Q5wkpxktOdTGvlSRo9bzt9aw_4 = { 3 | NIM_STRLIT_FLAG, "]]\012" };
291static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_5 = {3, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_4};
292static const struct {
293 NI cap; NIM_CHAR data[1+1];
294} TM__Q5wkpxktOdTGvlSRo9bzt9aw_6 = { 1 | NIM_STRLIT_FLAG, "(" };
295static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_7 = {1, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_6};
296static const struct {
297 NI cap; NIM_CHAR data[2+1];
298} TM__Q5wkpxktOdTGvlSRo9bzt9aw_8 = { 2 | NIM_STRLIT_FLAG, ", " };
299static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_9 = {2, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_8};
300static const struct {
301 NI cap; NIM_CHAR data[1+1];
302} TM__Q5wkpxktOdTGvlSRo9bzt9aw_10 = { 1 | NIM_STRLIT_FLAG, ")" };
303static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_11 = {1, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_10};
304static const struct {
305 NI cap; NIM_CHAR data[1+1];
306} TM__Q5wkpxktOdTGvlSRo9bzt9aw_12 = { 1 | NIM_STRLIT_FLAG, "\012" };
307static const NimStringV2 TM__Q5wkpxktOdTGvlSRo9bzt9aw_13 = {1, (NimStrPayload*)&TM__Q5wkpxktOdTGvlSRo9bzt9aw_12};
308N_LIB_PRIVATE NIM_CONST tyArray__mkmEeKAWtk2yS9bBb1lUWXA fsLookupTable__system_u4835 = {((NI8)-1),
309((NI8)0),
310((NI8)1),
311((NI8)1),
312((NI8)2),
313((NI8)2),
314((NI8)2),
315((NI8)2),
316((NI8)3),
317((NI8)3),
318((NI8)3),
319((NI8)3),
320((NI8)3),
321((NI8)3),
322((NI8)3),
323((NI8)3),
324((NI8)4),
325((NI8)4),
326((NI8)4),
327((NI8)4),
328((NI8)4),
329((NI8)4),
330((NI8)4),
331((NI8)4),
332((NI8)4),
333((NI8)4),
334((NI8)4),
335((NI8)4),
336((NI8)4),
337((NI8)4),
338((NI8)4),
339((NI8)4),
340((NI8)5),
341((NI8)5),
342((NI8)5),
343((NI8)5),
344((NI8)5),
345((NI8)5),
346((NI8)5),
347((NI8)5),
348((NI8)5),
349((NI8)5),
350((NI8)5),
351((NI8)5),
352((NI8)5),
353((NI8)5),
354((NI8)5),
355((NI8)5),
356((NI8)5),
357((NI8)5),
358((NI8)5),
359((NI8)5),
360((NI8)5),
361((NI8)5),
362((NI8)5),
363((NI8)5),
364((NI8)5),
365((NI8)5),
366((NI8)5),
367((NI8)5),
368((NI8)5),
369((NI8)5),
370((NI8)5),
371((NI8)5),
372((NI8)6),
373((NI8)6),
374((NI8)6),
375((NI8)6),
376((NI8)6),
377((NI8)6),
378((NI8)6),
379((NI8)6),
380((NI8)6),
381((NI8)6),
382((NI8)6),
383((NI8)6),
384((NI8)6),
385((NI8)6),
386((NI8)6),
387((NI8)6),
388((NI8)6),
389((NI8)6),
390((NI8)6),
391((NI8)6),
392((NI8)6),
393((NI8)6),
394((NI8)6),
395((NI8)6),
396((NI8)6),
397((NI8)6),
398((NI8)6),
399((NI8)6),
400((NI8)6),
401((NI8)6),
402((NI8)6),
403((NI8)6),
404((NI8)6),
405((NI8)6),
406((NI8)6),
407((NI8)6),
408((NI8)6),
409((NI8)6),
410((NI8)6),
411((NI8)6),
412((NI8)6),
413((NI8)6),
414((NI8)6),
415((NI8)6),
416((NI8)6),
417((NI8)6),
418((NI8)6),
419((NI8)6),
420((NI8)6),
421((NI8)6),
422((NI8)6),
423((NI8)6),
424((NI8)6),
425((NI8)6),
426((NI8)6),
427((NI8)6),
428((NI8)6),
429((NI8)6),
430((NI8)6),
431((NI8)6),
432((NI8)6),
433((NI8)6),
434((NI8)6),
435((NI8)6),
436((NI8)7),
437((NI8)7),
438((NI8)7),
439((NI8)7),
440((NI8)7),
441((NI8)7),
442((NI8)7),
443((NI8)7),
444((NI8)7),
445((NI8)7),
446((NI8)7),
447((NI8)7),
448((NI8)7),
449((NI8)7),
450((NI8)7),
451((NI8)7),
452((NI8)7),
453((NI8)7),
454((NI8)7),
455((NI8)7),
456((NI8)7),
457((NI8)7),
458((NI8)7),
459((NI8)7),
460((NI8)7),
461((NI8)7),
462((NI8)7),
463((NI8)7),
464((NI8)7),
465((NI8)7),
466((NI8)7),
467((NI8)7),
468((NI8)7),
469((NI8)7),
470((NI8)7),
471((NI8)7),
472((NI8)7),
473((NI8)7),
474((NI8)7),
475((NI8)7),
476((NI8)7),
477((NI8)7),
478((NI8)7),
479((NI8)7),
480((NI8)7),
481((NI8)7),
482((NI8)7),
483((NI8)7),
484((NI8)7),
485((NI8)7),
486((NI8)7),
487((NI8)7),
488((NI8)7),
489((NI8)7),
490((NI8)7),
491((NI8)7),
492((NI8)7),
493((NI8)7),
494((NI8)7),
495((NI8)7),
496((NI8)7),
497((NI8)7),
498((NI8)7),
499((NI8)7),
500((NI8)7),
501((NI8)7),
502((NI8)7),
503((NI8)7),
504((NI8)7),
505((NI8)7),
506((NI8)7),
507((NI8)7),
508((NI8)7),
509((NI8)7),
510((NI8)7),
511((NI8)7),
512((NI8)7),
513((NI8)7),
514((NI8)7),
515((NI8)7),
516((NI8)7),
517((NI8)7),
518((NI8)7),
519((NI8)7),
520((NI8)7),
521((NI8)7),
522((NI8)7),
523((NI8)7),
524((NI8)7),
525((NI8)7),
526((NI8)7),
527((NI8)7),
528((NI8)7),
529((NI8)7),
530((NI8)7),
531((NI8)7),
532((NI8)7),
533((NI8)7),
534((NI8)7),
535((NI8)7),
536((NI8)7),
537((NI8)7),
538((NI8)7),
539((NI8)7),
540((NI8)7),
541((NI8)7),
542((NI8)7),
543((NI8)7),
544((NI8)7),
545((NI8)7),
546((NI8)7),
547((NI8)7),
548((NI8)7),
549((NI8)7),
550((NI8)7),
551((NI8)7),
552((NI8)7),
553((NI8)7),
554((NI8)7),
555((NI8)7),
556((NI8)7),
557((NI8)7),
558((NI8)7),
559((NI8)7),
560((NI8)7),
561((NI8)7),
562((NI8)7),
563((NI8)7)}
564;
565N_LIB_PRIVATE NIM_THREADVAR tySequence__aNpJjaoUowCQc7fBn3wtDQ nimThreadDestructionHandlers__system_u3191;
566N_LIB_PRIVATE NIM_THREADVAR Exception* currException__system_u3313;
567N_LIB_PRIVATE NI nim_program_result;
568N_LIB_PRIVATE NIM_THREADVAR TFrame* framePtr__system_u2639;
569N_LIB_PRIVATE tyProc__9axCnCRMUx32AHzFgBrzSMg globalRaiseHook__system_u2861;
570N_LIB_PRIVATE NIM_THREADVAR tyProc__9axCnCRMUx32AHzFgBrzSMg localRaiseHook__system_u2864;
571N_LIB_PRIVATE tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ outOfMemHook__system_u2866;
572N_LIB_PRIVATE tyProc__NFmM6mqUOVW3cJg4yvk8Fw unhandledExceptionHook__system_u2869;
573N_LIB_PRIVATE tyProc__W6IXMh2CA4X1rFYGjUb4yg errorMessageWriter__system_u3277;
574N_LIB_PRIVATE tyProc__W6IXMh2CA4X1rFYGjUb4yg onUnhandledException__system_u3493;
575N_LIB_PRIVATE NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u3579;
576N_LIB_PRIVATE NIM_THREADVAR tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg allocator__system_u6025;
577static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
578 void* T1_;
579 T1_ = (void*)0;
580 T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
581}
582static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
583 NIM_BOOL* result;
584 result = (&nimInErrorMode__system_u3579);
585 return result;
586}
587static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
588NIM_BOOL* nimErr_;
589{nimErr_ = nimErrorFlag();
590 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
591 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
592 }BeforeRet_: ;
593}
594static N_INLINE(NI, roundup__system_u4701)(NI x_p0, NI v_p1) {
595 NI result;
596 result = (NI)((NI)(x_p0 + (NI)(v_p1 - ((NI)1))) & (NI)((NU64) ~((NI)(v_p1 - ((NI)1)))));
597 return result;
598}
599static N_INLINE(NI, msbit__system_u4836)(NU32 x_p0) {
600 NI result;
601 NI colontmpD_;
602 NI colontmpD__2;
603 NI a;
604 colontmpD_ = (NI)0;
605 colontmpD__2 = (NI)0;
606 {
607 NI colontmpD__3;
608 NI colontmpD__4;
609 if (!((NU32)(x_p0) <= (NU32)(((NU32)65535)))) goto LA3_;
610 colontmpD__3 = (NI)0;
611 colontmpD__4 = (NI)0;
612 {
613 if (!((NU32)(x_p0) <= (NU32)(((NU32)255)))) goto LA7_;
614 colontmpD__3 = ((NI)0);
615 colontmpD_ = colontmpD__3;
616 }
617 goto LA5_;
618LA7_: ;
619 {
620 colontmpD__4 = ((NI)8);
621 colontmpD_ = colontmpD__4;
622 }
623LA5_: ;
624 a = colontmpD_;
625 }
626 goto LA1_;
627LA3_: ;
628 {
629 NI colontmpD__5;
630 NI colontmpD__6;
631 colontmpD__5 = (NI)0;
632 colontmpD__6 = (NI)0;
633 {
634 if (!((NU32)(x_p0) <= (NU32)(((NU32)16777215)))) goto LA13_;
635 colontmpD__5 = ((NI)16);
636 colontmpD__2 = colontmpD__5;
637 }
638 goto LA11_;
639LA13_: ;
640 {
641 colontmpD__6 = ((NI)24);
642 colontmpD__2 = colontmpD__6;
643 }
644LA11_: ;
645 a = colontmpD__2;
646 }
647LA1_: ;
648 result = (NI)(((NI) (fsLookupTable__system_u4835[((NU32)((NU32)(x_p0) >> (NU64)(a)))- 0])) + a);
649 return result;
650}
651static N_INLINE(void, mappingSearch__system_u4861)(NI* r_p0, NI* fl_p1, NI* sl_p2) {
652 NI t;
653 NI T1_;
654 NI T2_;
655 T1_ = (NI)0;
656 T1_ = msbit__system_u4836(((NU32) ((*r_p0))));
657 T2_ = (NI)0;
658 T2_ = roundup__system_u4701((NI)((NU64)(((NI)1)) << (NU64)((NI)(T1_ - ((NI)5)))), ((NI)4096));
659 t = (NI)(T2_ - ((NI)1));
660 (*r_p0) = (NI)((*r_p0) + t);
661 (*r_p0) = (NI)((*r_p0) & (NI)((NU64) ~(t)));
662 (*r_p0) = (((*r_p0) <= ((NI)1056964608)) ? (*r_p0) : ((NI)1056964608));
663 (*fl_p1) = msbit__system_u4836(((NU32) ((*r_p0))));
664 (*sl_p2) = (NI)((NI)((NI64)((*r_p0)) >> (NU64)((NI)((*fl_p1) - ((NI)5)))) - ((NI)32));
665 (*fl_p1) -= ((NI)6);
666}
667static N_INLINE(NI, lsbit__system_u4844)(NU32 x_p0) {
668 NI result;
669 result = msbit__system_u4836((NU32)(x_p0 & (NU32)((NU32)((NU32)((NU32) ~(x_p0))) + (NU32)(((NU32)1)))));
670 return result;
671}
672static N_INLINE(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, findSuitableBlock__system_u4894)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI* fl_p1, NI* sl_p2) {
673 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* result;
674 NU32 tmp;
675 tmp = (NU32)((*a_p0).slBitmap[((*fl_p1))- 0] & (NU32)((NU64)(((NU32)IL64(4294967295))) << (NU64)((*sl_p2))));
676 result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
677 {
678 if (!!((tmp == ((NU32)0)))) goto LA3_;
679 (*sl_p2) = lsbit__system_u4844(tmp);
680 result = (*a_p0).matrix[((*fl_p1))- 0][((*sl_p2))- 0];
681 }
682 goto LA1_;
683LA3_: ;
684 {
685 (*fl_p1) = lsbit__system_u4844((NU32)((*a_p0).flBitmap & (NU32)((NU64)(((NU32)IL64(4294967295))) << (NU64)((NI)((*fl_p1) + ((NI)1))))));
686 {
687 if (!(((NI)0) < (*fl_p1))) goto LA8_;
688 (*sl_p2) = lsbit__system_u4844((*a_p0).slBitmap[((*fl_p1))- 0]);
689 result = (*a_p0).matrix[((*fl_p1))- 0][((*sl_p2))- 0];
690 }
691LA8_: ;
692 }
693LA1_: ;
694 return result;
695}
696static N_INLINE(void, rawWrite)(FILE* f_p0, NCSTRING s_p1) {
697 size_t T1_;
698 size_t T2_;
699 int T3_;
700 T1_ = (size_t)0;
701 T1_ = strlen(s_p1);
702 T2_ = (size_t)0;
703 T2_ = fwrite(((void*) (s_p1)), ((size_t)1), T1_, f_p0);
704 (void)(T2_);
705 T3_ = (int)0;
706 T3_ = fflush(f_p0);
707 (void)(T3_);
708}
709N_LIB_PRIVATE N_NOINLINE(void, raiseOutOfMem__system_u4696)(void) {
710 {
711 if (!!((outOfMemHook__system_u2866 == NIM_NIL))) goto LA3_;
712 outOfMemHook__system_u2866();
713 }
714LA3_: ;
715 rawWrite(stderr, "out of memory\012");
716 exit(((int)1));
717}
718static N_INLINE(void*, osAllocPages__system_u4721)(NI size_p0) {
719 void* result;
720 result = mmap(NIM_NIL, ((size_t) (size_p0)), ((int)3), ((int)34), ((int)-1), ((NI)0));
721 {
722 NIM_BOOL T3_;
723 T3_ = (NIM_BOOL)0;
724 T3_ = (result == NIM_NIL);
725 if (T3_) goto LA4_;
726 T3_ = (result == ((void*) (((NI)-1))));
727LA4_: ;
728 if (!T3_) goto LA5_;
729 raiseOutOfMem__system_u4696();
730 }
731LA5_: ;
732 return result;
733}
734N_LIB_PRIVATE N_NIMCALL(void*, allocPages__system_u5021)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) {
735 void* result;
736 result = osAllocPages__system_u4721(size_p1);
737 return result;
738}
739static N_INLINE(void*, osTryAllocPages__system_u4724)(NI size_p0) {
740 void* result;
741 result = mmap(NIM_NIL, ((size_t) (size_p0)), ((int)3), ((int)34), ((int)-1), ((NI)0));
742 {
743 if (!(result == ((void*) (((NI)-1))))) goto LA3_;
744 result = NIM_NIL;
745 }
746LA3_: ;
747 return result;
748}
749N_LIB_PRIVATE N_NIMCALL(void*, tryAllocPages__system_u5025)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) {
750 void* result;
751 result = osTryAllocPages__system_u4724(size_p1);
752 return result;
753}
754static N_INLINE(void, incCurrMem__system_u5001)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI bytes_p1) {
755 (*a_p0).currMem += bytes_p1;
756}
757static N_INLINE(void, zeroMem__system_u1723)(void* p_p0, NI size_p1) {
758 nimZeroMem(p_p0, size_p1);
759}
760N_LIB_PRIVATE N_NIMCALL(void*, llAlloc__system_u5029)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) {
761 void* result;
762 {
763 NIM_BOOL T3_;
764 tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA* old;
765 void* T7_;
766 T3_ = (NIM_BOOL)0;
767 T3_ = ((*a_p0).llmem == ((tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA*) NIM_NIL));
768 if (T3_) goto LA4_;
769 T3_ = ((*(*a_p0).llmem).size < size_p1);
770LA4_: ;
771 if (!T3_) goto LA5_;
772 old = (*a_p0).llmem;
773 T7_ = (void*)0;
774 T7_ = allocPages__system_u5021(a_p0, ((NI)4096));
775 (*a_p0).llmem = ((tyObject_LLChunk__FJfZX72yYJQ9ce5xV9cA9c7iA*) (T7_));
776 incCurrMem__system_u5001(a_p0, ((NI)4096));
777 (*(*a_p0).llmem).size = ((NI)4072);
778 (*(*a_p0).llmem).acc = ((NI)24);
779 (*(*a_p0).llmem).next = old;
780 }
781LA5_: ;
782 result = ((void*) ((NI)(((NI) (ptrdiff_t) ((*a_p0).llmem)) + (*(*a_p0).llmem).acc)));
783 (*(*a_p0).llmem).size -= size_p1;
784 (*(*a_p0).llmem).acc += size_p1;
785 zeroMem__system_u1723(result, (size_p1));
786 return result;
787}
788N_LIB_PRIVATE N_NIMCALL(tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ*, addHeapLink__system_u5064)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* p_p1, NI size_p2) {
789 tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ* result;
790 tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ* it;
791 it = (&(*a_p0).heapLinks);
792 {
793 while (1) {
794 NIM_BOOL T3_;
795 T3_ = (NIM_BOOL)0;
796 T3_ = !((it == ((tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ*) NIM_NIL)));
797 if (!(T3_)) goto LA4_;
798 T3_ = (((NI)30) <= (*it).len);
799LA4_: ;
800 if (!T3_) goto LA2;
801 it = (*it).next;
802 } LA2: ;
803 }
804 {
805 tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ* n;
806 void* T9_;
807 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* colontmp_;
808 NI colontmp__2;
809 if (!(it == ((tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ*) NIM_NIL))) goto LA7_;
810 T9_ = (void*)0;
811 T9_ = llAlloc__system_u5029(a_p0, ((NI)496));
812 n = ((tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ*) (T9_));
813 (*n).next = (*a_p0).heapLinks.next;
814 (*a_p0).heapLinks.next = n;
815 colontmp_ = p_p1;
816 colontmp__2 = size_p2;
817 (*n).chunks[(((NI)0))- 0].Field0 = colontmp_;
818 (*n).chunks[(((NI)0))- 0].Field1 = colontmp__2;
819 (*n).len = ((NI)1);
820 result = n;
821 }
822 goto LA5_;
823LA7_: ;
824 {
825 NI L;
826 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* colontmp__3;
827 NI colontmp__4;
828 L = (*it).len;
829 colontmp__3 = p_p1;
830 colontmp__4 = size_p2;
831 (*it).chunks[(L)- 0].Field0 = colontmp__3;
832 (*it).chunks[(L)- 0].Field1 = colontmp__4;
833 (*it).len += ((NI)1);
834 result = it;
835 }
836LA5_: ;
837 return result;
838}
839static N_INLINE(NI, pluspercent___system_u787)(NI x_p0, NI y_p1) {
840 NI result;
841 result = ((NI) ((NU)((NU64)(((NU) (x_p0))) + (NU64)(((NU) (y_p1))))));
842 return result;
843}
844N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*, intSetGet__system_u5150)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* t_p0, NI key_p1) {
845 tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* result;
846 tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* it;
847{ it = (*t_p0).data[((NI)(key_p1 & ((NI)255)))- 0];
848 {
849 while (1) {
850 if (!!((it == ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) NIM_NIL)))) goto LA2;
851 {
852 if (!((*it).key == key_p1)) goto LA5_;
853 result = it;
854 goto BeforeRet_;
855 }
856LA5_: ;
857 it = (*it).next;
858 } LA2: ;
859 }
860 result = ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) NIM_NIL);
861 }BeforeRet_: ;
862 return result;
863}
864N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__system_u5196)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p0, NI key_p1) {
865 NIM_BOOL result;
866 tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* t;
867 t = intSetGet__system_u5150(s_p0, (NI)((NI64)(key_p1) >> (NU64)(((NI)9))));
868 {
869 NI u;
870 if (!!((t == ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) NIM_NIL)))) goto LA3_;
871 u = (NI)(key_p1 & ((NI)511));
872 result = !(((NU)((*t).bits[((NI)((NI64)(u) >> (NU64)(((NI)6))))- 0] & (NU)((NU64)(((NU)1)) << (NU64)((NI)(u & ((NI)63))))) == ((NU)0)));
873 }
874 goto LA1_;
875LA3_: ;
876 {
877 result = NIM_FALSE;
878 }
879LA1_: ;
880 return result;
881}
882static N_INLINE(NI, pageIndex__system_u5417)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0) {
883 NI result;
884 result = (NI)((NI64)(((NI) (ptrdiff_t) (c_p0))) >> (NU64)(((NI)12)));
885 return result;
886}
887static N_INLINE(NI, minuspercent___system_u807)(NI x_p0, NI y_p1) {
888 NI result;
889 result = ((NI) ((NU)((NU64)(((NU) (x_p0))) - (NU64)(((NU) (y_p1))))));
890 return result;
891}
892N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, requestOsChunks__system_u5434)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) {
893 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* result;
894 NI colontmpD_;
895 NI colontmpD__2;
896 NI size_2;
897 tyObject_HeapLinks__cseX9aUgL8es2x1EnJMx09cQ* heapLink;
898 NI nxt;
899 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* next;
900 NI lastSize;
901 NI prv;
902 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* prev;
903 colontmpD_ = (NI)0;
904 colontmpD__2 = (NI)0;
905 {
906 NI usedMem;
907 if (!!((*a_p0).blockChunkSizeIncrease)) goto LA3_;
908 usedMem = (*a_p0).occ;
909 {
910 if (!(usedMem < ((NI)65536))) goto LA7_;
911 (*a_p0).nextChunkSize = ((NI)16384);
912 }
913 goto LA5_;
914LA7_: ;
915 {
916 NI T10_;
917 T10_ = (NI)0;
918 T10_ = roundup__system_u4701((NI)((NI64)(usedMem) >> (NU64)(((NI)2))), ((NI)4096));
919 (*a_p0).nextChunkSize = ((T10_ <= (NI)((*a_p0).nextChunkSize * ((NI)2))) ? T10_ : (NI)((*a_p0).nextChunkSize * ((NI)2)));
920 (*a_p0).nextChunkSize = (((*a_p0).nextChunkSize <= ((NI)1056964608)) ? (*a_p0).nextChunkSize : ((NI)1056964608));
921 }
922LA5_: ;
923 }
924LA3_: ;
925 size_2 = size_p1;
926 {
927 void* T15_;
928 if (!((*a_p0).nextChunkSize < size_2)) goto LA13_;
929 T15_ = (void*)0;
930 T15_ = allocPages__system_u5021(a_p0, size_2);
931 result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (T15_));
932 }
933 goto LA11_;
934LA13_: ;
935 {
936 void* T17_;
937 T17_ = (void*)0;
938 T17_ = tryAllocPages__system_u5025(a_p0, (*a_p0).nextChunkSize);
939 result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (T17_));
940 {
941 void* T22_;
942 if (!(result == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL))) goto LA20_;
943 T22_ = (void*)0;
944 T22_ = allocPages__system_u5021(a_p0, size_2);
945 result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (T22_));
946 (*a_p0).blockChunkSizeIncrease = NIM_TRUE;
947 }
948 goto LA18_;
949LA20_: ;
950 {
951 size_2 = (*a_p0).nextChunkSize;
952 }
953LA18_: ;
954 }
955LA11_: ;
956 incCurrMem__system_u5001(a_p0, size_2);
957 (*a_p0).freeMem += size_2;
958 heapLink = addHeapLink__system_u5064(a_p0, result, size_2);
959 (*result).next = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
960 (*result).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
961 (*result).Sup.size = size_2;
962 nxt = pluspercent___system_u787(((NI) (ptrdiff_t) (result)), size_2);
963 next = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) (nxt));
964 {
965 NI T26_;
966 NIM_BOOL T27_;
967 T26_ = (NI)0;
968 T26_ = pageIndex__system_u5417(next);
969 T27_ = (NIM_BOOL)0;
970 T27_ = contains__system_u5196((&(*a_p0).chunkStarts), T26_);
971 if (!T27_) goto LA28_;
972 (*next).prevSize = (NI)(size_2 | (NI)((*next).prevSize & ((NI)1)));
973 }
974LA28_: ;
975 {
976 if (!!(((*a_p0).lastSize == ((NI)0)))) goto LA32_;
977 colontmpD_ = (*a_p0).lastSize;
978 lastSize = colontmpD_;
979 }
980 goto LA30_;
981LA32_: ;
982 {
983 colontmpD__2 = ((NI)4096);
984 lastSize = colontmpD__2;
985 }
986LA30_: ;
987 prv = minuspercent___system_u807(((NI) (ptrdiff_t) (result)), lastSize);
988 prev = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) (prv));
989 {
990 NIM_BOOL T37_;
991 NI T38_;
992 T37_ = (NIM_BOOL)0;
993 T38_ = (NI)0;
994 T38_ = pageIndex__system_u5417(prev);
995 T37_ = contains__system_u5196((&(*a_p0).chunkStarts), T38_);
996 if (!(T37_)) goto LA39_;
997 T37_ = ((*prev).size == lastSize);
998LA39_: ;
999 if (!T37_) goto LA40_;
1000 (*result).Sup.prevSize = (NI)(lastSize | (NI)((*result).Sup.prevSize & ((NI)1)));
1001 }
1002 goto LA35_;
1003LA40_: ;
1004 {
1005 (*result).Sup.prevSize = (NI)(((NI)0) | (NI)((*result).Sup.prevSize & ((NI)1)));
1006 }
1007LA35_: ;
1008 (*a_p0).lastSize = size_2;
1009 return result;
1010}
1011static N_INLINE(NI, pageIndex__system_u5424)(void* p_p0) {
1012 NI result;
1013 result = (NI)((NI64)(((NI) (ptrdiff_t) (p_p0))) >> (NU64)(((NI)12)));
1014 return result;
1015}
1016static N_INLINE(NIM_BOOL, isAccessible__system_u5459)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, void* p_p1) {
1017 NIM_BOOL result;
1018 NI T1_;
1019 T1_ = (NI)0;
1020 T1_ = pageIndex__system_u5424(p_p1);
1021 result = contains__system_u5196((&(*a_p0).chunkStarts), T1_);
1022 return result;
1023}
1024static N_INLINE(void, updatePrevSize__system_u5477)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI prevSize_p2) {
1025 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* ri;
1026 NI T1_;
1027 T1_ = (NI)0;
1028 T1_ = pluspercent___system_u787(((NI) (ptrdiff_t) (c_p1)), (*c_p1).Sup.size);
1029 ri = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) (T1_));
1030 {
1031 NIM_BOOL T4_;
1032 T4_ = (NIM_BOOL)0;
1033 T4_ = isAccessible__system_u5459((&(*a_p0)), ((void*) (ri)));
1034 if (!T4_) goto LA5_;
1035 (*ri).prevSize = (NI)(prevSize_p2 | (NI)((*ri).prevSize & ((NI)1)));
1036 }
1037LA5_: ;
1038}
1039N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*, intSetPut__system_u5179)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* t_p1, NI key_p2) {
1040 tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* result;
1041 result = intSetGet__system_u5150((&(*t_p1)), key_p2);
1042 {
1043 void* T5_;
1044 if (!(result == ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) NIM_NIL))) goto LA3_;
1045 T5_ = (void*)0;
1046 T5_ = llAlloc__system_u5029(a_p0, ((NI)80));
1047 result = ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) (T5_));
1048 (*result).next = (*t_p1).data[((NI)(key_p2 & ((NI)255)))- 0];
1049 (*t_p1).data[((NI)(key_p2 & ((NI)255)))- 0] = result;
1050 (*result).key = key_p2;
1051 }
1052LA3_: ;
1053 return result;
1054}
1055N_LIB_PRIVATE N_NIMCALL(void, incl__system_u5234)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p1, NI key_p2) {
1056 tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* t;
1057 NI u;
1058 t = intSetPut__system_u5179(a_p0, s_p1, (NI)((NI64)(key_p2) >> (NU64)(((NI)9))));
1059 u = (NI)(key_p2 & ((NI)511));
1060 (*t).bits[((NI)((NI64)(u) >> (NU64)(((NI)6))))- 0] = (NU)((*t).bits[((NI)((NI64)(u) >> (NU64)(((NI)6))))- 0] | (NU)((NU64)(((NU)1)) << (NU64)((NI)(u & ((NI)63)))));
1061}
1062N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, splitChunk2__system_u5482)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI size_p2) {
1063 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* result;
1064 NI T1_;
1065 tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* T2_;
1066 NI T3_;
1067 T1_ = (NI)0;
1068 T1_ = pluspercent___system_u787(((NI) (ptrdiff_t) (c_p1)), size_p2);
1069 result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (T1_));
1070 (*result).Sup.size = (NI)((*c_p1).Sup.size - size_p2);
1071 (*result).next = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
1072 (*result).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
1073 (*result).Sup.prevSize = size_p2;
1074 (*result).Sup.owner = a_p0;
1075 updatePrevSize__system_u5477(a_p0, c_p1, (*result).Sup.size);
1076 (*c_p1).Sup.size = size_p2;
1077 T2_ = (tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg*)0;
1078 T2_ = a_p0;
1079 T3_ = (NI)0;
1080 T3_ = pageIndex__system_u5417((*((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg**) (&(result)))));
1081 incl__system_u5234(T2_, (&(*a_p0).chunkStarts), T3_);
1082 return result;
1083}
1084static N_INLINE(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ, mappingInsert__system_u4879)(NI r_p0) {
1085 tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ result;
1086 nimZeroMem((void*)(&result), sizeof(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ));
1087 result.Field0 = msbit__system_u4836(((NU32) (r_p0)));
1088 result.Field1 = (NI)((NI)((NI64)(r_p0) >> (NU64)((NI)(result.Field0 - ((NI)5)))) - ((NI)32));
1089 result.Field0 -= ((NI)6);
1090 return result;
1091}
1092static N_INLINE(void, setBit__system_u4847)(NI nr_p0, NU32* dest_p1) {
1093 (*dest_p1) = (NU32)((*dest_p1) | (NU32)((NU64)(((NU32)1)) << (NU64)((NI)(nr_p0 & ((NI)31)))));
1094}
1095N_LIB_PRIVATE N_NIMCALL(void, addChunkToMatrix__system_u4991)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1) {
1096 tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tmpTuple;
1097 NI fl;
1098 NI sl;
1099 tmpTuple = mappingInsert__system_u4879((*b_p1).Sup.size);
1100 fl = tmpTuple.Field0;
1101 sl = tmpTuple.Field1;
1102 (*b_p1).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
1103 (*b_p1).next = (*a_p0).matrix[(fl)- 0][(sl)- 0];
1104 {
1105 if (!!(((*a_p0).matrix[(fl)- 0][(sl)- 0] == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA3_;
1106 (*(*a_p0).matrix[(fl)- 0][(sl)- 0]).prev = b_p1;
1107 }
1108LA3_: ;
1109 (*a_p0).matrix[(fl)- 0][(sl)- 0] = b_p1;
1110 setBit__system_u4847(sl, (&(*a_p0).slBitmap[(fl)- 0]));
1111 setBit__system_u4847(fl, (&(*a_p0).flBitmap));
1112}
1113N_LIB_PRIVATE N_NIMCALL(void, splitChunk__system_u5503)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1, NI size_p2) {
1114 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* rest;
1115 rest = splitChunk2__system_u5482(a_p0, c_p1, size_p2);
1116 addChunkToMatrix__system_u4991(a_p0, rest);
1117}
1118static N_INLINE(void, clearBit__system_u4854)(NI nr_p0, NU32* dest_p1) {
1119 (*dest_p1) = (NU32)((*dest_p1) & (NU32)((NU32) ~((NU32)((NU64)(((NU32)1)) << (NU64)((NI)(nr_p0 & ((NI)31)))))));
1120}
1121N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix2__system_u4982)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1, NI fl_p2, NI sl_p3) {
1122 (*a_p0).matrix[(fl_p2)- 0][(sl_p3)- 0] = (*b_p1).next;
1123 {
1124 if (!!(((*a_p0).matrix[(fl_p2)- 0][(sl_p3)- 0] == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA3_;
1125 (*(*a_p0).matrix[(fl_p2)- 0][(sl_p3)- 0]).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
1126 }
1127 goto LA1_;
1128LA3_: ;
1129 {
1130 clearBit__system_u4854(sl_p3, (&(*a_p0).slBitmap[(fl_p2)- 0]));
1131 {
1132 if (!((*a_p0).slBitmap[(fl_p2)- 0] == ((NU32)0))) goto LA8_;
1133 clearBit__system_u4854(fl_p2, (&(*a_p0).flBitmap));
1134 }
1135LA8_: ;
1136 }
1137LA1_: ;
1138 (*b_p1).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
1139 (*b_p1).next = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
1140}
1141N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, getBigChunk__system_u5532)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) {
1142 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* result;
1143 NI size_2;
1144 NI fl;
1145 NI sl;
1146 tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* T19_;
1147 NI T20_;
1148 size_2 = size_p1;
1149 fl = ((NI)0);
1150 sl = ((NI)0);
1151 mappingSearch__system_u4861((&size_2), (&fl), (&sl));
1152 result = findSuitableBlock__system_u4894((&(*a_p0)), (&fl), (&sl));
1153 {
1154 if (!(result == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL))) goto LA3_;
1155 {
1156 if (!(size_2 < ((NI)524288))) goto LA7_;
1157 result = requestOsChunks__system_u5434(a_p0, ((NI)524288));
1158 splitChunk__system_u5503(a_p0, result, size_2);
1159 }
1160 goto LA5_;
1161LA7_: ;
1162 {
1163 result = requestOsChunks__system_u5434(a_p0, size_2);
1164 {
1165 if (!(size_2 < (*result).Sup.size)) goto LA12_;
1166 splitChunk__system_u5503(a_p0, result, size_2);
1167 }
1168LA12_: ;
1169 }
1170LA5_: ;
1171 (*result).Sup.owner = a_p0;
1172 }
1173 goto LA1_;
1174LA3_: ;
1175 {
1176 removeChunkFromMatrix2__system_u4982(a_p0, result, fl, sl);
1177 {
1178 if (!((NI)(size_2 + ((NI)4096)) <= (*result).Sup.size)) goto LA17_;
1179 splitChunk__system_u5503(a_p0, result, size_2);
1180 }
1181LA17_: ;
1182 }
1183LA1_: ;
1184 (*result).Sup.prevSize = ((NI)1);
1185 T19_ = (tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg*)0;
1186 T19_ = a_p0;
1187 T20_ = (NI)0;
1188 T20_ = pageIndex__system_u5417((*((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg**) (&(result)))));
1189 incl__system_u5234(T19_, (&(*a_p0).chunkStarts), T20_);
1190 (*a_p0).freeMem -= size_2;
1191 return result;
1192}
1193N_LIB_PRIVATE N_NIMCALL(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*, getSmallChunk__system_u5560)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0) {
1194 tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* result;
1195 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* res;
1196 res = getBigChunk__system_u5532(a_p0, ((NI)4096));
1197 result = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) (res));
1198 return result;
1199}
1200static N_INLINE(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*, pageAddr__system_u5431)(void* p_p0) {
1201 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* result;
1202 result = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) ((NI)(((NI) (ptrdiff_t) (p_p0)) & ((NI)-4096))));
1203 return result;
1204}
1205N_LIB_PRIVATE N_NIMCALL(void, compensateCounters__system_u5651)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1, NI size_p2) {
1206 tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* it;
1207 NI total;
1208 it = (*c_p1).freeList;
1209 total = ((NI)0);
1210 {
1211 while (1) {
1212 tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* chunk;
1213 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* T3_;
1214 if (!!((it == ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL)))) goto LA2;
1215 total += size_p2;
1216 T3_ = (tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*)0;
1217 T3_ = pageAddr__system_u5431(((void*) (it)));
1218 chunk = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) (T3_));
1219 {
1220 if (!!((c_p1 == chunk))) goto LA6_;
1221 (*c_p1).foreignCells += ((NI)1);
1222 }
1223LA6_: ;
1224 it = (*it).next;
1225 } LA2: ;
1226 }
1227 (*c_p1).free += total;
1228 (*a_p0).occ -= total;
1229}
1230static N_INLINE(void, listAdd__system_u5750)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA** head_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1) {
1231 (*c_p1).next = (*head_p0);
1232 {
1233 if (!!(((*head_p0) == ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL)))) goto LA3_;
1234 (*(*head_p0)).prev = c_p1;
1235 }
1236LA3_: ;
1237 (*head_p0) = c_p1;
1238}
1239static N_INLINE(void, listRemove__system_u5827)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA** head_p0, tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p1) {
1240 {
1241 if (!(c_p1 == (*head_p0))) goto LA3_;
1242 (*head_p0) = (*c_p1).next;
1243 {
1244 if (!!(((*head_p0) == ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL)))) goto LA7_;
1245 (*(*head_p0)).prev = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL);
1246 }
1247LA7_: ;
1248 }
1249 goto LA1_;
1250LA3_: ;
1251 {
1252 (*(*c_p1).prev).next = (*c_p1).next;
1253 {
1254 if (!!(((*c_p1).next == ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL)))) goto LA12_;
1255 (*(*c_p1).next).prev = (*c_p1).prev;
1256 }
1257LA12_: ;
1258 }
1259LA1_: ;
1260 (*c_p1).next = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL);
1261 (*c_p1).prev = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL);
1262}
1263N_LIB_PRIVATE N_NIMCALL(void, excl__system_u5256)(tyObject_IntSet__dEyFYNdsHEq9a32XQTv2dIg* s_p0, NI key_p1) {
1264 tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg* t;
1265 t = intSetGet__system_u5150((&(*s_p0)), (NI)((NI64)(key_p1) >> (NU64)(((NI)9))));
1266 {
1267 NI u;
1268 if (!!((t == ((tyObject_Trunk__d9bFy5JmTLQT9a7a0XmupURg*) NIM_NIL)))) goto LA3_;
1269 u = (NI)(key_p1 & ((NI)511));
1270 (*t).bits[((NI)((NI64)(u) >> (NU64)(((NI)6))))- 0] = (NU)((*t).bits[((NI)((NI64)(u) >> (NU64)(((NI)6))))- 0] & (NU)((NU64) ~((NU)((NU64)(((NU)1)) << (NU64)((NI)(u & ((NI)63)))))));
1271 }
1272LA3_: ;
1273}
1274static N_INLINE(void, decCurrMem__system_u5009)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI bytes_p1) {
1275 (*a_p0).maxMem = (((*a_p0).maxMem >= (*a_p0).currMem) ? (*a_p0).maxMem : (*a_p0).currMem);
1276 (*a_p0).currMem -= bytes_p1;
1277}
1278static N_INLINE(void, osDeallocPages__system_u4727)(void* p_p0, NI size_p1) {
1279 int T1_;
1280 T1_ = (int)0;
1281 T1_ = munmap(p_p0, ((size_t) (size_p1)));
1282 (void)(T1_);
1283}
1284N_LIB_PRIVATE N_NIMCALL(void, freeHugeChunk__system_u5556)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1) {
1285 NI size;
1286 NI T1_;
1287 size = (*c_p1).Sup.size;
1288 T1_ = (NI)0;
1289 T1_ = pageIndex__system_u5417(&c_p1->Sup);
1290 excl__system_u5256((&(*a_p0).chunkStarts), T1_);
1291 decCurrMem__system_u5009(a_p0, size);
1292 osDeallocPages__system_u4727(((void*) (c_p1)), size);
1293}
1294static N_INLINE(NIM_BOOL, chunkUnused__system_u5332)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0) {
1295 NIM_BOOL result;
1296 result = ((NI)((*c_p0).prevSize & ((NI)1)) == ((NI)0));
1297 return result;
1298}
1299static N_INLINE(NIM_BOOL, isSmallChunk__system_u5326)(tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c_p0) {
1300 NIM_BOOL result;
1301 result = ((*c_p0).size <= ((NI)4032));
1302 return result;
1303}
1304N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix__system_u4943)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* b_p1) {
1305 tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tmpTuple;
1306 NI fl;
1307 NI sl;
1308 tmpTuple = mappingInsert__system_u4879((*b_p1).Sup.size);
1309 fl = tmpTuple.Field0;
1310 sl = tmpTuple.Field1;
1311 {
1312 if (!!(((*b_p1).next == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA3_;
1313 (*(*b_p1).next).prev = (*b_p1).prev;
1314 }
1315LA3_: ;
1316 {
1317 if (!!(((*b_p1).prev == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA7_;
1318 (*(*b_p1).prev).next = (*b_p1).next;
1319 }
1320LA7_: ;
1321 {
1322 if (!((*a_p0).matrix[(fl)- 0][(sl)- 0] == b_p1)) goto LA11_;
1323 (*a_p0).matrix[(fl)- 0][(sl)- 0] = (*b_p1).next;
1324 {
1325 if (!((*a_p0).matrix[(fl)- 0][(sl)- 0] == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL))) goto LA15_;
1326 clearBit__system_u4854(sl, (&(*a_p0).slBitmap[(fl)- 0]));
1327 {
1328 if (!((*a_p0).slBitmap[(fl)- 0] == ((NU32)0))) goto LA19_;
1329 clearBit__system_u4854(fl, (&(*a_p0).flBitmap));
1330 }
1331LA19_: ;
1332 }
1333LA15_: ;
1334 }
1335LA11_: ;
1336 (*b_p1).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
1337 (*b_p1).next = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
1338}
1339N_LIB_PRIVATE N_NIMCALL(void, freeBigChunk__system_u5508)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1) {
1340 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_2;
1341 NI prevSize;
1342 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* ri;
1343 NI T24_;
1344 c_2 = c_p1;
1345 (*a_p0).freeMem += (*c_2).Sup.size;
1346 (*c_2).Sup.prevSize = (NI)((*c_2).Sup.prevSize & ((NI)-2));
1347 prevSize = (*c_2).Sup.prevSize;
1348 {
1349 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* le;
1350 NI T5_;
1351 if (!!((prevSize == ((NI)0)))) goto LA3_;
1352 T5_ = (NI)0;
1353 T5_ = minuspercent___system_u807(((NI) (ptrdiff_t) (c_2)), prevSize);
1354 le = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) (T5_));
1355 {
1356 NIM_BOOL T8_;
1357 T8_ = (NIM_BOOL)0;
1358 T8_ = isAccessible__system_u5459((&(*a_p0)), ((void*) (le)));
1359 if (!(T8_)) goto LA9_;
1360 T8_ = chunkUnused__system_u5332(le);
1361LA9_: ;
1362 if (!T8_) goto LA10_;
1363 {
1364 NIM_BOOL T14_;
1365 NIM_BOOL T15_;
1366 NI T19_;
1367 T14_ = (NIM_BOOL)0;
1368 T15_ = (NIM_BOOL)0;
1369 T15_ = isSmallChunk__system_u5326(le);
1370 T14_ = !(T15_);
1371 if (!(T14_)) goto LA16_;
1372 T14_ = ((*le).size < ((NI)1056964608));
1373LA16_: ;
1374 if (!T14_) goto LA17_;
1375 removeChunkFromMatrix__system_u4943(a_p0, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (le)));
1376 (*le).size += (*c_2).Sup.size;
1377 T19_ = (NI)0;
1378 T19_ = pageIndex__system_u5417((*((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg**) (&(c_2)))));
1379 excl__system_u5256((&(*a_p0).chunkStarts), T19_);
1380 c_2 = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (le));
1381 {
1382 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* rest;
1383 if (!(((NI)1056964608) < (*c_2).Sup.size)) goto LA22_;
1384 rest = splitChunk2__system_u5482(a_p0, c_2, ((NI)1056964608));
1385 addChunkToMatrix__system_u4991(a_p0, c_2);
1386 c_2 = rest;
1387 }
1388LA22_: ;
1389 }
1390LA17_: ;
1391 }
1392LA10_: ;
1393 }
1394LA3_: ;
1395 T24_ = (NI)0;
1396 T24_ = pluspercent___system_u787(((NI) (ptrdiff_t) (c_2)), (*c_2).Sup.size);
1397 ri = ((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*) (T24_));
1398 {
1399 NIM_BOOL T27_;
1400 T27_ = (NIM_BOOL)0;
1401 T27_ = isAccessible__system_u5459((&(*a_p0)), ((void*) (ri)));
1402 if (!(T27_)) goto LA28_;
1403 T27_ = chunkUnused__system_u5332(ri);
1404LA28_: ;
1405 if (!T27_) goto LA29_;
1406 {
1407 NIM_BOOL T33_;
1408 NIM_BOOL T34_;
1409 NI T38_;
1410 T33_ = (NIM_BOOL)0;
1411 T34_ = (NIM_BOOL)0;
1412 T34_ = isSmallChunk__system_u5326(ri);
1413 T33_ = !(T34_);
1414 if (!(T33_)) goto LA35_;
1415 T33_ = ((*c_2).Sup.size < ((NI)1056964608));
1416LA35_: ;
1417 if (!T33_) goto LA36_;
1418 removeChunkFromMatrix__system_u4943(a_p0, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (ri)));
1419 (*c_2).Sup.size += (*ri).size;
1420 T38_ = (NI)0;
1421 T38_ = pageIndex__system_u5417(ri);
1422 excl__system_u5256((&(*a_p0).chunkStarts), T38_);
1423 {
1424 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* rest_2;
1425 if (!(((NI)1056964608) < (*c_2).Sup.size)) goto LA41_;
1426 rest_2 = splitChunk2__system_u5482(a_p0, c_2, ((NI)1056964608));
1427 addChunkToMatrix__system_u4991(a_p0, rest_2);
1428 }
1429LA41_: ;
1430 }
1431LA36_: ;
1432 }
1433LA29_: ;
1434 addChunkToMatrix__system_u4991(a_p0, c_2);
1435}
1436N_LIB_PRIVATE N_NIMCALL(void, deallocBigChunk__system_u5578)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1) {
1437 (*a_p0).occ -= (*c_p1).Sup.size;
1438 {
1439 if (!(((NI)1056964609) <= (*c_p1).Sup.size)) goto LA3_;
1440 freeHugeChunk__system_u5556(a_p0, c_p1);
1441 }
1442 goto LA1_;
1443LA3_: ;
1444 {
1445 freeBigChunk__system_u5508(a_p0, c_p1);
1446 }
1447LA1_: ;
1448}
1449static N_INLINE(void, addToSharedFreeListBigChunks__system_u5589)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_p1) {
1450 {
1451 while (1) {
1452 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* T3_;
1453 T3_ = (tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*)0;
1454 T3_ = __atomic_load_n(&(*a_p0).sharedFreeListBigChunks, __ATOMIC_RELAXED);
1455 __atomic_store_n(&(*c_p1).next, T3_, __ATOMIC_RELAXED);
1456 {
1457 NIM_BOOL T6_;
1458 T6_ = (NIM_BOOL)0;
1459 T6_ = __atomic_compare_exchange_n(&(*a_p0).sharedFreeListBigChunks, &(*c_p1).next, c_p1, NIM_TRUE, __ATOMIC_RELEASE, __ATOMIC_RELAXED);
1460 if (!T6_) goto LA7_;
1461 goto LA1;
1462 }
1463LA7_: ;
1464 }
1465 } LA1: ;
1466}
1467N_LIB_PRIVATE N_NIMCALL(void, freeDeferredObjects__system_u5686)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* root_p1) {
1468 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* it;
1469 NI maxIters;
1470 it = root_p1;
1471 maxIters = ((NI)20);
1472 {
1473 while (1) {
1474 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* rest;
1475 rest = __atomic_load_n(&(*it).next, __ATOMIC_RELAXED);
1476 __atomic_store_n(&(*it).next, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL), __ATOMIC_RELAXED);
1477 deallocBigChunk__system_u5578(a_p0, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (it)));
1478 {
1479 if (!(maxIters == ((NI)0))) goto LA5_;
1480 {
1481 if (!!((rest == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA9_;
1482 addToSharedFreeListBigChunks__system_u5589(a_p0, rest);
1483 }
1484LA9_: ;
1485 goto LA1;
1486 }
1487LA5_: ;
1488 it = rest;
1489 maxIters -= ((NI)1);
1490 {
1491 if (!(it == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL))) goto LA13_;
1492 goto LA1;
1493 }
1494LA13_: ;
1495 }
1496 } LA1: ;
1497}
1498N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*, getHugeChunk__system_u5552)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI size_p1) {
1499 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* result;
1500 void* T1_;
1501 tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* T2_;
1502 NI T3_;
1503 T1_ = (void*)0;
1504 T1_ = allocPages__system_u5021(a_p0, size_p1);
1505 result = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (T1_));
1506 incCurrMem__system_u5001(a_p0, size_p1);
1507 (*result).next = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
1508 (*result).prev = ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL);
1509 (*result).Sup.size = size_p1;
1510 (*result).Sup.prevSize = ((NI)1);
1511 (*result).Sup.owner = a_p0;
1512 T2_ = (tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg*)0;
1513 T2_ = a_p0;
1514 T3_ = (NI)0;
1515 T3_ = pageIndex__system_u5417((*((tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg**) (&(result)))));
1516 incl__system_u5234(T2_, (&(*a_p0).chunkStarts), T3_);
1517 return result;
1518}
1519N_LIB_PRIVATE N_NIMCALL(void*, rawAlloc__system_u5718)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, NI requestedSize_p1) {
1520 void* result;
1521 NI size;
1522 result = (void*)0;
1523 size = roundup__system_u4701(requestedSize_p1, ((NI)16));
1524 {
1525 NI s;
1526 tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c;
1527 if (!(size <= ((NI)4032))) goto LA3_;
1528 s = (NI)(size / ((NI)16));
1529 c = (*a_p0).freeSmallChunks[(s)- 0];
1530 {
1531 if (!(c == ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL))) goto LA7_;
1532 c = getSmallChunk__system_u5560(a_p0);
1533 (*c).freeList = ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL);
1534 (*c).foreignCells = ((NI)0);
1535 (*c).Sup.size = size;
1536 (*c).acc = ((NU32) (size));
1537 (*c).free = (NI32)(((NI32)4032) - ((NI32) (size)));
1538 (*c).next = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL);
1539 (*c).prev = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL);
1540 {
1541 if (!((*c).freeList == ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL))) goto LA11_;
1542 (*c).freeList = __atomic_exchange_n(&(*a_p0).sharedFreeLists[(s)- 0], ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL), __ATOMIC_RELAXED);
1543 compensateCounters__system_u5651(a_p0, c, size);
1544 }
1545LA11_: ;
1546 {
1547 if (!(size <= ((NI) ((*c).free)))) goto LA15_;
1548 listAdd__system_u5750(&(*a_p0).freeSmallChunks[(s)- 0], c);
1549 }
1550LA15_: ;
1551 result = ((void*) ((*c).data));
1552 }
1553 goto LA5_;
1554LA7_: ;
1555 {
1556 {
1557 NI T22_;
1558 if (!((*c).freeList == ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL))) goto LA20_;
1559 T22_ = (NI)0;
1560 T22_ = pluspercent___system_u787(((NI) (ptrdiff_t) ((*c).data)), ((NI) ((*c).acc)));
1561 result = ((void*) (T22_));
1562 (*c).acc += size;
1563 }
1564 goto LA18_;
1565LA20_: ;
1566 {
1567 result = ((void*) ((*c).freeList));
1568 (*c).freeList = (*(*c).freeList).next;
1569 {
1570 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* T26_;
1571 T26_ = (tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg*)0;
1572 T26_ = pageAddr__system_u5431(result);
1573 if (!!((((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) (T26_)) == c))) goto LA27_;
1574 (*c).foreignCells -= ((NI)1);
1575 }
1576 goto LA24_;
1577LA27_: ;
1578 {
1579 }
1580LA24_: ;
1581 }
1582LA18_: ;
1583 (*c).free -= size;
1584 {
1585 if (!((*c).freeList == ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL))) goto LA32_;
1586 (*c).freeList = __atomic_exchange_n(&(*a_p0).sharedFreeLists[(s)- 0], ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) NIM_NIL), __ATOMIC_RELAXED);
1587 compensateCounters__system_u5651(a_p0, c, size);
1588 }
1589LA32_: ;
1590 {
1591 if (!(((NI) ((*c).free)) < size)) goto LA36_;
1592 listRemove__system_u5827(&(*a_p0).freeSmallChunks[(s)- 0], c);
1593 }
1594LA36_: ;
1595 }
1596LA5_: ;
1597 (*a_p0).occ += size;
1598 }
1599 goto LA1_;
1600LA3_: ;
1601 {
1602 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* colontmpD_;
1603 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* colontmpD__2;
1604 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* deferredFrees;
1605 tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ* c_2;
1606 colontmpD_ = (tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*)0;
1607 colontmpD__2 = (tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*)0;
1608 deferredFrees = __atomic_exchange_n(&(*a_p0).sharedFreeListBigChunks, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL), __ATOMIC_RELAXED);
1609 {
1610 if (!!((deferredFrees == ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) NIM_NIL)))) goto LA41_;
1611 freeDeferredObjects__system_u5686(a_p0, deferredFrees);
1612 }
1613LA41_: ;
1614 size = (NI)(requestedSize_p1 + ((NI)48));
1615 {
1616 if (!(((NI)1056964609) <= size)) goto LA45_;
1617 colontmpD_ = getHugeChunk__system_u5552(a_p0, size);
1618 c_2 = colontmpD_;
1619 }
1620 goto LA43_;
1621LA45_: ;
1622 {
1623 colontmpD__2 = getBigChunk__system_u5532(a_p0, size);
1624 c_2 = colontmpD__2;
1625 }
1626LA43_: ;
1627 result = ((void*) ((*c_2).data));
1628 (*a_p0).occ += (*c_2).Sup.size;
1629 }
1630LA1_: ;
1631 return result;
1632}
1633N_LIB_PRIVATE N_NIMCALL(void*, alloc__system_u5976)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, NI size_p1) {
1634 void* result;
1635 result = rawAlloc__system_u5718(allocator_p0, size_p1);
1636 return result;
1637}
1638N_LIB_PRIVATE N_NOCONV(void*, allocImpl__system_u1742)(NI size_p0) {
1639 void* result;
1640 result = alloc__system_u5976((&allocator__system_u6025), size_p0);
1641 return result;
1642}
1643N_LIB_PRIVATE N_NOCONV(void*, allocSharedImpl)(NI size_p0) {
1644 void* result;
1645 result = allocImpl__system_u1742(size_p0);
1646 return result;
1647}
1648static N_INLINE(void, nimCopyMem)(void* dest_p0, void* source_p1, NI size_p2) {
1649 void* T1_;
1650 T1_ = (void*)0;
1651 T1_ = memcpy(dest_p0, source_p1, ((size_t) (size_p2)));
1652}
1653static N_INLINE(void, copyMem__system_u1726)(void* dest_p0, void* source_p1, NI size_p2) {
1654 nimCopyMem(dest_p0, source_p1, size_p2);
1655}
1656N_LIB_PRIVATE N_NIMCALL(NimStringV2, toNimStr)(NCSTRING str_p0, NI len_p1) {
1657 NimStringV2 result;
1658 nimZeroMem((void*)(&result), sizeof(NimStringV2));
1659 {
1660 if (!(len_p1 <= ((NI)0))) goto LA3_;
1661 result.len = ((NI)0);
1662 result.p = ((NimStrPayload*) NIM_NIL);
1663 }
1664 goto LA1_;
1665LA3_: ;
1666 {
1667 NI colontmpD_;
1668 NimStrPayload* p;
1669 void* T6_;
1670 colontmpD_ = (NI)0;
1671 T6_ = (void*)0;
1672 T6_ = allocSharedImpl(((NI)((NI)(len_p1 + ((NI)1)) + ((NI)8))));
1673 p = ((NimStrPayload*) (T6_));
1674 (*p).cap = len_p1;
1675 copyMem__system_u1726(((void*) ((&(*p).data[((NI)0)]))), ((void*) (str_p0)), ((NI)(len_p1 + ((NI)1))));
1676 colontmpD_ = len_p1;
1677 result.len = colontmpD_;
1678 result.p = p;
1679 }
1680LA1_: ;
1681 return result;
1682}
1683static N_INLINE(NI, nimCStrLen)(NCSTRING a_p0) {
1684 NI result;
1685 size_t T5_;
1686{ result = (NI)0;
1687 {
1688 if (!(a_p0 == 0)) goto LA3_;
1689 result = ((NI)0);
1690 goto BeforeRet_;
1691 }
1692LA3_: ;
1693 T5_ = (size_t)0;
1694 T5_ = strlen(a_p0);
1695 result = ((NI) (T5_));
1696 }BeforeRet_: ;
1697 return result;
1698}
1699N_LIB_PRIVATE N_NIMCALL(NimStringV2, cstrToNimstr)(NCSTRING str_p0) {
1700 NimStringV2 result;
1701 NimStringV2 colontmpD_;
1702 NimStringV2 colontmpD__2;
1703 nimZeroMem((void*)(&colontmpD_), sizeof(NimStringV2));
1704 nimZeroMem((void*)(&colontmpD__2), sizeof(NimStringV2));
1705 {
1706 if (!(((void*) (str_p0)) == NIM_NIL)) goto LA3_;
1707 colontmpD_ = toNimStr(str_p0, ((NI)0));
1708 result = colontmpD_;
1709 }
1710 goto LA1_;
1711LA3_: ;
1712 {
1713 colontmpD__2 = toNimStr(str_p0, nimCStrLen(str_p0));
1714 result = colontmpD__2;
1715 }
1716LA1_: ;
1717 return result;
1718}
1719static N_INLINE(void, addToSharedFreeList__system_u5613)(tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_p0, tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* f_p1, NI size_p2) {
1720 {
1721 while (1) {
1722 tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* T3_;
1723 T3_ = (tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*)0;
1724 T3_ = __atomic_load_n(&(*(*c_p0).Sup.owner).sharedFreeLists[(size_p2)- 0], __ATOMIC_RELAXED);
1725 __atomic_store_n(&(*f_p1).next, T3_, __ATOMIC_RELAXED);
1726 {
1727 NIM_BOOL T6_;
1728 T6_ = (NIM_BOOL)0;
1729 T6_ = __atomic_compare_exchange_n(&(*(*c_p0).Sup.owner).sharedFreeLists[(size_p2)- 0], &(*f_p1).next, f_p1, NIM_TRUE, __ATOMIC_RELEASE, __ATOMIC_RELAXED);
1730 if (!T6_) goto LA7_;
1731 goto LA1;
1732 }
1733LA7_: ;
1734 }
1735 } LA1: ;
1736}
1737N_LIB_PRIVATE N_NIMCALL(void, rawDealloc__system_u5894)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* a_p0, void* p_p1) {
1738 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c;
1739 c = pageAddr__system_u5431(p_p1);
1740 {
1741 NIM_BOOL T3_;
1742 tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* c_2;
1743 NI s;
1744 tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g* f;
1745 T3_ = (NIM_BOOL)0;
1746 T3_ = isSmallChunk__system_u5326(c);
1747 if (!T3_) goto LA4_;
1748 c_2 = ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) (c));
1749 s = (*c_2).Sup.size;
1750 f = ((tyObject_FreeCell__Mb4yLUk9aX0mnECyLTFq86g*) (p_p1));
1751 {
1752 tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA* activeChunk;
1753 if (!((*c_2).Sup.owner == a_p0)) goto LA8_;
1754 (*a_p0).occ -= s;
1755 activeChunk = (*a_p0).freeSmallChunks[((NI)(s / ((NI)16)))- 0];
1756 {
1757 NIM_BOOL T12_;
1758 T12_ = (NIM_BOOL)0;
1759 T12_ = !((activeChunk == ((tyObject_SmallChunk__F9asgS1bYd9cvjxArTYxA7pA*) NIM_NIL)));
1760 if (!(T12_)) goto LA13_;
1761 T12_ = !((c_2 == activeChunk));
1762LA13_: ;
1763 if (!T12_) goto LA14_;
1764 (*f).next = (*activeChunk).freeList;
1765 (*activeChunk).freeList = f;
1766 (*activeChunk).free += s;
1767 (*activeChunk).foreignCells += ((NI)1);
1768 }
1769 goto LA10_;
1770LA14_: ;
1771 {
1772 (*f).next = (*c_2).freeList;
1773 (*c_2).freeList = f;
1774 {
1775 if (!(((NI) ((*c_2).free)) < s)) goto LA19_;
1776 listAdd__system_u5750(&(*a_p0).freeSmallChunks[((NI)(s / ((NI)16)))- 0], c_2);
1777 (*c_2).free += s;
1778 }
1779 goto LA17_;
1780LA19_: ;
1781 {
1782 (*c_2).free += s;
1783 {
1784 NIM_BOOL T24_;
1785 T24_ = (NIM_BOOL)0;
1786 T24_ = ((*c_2).free == ((NI32)4032));
1787 if (!(T24_)) goto LA25_;
1788 T24_ = ((*c_2).foreignCells == ((NI)0));
1789LA25_: ;
1790 if (!T24_) goto LA26_;
1791 listRemove__system_u5827(&(*a_p0).freeSmallChunks[((NI)(s / ((NI)16)))- 0], c_2);
1792 (*c_2).Sup.size = ((NI)4096);
1793 freeBigChunk__system_u5508(a_p0, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (c_2)));
1794 }
1795LA26_: ;
1796 }
1797LA17_: ;
1798 }
1799LA10_: ;
1800 }
1801 goto LA6_;
1802LA8_: ;
1803 {
1804 addToSharedFreeList__system_u5613(c_2, f, (NI)(s / ((NI)16)));
1805 }
1806LA6_: ;
1807 }
1808 goto LA1_;
1809LA4_: ;
1810 {
1811 {
1812 if (!((*c).owner == a_p0)) goto LA32_;
1813 deallocBigChunk__system_u5578(a_p0, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (c)));
1814 }
1815 goto LA30_;
1816LA32_: ;
1817 {
1818 addToSharedFreeListBigChunks__system_u5589((*c).owner, ((tyObject_BigChunk__EXrammHh5etdLBIX5FinqQ*) (c)));
1819 }
1820LA30_: ;
1821 }
1822LA1_: ;
1823}
1824N_LIB_PRIVATE N_NIMCALL(void, dealloc__system_u5984)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, void* p_p1) {
1825 rawDealloc__system_u5894(allocator_p0, p_p1);
1826}
1827N_LIB_PRIVATE N_NOCONV(void, deallocImpl__system_u1746)(void* p_p0) {
1828 dealloc__system_u5984((&allocator__system_u6025), p_p0);
1829}
1830N_LIB_PRIVATE N_NOCONV(void, deallocSharedImpl__system_u1759)(void* p_p0) {
1831 deallocImpl__system_u1746(p_p0);
1832}
1833N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0) {
1834 deallocSharedImpl__system_u1759(p_p0);
1835}
1836static N_INLINE(void, nimIncRef)(void* p_p0) {
1837 NI T1_;
1838 T1_ = (NI)0;
1839 T1_ = minuspercent___system_u807(((NI) (ptrdiff_t) (p_p0)), ((NI)8));
1840 (*((tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA*) (T1_))).rc += ((NI)8);
1841}
1842static N_INLINE(NIM_BOOL, nimDecRefIsLast)(void* p_p0) {
1843 NIM_BOOL result;
1844 result = (NIM_BOOL)0;
1845 {
1846 tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA* cell;
1847 NI T5_;
1848 if (!!((p_p0 == NIM_NIL))) goto LA3_;
1849 T5_ = (NI)0;
1850 T5_ = minuspercent___system_u807(((NI) (ptrdiff_t) (p_p0)), ((NI)8));
1851 cell = ((tyObject_RefHeader__F22uDzgit5BHnIfVi8PdJA*) (T5_));
1852 {
1853 if (!((NI)((NI64)((*cell).rc) >> (NU64)(((NI)3))) == ((NI)0))) goto LA8_;
1854 result = NIM_TRUE;
1855 }
1856 goto LA6_;
1857LA8_: ;
1858 {
1859 (*cell).rc -= ((NI)8);
1860 }
1861LA6_: ;
1862 }
1863LA3_: ;
1864 return result;
1865}
1866N_LIB_PRIVATE N_NIMCALL(NI, align__system_u1628)(NI address_p0, NI alignment_p1) {
1867 NI result;
1868 {
1869 if (!(alignment_p1 == ((NI)0))) goto LA3_;
1870 result = address_p0;
1871 }
1872 goto LA1_;
1873LA3_: ;
1874 {
1875 result = (NI)((NI)(address_p0 + (NI)(alignment_p1 - ((NI)1))) & (NI)((NU64) ~((NI)(alignment_p1 - ((NI)1)))));
1876 }
1877LA1_: ;
1878 return result;
1879}
1880N_LIB_PRIVATE N_NIMCALL(void, alignedDealloc)(void* p_p0, NI align_p1) {
1881 {
1882 if (!(align_p1 <= ((NI)16))) goto LA3_;
1883 deallocShared(p_p0);
1884 }
1885 goto LA1_;
1886LA3_: ;
1887 {
1888 NU16 offset;
1889 NI T6_;
1890 NI T7_;
1891 T6_ = (NI)0;
1892 T6_ = minuspercent___system_u807(((NI) (ptrdiff_t) (p_p0)), ((NI)2));
1893 offset = (*((NU16*) (((void*) (T6_)))));
1894 T7_ = (NI)0;
1895 T7_ = minuspercent___system_u807(((NI) (ptrdiff_t) (p_p0)), ((NI) (offset)));
1896 deallocShared(((void*) (T7_)));
1897 }
1898LA1_: ;
1899}
1900N_LIB_PRIVATE N_NIMCALL(void, nimRawDispose)(void* p_p0, NI alignment_p1) {
1901 NI hdrSize;
1902 NI T1_;
1903 hdrSize = align__system_u1628(((NI)8), alignment_p1);
1904 T1_ = (NI)0;
1905 T1_ = minuspercent___system_u807(((NI) (ptrdiff_t) (p_p0)), hdrSize);
1906 alignedDealloc(((void*) (T1_)), alignment_p1);
1907}
1908N_LIB_PRIVATE N_NIMCALL(void, nimDestroyAndDispose)(void* p_p0) {
1909 TNimTypeV2** rti;
1910NIM_BOOL* nimErr_;
1911{nimErr_ = nimErrorFlag();
1912 rti = ((TNimTypeV2**) (p_p0));
1913 {
1914 if (!!(((*(*rti)).destructor == NIM_NIL))) goto LA3_;
1915 ((tyProc__4SVlZZPmetqBimNsH9cHcOA) ((*(*rti)).destructor))(p_p0);
1916 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
1917 }
1918LA3_: ;
1919 nimRawDispose(p_p0, ((NI) ((*(*rti)).align)));
1920 }BeforeRet_: ;
1921}
1922N_LIB_PRIVATE N_NIMCALL(void, eqcopy___stdZtypedthreads_u211)(Exception** dest_p0, Exception* src_p1) {
1923 {
1924 if (!src_p1) goto LA3_;
1925 nimIncRef(src_p1);
1926 }
1927LA3_: ;
1928 {
1929 NIM_BOOL T7_;
1930 T7_ = (NIM_BOOL)0;
1931 T7_ = nimDecRefIsLast((*dest_p0));
1932 if (!T7_) goto LA8_;
1933 nimDestroyAndDispose((*dest_p0));
1934 }
1935LA8_: ;
1936 (*dest_p0) = src_p1;
1937}
1938static N_INLINE(void, popCurrentException)(void) {
1939 eqcopy___stdZtypedthreads_u211(&currException__system_u3313, (*currException__system_u3313).up);
1940}
1941static N_INLINE(void, rawWriteString)(FILE* f_p0, NCSTRING s_p1, NI length_p2) {
1942 size_t T1_;
1943 int T2_;
1944 T1_ = (size_t)0;
1945 T1_ = fwrite(((void*) (s_p1)), ((size_t)1), ((size_t) (length_p2)), f_p0);
1946 (void)(T1_);
1947 T2_ = (int)0;
1948 T2_ = fflush(f_p0);
1949 (void)(T2_);
1950}
1951N_LIB_PRIVATE N_NIMCALL(void, writeToStdErr__system_u3280)(NCSTRING msg_p0, NI length_p1) {
1952 rawWriteString(stderr, msg_p0, length_p1);
1953}
1954N_LIB_PRIVATE N_NIMCALL(void, showErrorMessage__system_u3285)(NCSTRING data_p0, NI length_p1) {
1955 NIM_BOOL toWrite;
1956NIM_BOOL* nimErr_;
1957{nimErr_ = nimErrorFlag();
1958 toWrite = NIM_TRUE;
1959 {
1960 NimStringV2 colontmpD_;
1961 if (!!((errorMessageWriter__system_u3277 == NIM_NIL))) goto LA3_;
1962 colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
1963 colontmpD_ = cstrToNimstr(data_p0);
1964 errorMessageWriter__system_u3277(colontmpD_);
1965 toWrite = NIM_FALSE;
1966 if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
1967 deallocShared(colontmpD_.p);
1968}
1969 if (NIM_UNLIKELY(*nimErr_)) {
1970 LA5_:;
1971 {
1972 *nimErr_ = NIM_FALSE;
1973 popCurrentException();
1974 LA7_:;
1975 }
1976 }
1977 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
1978 }
1979LA3_: ;
1980 {
1981 if (!toWrite) goto LA11_;
1982 writeToStdErr__system_u3280(data_p0, length_p1);
1983 }
1984LA11_: ;
1985 }BeforeRet_: ;
1986}
1987N_LIB_PRIVATE N_NOCONV(void, signalHandler)(int sign_p0) {
1988 NCSTRING msg;
1989 tyProc__gx1DG571q2UZkCl7Jq3AOg T26_;
1990 int T27_;
1991 msg = (NCSTRING)0;
1992 {
1993 if (!(sign_p0 == ((int)2))) goto LA3_;
1994 msg = "SIGINT: Interrupted by Ctrl-C.\012";
1995 }
1996 goto LA1_;
1997LA3_: ;
1998 {
1999 if (!(sign_p0 == ((int)11))) goto LA6_;
2000 msg = "SIGSEGV: Illegal storage access. (Attempt to read from nil\?)\012";
2001 }
2002 goto LA1_;
2003LA6_: ;
2004 {
2005 if (!(sign_p0 == ((int)6))) goto LA9_;
2006 msg = "SIGABRT: Abnormal termination.\012";
2007 }
2008 goto LA1_;
2009LA9_: ;
2010 {
2011 if (!(sign_p0 == ((int)8))) goto LA12_;
2012 msg = "SIGFPE: Arithmetic error.\012";
2013 }
2014 goto LA1_;
2015LA12_: ;
2016 {
2017 if (!(sign_p0 == ((int)4))) goto LA15_;
2018 msg = "SIGILL: Illegal operation.\012";
2019 }
2020 goto LA1_;
2021LA15_: ;
2022 {
2023 if (!NIM_FALSE) goto LA18_;
2024 msg = "SIGBUS: Illegal storage access. (Attempt to read from nil\?)\012";
2025 }
2026 goto LA1_;
2027LA18_: ;
2028 {
2029 {
2030 {
2031 if (!(sign_p0 == ((int)13))) goto LA24_;
2032 msg = "SIGPIPE: Pipe closed.\012";
2033 goto LA21;
2034 }
2035LA24_: ;
2036 msg = "unknown signal\012";
2037 } LA21: ;
2038 }
2039LA1_: ;
2040 showErrorMessage__system_u3285(msg, nimCStrLen(msg));
2041 T26_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0;
2042 T26_ = signal(sign_p0, NIM_NIL);
2043 T27_ = (int)0;
2044 T27_ = raise(sign_p0);
2045 (void)(T27_);
2046}
2047N_LIB_PRIVATE N_NIMCALL(void, registerSignalHandler__system_u3798)(void) {
2048 tyProc__gx1DG571q2UZkCl7Jq3AOg T1_;
2049 tyProc__gx1DG571q2UZkCl7Jq3AOg T2_;
2050 tyProc__gx1DG571q2UZkCl7Jq3AOg T3_;
2051 tyProc__gx1DG571q2UZkCl7Jq3AOg T4_;
2052 tyProc__gx1DG571q2UZkCl7Jq3AOg T5_;
2053 tyProc__gx1DG571q2UZkCl7Jq3AOg T6_;
2054 T1_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0;
2055 T1_ = signal(((int)2), signalHandler);
2056 T2_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0;
2057 T2_ = signal(((int)11), signalHandler);
2058 T3_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0;
2059 T3_ = signal(((int)6), signalHandler);
2060 T4_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0;
2061 T4_ = signal(((int)8), signalHandler);
2062 T5_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0;
2063 T5_ = signal(((int)4), signalHandler);
2064 T6_ = (tyProc__gx1DG571q2UZkCl7Jq3AOg)0;
2065 T6_ = signal(((int)13), SIG_IGN);
2066}
2067N_LIB_PRIVATE N_NIMCALL(NimStringV2, rawNewString)(NI space_p0) {
2068 NimStringV2 result;
2069 nimZeroMem((void*)(&result), sizeof(NimStringV2));
2070 {
2071 if (!(space_p0 <= ((NI)0))) goto LA3_;
2072 result.len = ((NI)0);
2073 result.p = ((NimStrPayload*) NIM_NIL);
2074 }
2075 goto LA1_;
2076LA3_: ;
2077 {
2078 NimStrPayload* p;
2079 void* T6_;
2080 T6_ = (void*)0;
2081 T6_ = allocSharedImpl(((NI)((NI)(space_p0 + ((NI)1)) + ((NI)8))));
2082 p = ((NimStrPayload*) (T6_));
2083 (*p).cap = space_p0;
2084 (*p).data[((NI)0)] = 0;
2085 result.len = ((NI)0);
2086 result.p = p;
2087 }
2088LA1_: ;
2089 return result;
2090}
2091N_LIB_PRIVATE N_NOCONV(void*, allocShared0Impl__system_u1757)(NI size_p0) {
2092 void* result;
2093 result = allocSharedImpl(size_p0);
2094 zeroMem__system_u1723(result, size_p0);
2095 return result;
2096}
2097static N_INLINE(void, appendString)(NimStringV2* dest_p0, NimStringV2 src_p1) {
2098 {
2099 if (!(((NI)0) < src_p1.len)) goto LA3_;
2100 copyMem__system_u1726(((void*) ((&(*(*dest_p0).p).data[(*dest_p0).len]))), ((void*) ((&(*src_p1.p).data[((NI)0)]))), ((NI)(src_p1.len + ((NI)1))));
2101 (*dest_p0).len += src_p1.len;
2102 }
2103LA3_: ;
2104}
2105static N_INLINE(NI, resize__system_u2198)(NI old_p0) {
2106 NI result;
2107 {
2108 if (!(old_p0 <= ((NI)0))) goto LA3_;
2109 result = ((NI)4);
2110 }
2111 goto LA1_;
2112LA3_: ;
2113 {
2114 if (!(old_p0 <= ((NI)32767))) goto LA6_;
2115 result = (NI)(old_p0 * ((NI)2));
2116 }
2117 goto LA1_;
2118LA6_: ;
2119 {
2120 result = (NI)((NI)(old_p0 * ((NI)3)) / ((NI)2));
2121 }
2122LA1_: ;
2123 return result;
2124}
2125N_LIB_PRIVATE N_NIMCALL(NI, ptrSize__system_u5964)(void* p_p0) {
2126 NI result;
2127 tyObject_BaseChunk__W4riUCu2PzNFTW2Xl0Y9aQg* c;
2128 c = pageAddr__system_u5431(p_p0);
2129 result = (*c).size;
2130 {
2131 NIM_BOOL T3_;
2132 T3_ = (NIM_BOOL)0;
2133 T3_ = isSmallChunk__system_u5326(c);
2134 if (!!(T3_)) goto LA4_;
2135 result -= ((NI)48);
2136 }
2137LA4_: ;
2138 return result;
2139}
2140N_LIB_PRIVATE N_NIMCALL(void*, realloc__system_u5987)(tyObject_MemRegion__pL9ccggXE8Yu9a9cfwzFD28zg* allocator_p0, void* p_p1, NI newsize_p2) {
2141 void* result;
2142 result = (void*)0;
2143 {
2144 if (!(((NI)0) < newsize_p2)) goto LA3_;
2145 result = alloc__system_u5976(allocator_p0, newsize_p2);
2146 {
2147 NI T9_;
2148 if (!!((p_p1 == NIM_NIL))) goto LA7_;
2149 T9_ = (NI)0;
2150 T9_ = ptrSize__system_u5964(p_p1);
2151 copyMem__system_u1726(result, p_p1, (((T9_ <= newsize_p2) ? T9_ : newsize_p2)));
2152 dealloc__system_u5984(allocator_p0, p_p1);
2153 }
2154LA7_: ;
2155 }
2156 goto LA1_;
2157LA3_: ;
2158 {
2159 if (!!((p_p1 == NIM_NIL))) goto LA11_;
2160 dealloc__system_u5984(allocator_p0, p_p1);
2161 }
2162 goto LA1_;
2163LA11_: ;
2164LA1_: ;
2165 return result;
2166}
2167N_LIB_PRIVATE N_NOCONV(void*, reallocImpl__system_u1748)(void* p_p0, NI newSize_p1) {
2168 void* result;
2169 result = realloc__system_u5987((&allocator__system_u6025), p_p0, newSize_p1);
2170 return result;
2171}
2172N_LIB_PRIVATE N_NOCONV(void*, reallocSharedImpl__system_u1761)(void* p_p0, NI newSize_p1) {
2173 void* result;
2174 result = reallocImpl__system_u1748(p_p0, newSize_p1);
2175 return result;
2176}
2177N_LIB_PRIVATE N_NIMCALL(void, prepareAdd)(NimStringV2* s_p0, NI addLen_p1) {
2178 NI newLen;
2179 newLen = (NI)((*s_p0).len + addLen_p1);
2180 {
2181 NIM_BOOL T3_;
2182 NimStrPayload* oldP;
2183 void* T7_;
2184 T3_ = (NIM_BOOL)0;
2185 T3_ = ((*s_p0).p == ((NimStrPayload*) NIM_NIL));
2186 if (T3_) goto LA4_;
2187 T3_ = ((NI)((*(*s_p0).p).cap & ((NI)IL64(4611686018427387904))) == ((NI)IL64(4611686018427387904)));
2188LA4_: ;
2189 if (!T3_) goto LA5_;
2190 oldP = (*s_p0).p;
2191 T7_ = (void*)0;
2192 T7_ = allocSharedImpl(((NI)((NI)(newLen + ((NI)1)) + ((NI)8))));
2193 (*s_p0).p = ((NimStrPayload*) (T7_));
2194 (*(*s_p0).p).cap = newLen;
2195 {
2196 if (!(((NI)0) < (*s_p0).len)) goto LA10_;
2197 copyMem__system_u1726(((void*) ((&(*(*s_p0).p).data[((NI)0)]))), ((void*) ((&(*oldP).data[((NI)0)]))), ((((*s_p0).len <= newLen) ? (*s_p0).len : newLen)));
2198 }
2199 goto LA8_;
2200LA10_: ;
2201 {
2202 if (!(oldP == ((NimStrPayload*) NIM_NIL))) goto LA13_;
2203 (*(*s_p0).p).data[((NI)0)] = 0;
2204 }
2205 goto LA8_;
2206LA13_: ;
2207LA8_: ;
2208 }
2209 goto LA1_;
2210LA5_: ;
2211 {
2212 NI oldCap;
2213 oldCap = (NI)((*(*s_p0).p).cap & ((NI)IL64(-4611686018427387905)));
2214 {
2215 NI newCap;
2216 NI T20_;
2217 void* T21_;
2218 if (!(oldCap < newLen)) goto LA18_;
2219 T20_ = (NI)0;
2220 T20_ = resize__system_u2198(oldCap);
2221 newCap = ((newLen >= T20_) ? newLen : T20_);
2222 T21_ = (void*)0;
2223 T21_ = reallocSharedImpl__system_u1761(((void*) ((*s_p0).p)), ((NI)((NI)(newCap + ((NI)1)) + ((NI)8))));
2224 (*s_p0).p = ((NimStrPayload*) (T21_));
2225 (*(*s_p0).p).cap = newCap;
2226 {
2227 if (!(newLen < newCap)) goto LA24_;
2228 zeroMem__system_u1723(((void*) ((&(*(*s_p0).p).data[(NI)(newLen + ((NI)1))]))), ((NI)(newCap - newLen)));
2229 }
2230LA24_: ;
2231 }
2232LA18_: ;
2233 }
2234LA1_: ;
2235}
2236static N_INLINE(void, nimAddCharV1)(NimStringV2* s_p0, NIM_CHAR c_p1) {
2237 prepareAdd(s_p0, ((NI)1));
2238 (*(*s_p0).p).data[(*s_p0).len] = c_p1;
2239 (*s_p0).len += ((NI)1);
2240 (*(*s_p0).p).data[(*s_p0).len] = 0;
2241}
2242N_LIB_PRIVATE N_NIMCALL(void, add__system_u2870)(NimStringV2* x_p0, NCSTRING y_p1) {
2243 NI i;
2244 i = ((NI)0);
2245 {
2246 if (!!((((void*) (y_p1)) == NIM_NIL))) goto LA3_;
2247 {
2248 while (1) {
2249 if (!!(((NU8)(y_p1[i]) == (NU8)(0)))) goto LA6;
2250 nimAddCharV1((&(*x_p0)), y_p1[i]);
2251 i += ((NI)1);
2252 } LA6: ;
2253 }
2254 }
2255LA3_: ;
2256}
2257N_LIB_PRIVATE N_NOCONV(void*, realloc0Impl__system_u1751)(void* p_p0, NI oldSize_p1, NI newSize_p2) {
2258 void* result;
2259 result = realloc__system_u5987((&allocator__system_u6025), p_p0, newSize_p2);
2260 {
2261 if (!(oldSize_p1 < newSize_p2)) goto LA3_;
2262 zeroMem__system_u1723(((void*) ((NU)((NU64)(((NU) (ptrdiff_t) (result))) + (NU64)(((NU) (oldSize_p1)))))), ((NI)(newSize_p2 - oldSize_p1)));
2263 }
2264LA3_: ;
2265 return result;
2266}
2267N_LIB_PRIVATE N_NOCONV(void*, reallocShared0Impl__system_u1764)(void* p_p0, NI oldSize_p1, NI newSize_p2) {
2268 void* result;
2269 result = realloc0Impl__system_u1751(p_p0, oldSize_p1, newSize_p2);
2270 return result;
2271}
2272N_LIB_PRIVATE N_NIMCALL(void, setLengthStrV2)(NimStringV2* s_p0, NI newLen_p1) {
2273 {
2274 if (!(newLen_p1 == ((NI)0))) goto LA3_;
2275 }
2276 goto LA1_;
2277LA3_: ;
2278 {
2279 {
2280 NIM_BOOL T8_;
2281 NimStrPayload* oldP;
2282 void* T12_;
2283 T8_ = (NIM_BOOL)0;
2284 T8_ = ((*s_p0).p == ((NimStrPayload*) NIM_NIL));
2285 if (T8_) goto LA9_;
2286 T8_ = ((NI)((*(*s_p0).p).cap & ((NI)IL64(4611686018427387904))) == ((NI)IL64(4611686018427387904)));
2287LA9_: ;
2288 if (!T8_) goto LA10_;
2289 oldP = (*s_p0).p;
2290 T12_ = (void*)0;
2291 T12_ = allocSharedImpl(((NI)((NI)(newLen_p1 + ((NI)1)) + ((NI)8))));
2292 (*s_p0).p = ((NimStrPayload*) (T12_));
2293 (*(*s_p0).p).cap = newLen_p1;
2294 {
2295 if (!(((NI)0) < (*s_p0).len)) goto LA15_;
2296 copyMem__system_u1726(((void*) ((&(*(*s_p0).p).data[((NI)0)]))), ((void*) ((&(*oldP).data[((NI)0)]))), ((((*s_p0).len <= newLen_p1) ? (*s_p0).len : newLen_p1)));
2297 {
2298 if (!((*s_p0).len < newLen_p1)) goto LA19_;
2299 zeroMem__system_u1723(((void*) ((&(*(*s_p0).p).data[(*s_p0).len]))), ((NI)((NI)(newLen_p1 - (*s_p0).len) + ((NI)1))));
2300 }
2301 goto LA17_;
2302LA19_: ;
2303 {
2304 (*(*s_p0).p).data[newLen_p1] = 0;
2305 }
2306LA17_: ;
2307 }
2308 goto LA13_;
2309LA15_: ;
2310 {
2311 zeroMem__system_u1723(((void*) ((&(*(*s_p0).p).data[((NI)0)]))), ((NI)(newLen_p1 + ((NI)1))));
2312 }
2313LA13_: ;
2314 }
2315 goto LA6_;
2316LA10_: ;
2317 {
2318 NI oldCap;
2319 if (!((*s_p0).len < newLen_p1)) goto LA24_;
2320 oldCap = (NI)((*(*s_p0).p).cap & ((NI)IL64(-4611686018427387905)));
2321 {
2322 NI newCap;
2323 NI T30_;
2324 void* T31_;
2325 if (!(oldCap < newLen_p1)) goto LA28_;
2326 T30_ = (NI)0;
2327 T30_ = resize__system_u2198(oldCap);
2328 newCap = ((newLen_p1 >= T30_) ? newLen_p1 : T30_);
2329 T31_ = (void*)0;
2330 T31_ = reallocShared0Impl__system_u1764(((void*) ((*s_p0).p)), ((NI)((NI)(oldCap + ((NI)1)) + ((NI)8))), ((NI)((NI)(newCap + ((NI)1)) + ((NI)8))));
2331 (*s_p0).p = ((NimStrPayload*) (T31_));
2332 (*(*s_p0).p).cap = newCap;
2333 }
2334LA28_: ;
2335 }
2336 goto LA6_;
2337LA24_: ;
2338LA6_: ;
2339 (*(*s_p0).p).data[newLen_p1] = 0;
2340 }
2341LA1_: ;
2342 (*s_p0).len = newLen_p1;
2343}
2344static N_INLINE(void, addInt__stdZprivateZdigitsutils_u195)(NimStringV2* result_p0, NI x_p1) {
2345 addInt__stdZprivateZdigitsutils_u178(result_p0, ((NI64) (x_p1)));
2346}
2347N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___system_u3465)(tySequence__8XHFOeTbUzLnvMyFAUC3Tg stackTraceEntries_p0) {
2348 NimStringV2 result;
2349 tySequence__8XHFOeTbUzLnvMyFAUC3Tg s;
2350 s.len = 0; s.p = NIM_NIL;
2351 s = stackTraceEntries_p0;
2352 result = rawNewString(((NI)2000));
2353 {
2354 NI i;
2355 NI colontmp_;
2356 NI T2_;
2357 NI res;
2358 i = (NI)0;
2359 colontmp_ = (NI)0;
2360 T2_ = s.len;
2361 colontmp_ = (NI)(T2_ - ((NI)1));
2362 res = ((NI)0);
2363 {
2364 while (1) {
2365 if (!(res <= colontmp_)) goto LA4;
2366 i = ((NI) (res));
2367 {
2368 if (!(s.p->data[i].line == ((NI)-10))) goto LA7_;
2369 prepareAdd((&result), 17);
2370appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_3);
2371 }
2372 goto LA5_;
2373LA7_: ;
2374 {
2375 if (!(s.p->data[i].line == ((NI)-100))) goto LA10_;
2376 prepareAdd((&result), 3);
2377appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_5);
2378 }
2379 goto LA5_;
2380LA10_: ;
2381 {
2382 NI oldLenX60gensym152_;
2383 oldLenX60gensym152_ = result.len;
2384 add__system_u2870((&result), s.p->data[i].filename);
2385 {
2386 if (!(((NI)0) < s.p->data[i].line)) goto LA15_;
2387 prepareAdd((&result), 1);
2388appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_7);
2389 addInt__stdZprivateZdigitsutils_u195((&result), s.p->data[i].line);
2390 {
2391 if (!NIM_FALSE) goto LA19_;
2392 prepareAdd((&result), 2);
2393appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_9);
2394 addInt__stdZprivateZdigitsutils_u195((&result), ((NI)0));
2395 }
2396LA19_: ;
2397 prepareAdd((&result), 1);
2398appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_11);
2399 }
2400LA15_: ;
2401 {
2402 NI kX60gensym152_;
2403 NI colontmp__2;
2404 NI res_2;
2405 kX60gensym152_ = (NI)0;
2406 colontmp__2 = (NI)0;
2407 colontmp__2 = ((((NI)1) >= (NI)(((NI)25) - (NI)(result.len - oldLenX60gensym152_))) ? ((NI)1) : (NI)(((NI)25) - (NI)(result.len - oldLenX60gensym152_)));
2408 res_2 = ((NI)1);
2409 {
2410 while (1) {
2411 if (!(res_2 <= colontmp__2)) goto LA23;
2412 kX60gensym152_ = ((NI) (res_2));
2413 nimAddCharV1((&result), 32);
2414 res_2 += ((NI)1);
2415 } LA23: ;
2416 }
2417 }
2418 add__system_u2870((&result), s.p->data[i].procname);
2419 prepareAdd((&result), 1);
2420appendString((&result), TM__Q5wkpxktOdTGvlSRo9bzt9aw_13);
2421 }
2422LA5_: ;
2423 res += ((NI)1);
2424 } LA4: ;
2425 }
2426 }
2427 return result;
2428}
2429static N_INLINE(NCSTRING, nimToCStringConv)(NimStringV2 s_p0) {
2430 NCSTRING result;
2431 {
2432 if (!(s_p0.len == ((NI)0))) goto LA3_;
2433 result = "";
2434 }
2435 goto LA1_;
2436LA3_: ;
2437 {
2438 result = ((NCSTRING) ((*s_p0.p).data));
2439 }
2440LA1_: ;
2441 return result;
2442}
2443N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledErrorAux__system_u3494)(Exception* e_p0) {
2444 tyArray__gpc2RrLEcWgv7ONpLYNHOw buf;
2445 NI L;
2446 nimZeroMem((void*)buf, sizeof(tyArray__gpc2RrLEcWgv7ONpLYNHOw));
2447 L = ((NI)0);
2448 {
2449 NI T3_;
2450 NimStringV2 trace;
2451 T3_ = (*e_p0).trace.len;
2452 if (!!((T3_ == ((NI)0)))) goto LA4_;
2453 trace = dollar___system_u3465((*e_p0).trace);
2454 {
2455 if (!((NI)(L + trace.len) < ((NI)2000))) goto LA8_;
2456 copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) (nimToCStringConv(trace))), (trace.len));
2457 L += trace.len;
2458 }
2459LA8_: ;
2460 if (trace.p && !(trace.p->cap & NIM_STRLIT_FLAG)) {
2461 deallocShared(trace.p);
2462}
2463 }
2464LA4_: ;
2465 {
2466 if (!((NI)(L + ((NI)28)) < ((NI)2000))) goto LA12_;
2467 copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) ("Error: unhandled exception: ")), ((NI)28));
2468 L += ((NI)28);
2469 }
2470LA12_: ;
2471 {
2472 if (!((NI)(L + (*e_p0).message.len) < ((NI)2000))) goto LA16_;
2473 copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) (nimToCStringConv((*e_p0).message))), ((*e_p0).message.len));
2474 L += (*e_p0).message.len;
2475 }
2476LA16_: ;
2477 {
2478 if (!((NI)(L + ((NI)2)) < ((NI)2000))) goto LA20_;
2479 copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) (" [")), ((NI)2));
2480 L += ((NI)2);
2481 }
2482LA20_: ;
2483 {
2484 if (!((NI)(L + nimCStrLen((*e_p0).name)) < ((NI)2000))) goto LA24_;
2485 copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) ((*e_p0).name)), (nimCStrLen((*e_p0).name)));
2486 L += nimCStrLen((*e_p0).name);
2487 }
2488LA24_: ;
2489 {
2490 if (!((NI)(L + ((NI)2)) < ((NI)2000))) goto LA28_;
2491 copyMem__system_u1726(((void*) ((&buf[(L)- 0]))), ((void*) ("]\012")), ((NI)2));
2492 L += ((NI)2);
2493 }
2494LA28_: ;
2495 {
2496 NimStringV2 T34_;
2497 if (!!((onUnhandledException__system_u3493 == NIM_NIL))) goto LA32_;
2498 T34_.len = 0; T34_.p = NIM_NIL;
2499 T34_ = cstrToNimstr(((NCSTRING) (buf)));
2500 onUnhandledException__system_u3493(T34_);
2501 }
2502 goto LA30_;
2503LA32_: ;
2504 {
2505 showErrorMessage__system_u3285(((NCSTRING) (buf)), L);
2506 }
2507LA30_: ;
2508}
2509N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledError__system_u3573)(Exception* e_p0) {
2510 {
2511 if (!!((unhandledExceptionHook__system_u2869 == NIM_NIL))) goto LA3_;
2512 unhandledExceptionHook__system_u2869(e_p0);
2513 }
2514LA3_: ;
2515 reportUnhandledErrorAux__system_u3494(e_p0);
2516}
2517N_LIB_PRIVATE N_NIMCALL(void, eqsink___stdZtypedthreads_u217)(Exception** dest_p0, Exception* src_p1) {
2518 {
2519 NIM_BOOL T3_;
2520 T3_ = (NIM_BOOL)0;
2521 T3_ = nimDecRefIsLast((*dest_p0));
2522 if (!T3_) goto LA4_;
2523 nimDestroyAndDispose((*dest_p0));
2524 }
2525LA4_: ;
2526 (*dest_p0) = src_p1;
2527}
2528N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void) {
2529 {
2530 NIM_BOOL T3_;
2531 T3_ = (NIM_BOOL)0;
2532 T3_ = nimInErrorMode__system_u3579;
2533 if (!(T3_)) goto LA4_;
2534 T3_ = !((currException__system_u3313 == ((Exception*) NIM_NIL)));
2535LA4_: ;
2536 if (!T3_) goto LA5_;
2537 reportUnhandledError__system_u3573(currException__system_u3313);
2538 eqsink___stdZtypedthreads_u217(&currException__system_u3313, ((Exception*) NIM_NIL));
2539 exit(((int)1));
2540 }
2541LA5_: ;
2542}
2543N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotdotatsdotdotatsdotdotatsnimatslibatssystemdotnim_Init000)(void) {
2544{
2545 registerSignalHandler__system_u3798();
2546 nimTestErrorFlag();
2547}
2548}
2549