// File: /workspace/github_c_makefile_star2_O1/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 0x51c00
movq 0x8(%rax), %rcx
testq %rcx, %rcx
je 0x51c05
movb (%rcx), %sil
testb %sil, %sil
je 0x51c00
incq %rcx
movzbl %sil, %eax
xorq %rdx, %rax
imulq %r13, %rax
movb (%rcx), %sil
incq %rcx
movq %rax, %rdx
testb %sil, %sil
jne 0x51be5
jmp 0x51c0f
movq %rdx, %rax
jmp 0x51c0f
movabsq $-0x509c42b379fe4821, %rax # imm = 0xAF63BD4C8601B7DF
movq 0x10(%rdi), %rcx
testq %rcx, %rcx
je 0x51c4b
movq 0x8(%rcx), %rcx
testq %rcx, %rcx
je 0x51c47
movb (%rcx), %sil
testb %sil, %sil
je 0x51c4b
incq %rcx
movzbl %sil, %edx
xorq %rax, %rdx
imulq %r13, %rdx
movb (%rcx), %sil
incq %rcx
movq %rdx, %rax
testb %sil, %sil
jne 0x51c2c
jmp 0x51c4e
imulq %r13, %rax
movq %rax, %rdx
movq 0x18(%rdi), %rax
testq %rax, %rax
je 0x51c8a
movq 0x8(%rax), %rax
testq %rax, %rax
je 0x51c86
movb (%rax), %sil
testb %sil, %sil
je 0x51c8a
incq %rax
movzbl %sil, %ecx
xorq %rdx, %rcx
imulq %r13, %rcx
movb (%rax), %sil
incq %rax
movq %rcx, %rdx
testb %sil, %sil
jne 0x51c6b
jmp 0x51c8d
imulq %r13, %rdx
movq %rdx, %rcx
movq 0x48(%rdi), %rdx
testq %rdx, %rdx
je 0x51ce4
movq 0x40(%rdi), %rsi
xorl %r8d, %r8d
movq (%rsi,%r8,8), %rax
movq 0x8(%rax), %r9
testq %r9, %r9
je 0x51cd0
movb (%r9), %r10b
testb %r10b, %r10b
je 0x51cd4
incq %r9
movzbl %r10b, %eax
xorq %rcx, %rax
imulq %r13, %rax
movb (%r9), %r10b
incq %r9
movq %rax, %rcx
testb %r10b, %r10b
jne 0x51cb5
jmp 0x51cd7
imulq %r13, %rcx
movq %rcx, %rax
incq %r8
movq %rax, %rcx
cmpq %rdx, %r8
jne 0x51c9d
jmp 0x51ce7
movq %rcx, %rax
movq 0x68(%rdi), %rdx
testq %rdx, %rdx
je 0x51d3e
movq 0x60(%rdi), %rsi
xorl %r8d, %r8d
movq (%rsi,%r8,8), %rcx
movq 0x8(%rcx), %r9
testq %r9, %r9
je 0x51d2a
movb (%r9), %r10b
testb %r10b, %r10b
je 0x51d2e
incq %r9
movzbl %r10b, %ecx
xorq %rax, %rcx
imulq %r13, %rcx
movb (%r9), %r10b
incq %r9
movq %rcx, %rax
testb %r10b, %r10b
jne 0x51d0f
jmp 0x51d31
imulq %r13, %rax
movq %rax, %rcx
incq %r8
movq %rcx, %rax
cmpq %rdx, %r8
jne 0x51cf7
jmp 0x51d41
movq %rax, %rcx
movq 0x78(%rdi), %rax
testq %rax, %rax
je 0x51d7d
movq 0x8(%rax), %rax
testq %rax, %rax
je 0x51d79
movb (%rax), %sil
testb %sil, %sil
je 0x51d7d
incq %rax
movzbl %sil, %edx
xorq %rcx, %rdx
imulq %r13, %rdx
movb (%rax), %sil
incq %rax
movq %rdx, %rcx
testb %sil, %sil
jne 0x51d5e
jmp 0x51d80
imulq %r13, %rcx
movq %rcx, %rdx
movzbl 0x80(%rdi), %ebx
xorq %rdx, %rbx
imulq %r13, %rbx
movq 0x88(%rdi), %r14
testq %r14, %r14
je 0x51e49
movq (%r14), %r15
leaq 0x14d6e0(%rip), %rax    # 0x19f488
movl 0x14d6da(%rip), %ecx    # 0x19f488
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 0x51e02
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r15, %rdx
je 0x51e02
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r15, %rdx
je 0x51e02
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r15, %rdx
jne 0x51e56
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0x51e32
movabsq $0x5d91f496b6479859, %rdi # imm = 0x5D91F496B6479859
movq %r15, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0x14d661(%rip), %rdi    # 0x19f488
movq %r15, %rsi
movq %rax, %rdx
callq 0x12128c
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
xorl %r12d, %r12d
jmp 0x51e06