// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore_name.c
// Function: set_rehash
uz_t set_rehash( bcore_name_map_s* o, bcore_name_s name )
{
    if( !name.key ) ERR( "key is zero" );

    // set
    {
        uz_t idx = find( o, name.key );
        if( idx < o->size )
        {
            bcore_name_s_down( &name );
            return idx;
        }
        idx = set( o, name, 1 );
        if( idx < o->size ) return idx;
    }

    // rehash
    {
        bcore_name_s* buf_data  = o->data;
        uz_t          buf_size  = o->size;
        o->flags = bcore_u_alloc( sizeof( bl_t ), o->flags, 0, NULL );
        o->depth_limit = ( o->size > 0 ) ? o->depth_limit + 1 : 4;
        o->size        = ( o->size > 0 ) ? o->size * 2        : 8;
        if( o->size > o->size_limit ) ERR( "size limit (%zu) exceeded", o->size_limit );
        o->data = bcore_u_memzero( sizeof( bcore_name_s ), NULL, o->size );
        for( uz_t i = 0; i < buf_size; i++ ) if( buf_data[ i ].key ) set_rehash( o, buf_data[ i ] );
        bcore_u_alloc( sizeof( tp_t ), buf_data, 0, NULL );
    }

    return set_rehash( o, name );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
leaq 0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq %rdi, -0x10(%rbp)
cmpq $0x0, (%rax)
jne 0x130f7b
leaq 0x28949(%rip), %rdi     # 0x1598aa
leaq 0x2894d(%rip), %rsi     # 0x1598b5
movl $0x106, %edx            # imm = 0x106
leaq 0x1e86b(%rip), %rcx     # 0x14f7df
movb $0x0, %al
callq 0x9cf40
movq -0x38(%rbp), %rax
movq -0x10(%rbp), %rdi
movq (%rax), %rsi
callq 0x1311b0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jae 0x130fb3
movq -0x38(%rbp), %rdi
callq 0x130890
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x13119d
movq -0x38(%rbp), %rax
movq -0x10(%rbp), %rdi
movl $0x1, %esi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x131270
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jae 0x130ffd
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x13119d
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
movl $0x1, %edi
xorl %eax, %eax
movl %eax, %ecx
movq %rcx, %rdx
callq 0x9d330
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jbe 0x131056
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x131061
movl $0x4, %eax
movq %rax, -0x40(%rbp)
jmp 0x131061
movq -0x40(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jbe 0x131089
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
shlq %rax
movq %rax, -0x48(%rbp)
jmp 0x131094
movl $0x8, %eax
movq %rax, -0x48(%rbp)
jmp 0x131094
movq -0x48(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x28(%rcx), %rax
jbe 0x1310db
movq -0x10(%rbp), %rax
movq 0x28(%rax), %r8
leaq 0x287e9(%rip), %rdi     # 0x1598aa
leaq 0x287ed(%rip), %rsi     # 0x1598b5
movl $0x11b, %edx            # imm = 0x11B
leaq 0x287ee(%rip), %rcx     # 0x1598c2
movb $0x0, %al
callq 0x9cf40
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdx
movl $0x18, %edi
xorl %eax, %eax
movl %eax, %esi
callq 0x9d540
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq $0x0, -0x30(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x28(%rbp), %rax
jae 0x13115e
movq -0x20(%rbp), %rax
imulq $0x18, -0x30(%rbp), %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
je 0x13114e
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
imulq $0x18, -0x30(%rbp), %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x130f40
jmp 0x131150
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x131104
movq -0x20(%rbp), %rsi
movl $0x8, %edi
xorl %eax, %eax
movl %eax, %ecx
movq %rcx, %rdx
callq 0x9d330
movq -0x38(%rbp), %rax
movq -0x10(%rbp), %rdi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x130f40
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopw (%rax,%rax)