// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_stamp_s_expand_declaration
er_t xoico_stamp_s_expand_declaration( const xoico_stamp_s* o, const xoico_host* host, sz_t indent, x_sink* sink )
{
    // xoico_stamp.x:872:1
    
    sc_t sc_name = o->st_name.sc;
    
    x_sink_push_fa(sink,"#rn{ }##define TYPEOF_#<sc_t> 0x#pl16'0'{#X<tp_t>}ull\n", indent, sc_name, btypeof( sc_name ) );
    
    x_sink_push_fa(sink,"#rn{ }##define BETH_EXPAND_ITEM_#<sc_t>", indent, sc_name, sc_name );
    x_sink_push_fa(sink," \\\n#rn{ }  BCORE_DECLARE_OBJECT( #<sc_t> )", indent, sc_name );
    x_sink_push_fa(sink," \\\n" );
    
    bcore_self_s_struct_body_to_sink_newline_escaped( o->self, indent + 2, ( bcore_sink* )sink );
    x_sink_push_fa(sink,";" );
    
    {const xoico_funcs_s* __a=&(o->funcs );if(__a)for(sz_t __i=0;__i<__a->size;__i++){xoico_func_s* func=__a->data[__i]; BLM_TRY(xoico_func_s_expand_forward(func,((const xoico_host*)(o)), indent + 2, sink )) // expands all prototypes
    }}{const xoico_funcs_s* __a=&(o->funcs );if(__a)for(sz_t __i=0;__i<__a->size;__i++){xoico_func_s* func=__a->data[__i]; BLM_TRY(xoico_func_s_expand_declaration(func,((const xoico_host*)(o)), indent + 2, sink )) // only expands static inline functions
    
    }}x_sink_push_fa(sink,"\n" );
    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
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x30(%rbp), %rdi
callq 0xae80
movq -0x98(%rbp), %rdi
movq -0x90(%rbp), %rdx
movq -0x88(%rbp), %rcx
movq %rax, %r8
leaq 0x118441(%rip), %rsi    # 0x133401
movb $0x0, %al
callq 0x56e0
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x30(%rbp), %r8
leaq 0x11a3af(%rip), %rsi    # 0x13538d
movb $0x0, %al
callq 0x56e0
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x30(%rbp), %rcx
leaq 0x11a3bd(%rip), %rsi    # 0x1353b5
movb $0x0, %al
callq 0x56e0
movq -0x28(%rbp), %rdi
leaq 0x132c70(%rip), %rsi    # 0x14dc7a
movb $0x0, %al
callq 0x56e0
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
movq -0x20(%rbp), %rsi
addq $0x2, %rsi
movq -0x28(%rbp), %rdx
callq 0xa5120
movq -0x28(%rbp), %rdi
leaq 0x11cb9e(%rip), %rsi    # 0x137bd3
movb $0x0, %al
callq 0x56e0
movq -0x10(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x1b0d7
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq -0x38(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x1b0d5
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
addq $0x2, %rdx
movq -0x28(%rbp), %rcx
callq 0xc6e0
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0x1b0c5
movq -0x50(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x197280(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x58(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1b189
jmp 0x1b0c7
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x1b05b
jmp 0x1b0d7
movq -0x10(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x60(%rbp)
je 0x1b16f
movq $0x0, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq -0x60(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x1b16d
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x68(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
addq $0x2, %rdx
movq -0x28(%rbp), %rcx
callq 0xc8d0
movq %rax, -0x78(%rbp)
cmpq $0x0, -0x78(%rbp)
je 0x1b15d
movq -0x78(%rbp), %rax
movq %rax, -0x80(%rbp)
leaq 0x1971e5(%rip), %rax    # 0x1b2330
movq (%rax), %rdi
callq 0xc0720
movq -0x80(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1b189
jmp 0x1b15f
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
jmp 0x1b0f6
jmp 0x1b16f
movq -0x28(%rbp), %rdi
leaq 0x1378a7(%rip), %rsi    # 0x152a21
movb $0x0, %al
callq 0x56e0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)