// File: /workspace/github_cpp_makefile_star2_O2/dustin[P]kvtest/tests.cc
// Function: TestTest::run(kvtest::KVStore*)
bool TestTest::run(KVStore *tut) {
    string testKey("some key");
    string testValue("some value");

    RememberingCallback<bool> cb;
    assertFalse(cb.fired, "Expected callback to not have fired");
    tut->set(testKey, testValue, cb);
    cb.waitForValue();
    assertTrue(cb.fired, "Expected callback to have fired.");
    assertTrue(cb.val, string("Failed to set value."));

    RememberingCallback<GetValue> getCb;
    assertFalse(getCb.fired, "Expected callback to not have fired");
    tut->get(testKey, getCb);
    getCb.waitForValue();
    assertTrue(getCb.val.success, "Expected success getting initial value");
    assertEquals(getCb.val.value, testValue);

    RememberingCallback<bool> delCb1;
    tut->del(testKey, delCb1);
    delCb1.waitForValue();
    assertTrue(delCb1.val,  string("Failed to delete value."));

    RememberingCallback<bool> delCb2;
    tut->del(testKey, delCb2);
    delCb2.waitForValue();
    assertFalse(delCb2.val, string("Doubly deleted value"));

    RememberingCallback<GetValue> getCb2;
    tut->get(testKey, getCb2);
    getCb2.waitForValue();
    assertFalse(getCb2.val.success, "Expected failure getting final value.");

    return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x3e8, %rsp            # imm = 0x3E8
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x3fe4(%rip), %rsi      # 0x8052
leaq 0x10(%rsp), %rdi
leaq 0x190(%rsp), %rdx
callq 0x3cf4
leaq 0x3fd4(%rip), %rsi      # 0x805b
leaq 0x30(%rsp), %rdi
leaq 0x190(%rsp), %rdx
callq 0x3cf4
leaq 0x220(%rsp), %rdi
callq 0x4aba
movb 0x229(%rsp), %bpl
leaq 0x3fb1(%rip), %rsi      # 0x8066
leaq 0x170(%rsp), %rdi
leaq 0x190(%rsp), %rdx
callq 0x3cf4
movzbl %bpl, %esi
leaq 0x170(%rsp), %rdx
movq %rbx, %rdi
callq 0x4b56
leaq 0x170(%rsp), %rdi
callq 0x30d0
movq (%r14), %rax
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
leaq 0x220(%rsp), %rcx
movq %r14, %rdi
callq *0x20(%rax)
leaq 0x220(%rsp), %rdi
callq 0x4ba8
movb 0x229(%rsp), %bpl
leaq 0x3f68(%rip), %rsi      # 0x808a
leaq 0x150(%rsp), %rdi
leaq 0x190(%rsp), %rdx
callq 0x3cf4
movzbl %bpl, %esi
leaq 0x150(%rsp), %rdx
movq %rbx, %rdi
callq 0x4c62
leaq 0x150(%rsp), %rdi
callq 0x30d0
movb 0x228(%rsp), %bpl
leaq 0x3f44(%rip), %rsi      # 0x80ab
leaq 0x130(%rsp), %rdi
leaq 0x190(%rsp), %rdx
callq 0x3cf4
movzbl %bpl, %esi
leaq 0x130(%rsp), %rdx
movq %rbx, %rdi
callq 0x4c62
leaq 0x130(%rsp), %rdi
callq 0x30d0
leaq 0x190(%rsp), %rdi
callq 0x4cdc
movb 0x1c0(%rsp), %bpl
leaq 0x3ead(%rip), %rsi      # 0x8066
leaq 0x110(%rsp), %rdi
leaq 0x288(%rsp), %rdx
callq 0x3cf4
movzbl %bpl, %esi
leaq 0x110(%rsp), %rdx
movq %rbx, %rdi
callq 0x4b56
leaq 0x110(%rsp), %rdi
callq 0x30d0
movq (%r14), %rax
leaq 0x10(%rsp), %rsi
leaq 0x190(%rsp), %rdx
movq %r14, %rdi
callq *0x30(%rax)
leaq 0x190(%rsp), %rdi
callq 0x4d9a
movb 0x1b8(%rsp), %bpl
leaq 0x3e9f(%rip), %rsi      # 0x80c0
leaq 0xf0(%rsp), %rdi
leaq 0x288(%rsp), %rdx
callq 0x3cf4
movzbl %bpl, %esi
leaq 0xf0(%rsp), %rdx
movq %rbx, %rdi
callq 0x4c62
leaq 0x198(%rsp), %r15
leaq 0xf0(%rsp), %rdi
callq 0x30d0
leaq 0xd0(%rsp), %rdi
movq %r15, %rsi
callq 0x32f0
leaq 0xb0(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x32f0
leaq 0xd0(%rsp), %rsi
leaq 0xb0(%rsp), %rdx
movq %rbx, %rdi
callq 0x4e54
leaq 0xb0(%rsp), %rdi
callq 0x30d0
leaq 0xd0(%rsp), %rdi
callq 0x30d0
leaq 0x380(%rsp), %rdi
callq 0x4aba
movq (%r14), %rax
leaq 0x10(%rsp), %rsi
leaq 0x380(%rsp), %rdx
movq %r14, %rdi
callq *0x38(%rax)
leaq 0x380(%rsp), %rdi
callq 0x4ba8
movb 0x388(%rsp), %bpl
leaq 0x3df5(%rip), %rsi      # 0x80e7
leaq 0x90(%rsp), %rdi
leaq 0x288(%rsp), %rdx
callq 0x3cf4
movzbl %bpl, %esi
leaq 0x90(%rsp), %rdx
movq %rbx, %rdi
callq 0x4c62
leaq 0x90(%rsp), %rdi
callq 0x30d0
leaq 0x318(%rsp), %rdi
callq 0x4aba
movq (%r14), %rax
leaq 0x10(%rsp), %rsi
leaq 0x318(%rsp), %rdx
movq %r14, %rdi
callq *0x38(%rax)
leaq 0x318(%rsp), %rdi
callq 0x4ba8
movb 0x320(%rsp), %bpl
leaq 0x3d98(%rip), %rsi      # 0x80ff
leaq 0x70(%rsp), %rdi
leaq 0x288(%rsp), %rdx
callq 0x3cf4
movzbl %bpl, %esi
leaq 0x70(%rsp), %rdx
movq %rbx, %rdi
callq 0x4b56
leaq 0x70(%rsp), %rdi
callq 0x30d0
leaq 0x288(%rsp), %rdi
callq 0x4cdc
movq (%r14), %rax
leaq 0x10(%rsp), %rsi
leaq 0x288(%rsp), %rdx
movq %r14, %rdi
callq *0x30(%rax)
leaq 0x288(%rsp), %rdi
callq 0x4d9a
movb 0x2b0(%rsp), %bpl
leaq 0x3d41(%rip), %rsi      # 0x8114
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x3cf4
movzbl %bpl, %esi
leaq 0x50(%rsp), %rdx
movq %rbx, %rdi
callq 0x4b56
leaq 0x50(%rsp), %rdi
callq 0x30d0
leaq 0x288(%rsp), %rdi
callq 0x4ec0
leaq 0x318(%rsp), %rdi
callq 0x4eee
leaq 0x380(%rsp), %rdi
callq 0x4eee
leaq 0x190(%rsp), %rdi
callq 0x4ec0
leaq 0x220(%rsp), %rdi
callq 0x4eee
leaq 0x30(%rsp), %rdi
callq 0x30d0
leaq 0x10(%rsp), %rdi
callq 0x30d0
movb $0x1, %al
addq $0x3e8, %rsp            # imm = 0x3E8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x30d0
jmp 0x453f
jmp 0x453c
jmp 0x454e
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x30d0
jmp 0x4551
jmp 0x454e
jmp 0x4560
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x30d0
jmp 0x4563
jmp 0x4560
jmp 0x4577
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x30d0
jmp 0x44ce
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
jmp 0x44f5
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
jmp 0x44f5
jmp 0x4577
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0x30d0
jmp 0x457a
jmp 0x4577
jmp 0x4572
movq %rax, %rbx
leaq 0x130(%rsp), %rdi
jmp 0x4529
jmp 0x4572
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
jmp 0x4529
jmp 0x4572
movq %rax, %rbx
leaq 0x170(%rsp), %rdi
callq 0x30d0
jmp 0x4587
jmp 0x4572
movq %rax, %rbx
jmp 0x4594
movq %rax, %rbx
jmp 0x459e
movq %rax, %rbx
leaq 0x288(%rsp), %rdi
callq 0x4ec0
jmp 0x4551
movq %rax, %rbx
leaq 0x318(%rsp), %rdi
callq 0x4eee
jmp 0x4563
movq %rax, %rbx
leaq 0x380(%rsp), %rdi
callq 0x4eee
jmp 0x457a
movq %rax, %rbx
jmp 0x4587
movq %rax, %rbx
leaq 0x190(%rsp), %rdi
callq 0x4ec0
leaq 0x220(%rsp), %rdi
callq 0x4eee
leaq 0x30(%rsp), %rdi
callq 0x30d0
leaq 0x10(%rsp), %rdi
callq 0x30d0
movq %rbx, %rdi
callq 0x33c0