// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_func_s_get_hash
tp_t xoico_func_s_get_hash( const xoico_func_s* o )
{
    // xoico_func.x:75:1
    
    tp_t hash = bcore_tp_fold_tp( bcore_tp_init(), o->_ );
    hash = bcore_tp_fold_tp( hash, o->pre_hash );
    hash = bcore_tp_fold_tp( hash, o->name );
    hash = bcore_tp_fold_tp( hash, o->global_name );
    hash = bcore_tp_fold_tp( hash, o->obj_type );
    hash = bcore_tp_fold_tp( hash, o->signature_global_name );
    hash = bcore_tp_fold_bl( hash, o->expandable );
    hash = bcore_tp_fold_bl( hash, o->overloadable );
    hash = bcore_tp_fold_bl( hash, o->register_in_function_manager );
    
    if( o->body      ) hash = bcore_tp_fold_tp( hash, xoico_body_s_get_hash(o->body) );
    if( o->signature ) hash = bcore_tp_fold_tp( hash, xoico_signature_s_get_hash(o->signature) );
    return  hash;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
movabsq $0x100000001b3, %r15    # imm = 0x100000001B3
movq (%rdi), %rcx
movq 0x8(%rdi), %rax
movl $0xff, %r12d
movq %rcx, %rdx
andq %r12, %rdx
movabsq $-0x340d631b7bdddcdb, %rsi # imm = 0xCBF29CE484222325
xorq %rdx, %rsi
imulq %r15, %rsi
movl %ecx, %edx
shrl $0x8, %edx
movl $0xff, %ebp
andl %ebp, %edx
xorq %rsi, %rdx
imulq %r15, %rdx
movl %ecx, %esi
shrl $0x10, %esi
andl %ebp, %esi
xorq %rdx, %rsi
imulq %r15, %rsi
movl %ecx, %edx
shrl $0x18, %edx
xorq %rsi, %rdx
imulq %r15, %rdx
movq %rcx, %rsi
shrq $0x20, %rsi
andq %r12, %rsi
xorq %rdx, %rsi
imulq %r15, %rsi
movq %rcx, %rdx
shrq $0x28, %rdx
andq %r12, %rdx
xorq %rsi, %rdx
imulq %r15, %rdx
movq %rcx, %rsi
shrq $0x30, %rsi
andq %r12, %rsi
xorq %rdx, %rsi
imulq %r15, %rsi
shrq $0x38, %rcx
xorq %rsi, %rcx
imulq %r15, %rcx
movq 0x30(%rdi), %rdx
movq %rdx, %rsi
andq %r12, %rsi
xorq %rcx, %rsi
imulq %r15, %rsi
movl %edx, %ecx
shrl $0x8, %ecx
andl %ebp, %ecx
xorq %rsi, %rcx
imulq %r15, %rcx
movl %edx, %esi
shrl $0x10, %esi
andl %ebp, %esi
xorq %rcx, %rsi
imulq %r15, %rsi
movl %edx, %ecx
shrl $0x18, %ecx
xorq %rsi, %rcx
imulq %r15, %rcx
movq %rdx, %rsi
shrq $0x20, %rsi
andq %r12, %rsi
xorq %rcx, %rsi
imulq %r15, %rsi
movq %rdx, %rcx
shrq $0x28, %rcx
andq %r12, %rcx
xorq %rsi, %rcx
imulq %r15, %rcx
movq %rdx, %rsi
shrq $0x30, %rsi
andq %r12, %rsi
xorq %rcx, %rsi
imulq %r15, %rsi
shrq $0x38, %rdx
xorq %rsi, %rdx
imulq %r15, %rdx
movq %rax, %rcx
andq %r12, %rcx
xorq %rdx, %rcx
imulq %r15, %rcx
movl %eax, %edx
shrl $0x8, %edx
andl %ebp, %edx
xorq %rcx, %rdx
imulq %r15, %rdx
movl %eax, %ecx
shrl $0x10, %ecx
andl %ebp, %ecx
xorq %rdx, %rcx
imulq %r15, %rcx
movl %eax, %edx
shrl $0x18, %edx
xorq %rcx, %rdx
imulq %r15, %rdx
movq %rax, %rcx
shrq $0x20, %rcx
andq %r12, %rcx
xorq %rdx, %rcx
imulq %r15, %rcx
movq %rax, %rdx
shrq $0x28, %rdx
andq %r12, %rdx
xorq %rcx, %rdx
imulq %r15, %rdx
movq %rax, %rcx
shrq $0x30, %rcx
andq %r12, %rcx
xorq %rdx, %rcx
imulq %r15, %rcx
shrq $0x38, %rax
xorq %rcx, %rax
imulq %r15, %rax
movq 0x10(%rdi), %rcx
movq %rcx, %rdx
andq %r12, %rdx
xorq %rax, %rdx
imulq %r15, %rdx
movl %ecx, %eax
shrl $0x8, %eax
andl %ebp, %eax
xorq %rdx, %rax
imulq %r15, %rax
movl %ecx, %edx
shrl $0x10, %edx
andl %ebp, %edx
xorq %rax, %rdx
imulq %r15, %rdx
movl %ecx, %eax
shrl $0x18, %eax
xorq %rdx, %rax
imulq %r15, %rax
movq %rcx, %rdx
shrq $0x20, %rdx
andq %r12, %rdx
xorq %rax, %rdx
imulq %r15, %rdx
movq %rcx, %rax
shrq $0x28, %rax
andq %r12, %rax
xorq %rdx, %rax
imulq %r15, %rax
movq %rcx, %rdx
shrq $0x30, %rdx
andq %r12, %rdx
xorq %rax, %rdx
imulq %r15, %rdx
shrq $0x38, %rcx
xorq %rdx, %rcx
imulq %r15, %rcx
movq 0x18(%rdi), %rax
movq %rax, %rdx
andq %r12, %rdx
xorq %rcx, %rdx
imulq %r15, %rdx
movl %eax, %ecx
shrl $0x8, %ecx
andl %ebp, %ecx
xorq %rdx, %rcx
imulq %r15, %rcx
movl %eax, %edx
shrl $0x10, %edx
andl %ebp, %edx
xorq %rcx, %rdx
imulq %r15, %rdx
movl %eax, %ecx
shrl $0x18, %ecx
xorq %rdx, %rcx
imulq %r15, %rcx
movq %rax, %rdx
shrq $0x20, %rdx
andq %r12, %rdx
xorq %rcx, %rdx
imulq %r15, %rdx
movq %rax, %rcx
shrq $0x28, %rcx
andq %r12, %rcx
xorq %rdx, %rcx
imulq %r15, %rcx
movq %rax, %rdx
shrq $0x30, %rdx
andq %r12, %rdx
xorq %rcx, %rdx
imulq %r15, %rdx
shrq $0x38, %rax
xorq %rdx, %rax
imulq %r15, %rax
movq 0x20(%rdi), %rcx
movq %rcx, %rdx
andq %r12, %rdx
xorq %rax, %rdx
imulq %r15, %rdx
movl %ecx, %eax
shrl $0x8, %eax
andl %ebp, %eax
xorq %rdx, %rax
imulq %r15, %rax
movl %ecx, %edx
shrl $0x10, %edx
andl %ebp, %edx
xorq %rax, %rdx
imulq %r15, %rdx
movl %ecx, %eax
shrl $0x18, %eax
xorq %rdx, %rax
imulq %r15, %rax
movq %rcx, %rdx
shrq $0x20, %rdx
andq %r12, %rdx
xorq %rax, %rdx
imulq %r15, %rdx
movq %rcx, %rax
shrq $0x28, %rax
andq %r12, %rax
xorq %rdx, %rax
imulq %r15, %rax
movq %rcx, %rdx
shrq $0x30, %rdx
andq %r12, %rdx
xorq %rax, %rdx
imulq %r15, %rdx
shrq $0x38, %rcx
xorq %rdx, %rcx
imulq %r15, %rcx
movzbl 0x28(%rdi), %eax
xorq %rcx, %rax
imulq %r15, %rax
movzbl 0x29(%rdi), %ecx
xorq %rax, %rcx
imulq %r15, %rcx
movzbl 0x2b(%rdi), %r14d
xorq %rcx, %r14
imulq %r15, %r14
movq 0x38(%rdi), %rdi
testq %rdi, %rdi
je 0x1a374
callq 0x186da
movq %rax, %rcx
andq %r12, %rcx
xorq %r14, %rcx
imulq %r15, %rcx
movl %eax, %edx
shrl $0x8, %edx
andl %ebp, %edx
xorq %rcx, %rdx
imulq %r15, %rdx
movl %eax, %ecx
shrl $0x10, %ecx
andl %ebp, %ecx
xorq %rdx, %rcx
imulq %r15, %rcx
movl %eax, %edx
shrl $0x18, %edx
xorq %rcx, %rdx
imulq %r15, %rdx
movq %rax, %rcx
shrq $0x20, %rcx
andq %r12, %rcx
xorq %rdx, %rcx
imulq %r15, %rcx
movq %rax, %rdx
shrq $0x28, %rdx
andq %r12, %rdx
xorq %rcx, %rdx
imulq %r15, %rdx
movq %rax, %rcx
shrq $0x30, %rcx
andq %r12, %rcx
xorq %rdx, %rcx
imulq %r15, %rcx
shrq $0x38, %rax
xorq %rcx, %rax
imulq %r15, %rax
movq %rax, %r14
movq 0x40(%rbx), %rdi
testq %rdi, %rdi
je 0x1a406
callq 0x14db1
movl $0xff, %ecx
movq %rax, %rdx
andq %rcx, %rdx
xorq %r14, %rdx
imulq %r15, %rdx
movl %eax, %esi
shrl $0x8, %esi
movl $0xff, %edi
andl %edi, %esi
xorq %rdx, %rsi
imulq %r15, %rsi
movl %eax, %edx
shrl $0x10, %edx
andl %edi, %edx
xorq %rsi, %rdx
imulq %r15, %rdx
movl %eax, %esi
shrl $0x18, %esi
xorq %rdx, %rsi
imulq %r15, %rsi
movq %rax, %rdx
shrq $0x20, %rdx
andq %rcx, %rdx
xorq %rsi, %rdx
imulq %r15, %rdx
movq %rax, %rsi
shrq $0x28, %rsi
andq %rcx, %rsi
xorq %rdx, %rsi
imulq %r15, %rsi
movq %rax, %rdx
shrq $0x30, %rdx
andq %rcx, %rdx
xorq %rsi, %rdx
imulq %r15, %rdx
shrq $0x38, %rax
xorq %rdx, %rax
imulq %r15, %rax
movq %rax, %r14
movq %r14, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq