// File: /workspace/github_c_makefile_star2_O1/janet-lang[P]janet/src/boot/system_test.c
// Function: system_test
int system_test() {

#ifdef JANET_32
    assert(sizeof(void *) == 4);
#else
    assert(sizeof(void *) == 8);
#endif

    /* Check the version defines are self consistent */
    char version_combined[256];
    sprintf(version_combined, "%d.%d.%d%s", JANET_VERSION_MAJOR, JANET_VERSION_MINOR, JANET_VERSION_PATCH, JANET_VERSION_EXTRA);
    assert(!strcmp(JANET_VERSION, version_combined));

    /* Reflexive testing and nanbox testing */
    assert(janet_equals(janet_wrap_nil(), janet_wrap_nil()));
    assert(janet_equals(janet_wrap_false(), janet_wrap_false()));
    assert(janet_equals(janet_wrap_true(), janet_wrap_true()));
    assert(janet_equals(janet_wrap_integer(1), janet_wrap_integer(1)));
    assert(janet_equals(janet_wrap_integer(INT32_MAX), janet_wrap_integer(INT32_MAX)));
    assert(janet_equals(janet_wrap_integer(-2), janet_wrap_integer(-2)));
    assert(janet_equals(janet_wrap_integer(INT32_MIN), janet_wrap_integer(INT32_MIN)));
    assert(janet_equals(janet_wrap_number(1.4), janet_wrap_number(1.4)));
    assert(janet_equals(janet_wrap_number(3.14159265), janet_wrap_number(3.14159265)));
#ifdef NAN
    assert(janet_checktype(janet_wrap_number(NAN), JANET_NUMBER));
#else
    assert(janet_checktype(janet_wrap_number(0.0 / 0.0), JANET_NUMBER));
#endif

    assert(NULL != &janet_wrap_nil);

    assert(janet_equals(janet_cstringv("a string."), janet_cstringv("a string.")));
    assert(janet_equals(janet_csymbolv("sym"), janet_csymbolv("sym")));

    Janet *t1 = janet_tuple_begin(3);
    t1[0] = janet_wrap_nil();
    t1[1] = janet_wrap_integer(4);
    t1[2] = janet_cstringv("hi");
    Janet tuple1 = janet_wrap_tuple(janet_tuple_end(t1));

    Janet *t2 = janet_tuple_begin(3);
    t2[0] = janet_wrap_nil();
    t2[1] = janet_wrap_integer(4);
    t2[2] = janet_cstringv("hi");
    Janet tuple2 = janet_wrap_tuple(janet_tuple_end(t2));

    assert(janet_equals(tuple1, tuple2));

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
leaq 0x1cf19(%rip), %rsi     # 0x6d2e8
leaq 0x1cd27(%rip), %r9      # 0x6d0fd
leaq -0x130(%rbp), %rbx
movq %rbx, %rdi
movl $0x1, %edx
movl $0x26, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x12a60
movl $0x38332e31, %eax       # imm = 0x38332E31
xorl (%rbx), %eax
movl $0x302e38, %ecx         # imm = 0x302E38
xorl 0x3(%rbx), %ecx
orl %eax, %ecx
jne 0x5074e
movabsq $-0x77fffffffffff, %rbx # imm = 0xFFF8800000000001
movq %rbx, %rdi
callq 0x4f95a
movq %rax, %r14
movq %rbx, %rdi
callq 0x4f95a
movq %r14, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x5076d
movabsq $-0x7000000000000, %r14 # imm = 0xFFF9000000000000
movq %r14, %rdi
callq 0x4f95a
movq %rax, %r15
movq %r14, %rdi
callq 0x4f95a
movq %r15, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x5078c
incq %r14
movq %r14, %rdi
callq 0x4f95a
movq %rax, %r15
movq %r14, %rdi
callq 0x4f95a
movq %r15, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x507ab
movsd 0x4e7c(%rip), %xmm0     # 0x55318
callq 0x4fab8
movq %rax, %r14
movsd 0x4e6c(%rip), %xmm0     # 0x55318
callq 0x4fab8
movq %r14, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x507ca
movsd 0x2fb4(%rip), %xmm0     # 0x53480
callq 0x4fab8
movq %rax, %r14
movsd 0x2fa4(%rip), %xmm0     # 0x53480
callq 0x4fab8
movq %r14, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x507e9
movsd 0x1cdcc(%rip), %xmm0    # 0x6d2c8
callq 0x4fab8
movq %rax, %r14
movsd 0x1cdbc(%rip), %xmm0    # 0x6d2c8
callq 0x4fab8
movq %r14, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x50808
movsd 0x2f4c(%rip), %xmm0     # 0x53478
callq 0x4fab8
movq %rax, %r14
movsd 0x2f3c(%rip), %xmm0     # 0x53478
callq 0x4fab8
movq %r14, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x50827
movsd 0x1cd74(%rip), %xmm0    # 0x6d2d0
callq 0x4fab8
movq %rax, %r14
movsd 0x1cd64(%rip), %xmm0    # 0x6d2d0
callq 0x4fab8
movq %r14, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x50846
movsd 0x1cd4c(%rip), %xmm0    # 0x6d2d8
callq 0x4fab8
movq %rax, %r14
movsd 0x1cd3c(%rip), %xmm0    # 0x6d2d8
callq 0x4fab8
movq %r14, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x50865
movsd 0x10a94(%rip), %xmm0    # 0x61050
callq 0x4fab8
movq %rax, %xmm0
ucomisd %xmm0, %xmm0
jp 0x50884
movabsq $-0x6000000000000, %r14 # imm = 0xFFFA000000000000
leaq 0x1cfc9(%rip), %r15     # 0x6d5aa
movq %r15, %rdi
callq 0x4516c
movq %rax, %rdi
movq %r14, %rsi
callq 0x4f9ad
movq %rax, %r12
movq %r15, %rdi
callq 0x4516c
movq %rax, %rdi
movq %r14, %rsi
callq 0x4f9ad
movq %r12, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x508c3
leaq 0x6ef0(%rip), %r15      # 0x57514
movq %r15, %rdi
callq 0x47cd3
movabsq $-0x5800000000000, %r12 # imm = 0xFFFA800000000000
movq %rax, %rdi
movq %r12, %rsi
callq 0x4f9ad
movq %rax, %r13
movq %r15, %rdi
callq 0x47cd3
movq %rax, %rdi
movq %r12, %rsi
callq 0x4f9ad
movq %r13, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x508e2
movl $0x3, %edi
callq 0x48a50
movq %rax, %r12
movq %rbx, %rdi
callq 0x4f95a
movq %rax, (%r12)
movsd 0x1cc55(%rip), %xmm0    # 0x6d2e0
callq 0x4fab8
movq %rax, 0x8(%r12)
leaq 0x1cf9a(%rip), %r15     # 0x6d636
movq %r15, %rdi
callq 0x4516c
movq %rax, %rdi
movq %r14, %rsi
callq 0x4f9ad
movq %rax, 0x10(%r12)
movq %r12, %rdi
callq 0x48a81
movabsq $-0x4000000000000, %r12 # imm = 0xFFFC000000000000
movq %rax, %rdi
movq %r12, %rsi
callq 0x4f9ad
movq %rax, %r13
movl $0x3, %edi
callq 0x48a50
movq %rbx, %rdi
movq %rax, %rbx
callq 0x4f95a
movq %rax, (%rbx)
movsd 0x1cbec(%rip), %xmm0    # 0x6d2e0
callq 0x4fab8
movq %rax, 0x8(%rbx)
movq %r15, %rdi
callq 0x4516c
movq %rax, %rdi
movq %r14, %rsi
callq 0x4f9ad
movq %rax, 0x10(%rbx)
movq %rbx, %rdi
callq 0x48a81
movq %rax, %rdi
movq %r12, %rsi
callq 0x4f9ad
movq %r13, %rdi
movq %rax, %rsi
callq 0x4acce
testl %eax, %eax
je 0x50901
xorl %eax, %eax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1cb9e(%rip), %rdi     # 0x6d2f3
leaq 0x1cbc0(%rip), %rsi     # 0x6d31c
leaq 0x1cbd0(%rip), %rcx     # 0x6d333
movl $0x29, %edx
callq 0x123f0
leaq 0x1cbd1(%rip), %rdi     # 0x6d345
leaq 0x1cba1(%rip), %rsi     # 0x6d31c
leaq 0x1cbb1(%rip), %rcx     # 0x6d333
movl $0x2c, %edx
callq 0x123f0
leaq 0x1cbe3(%rip), %rdi     # 0x6d376
leaq 0x1cb82(%rip), %rsi     # 0x6d31c
leaq 0x1cb92(%rip), %rcx     # 0x6d333
movl $0x2d, %edx
callq 0x123f0
leaq 0x1cbf9(%rip), %rdi     # 0x6d3ab
leaq 0x1cb63(%rip), %rsi     # 0x6d31c
leaq 0x1cb73(%rip), %rcx     # 0x6d333
movl $0x2e, %edx
callq 0x123f0
leaq 0x1cc0d(%rip), %rdi     # 0x6d3de
leaq 0x1cb44(%rip), %rsi     # 0x6d31c
leaq 0x1cb54(%rip), %rcx     # 0x6d333
movl $0x2f, %edx
callq 0x123f0
leaq 0x1cc29(%rip), %rdi     # 0x6d419
leaq 0x1cb25(%rip), %rsi     # 0x6d31c
leaq 0x1cb35(%rip), %rcx     # 0x6d333
movl $0x30, %edx
callq 0x123f0
leaq 0x1cc55(%rip), %rdi     # 0x6d464
leaq 0x1cb06(%rip), %rsi     # 0x6d31c
leaq 0x1cb16(%rip), %rcx     # 0x6d333
movl $0x31, %edx
callq 0x123f0
leaq 0x1cc73(%rip), %rdi     # 0x6d4a1
leaq 0x1cae7(%rip), %rsi     # 0x6d31c
leaq 0x1caf7(%rip), %rcx     # 0x6d333
movl $0x32, %edx
callq 0x123f0
leaq 0x1cc9f(%rip), %rdi     # 0x6d4ec
leaq 0x1cac8(%rip), %rsi     # 0x6d31c
leaq 0x1cad8(%rip), %rcx     # 0x6d333
movl $0x33, %edx
callq 0x123f0
leaq 0x1ccbd(%rip), %rdi     # 0x6d529
leaq 0x1caa9(%rip), %rsi     # 0x6d31c
leaq 0x1cab9(%rip), %rcx     # 0x6d333
movl $0x34, %edx
callq 0x123f0
movsd 0x107c4(%rip), %xmm0    # 0x61050
callq 0x4fab8
movabsq $0x7800000000000, %rcx  # imm = 0x7800000000000
testq %rcx, %rax
je 0x505d0
leaq 0x1ccc9(%rip), %rdi     # 0x6d574
leaq 0x1ca6a(%rip), %rsi     # 0x6d31c
leaq 0x1ca7a(%rip), %rcx     # 0x6d333
movl $0x36, %edx
callq 0x123f0
leaq 0x1ccea(%rip), %rdi     # 0x6d5b4
leaq 0x1ca4b(%rip), %rsi     # 0x6d31c
leaq 0x1ca5b(%rip), %rcx     # 0x6d333
movl $0x3d, %edx
callq 0x123f0
leaq 0x1cd12(%rip), %rdi     # 0x6d5fb
leaq 0x1ca2c(%rip), %rsi     # 0x6d31c
leaq 0x1ca3c(%rip), %rcx     # 0x6d333
movl $0x3e, %edx
callq 0x123f0
leaq 0x1cd31(%rip), %rdi     # 0x6d639
leaq 0x1ca0d(%rip), %rsi     # 0x6d31c
leaq 0x1ca1d(%rip), %rcx     # 0x6d333
movl $0x4c, %edx
callq 0x123f0