// File: dustin[P]kvtest/./ep.hh
// Function: kvtest::HashTable::del(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
bool del(std::string &key) {
            assert(active);
            int bucket_num = bucket(key);
            LockHolder lh(getMutex(bucket_num));

            StoredValue *v = values[bucket_num];

            // Special case empty bucket.
            if (!v) {
                return false;
            }

            // Special case the first one
            if (key.compare(v->key) == 0) {
                values[bucket_num] = v->next;
                delete v;
                return true;
            }

            while (v->next) {
                if (key.compare(v->next->key) == 0) {
                    StoredValue *tmp = v->next;
                    v->next = v->next->next;
                    delete tmp;
                    return true;
                }
            }

            return false;
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
testb $0x1, 0x10(%rax)
je 0xb643
jmp 0xb662
leaq 0x316c(%rip), %rdi      # 0xe7b6
leaq 0x3141(%rip), %rsi      # 0xe792
movl $0xb5, %edx
leaq 0x3270(%rip), %rcx      # 0xe8cd
callq 0x3170
movq -0x60(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xb3b0
movq -0x60(%rbp), %rdi
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %esi
callq 0xb470
movq %rax, %rsi
leaq -0x30(%rbp), %rdi
callq 0x7b50
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0xb6b5
movb $0x0, -0x1(%rbp)
movl $0x1, -0x3c(%rbp)
jmp 0xb7cb
movq -0x18(%rbp), %rdi
movq -0x38(%rbp), %rsi
addq $0x8, %rsi
callq 0x3040
movl %eax, -0x64(%rbp)
jmp 0xb6cb
movl -0x64(%rbp), %eax
cmpl $0x0, %eax
jne 0xb73a
movq -0x60(%rbp), %rax
movq -0x38(%rbp), %rcx
movq 0x30(%rcx), %rdx
movq 0x18(%rax), %rax
movslq -0x1c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x38(%rbp), %rax
movq %rax, -0x70(%rbp)
cmpq $0x0, %rax
je 0xb710
movq -0x70(%rbp), %rdi
callq 0xc200
movq -0x70(%rbp), %rdi
movl $0x38, %esi
callq 0x32a0
movb $0x1, -0x1(%rbp)
movl $0x1, -0x3c(%rbp)
jmp 0xb7cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x7bf0
jmp 0xb7e2
jmp 0xb73c
movq -0x38(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0xb7c0
movq -0x18(%rbp), %rdi
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rsi
addq $0x8, %rsi
callq 0x3040
movl %eax, -0x74(%rbp)
jmp 0xb761
movl -0x74(%rbp), %eax
cmpl $0x0, %eax
jne 0xb7bb
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x58(%rbp), %rax
movq %rax, -0x80(%rbp)
cmpq $0x0, %rax
je 0xb7ae
movq -0x80(%rbp), %rdi
callq 0xc200
movq -0x80(%rbp), %rdi
movl $0x38, %esi
callq 0x32a0
movb $0x1, -0x1(%rbp)
movl $0x1, -0x3c(%rbp)
jmp 0xb7cb
jmp 0xb73c
movb $0x0, -0x1(%rbp)
movl $0x1, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x7bf0
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x80, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x3450
nopl (%rax,%rax)