// File: SeanChao[P]KV-Store/correctness.cc
// Function: CorrectnessTest::regular_test(unsigned long)
void regular_test(uint64_t max)
	{
		uint64_t i;

		// Test a single key
		EXPECT(not_found, store.get(1));
		store.put(1, "SE");
		EXPECT("SE", store.get(1));
		EXPECT(true, store.del(1));
		EXPECT(not_found, store.get(1));
		EXPECT(false, store.del(1));

		phase();

		// Test multiple key-value pairs
		for (i = 0; i < max; ++i) {
			store.put(i, std::string(i+1, 's'));
			EXPECT(std::string(i+1, 's'), store.get(i));
		}
		phase();

		// Test after all insertions
		for (i = 0; i < max; ++i)
			EXPECT(std::string(i+1, 's'), store.get(i));
		phase();

		// Test deletions
		for (i = 0; i < max; i+=2)
			EXPECT(true, store.del(i));

		for (i = 0; i < max; ++i)
			EXPECT((i & 1) ? std::string(i+1, 's') : not_found,
			       store.get(i));

		for (i = 1; i < max; ++i)
			EXPECT(i & 1, store.del(i));

		phase();

		report();
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x430, %rsp            # imm = 0x430
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rsi
movq %rsi, -0x378(%rbp)
addq $0x28, %rsi
leaq -0x38(%rbp), %rdi
movl $0x1, %edx
callq 0x5f40
leaq -0x59(%rbp), %rdi
movq %rdi, -0x370(%rbp)
callq 0x3520
movq -0x370(%rbp), %rdx
leaq 0x10325(%rip), %rsi     # 0x140a3
leaq -0x58(%rbp), %rdi
callq 0x3a70
jmp 0x3d89
movq -0x378(%rbp), %rdi
leaq 0x19569(%rip), %rsi     # 0x1d300
leaq -0x38(%rbp), %rdx
leaq -0x58(%rbp), %rcx
movl $0x11, %r8d
callq 0x4a70
jmp 0x3dac
leaq -0x58(%rbp), %rdi
callq 0x35b8
leaq -0x59(%rbp), %rdi
callq 0x3330
leaq -0x38(%rbp), %rdi
callq 0x35b8
movq -0x378(%rbp), %rax
addq $0x28, %rax
movq %rax, -0x388(%rbp)
leaq -0x91(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0x3520
movq -0x380(%rbp), %rdx
leaq 0x102b8(%rip), %rsi     # 0x140b2
leaq -0x90(%rbp), %rdi
callq 0x3a70
jmp 0x3e08
movq -0x388(%rbp), %rdi
movl $0x1, %esi
leaq -0x90(%rbp), %rdx
callq 0x56f0
jmp 0x3e22
leaq -0x90(%rbp), %rdi
callq 0x35b8
leaq -0x91(%rbp), %rdi
callq 0x3330
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x390(%rbp)
callq 0x3520
movq -0x390(%rbp), %rdx
leaq 0x10257(%rip), %rsi     # 0x140b2
leaq -0xb8(%rbp), %rdi
callq 0x3a70
jmp 0x3e69
movq -0x378(%rbp), %rsi
addq $0x28, %rsi
leaq -0xe0(%rbp), %rdi
movl $0x1, %edx
callq 0x5f40
jmp 0x3e87
leaq -0x101(%rbp), %rdi
movq %rdi, -0x398(%rbp)
callq 0x3520
movq -0x398(%rbp), %rdx
leaq 0x101fb(%rip), %rsi     # 0x140a3
leaq -0x100(%rbp), %rdi
callq 0x3a70
jmp 0x3eb6
movq -0x378(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
leaq -0x100(%rbp), %rcx
movl $0x13, %r8d
callq 0x4a70
jmp 0x3edf
leaq -0x100(%rbp), %rdi
callq 0x35b8
leaq -0x101(%rbp), %rdi
callq 0x3330
leaq -0xe0(%rbp), %rdi
callq 0x35b8
leaq -0xb8(%rbp), %rdi
callq 0x35b8
leaq -0xb9(%rbp), %rdi
callq 0x3330
movq -0x378(%rbp), %rdi
movb $0x1, -0x102(%rbp)
addq $0x28, %rdi
movl $0x1, %esi
callq 0x6780
movb %al, -0x103(%rbp)
leaq -0x129(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x3520
movq -0x3a0(%rbp), %rdx
leaq 0x10145(%rip), %rsi     # 0x140a3
leaq -0x128(%rbp), %rdi
callq 0x3a70
jmp 0x3f6c
movq -0x378(%rbp), %rdi
leaq -0x102(%rbp), %rsi
leaq -0x103(%rbp), %rdx
leaq -0x128(%rbp), %rcx
movl $0x14, %r8d
callq 0x4b70
jmp 0x3f95
leaq -0x128(%rbp), %rdi
callq 0x35b8
leaq -0x129(%rbp), %rdi
callq 0x3330
movq -0x378(%rbp), %rsi
addq $0x28, %rsi
leaq -0x150(%rbp), %rdi
movl $0x1, %edx
callq 0x5f40
leaq -0x171(%rbp), %rdi
movq %rdi, -0x3a8(%rbp)
callq 0x3520
movq -0x3a8(%rbp), %rdx
leaq 0x100b9(%rip), %rsi     # 0x140a3
leaq -0x170(%rbp), %rdi
callq 0x3a70
jmp 0x3ff8
movq -0x378(%rbp), %rdi
leaq 0x192fa(%rip), %rsi     # 0x1d300
leaq -0x150(%rbp), %rdx
leaq -0x170(%rbp), %rcx
movl $0x15, %r8d
callq 0x4a70
jmp 0x4021
leaq -0x170(%rbp), %rdi
callq 0x35b8
leaq -0x171(%rbp), %rdi
callq 0x3330
leaq -0x150(%rbp), %rdi
callq 0x35b8
movq -0x378(%rbp), %rdi
movb $0x0, -0x172(%rbp)
addq $0x28, %rdi
movl $0x1, %esi
callq 0x6780
movb %al, -0x173(%rbp)
leaq -0x199(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0x3520
movq -0x3b0(%rbp), %rdx
leaq 0x1001b(%rip), %rsi     # 0x140a3
leaq -0x198(%rbp), %rdi
callq 0x3a70
jmp 0x4096
movq -0x378(%rbp), %rdi
leaq -0x172(%rbp), %rsi
leaq -0x173(%rbp), %rdx
leaq -0x198(%rbp), %rcx
movl $0x16, %r8d
callq 0x4b70
jmp 0x40bf
leaq -0x198(%rbp), %rdi
callq 0x35b8
leaq -0x199(%rbp), %rdi
callq 0x3330
movq -0x378(%rbp), %rdi
callq 0x4c80
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x44d3
movq -0x378(%rbp), %rax
addq $0x28, %rax
movq %rax, -0x3d0(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x3c8(%rbp)
incq %rax
movq %rax, -0x3c0(%rbp)
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
callq 0x3520
movq -0x3c0(%rbp), %rsi
movq -0x3b8(%rbp), %rcx
leaq -0x1c0(%rbp), %rdi
movl $0x73, %edx
callq 0x4db0
jmp 0x4154
movq -0x3c8(%rbp), %rsi
movq -0x3d0(%rbp), %rdi
leaq -0x1c0(%rbp), %rdx
callq 0x56f0
jmp 0x4170
leaq -0x1c0(%rbp), %rdi
callq 0x35b8
leaq -0x1c1(%rbp), %rdi
callq 0x3330
movq -0x18(%rbp), %rax
incq %rax
movq %rax, -0x3e0(%rbp)
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x3d8(%rbp)
callq 0x3520
movq -0x3e0(%rbp), %rsi
movq -0x3d8(%rbp), %rcx
leaq -0x1e8(%rbp), %rdi
movl $0x73, %edx
callq 0x4db0
jmp 0x41ca
movq -0x378(%rbp), %rsi
addq $0x28, %rsi
movq -0x18(%rbp), %rdx
leaq -0x210(%rbp), %rdi
callq 0x5f40
jmp 0x41e7
leaq -0x231(%rbp), %rdi
movq %rdi, -0x3e8(%rbp)
callq 0x3520
movq -0x3e8(%rbp), %rdx
leaq 0xfe9b(%rip), %rsi      # 0x140a3
leaq -0x230(%rbp), %rdi
callq 0x3a70
jmp 0x4216
movq -0x378(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
leaq -0x210(%rbp), %rdx
leaq -0x230(%rbp), %rcx
movl $0x1d, %r8d
callq 0x4a70
jmp 0x423f
leaq -0x230(%rbp), %rdi
callq 0x35b8
leaq -0x231(%rbp), %rdi
callq 0x3330
leaq -0x210(%rbp), %rdi
callq 0x35b8
leaq -0x1e8(%rbp), %rdi
callq 0x35b8
leaq -0x1e9(%rbp), %rdi
callq 0x3330
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x40eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x42af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x35b8
leaq -0x59(%rbp), %rdi
callq 0x3330
leaq -0x38(%rbp), %rdi
callq 0x35b8
jmp 0x4a5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x42ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x35b8
leaq -0x91(%rbp), %rdi
callq 0x3330
jmp 0x4a5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x4363
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x4357
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x433f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x35b8
leaq -0x101(%rbp), %rdi
callq 0x3330
leaq -0xe0(%rbp), %rdi
callq 0x35b8
leaq -0xb8(%rbp), %rdi
callq 0x35b8
leaq -0xb9(%rbp), %rdi
callq 0x3330
jmp 0x4a5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x439a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x35b8
leaq -0x129(%rbp), %rdi
callq 0x3330
jmp 0x4a5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x43d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x35b8
leaq -0x171(%rbp), %rdi
callq 0x3330
leaq -0x150(%rbp), %rdi
callq 0x35b8
jmp 0x4a5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x4414
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x35b8
leaq -0x199(%rbp), %rdi
callq 0x3330
jmp 0x4a5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x444b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x35b8
leaq -0x1c1(%rbp), %rdi
callq 0x3330
jmp 0x4a5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x44c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x44b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x449e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x35b8
leaq -0x231(%rbp), %rdi
callq 0x3330
leaq -0x210(%rbp), %rdi
callq 0x35b8
leaq -0x1e8(%rbp), %rdi
callq 0x35b8
leaq -0x1e9(%rbp), %rdi
callq 0x3330
jmp 0x4a5a
movq -0x378(%rbp), %rdi
callq 0x4c80
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x4670
movq -0x18(%rbp), %rax
incq %rax
movq %rax, -0x3f8(%rbp)
leaq -0x259(%rbp), %rdi
movq %rdi, -0x3f0(%rbp)
callq 0x3520
movq -0x3f8(%rbp), %rsi
movq -0x3f0(%rbp), %rcx
leaq -0x258(%rbp), %rdi
movl $0x73, %edx
callq 0x4db0
jmp 0x4537
movq -0x378(%rbp), %rsi
addq $0x28, %rsi
movq -0x18(%rbp), %rdx
leaq -0x280(%rbp), %rdi
callq 0x5f40
jmp 0x4554
leaq -0x2a1(%rbp), %rdi
movq %rdi, -0x400(%rbp)
callq 0x3520
movq -0x400(%rbp), %rdx
leaq 0xfb2e(%rip), %rsi      # 0x140a3
leaq -0x2a0(%rbp), %rdi
callq 0x3a70
jmp 0x4583
movq -0x378(%rbp), %rdi
leaq -0x258(%rbp), %rsi
leaq -0x280(%rbp), %rdx
leaq -0x2a0(%rbp), %rcx
movl $0x23, %r8d
callq 0x4a70
jmp 0x45ac
leaq -0x2a0(%rbp), %rdi
callq 0x35b8
leaq -0x2a1(%rbp), %rdi
callq 0x3330
leaq -0x280(%rbp), %rdi
callq 0x35b8
leaq -0x258(%rbp), %rdi
callq 0x35b8
leaq -0x259(%rbp), %rdi
callq 0x3330
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x44e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x465f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x4653
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x463b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x35b8
leaq -0x2a1(%rbp), %rdi
callq 0x3330
leaq -0x280(%rbp), %rdi
callq 0x35b8
leaq -0x258(%rbp), %rdi
callq 0x35b8
leaq -0x259(%rbp), %rdi
callq 0x3330
jmp 0x4a5a
movq -0x378(%rbp), %rdi
callq 0x4c80
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x476b
movq -0x378(%rbp), %rdi
movb $0x1, -0x2a2(%rbp)
addq $0x28, %rdi
movq -0x18(%rbp), %rsi
callq 0x6780
movb %al, -0x2a3(%rbp)
leaq -0x2c9(%rbp), %rdi
movq %rdi, -0x408(%rbp)
callq 0x3520
movq -0x408(%rbp), %rdx
leaq 0xf9cf(%rip), %rsi      # 0x140a3
leaq -0x2c8(%rbp), %rdi
callq 0x3a70
jmp 0x46e2
movq -0x378(%rbp), %rdi
leaq -0x2a2(%rbp), %rsi
leaq -0x2a3(%rbp), %rdx
leaq -0x2c8(%rbp), %rcx
movl $0x28, %r8d
callq 0x4b70
jmp 0x470b
leaq -0x2c8(%rbp), %rdi
callq 0x35b8
leaq -0x2c9(%rbp), %rdi
callq 0x3330
movq -0x18(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x18(%rbp)
jmp 0x4684
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x475a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x35b8
leaq -0x2c9(%rbp), %rdi
callq 0x3330
jmp 0x4a5a
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x4949
movq -0x18(%rbp), %rax
andq $0x1, %rax
movb $0x0, -0x2f2(%rbp)
cmpq $0x0, %rax
je 0x47e1
movq -0x18(%rbp), %rax
incq %rax
movq %rax, -0x418(%rbp)
leaq -0x2f1(%rbp), %rdi
movq %rdi, -0x410(%rbp)
callq 0x3520
movq -0x418(%rbp), %rsi
movq -0x410(%rbp), %rcx
movb $0x1, -0x2f2(%rbp)
leaq -0x2f0(%rbp), %rdi
movl $0x73, %edx
callq 0x4db0
jmp 0x47df
jmp 0x47f8
leaq 0x18b18(%rip), %rsi     # 0x1d300
leaq -0x2f0(%rbp), %rdi
callq 0x3170
jmp 0x47f6
jmp 0x47f8
movq -0x378(%rbp), %rsi
addq $0x28, %rsi
movq -0x18(%rbp), %rdx
leaq -0x318(%rbp), %rdi
callq 0x5f40
jmp 0x4815
leaq -0x339(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x3520
movq -0x420(%rbp), %rdx
leaq 0xf86d(%rip), %rsi      # 0x140a3
leaq -0x338(%rbp), %rdi
callq 0x3a70
jmp 0x4844
movq -0x378(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
leaq -0x318(%rbp), %rdx
leaq -0x338(%rbp), %rcx
movl $0x2c, %r8d
callq 0x4a70
jmp 0x486d
leaq -0x338(%rbp), %rdi
callq 0x35b8
leaq -0x339(%rbp), %rdi
callq 0x3330
leaq -0x318(%rbp), %rdi
callq 0x35b8
leaq -0x2f0(%rbp), %rdi
callq 0x35b8
testb $0x1, -0x2f2(%rbp)
jne 0x48a8
jmp 0x48b4
leaq -0x2f1(%rbp), %rdi
callq 0x3330
jmp 0x48b6
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x4773
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x492d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x4921
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x4909
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x35b8
leaq -0x339(%rbp), %rdi
callq 0x3330
leaq -0x318(%rbp), %rdi
callq 0x35b8
leaq -0x2f0(%rbp), %rdi
callq 0x35b8
testb $0x1, -0x2f2(%rbp)
jne 0x4938
jmp 0x4944
leaq -0x2f1(%rbp), %rdi
callq 0x3330
jmp 0x4a5a
movq $0x1, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x4a39
movq -0x378(%rbp), %rdi
movb -0x18(%rbp), %al
andb $0x1, %al
movb %al, -0x33a(%rbp)
addq $0x28, %rdi
movq -0x18(%rbp), %rsi
callq 0x6780
movb %al, -0x33b(%rbp)
leaq -0x361(%rbp), %rdi
movq %rdi, -0x428(%rbp)
callq 0x3520
movq -0x428(%rbp), %rdx
leaq 0xf6fe(%rip), %rsi      # 0x140a3
leaq -0x360(%rbp), %rdi
callq 0x3a70
jmp 0x49b3
movq -0x378(%rbp), %rdi
leaq -0x33a(%rbp), %rsi
leaq -0x33b(%rbp), %rdx
leaq -0x360(%rbp), %rcx
movl $0x2f, %r8d
callq 0x4b70
jmp 0x49dc
leaq -0x360(%rbp), %rdi
callq 0x35b8
leaq -0x361(%rbp), %rdi
callq 0x3330
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x4951
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x4a2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x35b8
leaq -0x361(%rbp), %rdi
callq 0x3330
jmp 0x4a5a
movq -0x378(%rbp), %rdi
callq 0x4c80
movq -0x378(%rbp), %rdi
callq 0x4e20
addq $0x430, %rsp            # imm = 0x430
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x3510
nopw %cs:(%rax,%rax)
nopl (%rax)