// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_bcml_parse_create_object
er_t x_bcml_parse_create_object( bl_t parse_existence, tp_t given_type, x_source* source, sr_s* obj )
{
    // bcore_x_bcml.h:181:1
    BLM_INIT_LEVEL(0);
    er_t er = 0;
    tp_t type = given_type ? given_type : x_bcml_parse_type(source );
    bl_t flag = parse_existence ? x_bcml_parse_flag(source ) : true;
    
    if( type )
    {
        if( bcore_flect_exists( type ) )
        {
            if( flag )
            {
                x_inst* inst = ((x_inst*)BLM_LEVEL_TV_PUSH(0,type ,x_inst_t_create(type )));
                BLM_TRY(x_bcml_t_parse_body(((x_bcml*)( inst)),type, source ))
                (*(obj)) = sr_tsm(type, ((x_inst*)bcore_fork(inst)) );
            }
            else // no instance
            {
                obj->p = bcore_inst_s_get_typed( type );
            }
        }
        else
        {
            BLM_RETURNV(er_t, bcore_error_push_fa(TYPEOF_parse_error, "Type '#<sc_t>' has no reflection.", bnameof( type ) ))
        }
    }
    
    BLM_RETURNV(er_t, er)
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movb %dil, %al
andb $0x1, %al
movb %al, -0x9(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
leaq 0x15b4aa(%rip), %rax    # 0x1b2330
movq (%rax), %rax
movq %rax, -0x30(%rbp)
leaq -0x60(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0xbfe80
movq -0x68(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq $0x0, 0x10(%rax)
movq $0x0, -0x70(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x56ed2
movq -0x18(%rbp), %rax
movq %rax, -0xc8(%rbp)
jmp 0x56ee2
movq -0x20(%rbp), %rdi
callq 0x57670
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, -0x78(%rbp)
testb $0x1, -0x9(%rbp)
je 0x56f09
movq -0x20(%rbp), %rdi
callq 0x576a0
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0xcc(%rbp)
jmp 0x56f16
movl $0x1, %eax
movl %eax, -0xcc(%rbp)
jmp 0x56f16
movl -0xcc(%rbp), %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x79(%rbp)
cmpq $0x0, -0x78(%rbp)
je 0x57094
movq -0x78(%rbp), %rdi
callq 0xa70a0
testb $0x1, %al
jne 0x56f44
jmp 0x57051
testb $0x1, -0x79(%rbp)
je 0x5703b
movq -0x30(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0x78(%rbp), %rdi
callq 0x4a7f0
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rdx
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %esi
callq 0xc01a0
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rdi
movq -0x78(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x576e0
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x56fda
movq -0x90(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x68(%rbp), %rdi
callq 0xc0720
movq -0x98(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x570b3
movq -0x28(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x88(%rbp), %rdi
callq 0x9d3d0
movq -0xf0(%rbp), %rsi
movq %rax, %rdx
leaq -0xb0(%rbp), %rdi
callq 0x4c500
movq -0xe8(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xa0(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x5704f
movq -0x78(%rbp), %rdi
callq 0x53900
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x57092
movq -0x78(%rbp), %rdi
callq 0x44d00
movq %rax, %rdx
movabsq $0x690af8765815ec4d, %rdi # imm = 0x690AF8765815EC4D
leaq 0xe8996(%rip), %rsi     # 0x13fa04
movb $0x0, %al
callq 0x9e090
movq %rax, -0xb8(%rbp)
movq -0x68(%rbp), %rdi
callq 0xc0720
movq -0xb8(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x570b3
jmp 0x57094
movq -0x70(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0x68(%rbp), %rdi
callq 0xc0720
movq -0xc0(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xf0, %rsp
popq %rbp
retq