// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
movq (%rdx), %r12
leaq 0x19141b(%rip), %rdx    # 0x1a9cc8
movl (%rdx), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rdx,%rax,8), %rcx
movq 0x18(%rdx,%rax,8), %rdx
andq %r12, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x18906
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x18906
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x18906
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x18c2d
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x18936
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r12, %rsi
callq 0xf3f85
movq %rax, %r13
leaq 0x19139d(%rip), %rdi    # 0x1a9cc8
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
leaq 0x11fc8e(%rip), %rdx    # 0x1385cb
movq %r13, %rdi
movq %r14, %rsi
callq 0x10aa16
testb %al, %al
je 0x1898c
callq 0x1603f
movq %rax, %r15
movq 0x18(%rbx), %rdi
callq 0x160ee
movq %r15, 0x18(%rbx)
movq %r15, %rdi
movq %r14, %rdx
callq 0x16274
testq %rax, %rax
je 0x18bd3
movq %rax, %r15
leaq 0x190451(%rip), %rax    # 0x1a8dd0
movq (%rax), %rdi
callq 0xe0b30
jmp 0x18da8
movq %rbx, 0x8(%rsp)
leaq 0x190438(%rip), %rax    # 0x1a8dd0
movq (%rax), %rsi
leaq 0x38(%rsp), %rdi
movq %rdi, (%rsp)
callq 0xe0431
movq (%rsp), %rbp
movq $0x1, 0x10(%rbp)
movq (%r14), %r12
leaq 0x191309(%rip), %rdx    # 0x1a9cc8
movl (%rdx), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rdx,%rax,8), %rcx
movq 0x18(%rdx,%rax,8), %rdx
andq %r12, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x18a18
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x18a18
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x18a18
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x18dba
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x18a48
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r12, %rsi
callq 0xf3f85
movq %rax, %r13
leaq 0x19128b(%rip), %rdi    # 0x1a9cc8
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r13, %rdi
movq %r14, %rsi
callq 0x10aa5d
movq (%r15), %r13
leaq 0x186c43(%rip), %rbx    # 0x19f6a0
movl 0x186c3d(%rip), %ecx    # 0x19f6a0
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rdx
movq 0x20(%rbx,%rdx,8), %rcx
movq 0x18(%rbx,%rdx,8), %rdx
andq %r13, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rsi
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r13, %rdx
movq %rax, 0x10(%rsp)
je 0x18ac0
movq 0x10(%rsi), %rdx
movl $0x18, %ecx
cmpq %r13, %rdx
je 0x18ac0
movq 0x20(%rsi), %rdx
movl $0x28, %ecx
cmpq %r13, %rdx
je 0x18ac0
movq 0x30(%rsi), %rdx
movl $0x38, %ecx
cmpq %r13, %rdx
jne 0x18dc2
movq (%rsi,%rcx), %r12
testq %r12, %r12
jne 0x18af0
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r13, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0x186bbb(%rip), %rdi    # 0x19f6a0
movq %r13, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r15, %rdi
callq *0x20(%r12)
movq %rax, %r13
leaq 0x18(%rsp), %r12
movq %r12, %rdi
callq 0x113f7c
movabsq $-0x503db0e6e1c2e704, %rsi # imm = 0xAFC24F191E3D18FC
movq %rbp, %rdi
movq %r12, %rdx
callq 0xe06ab
movq (%r15), %rbp
movl 0x186b7a(%rip), %eax    # 0x19f6a0
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rbx,%rax,8), %rcx
movq 0x18(%rbx,%rax,8), %rdx
andq %rbp, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbp, %rdx
je 0x18b7d
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbp, %rdx
je 0x18b7d
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbp, %rdx
je 0x18b7d
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbp, %rdx
jne 0x18dca
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0x18bad
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %rbp, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0x186afe(%rip), %rdi    # 0x19f6a0
movq %rbp, %rsi
movq %rax, %rdx
callq 0x12128c
leaq 0x18(%rsp), %rdx
movq %r15, %rdi
movq %r14, %rsi
callq *0x10(%r12)
movq %rax, %r15
testq %rax, %rax
je 0x18be2
movq (%rsp), %rdi
callq 0xe0b30
jmp 0x18d86
movq 0x18(%rbx), %rax
movb 0x8(%rax), %al
movb %al, 0x20(%rbx)
jmp 0x18da5
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x18c21
movabsq $-0x340d631b7bdddcdb, %rsi # imm = 0xCBF29CE484222325
movb (%rax), %dl
testb %dl, %dl
je 0x18c35
incq %rax
movabsq $0x100000001b3, %rcx    # imm = 0x100000001B3
movzbl %dl, %ebp
xorq %rsi, %rbp
imulq %rcx, %rbp
movb (%rax), %dl
incq %rax
movq %rbp, %rsi
testb %dl, %dl
jne 0x18c09
jmp 0x18c38
movabsq $-0x509c42b379fe4821, %rbp # imm = 0xAF63BD4C8601B7DF
jmp 0x18c38
xorl %r13d, %r13d
jmp 0x1890a
movq %rsi, %rbp
addq $0x78, %r13
movq %r13, %rdi
movq %rbp, %rsi
callq 0xd4806
testq %rax, %rax
je 0x18c51
movq (%rax), %rax
jmp 0x18c53
xorl %eax, %eax
testq %rax, %rax
je 0x18ca5
movabsq $0x12dc29d312ad56e4, %r12 # imm = 0x12DC29D312AD56E4
cmpq %r12, (%rax)
jne 0x18ca5
movq %r13, %rdi
movq %rbp, %rsi
callq 0xd4806
movq (%rax), %rax
xorl %ebx, %ebx
cmpq %r12, (%rax)
cmoveq %rax, %rbx
movq 0x18(%rbx), %rdi
callq 0x161b0
movq %rax, %r14
movq 0x8(%rsp), %rbp
movq 0x18(%rbp), %rdi
callq 0x160ee
movq %r14, 0x18(%rbp)
addq $0x20, %rbx
jmp 0x18d92
movq (%r14), %r13
leaq 0x191019(%rip), %rdx    # 0x1a9cc8
movl (%rdx), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rdx,%rax,8), %rcx
movq 0x18(%rdx,%rax,8), %rdx
andq %r13, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r13, %rdx
je 0x18d08
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r13, %rdx
je 0x18d08
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r13, %rdx
je 0x18d08
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r13, %rdx
jne 0x18dd2
movq (%rax,%rcx), %r12
movq 0x8(%rsp), %rbp
testq %r12, %r12
jne 0x18d3d
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r13, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0x190f96(%rip), %rdi    # 0x1a9cc8
movq %r13, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r12, %rdi
movq %r14, %rsi
movq 0x10(%rsp), %rdx
callq 0x10aa6e
callq 0x1603f
movq %rax, %r12
movq 0x18(%rbp), %rdi
callq 0x160ee
movq %r12, 0x18(%rbp)
movq %r12, %rdi
movq %r14, %rdx
callq 0x173a3
movq %rax, %r14
testq %rax, %rax
je 0x18d81
movq (%rsp), %rdi
callq 0xe0b30
movq %r14, %r15
testq %r14, %r14
je 0x18d8a
xorl %eax, %eax
jmp 0x18da1
movq 0x18(%rbp), %rbx
addq $0x8, %rbx
movb (%rbx), %al
movb %al, 0x20(%rbp)
movq %rsp, %rdi
callq 0xe0b11
movb $0x1, %al
testb %al, %al
je 0x18da8
xorl %r15d, %r15d
movq %r15, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r13d, %r13d
jmp 0x18a1c
xorl %r12d, %r12d
jmp 0x18ac4
xorl %r12d, %r12d
jmp 0x18b81
xorl %r12d, %r12d
jmp 0x18d0c