/* Generated by Nim Compiler v0.16.0 */ /* (c) 2017 Andreas Rumpf */ /* The generated code is subject to the original license. */ /* Compiled for: Linux, amd64, gcc */ /* Command for C compiler: gcc -c -w -I/afs/athena.mit.edu/software/nim-lang_v0.16.0/nim-0.16.0/lib -o /afs/athena.mit.edu/software/nim-lang_v0.16.0/nim-0.16.0/nimcache/stdlib_algorithm.o /afs/athena.mit.edu/software/nim-lang_v0.16.0/nim-0.16.0/nimcache/stdlib_algorithm.c */ #define NIM_INTBITS 64 #include "nimbase.h" #undef linux typedef struct NimStringDesc NimStringDesc; typedef struct TGenericSeq TGenericSeq; typedef NU8 Sortorder_8iBc6wlNqBa9cju9cUAhUAxA; struct TGenericSeq { NI len; NI reserved; }; struct NimStringDesc { TGenericSeq Sup; NIM_CHAR data[SEQ_DECL_SIZE]; }; static N_INLINE(NI, HEX2A_mciSqxUij8SrsZknIQqvwwalgorithm)(NI x0, Sortorder_8iBc6wlNqBa9cju9cUAhUAxA order0); static N_INLINE(NI, subInt)(NI a0, NI b0); N_NOINLINE(void, raiseOverflow)(void); static N_INLINE(void, nimFrame)(TFrame* s0); N_NOINLINE(void, stackoverflow_II46IjNZztN9bmbxUD8dt8g)(void); static N_INLINE(void, popFrame)(void); N_NIMCALL(void, reverse_XQiN4wExsmIg8NFBmG3ObA)(NimStringDesc** a0, NI a0Len0, NI first0, NI last0); N_NOINLINE(void, raiseIndexError)(void); N_NIMCALL(void, unsureAsgnRef)(void** dest0, void* src0); static N_INLINE(NI, addInt)(NI a0, NI b0); static N_INLINE(NI, chckRange)(NI i0, NI a0, NI b0); N_NOINLINE(void, raiseRangeError)(NI64 val0); extern TFrame* frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw; static N_INLINE(NI, subInt)(NI a0, NI b0) { NI result0; { result0 = (NI)0; result0 = (NI)((NU64)(a0) - (NU64)(b0)); { NIM_BOOL LOC3; LOC3 = (NIM_BOOL)0; LOC3 = (((NI) 0) <= (NI)(result0 ^ a0)); if (LOC3) goto LA4; LOC3 = (((NI) 0) <= (NI)(result0 ^ (NI)((NU64) ~(b0)))); LA4: ; if (!LOC3) goto LA5; goto BeforeRet; } LA5: ; raiseOverflow(); }BeforeRet: ; return result0; } static N_INLINE(void, nimFrame)(TFrame* s0) { NI LOC1; LOC1 = (NI)0; { if (!(frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA4; LOC1 = ((NI) 0); } goto LA2; LA4: ; { LOC1 = ((NI) ((NI16)((*frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1)))); } LA2: ; (*s0).calldepth = ((NI16) (LOC1)); (*s0).prev = frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw; frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw = s0; { if (!((*s0).calldepth == ((NI16) 2000))) goto LA9; stackoverflow_II46IjNZztN9bmbxUD8dt8g(); } LA9: ; } static N_INLINE(void, popFrame)(void) { frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw = (*frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw).prev; } static N_INLINE(NI, HEX2A_mciSqxUij8SrsZknIQqvwwalgorithm)(NI x0, Sortorder_8iBc6wlNqBa9cju9cUAhUAxA order0) { NI result0; NI y0; NI T_JdC9c6SaUkvO1XjYuWP1JWQ_2; NI T_JdC9c6SaUkvO1XjYuWP1JWQ_3; nimfr("*", "algorithm.nim") result0 = (NI)0; nimln(24, "algorithm.nim"); T_JdC9c6SaUkvO1XjYuWP1JWQ_2 = subInt(((NI) (order0)), ((NI) 1)); y0 = (NI)(T_JdC9c6SaUkvO1XjYuWP1JWQ_2); nimln(25, "algorithm.nim"); T_JdC9c6SaUkvO1XjYuWP1JWQ_3 = subInt((NI)(x0 ^ ((NI) (y0))), ((NI) (y0))); result0 = (NI)(T_JdC9c6SaUkvO1XjYuWP1JWQ_3); popFrame(); return result0; } static N_INLINE(NI, addInt)(NI a0, NI b0) { NI result0; { result0 = (NI)0; result0 = (NI)((NU64)(a0) + (NU64)(b0)); { NIM_BOOL LOC3; LOC3 = (NIM_BOOL)0; LOC3 = (((NI) 0) <= (NI)(result0 ^ a0)); if (LOC3) goto LA4; LOC3 = (((NI) 0) <= (NI)(result0 ^ b0)); LA4: ; if (!LOC3) goto LA5; goto BeforeRet; } LA5: ; raiseOverflow(); }BeforeRet: ; return result0; } N_NIMCALL(void, reverse_XQiN4wExsmIg8NFBmG3ObA)(NimStringDesc** a0, NI a0Len0, NI first0, NI last0) { NI x0; NI y0; nimfr("reverse", "algorithm.nim") nimln(40, "algorithm.nim"); x0 = first0; nimln(41, "algorithm.nim"); y0 = last0; { nimln(42, "algorithm.nim"); while (1) { NimStringDesc* LOC3; NI T_JdC9c6SaUkvO1XjYuWP1JWQ_4; NI T_JdC9c6SaUkvO1XjYuWP1JWQ_5; if (!(((NI) (x0)) < ((NI) (y0)))) goto LA2; nimln(43, "algorithm.nim"); LOC3 = (NimStringDesc*)0; if ((NU)(x0) >= (NU)(a0Len0)) raiseIndexError(); if ((NU)(y0) >= (NU)(a0Len0)) raiseIndexError(); LOC3 = a0[x0]; unsureAsgnRef((void**) (&a0[x0]), a0[y0]); unsureAsgnRef((void**) (&a0[y0]), LOC3); nimln(44, "algorithm.nim"); T_JdC9c6SaUkvO1XjYuWP1JWQ_4 = subInt(y0, ((NI) 1)); if (T_JdC9c6SaUkvO1XjYuWP1JWQ_4 < 0 || T_JdC9c6SaUkvO1XjYuWP1JWQ_4 > IL64(9223372036854775807)) raiseOverflow(); y0 = (NI)(T_JdC9c6SaUkvO1XjYuWP1JWQ_4); nimln(45, "algorithm.nim"); T_JdC9c6SaUkvO1XjYuWP1JWQ_5 = addInt(x0, ((NI) 1)); if (T_JdC9c6SaUkvO1XjYuWP1JWQ_5 < 0 || T_JdC9c6SaUkvO1XjYuWP1JWQ_5 > IL64(9223372036854775807)) raiseOverflow(); x0 = (NI)(T_JdC9c6SaUkvO1XjYuWP1JWQ_5); } LA2: ; } popFrame(); } static N_INLINE(NI, chckRange)(NI i0, NI a0, NI b0) { NI result0; { result0 = (NI)0; { NIM_BOOL LOC3; LOC3 = (NIM_BOOL)0; LOC3 = (a0 <= i0); if (!(LOC3)) goto LA4; LOC3 = (i0 <= b0); LA4: ; if (!LOC3) goto LA5; result0 = i0; goto BeforeRet; } goto LA1; LA5: ; { raiseRangeError(((NI64) (i0))); } LA1: ; }BeforeRet: ; return result0; } N_NIMCALL(void, reverse_LoixoqZetR6FfezoPedx8w)(NimStringDesc** a0, NI a0Len0) { nimfr("reverse", "algorithm.nim") nimln(49, "algorithm.nim"); reverse_XQiN4wExsmIg8NFBmG3ObA(a0, a0Len0, ((NI) 0), ((NI)chckRange((a0Len0-1), ((NI) 0), ((NI) IL64(9223372036854775807))))); popFrame(); } NIM_EXTERNC N_NOINLINE(void, stdlib_algorithmInit000)(void) { nimfr("algorithm", "algorithm.nim") popFrame(); } NIM_EXTERNC N_NOINLINE(void, stdlib_algorithmDatInit000)(void) { }