// File: /workspace/github_c_makefile_star2_O0/sasairc[P]clangsay/src/libbenly/src/hash.c
// Function: release_shash
static
void release_shash(SHASH* shash)
{
    int     i       = 0,
            j       = 0;

    if (shash != NULL) {
        if (shash->elem != NULL) {
            j = shash->elemc - 1;
            while (i < shash->elemc && i <= j) {
                if (*(shash->elem + i) != NULL) {
                    remove_key_elem(shash, i);
                    *(*(shash->elem + i)) = NULL;
                    remove_value_elem(shash, i);
                    *(*(shash->elem + i) + 1) = NULL;
                    free(*(shash->elem + i));
                    *(shash->elem + i) = NULL;
                }
                if (*(shash->elem + j) != NULL) {
                    remove_key_elem(shash, j);
                    *(*(shash->elem + j)) = NULL;
                    remove_value_elem(shash, j);
                    *(*(shash->elem + j) + 1) = NULL;
                    free(*(shash->elem + j));
                    *(shash->elem + j) = NULL;
                }
                i++;
                j--;
            }
            free(shash->elem);
            shash->elem = NULL;
        }
        free(shash);
        shash = NULL;
    }

    return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
movl $0x0, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x595f
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x594e
movq -0x8(%rbp), %rax
movl (%rax), %eax
subl $0x1, %eax
movl %eax, -0x10(%rbp)
movl -0xc(%rbp), %ecx
movq -0x8(%rbp), %rdx
xorl %eax, %eax
cmpl (%rdx), %ecx
movb %al, -0x11(%rbp)
jge 0x580c
movl -0xc(%rbp), %eax
cmpl -0x10(%rbp), %eax
setle %al
movb %al, -0x11(%rbp)
movb -0x11(%rbp), %al
testb $0x1, %al
jne 0x5818
jmp 0x5935
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0xc(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x589b
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x5fb0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0xc(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq $0x0, (%rax)
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x6100
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0xc(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq $0x0, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0xc(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2180
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0xc(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x10(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x591e
movq -0x8(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0x5fb0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq $0x0, (%rax)
movq -0x8(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0x6100
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq $0x0, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2180
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x10(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
movl -0x10(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x57f0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2180
movq -0x8(%rbp), %rax
movq $0x0, 0x8(%rax)
movq -0x8(%rbp), %rdi
callq 0x2180
movq $0x0, -0x8(%rbp)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)