// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_bcml_t_parse_body
er_t x_bcml_t_parse_body( x_bcml* o, tp_t t, x_source* source )
{
    // bcore_x_bcml.h:267:1
    
    x_stamp* stamp =((x_stamp*)( o));
    if( x_bcml_t_defines_bcml_body_from_source(t ) )
    {
        BLM_TRY(x_bcml_t_bcml_body_from_source(o,t, source ))
    }
    else if( t == ((tp_t)(TYPEOF_st_s)) )
    {
        st_s* st = ((st_s*)(o));
        st_s_clear(st);
        char c = 0;
        while( (c = x_source_get_char(source)) != 0 ) st_s_push_char(st,c );
    }
    else if( x_stamp_t_is_leaf(t ) )
    {
        BLM_TRY(x_bcml_t_parse_leaf_body( o,t, source ))
    }
    else if( x_stamp_t_is_pure_array(t ) )
    {
        x_array* arr =((x_array*)( stamp));
    
        if( x_array_t_is_mutable_mono_typed(t ) ) x_array_t_set_gtype(arr,t, x_bcml_parse_type(source ) );
        bl_t is_of_links = x_array_t_is_of_links(t );
        tp_t static_type = x_array_t_get_static_type(t );
    
        sz_t size = x_bcml_parse_size(source );
    
        if( x_array_t_is_fixed(t ) )
        {
            sz_t arr_size = x_array_t_size(arr,t );
            if( arr_size != size ) ERR_fa( "Fixed array size (#<sz_t>) differs from stored size (#<sz_t>).", arr_size, size );
        }
        else
        {
            x_array_t_set_size(arr,t, size );
        }
    
        if( ( !is_of_links ) && ( static_type != 0 ) && x_stamp_t_is_leaf(static_type ) )
        {
            BLM_TRY(x_bcml_t_parse_leaf_arr_body(((x_bcml*)( x_array_t_get_data_m(arr,t ))),static_type, size, source ))
        }
        else
        {
            for(sz_t i = 0; i < size; i++ )
            {
                sr_s sr = sr_null();
                BLM_TRY(x_bcml_parse_create_object(is_of_links, static_type, source, (&(sr)) ))
                x_array_t_set_sr(arr,t, i, sr );
            }
        }
    }
    else
    {
        sz_t size = x_stamp_t_size(t );
        for(sz_t i = 0; i < size; i++ )
        {
            sr_s sr = sr_null();
            tp_t type = x_stamp_t_is_static_i(t, i ) ? x_stamp_t_type_i(stamp,t, i ) : 0;
            BLM_TRY(x_bcml_parse_create_object(x_stamp_t_is_link_i(t, i ), type, source, (&(sr)) ))
            BLM_TRY(x_stamp_t_set_sr_i(stamp,t, i, sr ))
        }
    }
    
    x_stamp_t_source(stamp,t, source );
    x_stamp_t_mutated(stamp,t );
    
    return  0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x58300
testb $0x1, %al
jne 0x5770e
jmp 0x57753
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x58330
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x5774e
movq -0x30(%rbp), %rax
movq %rax, -0x38(%rbp)
leaq 0x15abf7(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x38(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x57bdc
jmp 0x57bb6
movabsq $-0x503db0e6e1c2e704, %rax # imm = 0xAFC24F191E3D18FC
cmpq %rax, -0x18(%rbp)
jne 0x577a0
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
callq 0xffb50
movb $0x0, -0x41(%rbp)
movq -0x20(%rbp), %rdi
callq 0x547f0
movb %al, -0x41(%rbp)
movsbl %al, %eax
cmpl $0x0, %eax
je 0x5779b
movq -0x40(%rbp), %rdi
movsbl -0x41(%rbp), %esi
callq 0xffba0
jmp 0x57778
jmp 0x57bb4
movq -0x18(%rbp), %rdi
callq 0x54810
testb $0x1, %al
jne 0x577af
jmp 0x577f4
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x57bf0
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0x577ef
movq -0x50(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x15ab56(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x58(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x57bdc
jmp 0x57bb2
movq -0x18(%rbp), %rdi
callq 0x54870
testb $0x1, %al
jne 0x57806
jmp 0x57a34
movq -0x28(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rdi
callq 0x548a0
testb $0x1, %al
jne 0x5781d
jmp 0x57852
movq -0x60(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x20(%rbp), %rdi
callq 0x57670
movq -0x120(%rbp), %rdi
movq -0x118(%rbp), %rsi
movq %rax, %rdx
callq 0x54920
movq -0x18(%rbp), %rdi
callq 0x58370
andb $0x1, %al
movb %al, -0x61(%rbp)
movq -0x18(%rbp), %rdi
callq 0x58390
movq %rax, -0x70(%rbp)
movq -0x20(%rbp), %rdi
callq 0x583c0
movq %rax, -0x78(%rbp)
movq -0x18(%rbp), %rdi
callq 0x54990
testb $0x1, %al
jne 0x57889
jmp 0x578cf
movq -0x60(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x549c0
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
cmpq -0x78(%rbp), %rax
je 0x578cd
movq -0x80(%rbp), %r8
movq -0x78(%rbp), %r9
leaq 0xe844e(%rip), %rdi     # 0x13fd01
leaq 0xe7754(%rip), %rsi     # 0x13f00e
movl $0x111c, %edx           # imm = 0x111C
leaq 0xe844f(%rip), %rcx     # 0x13fd15
movb $0x0, %al
callq 0x9d0f0
jmp 0x578e0
movq -0x60(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x78(%rbp), %rdx
callq 0x54a40
testb $0x1, -0x61(%rbp)
jne 0x57960
cmpq $0x0, -0x70(%rbp)
je 0x57960
movq -0x70(%rbp), %rdi
callq 0x54810
testb $0x1, %al
jne 0x578fc
jmp 0x57960
movq -0x60(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x583f0
movq %rax, %rdi
movq -0x70(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x57f30
movq %rax, -0x88(%rbp)
cmpq $0x0, -0x88(%rbp)
je 0x5795b
movq -0x88(%rbp), %rax
movq %rax, -0x90(%rbp)
leaq 0x15a9ed(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x90(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x57bdc
jmp 0x57a2f
movq $0x0, -0x98(%rbp)
movq -0x98(%rbp), %rax
cmpq -0x78(%rbp), %rax
jge 0x57a2d
leaq -0xb0(%rbp), %rdi
callq 0x8a380
movb -0x61(%rbp), %al
movq -0x70(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0xb0(%rbp), %rcx
andb $0x1, %al
movzbl %al, %edi
callq 0x56e60
movq %rax, -0xb8(%rbp)
cmpq $0x0, -0xb8(%rbp)
je 0x579e2
movq -0xb8(%rbp), %rax
movq %rax, -0xc0(%rbp)
leaq 0x15a966(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0xc0(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x57bdc
movq -0x60(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x98(%rbp), %rdx
leaq -0xb0(%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 0x549f0
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x5796b
jmp 0x57a2f
jmp 0x57bb0
movq -0x18(%rbp), %rdi
callq 0x4ce70
movq %rax, -0xc8(%rbp)
movq $0x0, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
cmpq -0xc8(%rbp), %rax
jge 0x57bae
leaq -0xe8(%rbp), %rdi
callq 0x8a380
movq -0x18(%rbp), %rdi
movq -0xd0(%rbp), %rsi
callq 0x58420
testb $0x1, %al
jne 0x57a85
jmp 0x57aa2
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0xd0(%rbp), %rdx
callq 0x58450
movq %rax, -0x128(%rbp)
jmp 0x57aad
xorl %eax, %eax
movq %rax, -0x128(%rbp)
jmp 0x57aad
movq -0x128(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x18(%rbp), %rdi
movq -0xd0(%rbp), %rsi
callq 0x58480
movq -0xf0(%rbp), %rsi
movq -0x20(%rbp), %rdx
movzbl %al, %edi
andl $0x1, %edi
leaq -0xe8(%rbp), %rcx
callq 0x56e60
movq %rax, -0xf8(%rbp)
cmpq $0x0, -0xf8(%rbp)
je 0x57b26
movq -0xf8(%rbp), %rax
movq %rax, -0x100(%rbp)
leaq 0x15a822(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x100(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x57bdc
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0xd0(%rbp), %rdx
leaq -0xe8(%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 0x46040
movq %rax, -0x108(%rbp)
cmpq $0x0, -0x108(%rbp)
je 0x57b95
movq -0x108(%rbp), %rax
movq %rax, -0x110(%rbp)
leaq 0x15a7b0(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x110(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x57bdc
jmp 0x57b97
movq -0xd0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xd0(%rbp)
jmp 0x57a4f
jmp 0x57bb0
jmp 0x57bb2
jmp 0x57bb4
jmp 0x57bb6
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x54590
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x54ae0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
nopl (%rax)