// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore_spect_compare.c
// Function: spect_compare_selftest
static st_s* spect_compare_selftest( void )
{
    bcore_life_s* l = bcore_life_s_create();

    bcore_flect_define_parse_sc( "cmp_specs = { aware_t _; uz_t size; u2_t param1; s2_t; }" );
    vd_t specs = bcore_life_s_push_aware( l, bcore_inst_t_create( typeof( "cmp_specs" ) ) );

    {
        const bcore_via_s* v = bcore_via_s_get_aware( specs );
        bcore_via_p_nset_uz( v, specs, typeof( "size"   ), 10  );
        bcore_via_p_nset_u3( v, specs, typeof( "param1" ), 200 );
        bcore_via_p_nset_s3( v, specs, typeof( ""       ), -50 );
    }

    bcore_flect_define_parse_sc( "cmp_specs_arr = { aware_t _; u3_t flags; cmp_specs [] arr; }" );
    vd_t arr1 = bcore_life_s_push_aware( l, bcore_inst_t_create( typeof( "cmp_specs_arr" ) ) );

    const bcore_array_s* arr_p = bcore_array_s_get_aware( arr1 );

    for( uz_t i = 0; i < 100; i++ ) bcore_array_p_push( arr_p, arr1, sr_awc( specs ) );

    for( uz_t i = 0; i < bcore_array_p_get_size( arr_p, arr1 ); i++ )
    {
        vd_t specs = arr_p->get( arr_p, arr1, i ).o;
        const bcore_via_s* v = bcore_via_s_get_aware( specs );
        bcore_via_p_nset_uz( v, specs, typeof( "size" ), i );
    }

    const bcore_via_s* v = bcore_via_s_get_aware( specs );
    vd_t arr2 = bcore_life_s_push_aware( l, bcore_inst_a_clone( arr1 ) );

    ASSERT( bcore_compare_aware( arr1, arr2 ) == 0 );
    bcore_via_p_nset_uz( v, arr_p->get( arr_p, arr2, 5 ).o, typeof( "size" ), 20 );
    ASSERT( bcore_compare_aware( arr1, arr2 ) >  0 );
    bcore_via_p_nset_uz( v, arr_p->get( arr_p, arr2, 5 ).o, typeof( "size" ), 0 );
    ASSERT( bcore_compare_aware( arr1, arr2 ) <  0 );

    bcore_life_s_discard( l );
    return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movb $0x0, %al
callq 0xbfdd0
movq %rax, -0x8(%rbp)
leaq 0x73227(%rip), %rdi     # 0x1542b4
callq 0xa7750
movq -0x8(%rbp), %rax
movq %rax, -0xf8(%rbp)
leaq 0x73249(%rip), %rdi     # 0x1542ed
callq 0xe0ad0
movq %rax, %rdi
callq 0xe2ce0
movq -0xf8(%rbp), %rdi
movq %rax, %rsi
callq 0xc0460
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xe2d20
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xe8(%rbp)
leaq 0x72ba2(%rip), %rdi     # 0x153c90
callq 0xe0ad0
movq -0xf0(%rbp), %rdi
movq -0xe8(%rbp), %rsi
movq %rax, %rdx
movl $0xa, %ecx
callq 0xe2d40
movq -0x18(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq 0x731cc(%rip), %rdi     # 0x1542f7
callq 0xe0ad0
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rsi
movq %rax, %rdx
movl $0xc8, %ecx
callq 0xe2d80
movq -0x18(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xc8(%rbp)
leaq 0x718ba(%rip), %rdi     # 0x152a22
callq 0xe0ad0
movq -0xd0(%rbp), %rdi
movq -0xc8(%rbp), %rsi
movq %rax, %rdx
movq $-0x32, %rcx
callq 0xe2dc0
leaq 0x7316d(%rip), %rdi     # 0x1542fe
callq 0xa7750
movq -0x8(%rbp), %rax
movq %rax, -0xc0(%rbp)
leaq 0x73193(%rip), %rdi     # 0x15433b
callq 0xe0ad0
movq %rax, %rdi
callq 0xe2ce0
movq -0xc0(%rbp), %rdi
movq %rax, %rsi
callq 0xc0460
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0xe2e00
movq %rax, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
cmpq $0x64, -0x30(%rbp)
jae 0xe1245
movq -0x28(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x100(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0xe2e60
movq -0x108(%rbp), %rdi
movq -0x100(%rbp), %rsi
leaq -0x48(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xe2e20
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0xe11dd
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xe1df0
movq %rax, %rcx
movq -0x110(%rbp), %rax
cmpq %rcx, %rax
jae 0xe12f0
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x50(%rbp), %rcx
leaq -0x70(%rbp), %rdi
callq *%rax
movq -0x70(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
callq 0xe2d20
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x118(%rbp)
leaq 0x729d0(%rip), %rdi     # 0x153c90
callq 0xe0ad0
movq -0x120(%rbp), %rdi
movq -0x118(%rbp), %rsi
movq %rax, %rdx
movq -0x50(%rbp), %rcx
callq 0xe2d40
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0xe124d
movq -0x10(%rbp), %rdi
callq 0xe2d20
movq %rax, -0x80(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x20(%rbp), %rdi
callq 0xe2ed0
movq -0x128(%rbp), %rdi
movq %rax, %rsi
callq 0xc0460
movq %rax, -0x88(%rbp)
movq -0x20(%rbp), %rdi
movq -0x88(%rbp), %rsi
callq 0xe0090
cmpl $0x0, %eax
je 0xe1365
leaq 0x5265c(%rip), %rdi     # 0x13399f
leaq 0x72fff(%rip), %rsi     # 0x154349
leaq 0x7301f(%rip), %rdx     # 0x154370
leaq 0x72e74(%rip), %rcx     # 0x1541cc
movl $0x293, %r8d            # imm = 0x293
movb $0x0, %al
callq 0x9cea0
movq -0x80(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x28(%rbp), %rsi
movq -0x88(%rbp), %rdx
leaq -0xa0(%rbp), %rdi
movl $0x5, %ecx
callq *%rax
movq -0xa0(%rbp), %rax
movq %rax, -0x130(%rbp)
leaq 0x728ea(%rip), %rdi     # 0x153c90
callq 0xe0ad0
movq -0x138(%rbp), %rdi
movq -0x130(%rbp), %rsi
movq %rax, %rdx
movl $0x14, %ecx
callq 0xe2d40
movq -0x20(%rbp), %rdi
movq -0x88(%rbp), %rsi
callq 0xe0090
cmpl $0x0, %eax
jg 0xe1404
leaq 0x525bd(%rip), %rdi     # 0x13399f
leaq 0x72f9e(%rip), %rsi     # 0x154387
leaq 0x72f80(%rip), %rdx     # 0x154370
leaq 0x72dd5(%rip), %rcx     # 0x1541cc
movl $0x295, %r8d            # imm = 0x295
movb $0x0, %al
callq 0x9cea0
movq -0x80(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x28(%rbp), %rsi
movq -0x88(%rbp), %rdx
leaq -0xb8(%rbp), %rdi
movl $0x5, %ecx
callq *%rax
movq -0xb8(%rbp), %rax
movq %rax, -0x140(%rbp)
leaq 0x7284b(%rip), %rdi     # 0x153c90
callq 0xe0ad0
movq -0x148(%rbp), %rdi
movq -0x140(%rbp), %rsi
movq %rax, %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0xe2d40
movq -0x20(%rbp), %rdi
movq -0x88(%rbp), %rsi
callq 0xe0090
cmpl $0x0, %eax
jl 0xe14a2
leaq 0x5251f(%rip), %rdi     # 0x13399f
leaq 0x72f26(%rip), %rsi     # 0x1543ad
leaq 0x72ee2(%rip), %rdx     # 0x154370
leaq 0x72d37(%rip), %rcx     # 0x1541cc
movl $0x297, %r8d            # imm = 0x297
movb $0x0, %al
callq 0x9cea0
movq -0x8(%rbp), %rdi
callq 0xbfe00
xorl %eax, %eax
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
nopw %cs:(%rax,%rax)