// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_target_s_expand_h
er_t xoico_target_s_expand_h( const xoico_target_s* o, sz_t indent, x_sink* sink, tp_t* body_signature )
{
    // xoico_target.x:302:1
    BLM_INIT_LEVEL(0);
    BLM_TRY(xoico_target_s_expand_update_time(o,indent, sink ))
    
    st_s sink_buf;BLM_T_INIT_SPUSH(st_s, &sink_buf);;
    
    BLM_TRY(xoico_target_s_expand_heading(o,indent, sink ))
    st_s_push_fa(&(sink_buf),"\n" );
    st_s_push_fa(&(sink_buf),"#rn{ }##ifndef __#<sc_t>_#<sc_t>_H\n", indent, o->name.sc, o->ext.sc );
    st_s_push_fa(&(sink_buf),"#rn{ }##define __#<sc_t>_#<sc_t>_H\n", indent, o->name.sc, o->ext.sc );
    
    st_s_push_fa(&(sink_buf),"\n" );
    st_s_push_fa(&(sink_buf),"#rn{ }##include \"bcore_control.h\"\n", indent );
    st_s_push_fa(&(sink_buf),"#rn{ }##include \"bcore_xoila.h\"\n", indent );
    
    /// include generated headers this target depends on
    {const bcore_arr_sz_s* __a=&(o->dependencies );if(__a)for(sz_t __i=0;__i<__a->size;__i++){sz_t target_idx=__a->data[__i];
    {
        const xoico_target_s* target = o->compiler->data[ target_idx ];
        st_s_push_fa(&(sink_buf),"#rn{ }##include \"#<sc_t>.h\"\n", indent, target->include_path.sc );
    }
    
    }}st_s_push_fa(&(sink_buf),"\n" );
    
    st_s_push_fa(&(sink_buf),"#rn{ }##define TYPEOF_#<sc_t> 0x#pl16'0'{#X<tp_t>}ull\n", indent, o->name.sc, btypeof( o->name.sc ) );
    
    {const xoico_target_s* __a=o ;if(__a)for(sz_t __i=0;__i<__a->size;__i++){xoico_source_s* e=__a->data[__i]; BLM_TRY(xoico_source_s_expand_declaration(e,((const xoico_host*)(o)), indent,((x_sink*)(&( sink_buf )))))
    
    }}st_s_push_fa(&(sink_buf),"\n" );
    st_s_push_fa(&(sink_buf),"#rn{ }/*#rn{*}*/\n", indent, sz_max( 0, 116 - indent ) );
    st_s_push_fa(&(sink_buf),"\n" );
    st_s_push_fa(&(sink_buf),"#rn{ }vd_t #<sc_t>_#<sc_t>_signal_handler( const bcore_signal_s* o );\n", indent, o->name.sc, o->ext.sc );
    
    st_s_push_fa(&(sink_buf),"\n" );
    st_s_push_fa(&(sink_buf),"#rn{ }/*#rn{*}*/\n", indent, sz_max( 0, 116 - indent ) );
    st_s_push_fa(&(sink_buf),"// Manifesto\n" );
    st_s_push_fa(&(sink_buf),"\n" );
    {const xoico_target_s* __a=o ;if(__a)for(sz_t __i=0;__i<__a->size;__i++){xoico_source_s* e=__a->data[__i]; BLM_TRY(xoico_source_s_expand_manifesto(e,((const xoico_host*)(o)), indent,((x_sink*)(&( sink_buf )))))
    
    }}st_s_push_fa(&(sink_buf),"\n" );
    st_s_push_fa(&(sink_buf),"#rn{ }##endif // __#<sc_t>_#<sc_t>_H\n", indent, o->name.sc, o->ext.sc );
    
    x_sink_push_data(sink,( vc_t )sink_buf.sc, sink_buf.size );
    
    tp_t body_hash = bcore_tp_fold_sc( bcore_tp_init(), sink_buf.sc );
    x_sink_push_fa(sink,"// XOICO_BODY_SIGNATURE 0x#pl16'0'{#X<tp_t>}\n", body_hash );
    if( body_signature ) (*(body_signature)) = body_hash;
    
    BLM_RETURNV(er_t, 0)
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
leaq 0x193b5e(%rip), %rax    # 0x1b2330
movq (%rax), %rax
movq %rax, -0x30(%rbp)
leaq -0x60(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0xbfe80
movq -0x68(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq $0x0, 0x10(%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x1e290
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x70(%rbp)
je 0x1e83c
movq -0x70(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x68(%rbp), %rdi
callq 0xc0720
movq -0x78(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1edd5
leaq -0x98(%rbp), %rdi
callq 0xfe150
movq -0x30(%rbp), %rdi
movabsq $-0x503db0e6e1c2e704, %rsi # imm = 0xAFC24F191E3D18FC
leaq -0x98(%rbp), %rdx
callq 0xc0220
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x1e360
movq %rax, -0xa0(%rbp)
cmpq $0x0, -0xa0(%rbp)
je 0x1e8ab
movq -0xa0(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x68(%rbp), %rdi
callq 0xc0720
movq -0xa8(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1edd5
leaq -0x98(%rbp), %rdi
leaq 0x134168(%rip), %rsi    # 0x152a21
movb $0x0, %al
callq 0x100210
movq -0x18(%rbp), %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %r8
leaq -0x98(%rbp), %rdi
leaq 0x117077(%rip), %rsi    # 0x135959
movb $0x0, %al
callq 0x100210
movq -0x18(%rbp), %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %r8
leaq -0x98(%rbp), %rdi
leaq 0x117072(%rip), %rsi    # 0x13597d
movb $0x0, %al
callq 0x100210
leaq -0x98(%rbp), %rdi
leaq 0x134101(%rip), %rsi    # 0x152a21
movb $0x0, %al
callq 0x100210
movq -0x18(%rbp), %rdx
leaq -0x98(%rbp), %rdi
leaq 0x117068(%rip), %rsi    # 0x1359a1
movb $0x0, %al
callq 0x100210
movq -0x18(%rbp), %rdx
leaq -0x98(%rbp), %rdi
leaq 0x117072(%rip), %rsi    # 0x1359c4
movb $0x0, %al
callq 0x100210
movq -0x10(%rbp), %rax
addq $0xd8, %rax
movq %rax, -0xb0(%rbp)
cmpq $0x0, -0xb0(%rbp)
je 0x1ea12
movq $0x0, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
movq -0xb0(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x1ea10
movq -0xb0(%rbp), %rax
movq 0x8(%rax), %rax
movq -0xb8(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xc0(%rbp)
movq -0x10(%rbp), %rax
movq 0x138(%rax), %rax
movq 0x8(%rax), %rax
movq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xc8(%rbp)
movq -0x18(%rbp), %rdx
movq -0xc8(%rbp), %rax
movq 0x60(%rax), %rcx
leaq -0x98(%rbp), %rdi
leaq 0x116ff3(%rip), %rsi    # 0x1359e5
movb $0x0, %al
callq 0x100210
movq -0xb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xb8(%rbp)
jmp 0x1e983
jmp 0x1ea12
leaq -0x98(%rbp), %rdi
leaq 0x134001(%rip), %rsi    # 0x152a21
movb $0x0, %al
callq 0x100210
movq -0x18(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x130(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0xae80
movq -0x138(%rbp), %rdx
movq -0x130(%rbp), %rcx
movq %rax, %r8
leaq -0x98(%rbp), %rdi
leaq 0x114994(%rip), %rsi    # 0x133401
movb $0x0, %al
callq 0x100210
movq -0x10(%rbp), %rax
movq %rax, -0xd0(%rbp)
cmpq $0x0, -0xd0(%rbp)
je 0x1eb41
movq $0x0, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq -0xd0(%rbp), %rcx
cmpq 0xa0(%rcx), %rax
jae 0x1eb3f
movq -0xd0(%rbp), %rax
movq 0x98(%rax), %rax
movq -0xd8(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x98(%rbp), %rcx
callq 0x1c150
movq %rax, -0xe8(%rbp)
cmpq $0x0, -0xe8(%rbp)
je 0x1eb26
movq -0xe8(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x68(%rbp), %rdi
callq 0xc0720
movq -0xf0(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1edd5
jmp 0x1eb28
movq -0xd8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xd8(%rbp)
jmp 0x1ea98
jmp 0x1eb41
leaq -0x98(%rbp), %rdi
leaq 0x133ed2(%rip), %rsi    # 0x152a21
movb $0x0, %al
callq 0x100210
movq -0x18(%rbp), %rax
movq %rax, -0x148(%rbp)
movl $0x74, %esi
subq -0x18(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edi
callq 0x16cc0
movq -0x148(%rbp), %rdx
movq %rax, %rcx
leaq -0x98(%rbp), %rdi
leaq 0x116973(%rip), %rsi    # 0x1354fe
movb $0x0, %al
callq 0x100210
leaq -0x98(%rbp), %rdi
leaq 0x133e81(%rip), %rsi    # 0x152a21
movb $0x0, %al
callq 0x100210
movq -0x18(%rbp), %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %r8
leaq -0x98(%rbp), %rdi
leaq 0x116e39(%rip), %rsi    # 0x135a02
movb $0x0, %al
callq 0x100210
leaq -0x98(%rbp), %rdi
leaq 0x133e43(%rip), %rsi    # 0x152a21
movb $0x0, %al
callq 0x100210
movq -0x18(%rbp), %rax
movq %rax, -0x140(%rbp)
movl $0x74, %esi
subq -0x18(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edi
callq 0x16cc0
movq -0x140(%rbp), %rdx
movq %rax, %rcx
leaq -0x98(%rbp), %rdi
leaq 0x1168e4(%rip), %rsi    # 0x1354fe
movb $0x0, %al
callq 0x100210
leaq -0x98(%rbp), %rdi
leaq 0x116e1a(%rip), %rsi    # 0x135a49
movb $0x0, %al
callq 0x100210
leaq -0x98(%rbp), %rdi
leaq 0x133ddd(%rip), %rsi    # 0x152a21
movb $0x0, %al
callq 0x100210
movq -0x10(%rbp), %rax
movq %rax, -0xf8(%rbp)
cmpq $0x0, -0xf8(%rbp)
je 0x1ed18
movq $0x0, -0x100(%rbp)
movq -0x100(%rbp), %rax
movq -0xf8(%rbp), %rcx
cmpq 0xa0(%rcx), %rax
jae 0x1ed16
movq -0xf8(%rbp), %rax
movq 0x98(%rax), %rax
movq -0x100(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x108(%rbp)
movq -0x108(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x98(%rbp), %rcx
callq 0x1ca70
movq %rax, -0x110(%rbp)
cmpq $0x0, -0x110(%rbp)
je 0x1ecfd
movq -0x110(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x68(%rbp), %rdi
callq 0xc0720
movq -0x118(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1edd5
jmp 0x1ecff
movq -0x100(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x100(%rbp)
jmp 0x1ec6f
jmp 0x1ed18
leaq -0x98(%rbp), %rdi
leaq 0x133cfb(%rip), %rsi    # 0x152a21
movb $0x0, %al
callq 0x100210
movq -0x18(%rbp), %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %r8
leaq -0x98(%rbp), %rdi
leaq 0x116d08(%rip), %rsi    # 0x135a57
movb $0x0, %al
callq 0x100210
movq -0x20(%rbp), %rdi
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rdx
callq 0x1edf0
callq 0x40f10
movq %rax, %rdi
movq -0x90(%rbp), %rsi
callq 0xa4d0
movq %rax, -0x120(%rbp)
movq -0x20(%rbp), %rdi
movq -0x120(%rbp), %rdx
leaq 0x116ce3(%rip), %rsi    # 0x135a7d
movb $0x0, %al
callq 0x56e0
cmpq $0x0, -0x28(%rbp)
je 0x1edb6
movq -0x120(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movq $0x0, -0x128(%rbp)
movq -0x68(%rbp), %rdi
callq 0xc0720
movq -0x128(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
nopw %cs:(%rax,%rax)