// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_func_s_expand_declaration
er_t xoico_func_s_expand_declaration( const xoico_func_s* o, const xoico_host* host, sz_t indent, x_sink* sink )
{
    // xoico_func.x:277:1
    
    if( !o->expandable ) return  0;
    
    bl_t go_inline = o->body && o->body->go_inline;
    const xoico_signature_s* signature = o->signature;
    ASSERT( signature );
    xoico_compiler_s* compiler = xoico_host_a_compiler(host);
    
    if( go_inline )
    {
        x_sink_push_fa(sink," \\\n#rn{ }", indent );
        x_sink_push_fa(sink,"static inline " );
        BLM_TRY(xoico_signature_s_expand_declaration(signature,host, xoico_compiler_s_nameof( compiler,o->global_name ), indent, sink ))
        BLM_TRY(xoico_body_s_expand(o->body,host, signature, indent, sink ))
    }
    else if( !o->declare_in_expand_forward )
    {
        x_sink_push_fa(sink," \\\n#rn{ }", indent );
        BLM_TRY(xoico_signature_s_expand_declaration(signature,host, xoico_compiler_s_nameof( compiler,o->global_name ), indent, sink ))
        x_sink_push_fa(sink,";" );
    }
    
    return  0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x10(%rbp), %rax
testb $0x1, 0x28(%rax)
jne 0xc902
movq $0x0, -0x8(%rbp)
jmp 0xcb13
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x38(%rcx)
movb %al, -0x71(%rbp)
je 0xc920
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movb 0x20(%rax), %al
movb %al, -0x71(%rbp)
movb -0x71(%rbp), %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0xc964
leaq 0x12705d(%rip), %rdi    # 0x13399f
leaq 0x12d19f(%rip), %rsi    # 0x139ae8
leaq 0x1271b1(%rip), %rdx    # 0x133b01
leaq 0x126c91(%rip), %rcx    # 0x1335e8
movl $0x76e, %r8d            # imm = 0x76E
movb $0x0, %al
callq 0x9cea0
movq -0x18(%rbp), %rdi
callq 0x5170
movq %rax, -0x40(%rbp)
testb $0x1, -0x29(%rbp)
je 0xca62
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq 0x127142(%rip), %rsi    # 0x133acc
movb $0x0, %al
callq 0x56e0
movq -0x28(%rbp), %rdi
leaq 0x127156(%rip), %rsi    # 0x133af2
movb $0x0, %al
callq 0x56e0
movq -0x38(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x40(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x51d0
movq -0x88(%rbp), %rdi
movq -0x80(%rbp), %rsi
movq %rax, %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x9c30
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0xca11
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq 0x1a5934(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x50(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xcb13
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0xb210
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0xca5d
movq -0x58(%rbp), %rax
movq %rax, -0x60(%rbp)
leaq 0x1a58e8(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x60(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xcb13
jmp 0xcb0b
movq -0x10(%rbp), %rax
testb $0x1, 0x2a(%rax)
jne 0xcb09
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq 0x12704d(%rip), %rsi    # 0x133acc
movb $0x0, %al
callq 0x56e0
movq -0x38(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x40(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x51d0
movq -0x98(%rbp), %rdi
movq -0x90(%rbp), %rsi
movq %rax, %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x9c30
movq %rax, -0x68(%rbp)
cmpq $0x0, -0x68(%rbp)
je 0xcaf7
movq -0x68(%rbp), %rax
movq %rax, -0x70(%rbp)
leaq 0x1a584b(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x70(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xcb13
movq -0x28(%rbp), %rdi
leaq 0x12b0d1(%rip), %rsi    # 0x137bd3
movb $0x0, %al
callq 0x56e0
jmp 0xcb0b
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq