// File: /workspace/github_c_makefile_star2_O3/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 0x18494d(%rip), %rbp    # 0x19ccc8
movl (%rbp), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rbp,%rax,8), %rcx
movq 0x18(%rbp,%rax,8), %rdx
andq %r12, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x183d1
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x183d1
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x183d1
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x183da
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x18401
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r12, %rsi
callq 0xe9bc5
movq %rax, %r13
leaq 0x1848d2(%rip), %rdi    # 0x19ccc8
movq %r12, %rsi
movq %rax, %rdx
callq 0x115fac
leaq 0x1151c3(%rip), %rdx    # 0x12d5cb
movq %r13, %rdi
movq %r14, %rsi
callq 0xffe2b
testb %al, %al
je 0x18452
callq 0x15b89
movq %rax, %r15
movq 0x18(%rbx), %rdi
callq 0x15c34
movq %r15, 0x18(%rbx)
movq %r15, %rdi
movq %r14, %rdx
callq 0x15db0
testq %rax, %rax
je 0x186bf
movq %rax, %r15
leaq 0x183986(%rip), %rax    # 0x19bdd0
movq (%rax), %rdi
jmp 0x18811
leaq 0x183977(%rip), %rax    # 0x19bdd0
movq (%rax), %rsi
leaq 0x38(%rsp), %r12
movq %r12, 0x8(%rsp)
movq %r12, %rdi
callq 0xd6675
movq $0x1, 0x10(%r12)
movq (%r14), %r12
movl (%rbp), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rbp,%rax,8), %rcx
movq 0x18(%rbp,%rax,8), %rdx
andq %r12, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x184d0
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x184d0
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x184d0
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x184d9
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x18500
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r12, %rsi
callq 0xe9bc5
movq %rax, %r13
leaq 0x1847d3(%rip), %rdi    # 0x19ccc8
movq %r12, %rsi
movq %rax, %rdx
callq 0x115fac
movq %rbx, (%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xffe72
movq %rax, 0x10(%rsp)
movq (%r15), %r13
leaq 0x17a182(%rip), %rbx    # 0x1926a0
movl 0x17a17c(%rip), %eax    # 0x1926a0
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rbx,%rax,8), %rcx
movq 0x18(%rbx,%rax,8), %rdx
andq %r13, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r13, %rdx
je 0x18577
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r13, %rdx
je 0x18577
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r13, %rdx
je 0x18577
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r13, %rdx
jne 0x18580
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0x185a7
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r13, %rsi
callq 0xe9bc5
movq %rax, %r12
leaq 0x17a104(%rip), %rdi    # 0x1926a0
movq %r13, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r15, %rdi
callq *0x20(%r12)
movq %rax, %r13
leaq 0x18(%rsp), %r12
movq %r12, %rdi
callq 0x109030
leaq 0x38(%rsp), %rdi
movabsq $-0x503db0e6e1c2e704, %rsi # imm = 0xAFC24F191E3D18FC
movq %r12, %rdx
callq 0xd68d9
movq (%r15), %rbp
movl 0x17a0c1(%rip), %eax    # 0x1926a0
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 0x18632
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbp, %rdx
je 0x18632
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbp, %rdx
je 0x18632
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbp, %rdx
jne 0x1863b
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0x18662
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %rbp, %rsi
callq 0xe9bc5
movq %rax, %r12
leaq 0x17a049(%rip), %rdi    # 0x1926a0
movq %rbp, %rsi
movq %rax, %rdx
callq 0x115fac
leaq 0x18(%rsp), %rdx
movq %r15, %rdi
movq %r14, %rsi
callq *0x10(%r12)
testq %rax, %rax
jne 0x18809
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0x186ce
movabsq $-0x340d631b7bdddcdb, %rsi # imm = 0xCBF29CE484222325
movb (%rax), %dl
testb %dl, %dl
movq (%rsp), %rbp
je 0x186de
incq %rax
movabsq $0x100000001b3, %rcx    # imm = 0x100000001B3
movzbl %dl, %r15d
xorq %rsi, %r15
imulq %rcx, %r15
movb (%rax), %dl
incq %rax
movq %r15, %rsi
testb %dl, %dl
jne 0x186a6
jmp 0x186e1
movq 0x18(%rbx), %rax
movb 0x8(%rax), %al
movb %al, 0x20(%rbx)
jmp 0x1882f
movabsq $-0x509c42b379fe4821, %r15 # imm = 0xAF63BD4C8601B7DF
movq (%rsp), %rbp
jmp 0x186e1
movq %rsi, %r15
addq $0x78, %r13
movq %r13, %rdi
movq %r15, %rsi
callq 0xca94f
testq %rax, %rax
je 0x18745
movq (%rax), %rax
testq %rax, %rax
je 0x18745
movabsq $0x12dc29d312ad56e4, %r12 # imm = 0x12DC29D312AD56E4
cmpq %r12, (%rax)
jne 0x18745
movq %r13, %rdi
movq %r15, %rsi
callq 0xca94f
movq (%rax), %rax
xorl %ebx, %ebx
cmpq %r12, (%rax)
cmoveq %rax, %rbx
movq 0x18(%rbx), %rdi
callq 0x15cf1
movq %rax, %r14
movq 0x18(%rbp), %rdi
callq 0x15c34
movq %r14, 0x18(%rbp)
addq $0x20, %rbx
jmp 0x18820
movq (%r14), %r15
leaq 0x184579(%rip), %rdx    # 0x19ccc8
movl (%rdx), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rdx,%rax,8), %rcx
movq 0x18(%rdx,%rax,8), %rdx
andq %r15, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r15, %rdx
je 0x187a4
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r15, %rdx
je 0x187a4
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r15, %rdx
je 0x187a4
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r15, %rdx
jne 0x187ad
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0x187d4
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r15, %rsi
callq 0xe9bc5
movq %rax, %r12
leaq 0x1844ff(%rip), %rdi    # 0x19ccc8
movq %r15, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r12, %rdi
movq %r14, %rsi
movq 0x10(%rsp), %rdx
callq 0xffe83
callq 0x15b89
movq %rax, %r15
movq 0x18(%rbp), %rdi
callq 0x15c34
movq %r15, 0x18(%rbp)
movq %r15, %rdi
movq %r14, %rdx
callq 0x16ebc
testq %rax, %rax
je 0x18818
movq %rax, %r15
movq 0x8(%rsp), %rdi
callq 0xd6d2c
jmp 0x18832
movq 0x18(%rbp), %rbx
addq $0x8, %rbx
movb (%rbx), %al
movb %al, 0x20(%rbp)
leaq 0x8(%rsp), %rdi
callq 0xd6d0d
xorl %r15d, %r15d
movq %r15, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq