// File: /workspace/github_c_makefile_star2_O3/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_builder_target_s_get_hash
tp_t xoico_builder_target_s_get_hash( const xoico_builder_target_s* o )
{
    // xoico_builder.x:113:5
    
    tp_t hash = bcore_tp_init();
    hash = o->name ? bcore_tp_fold_sc( hash, o->name->sc ) : hash;
    hash = o->extension ? bcore_tp_fold_sc( hash, o->extension->sc ) : hash;
    hash = o->root_folder ? bcore_tp_fold_sc( hash, o->root_folder->sc ) : hash;
    {const bcore_arr_st_s* __a=&(o->dependencies );if(__a)for(sz_t __i=0;__i<__a->size;__i++){const st_s* e=__a->data[__i]; hash = bcore_tp_fold_sc( hash, e->sc );}}
    {const bcore_arr_st_s* __a=&(o->sources );if(__a)for(sz_t __i=0;__i<__a->size;__i++){const st_s* e=__a->data[__i]; hash = bcore_tp_fold_sc( hash, e->sc );}}
    hash = o->signal_handler ? bcore_tp_fold_sc( hash, o->signal_handler->sc ) : hash;
    hash = bcore_tp_fold_bl( hash, o->define_signal_handler );
    hash = o->cengine ? bcore_tp_fold_bl( hash, xoico_a_get_hash(((const xoico*)(o->cengine))) ) : hash;
    return  hash;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movabsq $-0x340d631b7bdddcdb, %rdx # imm = 0xCBF29CE484222325
movabsq $0x100000001b3, %r13    # imm = 0x100000001B3
movq 0x8(%rdi), %rax
testq %rax, %rax
je 0x4c74c
movq 0x8(%rax), %rcx
testq %rcx, %rcx
je 0x4c751
movb (%rcx), %sil
testb %sil, %sil
je 0x4c74c
incq %rcx
movzbl %sil, %eax
xorq %rdx, %rax
imulq %r13, %rax
movb (%rcx), %sil
incq %rcx
movq %rax, %rdx
testb %sil, %sil
jne 0x4c731
jmp 0x4c75b
movq %rdx, %rax
jmp 0x4c75b
movabsq $-0x509c42b379fe4821, %rax # imm = 0xAF63BD4C8601B7DF
movq 0x10(%rdi), %rcx
testq %rcx, %rcx
je 0x4c797
movq 0x8(%rcx), %rcx
testq %rcx, %rcx
je 0x4c793
movb (%rcx), %sil
testb %sil, %sil
je 0x4c797
incq %rcx
movzbl %sil, %edx
xorq %rax, %rdx
imulq %r13, %rdx
movb (%rcx), %sil
incq %rcx
movq %rdx, %rax
testb %sil, %sil
jne 0x4c778
jmp 0x4c79a
imulq %r13, %rax
movq %rax, %rdx
movq 0x18(%rdi), %rax
testq %rax, %rax
je 0x4c7d6
movq 0x8(%rax), %rax
testq %rax, %rax
je 0x4c7d2
movb (%rax), %sil
testb %sil, %sil
je 0x4c7d6
incq %rax
movzbl %sil, %ecx
xorq %rdx, %rcx
imulq %r13, %rcx
movb (%rax), %sil
incq %rax
movq %rcx, %rdx
testb %sil, %sil
jne 0x4c7b7
jmp 0x4c7d9
imulq %r13, %rdx
movq %rdx, %rcx
movq 0x48(%rdi), %rdx
testq %rdx, %rdx
je 0x4c830
movq 0x40(%rdi), %rsi
xorl %r8d, %r8d
movq (%rsi,%r8,8), %rax
movq 0x8(%rax), %r9
testq %r9, %r9
je 0x4c81c
movb (%r9), %r10b
testb %r10b, %r10b
je 0x4c820
incq %r9
movzbl %r10b, %eax
xorq %rcx, %rax
imulq %r13, %rax
movb (%r9), %r10b
incq %r9
movq %rax, %rcx
testb %r10b, %r10b
jne 0x4c801
jmp 0x4c823
imulq %r13, %rcx
movq %rcx, %rax
incq %r8
movq %rax, %rcx
cmpq %rdx, %r8
jne 0x4c7e9
jmp 0x4c833
movq %rcx, %rax
movq 0x68(%rdi), %rdx
testq %rdx, %rdx
je 0x4c88a
movq 0x60(%rdi), %rsi
xorl %r8d, %r8d
movq (%rsi,%r8,8), %rcx
movq 0x8(%rcx), %r9
testq %r9, %r9
je 0x4c876
movb (%r9), %r10b
testb %r10b, %r10b
je 0x4c87a
incq %r9
movzbl %r10b, %ecx
xorq %rax, %rcx
imulq %r13, %rcx
movb (%r9), %r10b
incq %r9
movq %rcx, %rax
testb %r10b, %r10b
jne 0x4c85b
jmp 0x4c87d
imulq %r13, %rax
movq %rax, %rcx
incq %r8
movq %rcx, %rax
cmpq %rdx, %r8
jne 0x4c843
jmp 0x4c88d
movq %rax, %rcx
movq 0x78(%rdi), %rax
testq %rax, %rax
je 0x4c8c9
movq 0x8(%rax), %rax
testq %rax, %rax
je 0x4c8c5
movb (%rax), %sil
testb %sil, %sil
je 0x4c8c9
incq %rax
movzbl %sil, %edx
xorq %rcx, %rdx
imulq %r13, %rdx
movb (%rax), %sil
incq %rax
movq %rdx, %rcx
testb %sil, %sil
jne 0x4c8aa
jmp 0x4c8cc
imulq %r13, %rcx
movq %rcx, %rdx
movzbl 0x80(%rdi), %ebx
xorq %rdx, %rbx
imulq %r13, %rbx
movq 0x88(%rdi), %r14
testq %r14, %r14
je 0x4c995
movq (%r14), %r15
leaq 0x145b94(%rip), %rax    # 0x192488
movl 0x145b8e(%rip), %ecx    # 0x192488
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r15, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r15, %rdx
je 0x4c94e
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r15, %rdx
je 0x4c94e
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r15, %rdx
je 0x4c94e
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r15, %rdx
jne 0x4c957
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0x4c97e
movabsq $0x5d91f496b6479859, %rdi # imm = 0x5D91F496B6479859
movq %r15, %rsi
callq 0xe9bc5
movq %rax, %r12
leaq 0x145b15(%rip), %rdi    # 0x192488
movq %r15, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
callq *0x18(%r12)
xorl %ecx, %ecx
testq %rax, %rax
setne %cl
xorq %rcx, %rbx
imulq %r13, %rbx
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq