// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_target_s_get_hash
tp_t xoico_target_s_get_hash( const xoico_target_s* o )
{
    // xoico_target.x:161:1
    BLM_INIT_LEVEL(0);
    tp_t hash = bcore_tp_init();
    hash = bcore_tp_fold_tp( hash, o->pre_hash );
    hash = bcore_tp_fold_tp( hash, o->compiler->target_pre_hash );
    hash = bcore_tp_fold_tp( hash, o->_ );
    hash = bcore_tp_fold_sc( hash, o->name.sc );
    hash = bcore_tp_fold_sc( hash, o->ext.sc );
    hash = bcore_tp_fold_bl( hash, o->define_signal_handler );
    
    if( o->cengine ) hash = bcore_tp_fold_tp( hash, xoico_a_get_hash(((const xoico*)(o->cengine))) );
    if( o->copyright_and_license_terms )  hash = bcore_tp_fold_sc( hash, o->copyright_and_license_terms->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]; hash = bcore_tp_fold_tp( hash, xoico_source_s_get_hash(e) );}}
    
    if( o->dependencies.size > 0 )
    {
        bcore_arr_tp_s* arr_tp = ((bcore_arr_tp_s*)BLM_LEVEL_T_PUSH(0,bcore_arr_tp_s,bcore_arr_tp_s_create()));
    
        {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]; bcore_arr_tp_s_push(arr_tp,xoico_target_s_get_hash(o->compiler->data[ target_idx ]) );}}
    
        // we sort to make the accrued hash independent of the order of dependencies
        bcore_arr_tp_s_sort(arr_tp,1 );
    
        {const bcore_arr_tp_s* __a=arr_tp ;if(__a)for(sz_t __i=0;__i<__a->size;__i++){tp_t tp=__a->data[__i]; hash = bcore_tp_fold_tp( hash, tp );}}
    }
    
    BLM_RETURNV(tp_t, hash)
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x19472a(%rip), %rax    # 0x1b2330
movq (%rax), %rax
movq %rax, -0x10(%rbp)
leaq -0x40(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xbfe80
movq -0x48(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq $0x0, 0x10(%rax)
callq 0x40f10
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x128(%rax), %rsi
callq 0x5640
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x138(%rax), %rax
movq 0x178(%rax), %rsi
callq 0x5640
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rsi
callq 0x5640
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0xa4d0
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rsi
callq 0xa4d0
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x8(%rbp), %rax
movb 0xd0(%rax), %al
andb $0x1, %al
movzbl %al, %esi
callq 0x68a0
movq %rax, -0x50(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x130(%rax)
je 0x1dd0c
movq -0x50(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rax
movq 0x130(%rax), %rdi
callq 0x10a30
movq -0xb0(%rbp), %rdi
movq %rax, %rsi
callq 0x5640
movq %rax, -0x50(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x1dd30
movq -0x50(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rsi
callq 0xa4d0
movq %rax, -0x50(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x1dda6
movq $0x0, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq -0x58(%rbp), %rcx
cmpq 0xa0(%rcx), %rax
jae 0x1dda4
movq -0x58(%rbp), %rax
movq 0x98(%rax), %rax
movq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x68(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x68(%rbp), %rdi
callq 0x1c000
movq -0xb8(%rbp), %rdi
movq %rax, %rsi
callq 0x5640
movq %rax, -0x50(%rbp)
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0x1dd47
jmp 0x1dda6
movq -0x8(%rbp), %rax
cmpq $0x0, 0xe8(%rax)
jbe 0x1df01
movq -0x10(%rbp), %rax
movq %rax, -0xc0(%rbp)
movb $0x0, %al
callq 0x945a0
movq -0xc0(%rbp), %rdi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %esi
movabsq $-0x79c1eb0a2e5b4c6b, %rdx # imm = 0x863E14F5D1A4B395
callq 0xc01a0
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
addq $0xd8, %rax
movq %rax, -0x78(%rbp)
cmpq $0x0, -0x78(%rbp)
je 0x1de76
movq $0x0, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq -0x78(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x1de74
movq -0x78(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x88(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x8(%rbp), %rax
movq 0x138(%rax), %rax
movq 0x8(%rax), %rax
movq -0x88(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x1dbf0
movq -0xc8(%rbp), %rdi
movq %rax, %rsi
callq 0x948a0
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x1de08
jmp 0x1de76
movq -0x70(%rbp), %rdi
movl $0x1, %esi
callq 0x94ca0
movq -0x70(%rbp), %rax
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x1deff
movq $0x0, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq -0x90(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x1defd
movq -0x90(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x98(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xa0(%rbp)
movq -0x50(%rbp), %rdi
movq -0xa0(%rbp), %rsi
callq 0x5640
movq %rax, -0x50(%rbp)
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x1dea4
jmp 0x1deff
jmp 0x1df01
movq -0x50(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x48(%rbp), %rdi
callq 0xc0720
movq -0xa8(%rbp), %rax
addq $0xd0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)