// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore_hmap.c
// Function: bcore_hmap_tp_s_set
uz_t bcore_hmap_tp_s_set( bcore_hmap_tp_s* o, tp_t key )
{
    if( !key ) ERR( "key is zero" );

    {
        uz_t idx = tp_find( o, key );
        if( idx < o->size ) return idx;
        idx = tp_set( o, key, 1 );
        if( idx < o->size ) return idx;
    }

    // rehash
    {
        tp_t* buf_keys  = o->keys;
        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;
        o->keys = bcore_u_memzero( sizeof( tp_t ), NULL, o->size );
        for( uz_t i = 0; i < buf_size; i++ )
        {
            if( buf_keys[ i ] ) bcore_hmap_tp_s_set( o, buf_keys[ i ] );
        }
        bcore_u_alloc( sizeof( tp_t ), buf_keys, 0, NULL );
    }

    return bcore_hmap_tp_s_set( o, key );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0xb2b58
leaq 0x9ce21(%rip), %rdi     # 0x14f95f
leaq 0x9cc5e(%rip), %rsi     # 0x14f7a3
movl $0xf87, %edx            # imm = 0xF87
leaq 0x9cc8e(%rip), %rcx     # 0x14f7df
movb $0x0, %al
callq 0x9cf40
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xb29e0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jae 0xb2b84
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xb2ce5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movl $0x1, %edx
callq 0xb2cf0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jae 0xb2bb5
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xb2ce5
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x30(%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 0xb2c0e
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0xb2c19
movl $0x4, %eax
movq %rax, -0x40(%rbp)
jmp 0xb2c19
movq -0x40(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jbe 0xb2c41
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
shlq %rax
movq %rax, -0x48(%rbp)
jmp 0xb2c4c
movl $0x8, %eax
movq %rax, -0x48(%rbp)
jmp 0xb2c4c
movq -0x48(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdx
movl $0x8, %edi
xorl %eax, %eax
movl %eax, %esi
callq 0x9d540
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq $0x0, -0x38(%rbp)
movq -0x38(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0xb2cbf
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0xb2caf
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rax
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0xb2b20
jmp 0xb2cb1
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0xb2c81
movq -0x28(%rbp), %rsi
movl $0x8, %edi
xorl %eax, %eax
movl %eax, %ecx
movq %rcx, %rdx
callq 0x9d330
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xb2b20
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nop