// File: /workspace/github_c_makefile_star2_O3/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 0x1cb6d(%rip), %rsi     # 0x6c2c8
leaq 0x1c97b(%rip), %r9      # 0x6c0dd
leaq -0x130(%rbp), %rbx
movq %rbx, %rdi
movl $0x1, %edx
movl $0x26, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x12a50
movl $0x38332e31, %eax       # imm = 0x38332E31
xorl (%rbx), %eax
movl $0x302e38, %ecx         # imm = 0x302E38
xorl 0x3(%rbx), %ecx
orl %eax, %ecx
jne 0x4fada
movabsq $-0x77fffffffffff, %rbx # imm = 0xFFF8800000000001
movq %rbx, %rdi
callq 0x4ece6
movq %rax, %r14
movq %rbx, %rdi
callq 0x4ece6
movq %r14, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4faf9
movabsq $-0x7000000000000, %r14 # imm = 0xFFF9000000000000
movq %r14, %rdi
callq 0x4ece6
movq %rax, %r15
movq %r14, %rdi
callq 0x4ece6
movq %r15, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4fb18
incq %r14
movq %r14, %rdi
callq 0x4ece6
movq %rax, %r15
movq %r14, %rdi
callq 0x4ece6
movq %r15, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4fb37
movsd 0x4af0(%rip), %xmm0     # 0x54318
callq 0x4ee44
movq %rax, %r14
movsd 0x4ae0(%rip), %xmm0     # 0x54318
callq 0x4ee44
movq %r14, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4fb56
movsd 0x2c28(%rip), %xmm0     # 0x52480
callq 0x4ee44
movq %rax, %r14
movsd 0x2c18(%rip), %xmm0     # 0x52480
callq 0x4ee44
movq %r14, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4fb75
movsd 0x1ca20(%rip), %xmm0    # 0x6c2a8
callq 0x4ee44
movq %rax, %r14
movsd 0x1ca10(%rip), %xmm0    # 0x6c2a8
callq 0x4ee44
movq %r14, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4fb94
movsd 0x2bc0(%rip), %xmm0     # 0x52478
callq 0x4ee44
movq %rax, %r14
movsd 0x2bb0(%rip), %xmm0     # 0x52478
callq 0x4ee44
movq %r14, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4fbb3
movsd 0x1c9c8(%rip), %xmm0    # 0x6c2b0
callq 0x4ee44
movq %rax, %r14
movsd 0x1c9b8(%rip), %xmm0    # 0x6c2b0
callq 0x4ee44
movq %r14, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4fbd2
movsd 0x1c9a0(%rip), %xmm0    # 0x6c2b8
callq 0x4ee44
movq %rax, %r14
movsd 0x1c990(%rip), %xmm0    # 0x6c2b8
callq 0x4ee44
movq %r14, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4fbf1
movsd 0x106f8(%rip), %xmm0    # 0x60040
callq 0x4ee44
movq %rax, %xmm0
ucomisd %xmm0, %xmm0
jp 0x4fc10
movabsq $-0x6000000000000, %r14 # imm = 0xFFFA000000000000
leaq 0x1cc1d(%rip), %r15     # 0x6c58a
movq %r15, %rdi
callq 0x4482c
movq %rax, %rdi
movq %r14, %rsi
callq 0x4ed39
movq %rax, %r12
movq %r15, %rdi
callq 0x4482c
movq %rax, %rdi
movq %r14, %rsi
callq 0x4ed39
movq %r12, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4fc4f
leaq 0x6b64(%rip), %r15      # 0x56514
movq %r15, %rdi
callq 0x47261
movabsq $-0x5800000000000, %r12 # imm = 0xFFFA800000000000
movq %rax, %rdi
movq %r12, %rsi
callq 0x4ed39
movq %rax, %r13
movq %r15, %rdi
callq 0x47261
movq %rax, %rdi
movq %r12, %rsi
callq 0x4ed39
movq %r13, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4fc6e
movl $0x3, %edi
callq 0x47fa0
movq %rax, %r12
movq %rbx, %rdi
callq 0x4ece6
movq %rax, (%r12)
movsd 0x1c8a9(%rip), %xmm0    # 0x6c2c0
callq 0x4ee44
movq %rax, 0x8(%r12)
leaq 0x1cbee(%rip), %r15     # 0x6c616
movq %r15, %rdi
callq 0x4482c
movq %rax, %rdi
movq %r14, %rsi
callq 0x4ed39
movq %rax, 0x10(%r12)
movq %r12, %rdi
callq 0x47fd1
movabsq $-0x4000000000000, %r12 # imm = 0xFFFC000000000000
movq %rax, %rdi
movq %r12, %rsi
callq 0x4ed39
movq %rax, %r13
movl $0x3, %edi
callq 0x47fa0
movq %rbx, %rdi
movq %rax, %rbx
callq 0x4ece6
movq %rax, (%rbx)
movsd 0x1c840(%rip), %xmm0    # 0x6c2c0
callq 0x4ee44
movq %rax, 0x8(%rbx)
movq %r15, %rdi
callq 0x4482c
movq %rax, %rdi
movq %r14, %rsi
callq 0x4ed39
movq %rax, 0x10(%rbx)
movq %rbx, %rdi
callq 0x47fd1
movq %rax, %rdi
movq %r12, %rsi
callq 0x4ed39
movq %r13, %rdi
movq %rax, %rsi
callq 0x4a1bd
testl %eax, %eax
je 0x4fc8d
xorl %eax, %eax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1c7f2(%rip), %rdi     # 0x6c2d3
leaq 0x1c814(%rip), %rsi     # 0x6c2fc
leaq 0x1c824(%rip), %rcx     # 0x6c313
movl $0x29, %edx
callq 0x123f0
leaq 0x1c825(%rip), %rdi     # 0x6c325
leaq 0x1c7f5(%rip), %rsi     # 0x6c2fc
leaq 0x1c805(%rip), %rcx     # 0x6c313
movl $0x2c, %edx
callq 0x123f0
leaq 0x1c837(%rip), %rdi     # 0x6c356
leaq 0x1c7d6(%rip), %rsi     # 0x6c2fc
leaq 0x1c7e6(%rip), %rcx     # 0x6c313
movl $0x2d, %edx
callq 0x123f0
leaq 0x1c84d(%rip), %rdi     # 0x6c38b
leaq 0x1c7b7(%rip), %rsi     # 0x6c2fc
leaq 0x1c7c7(%rip), %rcx     # 0x6c313
movl $0x2e, %edx
callq 0x123f0
leaq 0x1c861(%rip), %rdi     # 0x6c3be
leaq 0x1c798(%rip), %rsi     # 0x6c2fc
leaq 0x1c7a8(%rip), %rcx     # 0x6c313
movl $0x2f, %edx
callq 0x123f0
leaq 0x1c87d(%rip), %rdi     # 0x6c3f9
leaq 0x1c779(%rip), %rsi     # 0x6c2fc
leaq 0x1c789(%rip), %rcx     # 0x6c313
movl $0x30, %edx
callq 0x123f0
leaq 0x1c8a9(%rip), %rdi     # 0x6c444
leaq 0x1c75a(%rip), %rsi     # 0x6c2fc
leaq 0x1c76a(%rip), %rcx     # 0x6c313
movl $0x31, %edx
callq 0x123f0
leaq 0x1c8c7(%rip), %rdi     # 0x6c481
leaq 0x1c73b(%rip), %rsi     # 0x6c2fc
leaq 0x1c74b(%rip), %rcx     # 0x6c313
movl $0x32, %edx
callq 0x123f0
leaq 0x1c8f3(%rip), %rdi     # 0x6c4cc
leaq 0x1c71c(%rip), %rsi     # 0x6c2fc
leaq 0x1c72c(%rip), %rcx     # 0x6c313
movl $0x33, %edx
callq 0x123f0
leaq 0x1c911(%rip), %rdi     # 0x6c509
leaq 0x1c6fd(%rip), %rsi     # 0x6c2fc
leaq 0x1c70d(%rip), %rcx     # 0x6c313
movl $0x34, %edx
callq 0x123f0
movsd 0x10428(%rip), %xmm0    # 0x60040
callq 0x4ee44
movabsq $0x7800000000000, %rcx  # imm = 0x7800000000000
testq %rcx, %rax
je 0x4f95c
leaq 0x1c91d(%rip), %rdi     # 0x6c554
leaq 0x1c6be(%rip), %rsi     # 0x6c2fc
leaq 0x1c6ce(%rip), %rcx     # 0x6c313
movl $0x36, %edx
callq 0x123f0
leaq 0x1c93e(%rip), %rdi     # 0x6c594
leaq 0x1c69f(%rip), %rsi     # 0x6c2fc
leaq 0x1c6af(%rip), %rcx     # 0x6c313
movl $0x3d, %edx
callq 0x123f0
leaq 0x1c966(%rip), %rdi     # 0x6c5db
leaq 0x1c680(%rip), %rsi     # 0x6c2fc
leaq 0x1c690(%rip), %rcx     # 0x6c313
movl $0x3e, %edx
callq 0x123f0
leaq 0x1c985(%rip), %rdi     # 0x6c619
leaq 0x1c661(%rip), %rsi     # 0x6c2fc
leaq 0x1c671(%rip), %rcx     # 0x6c313
movl $0x4c, %edx
callq 0x123f0