// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_body_s_parse_expression
er_t xoico_body_s_parse_expression( xoico_body_s* o, const xoico_host* host, x_source* source )
{
    // xoico_body.x:338:1
    
    if( x_source_parse_bl(source," #=?'{'" ) )
    {
        xoico_body_code_s_attach( &(o->code ),  xoico_body_code_s_create());
        BLM_TRY(xoico_body_code_s_parse(o->code,host, source ))
        o->go_inline = o->code->single_line;
    }
    else
    {BLM_INIT_LEVEL(1);
        s3_t index = x_source_get_index(source);
    
        xoico_compiler_s* compiler = xoico_host_a_compiler(host);
    
        st_s st_name;BLM_T_INIT_SPUSH(st_s, &st_name);;
        BLM_TRY(xoico_host_a_parse_name_st(host,source,&( st_name )))
        tp_t tp_name = btypeof( st_name.sc );
    
        // if name_buf refers to another body
        if( xoico_compiler_s_is_body(compiler,tp_name ) )
        {
            const xoico_body_s* body = xoico_compiler_s_get_body(compiler,tp_name );
            xoico_body_code_s_attach( &(o->code ),  xoico_body_code_s_clone(body->code));
            o->go_inline = body->go_inline;
        }
        else // at this point we assume a single statement body
        {
            x_source_set_index(source,index );
            xoico_body_code_s_attach( &(o->code ),  xoico_body_code_s_create());
            BLM_TRY(xoico_body_code_s_parse_single_statement(o->code,host, source ))
            o->go_inline = o->code->single_line;
        }
    BLM_DOWN();}
    return  0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x128da1(%rip), %rsi    # 0x133923
callq 0x6700
testb $0x1, %al
jne 0xab90
jmp 0xac11
movq -0x10(%rbp), %rax
addq $0x18, %rax
movq %rax, -0xd8(%rbp)
callq 0x9f00
movq -0xd8(%rbp), %rdi
movq %rax, %rsi
callq 0xae10
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x9f90
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0xabf7
movq -0x28(%rbp), %rax
movq %rax, -0x30(%rbp)
leaq 0x1a774e(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xadfb
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movb 0x8(%rax), %cl
movq -0x10(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x20(%rax)
jmp 0xadf3
leaq 0x1a7718(%rip), %rax    # 0x1b2330
movq (%rax), %rax
movq %rax, -0x38(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0xbfe80
movq -0x70(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq $0x1, 0x10(%rax)
movq -0x20(%rbp), %rdi
callq 0xae60
movq %rax, -0x78(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5170
movq %rax, -0x80(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0xfe150
movq -0x38(%rbp), %rdi
movabsq $-0x503db0e6e1c2e704, %rsi # imm = 0xAFC24F191E3D18FC
leaq -0xa0(%rbp), %rdx
callq 0xc0220
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
leaq -0xa0(%rbp), %rdx
callq 0x5100
movq %rax, -0xa8(%rbp)
cmpq $0x0, -0xa8(%rbp)
je 0xacd4
movq -0xa8(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x70(%rbp), %rdi
callq 0xc0720
movq -0xb0(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xadfb
movq -0x98(%rbp), %rdi
callq 0xae80
movq %rax, -0xb8(%rbp)
movq -0x80(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0xaea0
testb $0x1, %al
jne 0xacfd
jmp 0xad5b
movq -0x80(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0xaef0
movq %rax, -0xc0(%rbp)
movq -0x10(%rbp), %rax
addq $0x18, %rax
movq %rax, -0xe0(%rbp)
movq -0xc0(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x9f50
movq -0xe0(%rbp), %rdi
movq %rax, %rsi
callq 0xae10
movq -0xc0(%rbp), %rax
movb 0x20(%rax), %cl
movq -0x10(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x20(%rax)
jmp 0xadea
movq -0x20(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0xaf60
movq -0x10(%rbp), %rax
addq $0x18, %rax
movq %rax, -0xe8(%rbp)
callq 0x9f00
movq -0xe8(%rbp), %rdi
movq %rax, %rsi
callq 0xae10
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0xa540
movq %rax, -0xc8(%rbp)
cmpq $0x0, -0xc8(%rbp)
je 0xadd5
movq -0xc8(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x70(%rbp), %rdi
callq 0xc0720
movq -0xd0(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xadfb
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movb 0x8(%rax), %cl
movq -0x10(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x20(%rax)
leaq -0x70(%rbp), %rdi
callq 0xc06e0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xf0, %rsp
popq %rbp
retq
nopl (%rax,%rax)