// File: /workspace/github_c_makefile_star2_O0/desion[P]terminal/src/hdict.c
// Function: hdb_close
int hdb_close(hdb_t *hdb, const char* label, uint32_t version_id)
{
    if(NULL == label){
        return 0;
    }
    uint64_t hdid = bkdr_hash(label);
    int found = 0;
    hdict_t *hd, *next;
    LOCK(hdb);
    for (hd = TAILQ_FIRST(&hdb->open_list); hd; hd = next) {
        next = TAILQ_NEXT(hd, link);
        if (hd->hdid == hdid && strcmp(hd->hdict_meta->label, label) == 0) {
            if (version_id != 0 && hd->hdict_meta->version != version_id){
                continue;
            }
            LIST_REMOVE(hd, h_link);
            TAILQ_REMOVE(&hdb->open_list, hd, link);
            hdb->num_open--;
            TAILQ_INSERT_TAIL(&hdb->close_list, hd, link);
            hdb->num_close++;
            found += 1;
            if (version_id != 0){
                break;
            }
        }
    }
    UNLK(hdb);

    return found;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
jne 0x3777
movl $0x0, -0x4(%rbp)
jmp 0x38f8
movq -0x18(%rbp), %rdi
callq 0x5170
movq %rax, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2490
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x38e9
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movq 0x50(%rax), %rax
cmpq -0x28(%rbp), %rax
jne 0x38da
movq -0x38(%rbp), %rax
movq 0x58(%rax), %rdi
addq $0x5, %rdi
movq -0x18(%rbp), %rsi
callq 0x2240
cmpl $0x0, %eax
jne 0x38da
cmpl $0x0, -0x1c(%rbp)
je 0x3800
movq -0x38(%rbp), %rax
movq 0x58(%rax), %rax
movl (%rax), %eax
cmpl -0x1c(%rbp), %eax
je 0x3800
jmp 0x38dc
jmp 0x3802
movq -0x38(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x3821
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rax
movq %rcx, (%rax)
jmp 0x3836
movq -0x38(%rbp), %rax
cmpq $0x0, (%rax)
je 0x3855
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x8(%rax)
jmp 0x3865
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x38(%rbp), %rax
movq (%rax), %rcx
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movl 0x48(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x48(%rax)
movq -0x38(%rbp), %rax
movq $0x0, (%rax)
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x38(%rbp), %rcx
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movq %rcx, (%rax)
movq -0x38(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x10(%rbp), %rax
movl 0x4c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x4c(%rax)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
cmpl $0x0, -0x1c(%rbp)
je 0x38d8
jmp 0x38e9
jmp 0x38da
jmp 0x38dc
movq -0x40(%rbp), %rax
movq %rax, -0x38(%rbp)
jmp 0x37a0
movq -0x10(%rbp), %rdi
callq 0x22d0
movl -0x2c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)