// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore_spect_via.c
// Function: spect_via_selftest
static st_s* spect_via_selftest( void )
{
    bcore_life_s* l = bcore_life_s_create();
    bcore_flect_define_parse_sc( "via_specs = { uz_t size = 3; u2_t param1 = 1234; s2_t = -5; }" );
    sr_s via_specs = bcore_life_s_push_sr( l, bcore_inst_t_create_sr( typeof( "via_specs" ) ) );

    ASSERT( *( uz_t* )bcore_via_x_nget( via_specs, typeof( "size"   ) ).o ==    3 );
    ASSERT( *( u2_t* )bcore_via_x_nget( via_specs, typeof( "param1" ) ).o == 1234 );
    ASSERT( *( s2_t* )bcore_via_x_nget( via_specs, typeof( "" ) ).o       ==   -5 );

    {
        bcore_via_x_nset_uz( via_specs, typeof( "size"   ),  10 );
        bcore_via_x_nset_u3( via_specs, typeof( "param1" ), 200 );
        bcore_via_x_nset_s3( via_specs, typeof( "" ), -50 );
    }

    ASSERT( *( uz_t* )bcore_via_x_nget( via_specs, typeof( "size"   ) ).o ==  10 );
    ASSERT( *( u2_t* )bcore_via_x_nget( via_specs, typeof( "param1" ) ).o == 200 );
    ASSERT( *( s2_t* )bcore_via_x_nget( via_specs, typeof( "" ) ).o       == -50 );

    bcore_flect_define_parse_sc( "via_specs_arr = { aware_t _; u3_t flags; via_specs [] arr; }" );
    sr_s via_specs_arr = bcore_life_s_push_sr( l, bcore_inst_t_create_sr( typeof( "via_specs_arr" ) ) );
    sr_s arr = sr_cp( bcore_life_s_push_sr( l, bcore_via_x_nget( via_specs_arr, typeof( "arr" ) ) ), TYPEOF_bcore_array_s );
    uz_t arr_size = 100000;

    for( uz_t i = 0; i < arr_size; i++ ) bcore_array_x_push( arr, via_specs );
    for( uz_t i = 0; i < arr_size; i++ ) bcore_via_x_nset_uz( bcore_array_x_get( arr, i ), typeof( "size" ), i );

    sr_s via_specs_arr2 = bcore_life_s_push_sr( l, bcore_inst_t_create_sr( typeof( "via_specs_arr" ) ) );

    bcore_via_x_nset( via_specs_arr2, typeof( "arr" ), bcore_via_x_nget( via_specs_arr, typeof( "arr" ) ) );

    sr_s arr2 = bcore_life_s_push_sr( l, bcore_via_x_nget( via_specs_arr2, typeof( "arr" ) ) );

    for( uz_t i = 0; i < arr_size; i++ )
    {
        sr_s via_specs_l = bcore_life_s_push_sr( l, bcore_array_x_get( arr2, i ) );
        ASSERT( i == *( uz_t* )bcore_via_x_nget( via_specs_l, typeof( "size" ) ).o );
    }

    ASSERT( bcore_array_x_get_size( arr ) == arr_size );

    bcore_life_s_discard( l );
    return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movb $0x0, %al
callq 0xbfdd0
movq %rax, -0x8(%rbp)
leaq 0x5c95d(%rip), %rdi     # 0x15604a
callq 0xa7750
movq -0x8(%rbp), %rax
movq %rax, -0x240(%rbp)
leaq 0x5c984(%rip), %rdi     # 0x156088
callq 0xf8a60
movq %rax, %rsi
leaq -0x38(%rbp), %rdi
callq 0xf5d80
movq -0x240(%rbp), %rsi
leaq -0x20(%rbp), %rdi
leaq -0x38(%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 0xc02c0
leaq 0x5a547(%rip), %rdi     # 0x153c90
callq 0xf8a60
movq %rax, %rsi
leaq -0x50(%rbp), %rdi
leaq -0x20(%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 0xf8a80
movq -0x50(%rbp), %rax
cmpq $0x3, (%rax)
je 0xf97aa
leaq 0x3a217(%rip), %rdi     # 0x13399f
leaq 0x5c903(%rip), %rsi     # 0x156092
leaq 0x5c93d(%rip), %rdx     # 0x1560d3
leaq 0x5c382(%rip), %rcx     # 0x155b1f
movl $0x2e6, %r8d            # imm = 0x2E6
movb $0x0, %al
callq 0x9cea0
leaq 0x5ab46(%rip), %rdi     # 0x1542f7
callq 0xf8a60
movq %rax, %rsi
leaq -0x68(%rbp), %rdi
leaq -0x20(%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 0xf8a80
movq -0x68(%rbp), %rax
cmpl $0x4d2, (%rax)          # imm = 0x4D2
je 0xf9814
leaq 0x3a1ad(%rip), %rdi     # 0x13399f
leaq 0x5c8ed(%rip), %rsi     # 0x1560e6
leaq 0x5c8d3(%rip), %rdx     # 0x1560d3
leaq 0x5c318(%rip), %rcx     # 0x155b1f
movl $0x2e7, %r8d            # imm = 0x2E7
movb $0x0, %al
callq 0x9cea0
leaq 0x59207(%rip), %rdi     # 0x152a22
callq 0xf8a60
movq %rax, %rsi
leaq -0x80(%rbp), %rdi
leaq -0x20(%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 0xf8a80
movq -0x80(%rbp), %rax
cmpl $-0x5, (%rax)
je 0xf987b
leaq 0x3a146(%rip), %rdi     # 0x13399f
leaq 0x5c8cc(%rip), %rsi     # 0x15612c
leaq 0x5c86c(%rip), %rdx     # 0x1560d3
leaq 0x5c2b1(%rip), %rcx     # 0x155b1f
movl $0x2e8, %r8d            # imm = 0x2E8
movb $0x0, %al
callq 0x9cea0
leaq 0x5a40e(%rip), %rdi     # 0x153c90
callq 0xf8a60
movq %rax, %rdi
leaq -0x20(%rbp), %rax
movl $0xa, %esi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xf8bd0
leaq 0x5aa3f(%rip), %rdi     # 0x1542f7
callq 0xf8a60
movq %rax, %rdi
leaq -0x20(%rbp), %rax
movl $0xc8, %esi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xf8b20
leaq 0x59134(%rip), %rdi     # 0x152a22
callq 0xf8a60
movq %rax, %rdi
leaq -0x20(%rbp), %rax
movq $-0x32, %rsi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xfa680
leaq 0x5a36a(%rip), %rdi     # 0x153c90
callq 0xf8a60
movq %rax, %rsi
leaq -0x98(%rbp), %rdi
leaq -0x20(%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 0xf8a80
movq -0x98(%rbp), %rax
cmpq $0xa, (%rax)
je 0xf998d
leaq 0x3a034(%rip), %rdi     # 0x13399f
leaq 0x5c7f8(%rip), %rsi     # 0x15616a
leaq 0x5c75a(%rip), %rdx     # 0x1560d3
leaq 0x5c19f(%rip), %rcx     # 0x155b1f
movl $0x2f0, %r8d            # imm = 0x2F0
movb $0x0, %al
callq 0x9cea0
leaq 0x5a963(%rip), %rdi     # 0x1542f7
callq 0xf8a60
movq %rax, %rsi
leaq -0xb0(%rbp), %rdi
leaq -0x20(%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 0xf8a80
movq -0xb0(%rbp), %rax
cmpl $0xc8, (%rax)
je 0xf99fd
leaq 0x39fc4(%rip), %rdi     # 0x13399f
leaq 0x5c7ca(%rip), %rsi     # 0x1561ac
leaq 0x5c6ea(%rip), %rdx     # 0x1560d3
leaq 0x5c12f(%rip), %rcx     # 0x155b1f
movl $0x2f1, %r8d            # imm = 0x2F1
movb $0x0, %al
callq 0x9cea0
leaq 0x5901e(%rip), %rdi     # 0x152a22
callq 0xf8a60
movq %rax, %rsi
leaq -0xc8(%rbp), %rdi
leaq -0x20(%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 0xf8a80
movq -0xc8(%rbp), %rax
cmpl $-0x32, (%rax)
je 0xf9a6a
leaq 0x39f57(%rip), %rdi     # 0x13399f
leaq 0x5c7a2(%rip), %rsi     # 0x1561f1
leaq 0x5c67d(%rip), %rdx     # 0x1560d3
leaq 0x5c0c2(%rip), %rcx     # 0x155b1f
movl $0x2f2, %r8d            # imm = 0x2F2
movb $0x0, %al
callq 0x9cea0
leaq 0x5c7bf(%rip), %rdi     # 0x156230
callq 0xa7750
movq -0x8(%rbp), %rax
movq %rax, -0x250(%rbp)
leaq 0x5c7e5(%rip), %rdi     # 0x15626d
callq 0xf8a60
movq %rax, %rsi
leaq -0xf8(%rbp), %rdi
callq 0xf5d80
movq -0x250(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
leaq -0xf8(%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 0xc02c0
movq -0x8(%rbp), %rax
movq %rax, -0x248(%rbp)
leaq 0x58c36(%rip), %rdi     # 0x152717
callq 0xf8a60
movq %rax, %rsi
leaq -0x140(%rbp), %rdi
leaq -0xe0(%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 0xf8a80
movq -0x248(%rbp), %rsi
leaq -0x128(%rbp), %rdi
leaq -0x140(%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 0xc02c0
leaq -0x110(%rbp), %rdi
leaq -0x128(%rbp), %rax
movabsq $-0x5073d588c3beb52e, %rsi # imm = 0xAF8C2A773C414AD2
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xfa730
movq $0x186a0, -0x148(%rbp) # imm = 0x186A0
movq $0x0, -0x150(%rbp)
movq -0x150(%rbp), %rax
cmpq -0x148(%rbp), %rax
jae 0xf9bfb
leaq -0x110(%rbp), %rcx
leaq -0x20(%rbp), %rax
movq (%rcx), %rdx
movq %rdx, (%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
callq 0xf8e90
movq -0x150(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x150(%rbp)
jmp 0xf9b94
movq $0x0, -0x158(%rbp)
movq -0x158(%rbp), %rax
cmpq -0x148(%rbp), %rax
jae 0xf9c9f
movq -0x158(%rbp), %rsi
leaq -0x170(%rbp), %rdi
leaq -0x110(%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 0xfa790
leaq 0x5a03c(%rip), %rdi     # 0x153c90
callq 0xf8a60
movq %rax, %rdi
movq -0x158(%rbp), %rsi
leaq -0x170(%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 0xf8bd0
movq -0x158(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x158(%rbp)
jmp 0xf9c06
movq -0x8(%rbp), %rax
movq %rax, -0x268(%rbp)
leaq 0x5c5bc(%rip), %rdi     # 0x15626d
callq 0xf8a60
movq %rax, %rsi
leaq -0x1a0(%rbp), %rdi
callq 0xf5d80
movq -0x268(%rbp), %rsi
leaq -0x188(%rbp), %rdi
leaq -0x1a0(%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 0xc02c0
leaq 0x58a18(%rip), %rdi     # 0x152717
callq 0xf8a60
movq %rax, -0x260(%rbp)
leaq 0x58a05(%rip), %rdi     # 0x152717
callq 0xf8a60
movq %rax, %rsi
leaq -0x1b8(%rbp), %rdi
leaq -0xe0(%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 0xf8a80
movq -0x260(%rbp), %rdi
leaq -0x188(%rbp), %rcx
leaq -0x1b8(%rbp), %rax
movq (%rcx), %rdx
movq %rdx, (%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
callq 0xfa830
movq -0x8(%rbp), %rax
movq %rax, -0x258(%rbp)
leaq 0x58972(%rip), %rdi     # 0x152717
callq 0xf8a60
movq %rax, %rsi
leaq -0x1e8(%rbp), %rdi
leaq -0x188(%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 0xf8a80
movq -0x258(%rbp), %rsi
leaq -0x1d0(%rbp), %rdi
leaq -0x1e8(%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 0xc02c0
movq $0x0, -0x1f0(%rbp)
movq -0x1f0(%rbp), %rax
cmpq -0x148(%rbp), %rax
jae 0xf9f3a
movq -0x8(%rbp), %rax
movq %rax, -0x278(%rbp)
movq -0x1f0(%rbp), %rsi
leaq -0x220(%rbp), %rdi
leaq -0x1d0(%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 0xfa790
movq -0x278(%rbp), %rsi
leaq -0x208(%rbp), %rdi
leaq -0x220(%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 0xc02c0
movq -0x1f0(%rbp), %rax
movq %rax, -0x270(%rbp)
leaq 0x59ddf(%rip), %rdi     # 0x153c90
callq 0xf8a60
movq %rax, %rsi
leaq -0x238(%rbp), %rdi
leaq -0x208(%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 0xf8a80
movq -0x270(%rbp), %rax
movq -0x238(%rbp), %rcx
cmpq (%rcx), %rax
je 0xf9f21
leaq 0x39aa0(%rip), %rdi     # 0x13399f
leaq 0x5c375(%rip), %rsi     # 0x15627b
leaq 0x5c1c6(%rip), %rdx     # 0x1560d3
leaq 0x5bc0b(%rip), %rcx     # 0x155b1f
movl $0x305, %r8d            # imm = 0x305
movb $0x0, %al
callq 0x9cea0
jmp 0xf9f23
movq -0x1f0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1f0(%rbp)
jmp 0xf9e17
leaq -0x110(%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 0xfa8f0
cmpq -0x148(%rbp), %rax
je 0xf9f91
leaq 0x39a30(%rip), %rdi     # 0x13399f
leaq 0x5c348(%rip), %rsi     # 0x1562be
leaq 0x5c156(%rip), %rdx     # 0x1560d3
leaq 0x5bb9b(%rip), %rcx     # 0x155b1f
movl $0x308, %r8d            # imm = 0x308
movb $0x0, %al
callq 0x9cea0
movq -0x8(%rbp), %rdi
callq 0xbfe00
xorl %eax, %eax
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
nopw %cs:(%rax,%rax)