// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_group_s_push_func_d
er_t xoico_group_s_push_func_d( xoico_group_s* o, xoico_func_s* func )
{
    // xoico_group.x:415:1
    
    sz_t idx = xoico_funcs_s_get_index_from_name(&(o->funcs),func->name );
    
    xoico_compiler_s* compiler = o->compiler;
    
    if( idx >= 0 )
    {
        xoico_func_s* prex_func = o->funcs.data[ idx ];
        if( ( prex_func->signature_global_name == func->signature_global_name ) )
        {
            if( !func->body )
            {
                return  x_source_point_s_parse_error_fa(&(func->source_point),"Function '#<sc_t>' has already been declared.", xoico_compiler_s_nameof(compiler,func->name ) );
            }
            else if( prex_func->body )
            {
                return  x_source_point_s_parse_error_fa(&(func->source_point),"Function '#<sc_t>' has already a body.", xoico_compiler_s_nameof(compiler,func->name ) );
            }
            else
            {
                BLM_TRY(xoico_funcs_s_replace_d(&(o->funcs),idx, func ))
            }
        }
        else
        {
            return  x_source_point_s_parse_error_fa(&(func->source_point),"Function '#<sc_t>' has already been declared.", xoico_compiler_s_nameof(compiler,func->name ) );
        }
    }
    else
    {
        x_array_push_d(((x_array*)(&(o->funcs))),((x_inst*)(func )));
    }
    
    return  0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
addq $0x118, %rdi            # imm = 0x118
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xc2c0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq 0x140(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x20(%rbp)
jl 0x115a3
movq -0x10(%rbp), %rax
movq 0x120(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x20(%rcx), %rax
jne 0x11569
movq -0x18(%rbp), %rax
cmpq $0x0, 0x38(%rax)
jne 0x114d9
movq -0x18(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x48(%rbp)
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x51d0
movq -0x48(%rbp), %rdi
movq %rax, %rdx
leaq 0x122e10(%rip), %rsi    # 0x1342d9
movb $0x0, %al
callq 0x7d20
movq %rax, -0x8(%rbp)
jmp 0x115bf
movq -0x30(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x1151f
movq -0x18(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x50(%rbp)
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x51d0
movq -0x50(%rbp), %rdi
movq %rax, %rdx
leaq 0x122df8(%rip), %rsi    # 0x134307
movb $0x0, %al
callq 0x7d20
movq %rax, -0x8(%rbp)
jmp 0x115bf
movq -0x10(%rbp), %rdi
addq $0x118, %rdi            # imm = 0x118
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0xd010
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x11563
movq -0x38(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq 0x1a0ddf(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x40(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x115bf
jmp 0x11565
jmp 0x11567
jmp 0x115a1
movq -0x18(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x58(%rbp)
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x51d0
movq -0x58(%rbp), %rdi
movq %rax, %rdx
leaq 0x122d45(%rip), %rsi    # 0x1342d9
movb $0x0, %al
callq 0x7d20
movq %rax, -0x8(%rbp)
jmp 0x115bf
jmp 0x115b7
movq -0x10(%rbp), %rdi
addq $0x118, %rdi            # imm = 0x118
movq -0x18(%rbp), %rsi
callq 0x85f0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)