// File: /workspace/github_cpp_makefile_star2_O2/xx01cyx[P]LSM-Tree/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();

		vector<uint64_t> testKeys;
		for (i = 0; i < max; ++i)
            testKeys.push_back(i);

		// Test multiple key-value pairs

        std::shuffle(testKeys.begin(), testKeys.end(), std::mt19937(std::random_device()()));
        for (i = 0; i < max; ++i) {
		    uint64_t key = testKeys[i];
			store.put(key, std::string(key+1, 's'));
			EXPECT(std::string(key + 1, 's'), store.get(key));
		}
		phase();

		// Test after all insertions

        std::shuffle(testKeys.begin(), testKeys.end(), std::mt19937(std::random_device()()));
        for (i = 0; i < max; ++i) {
		    uint64_t key = testKeys[i];
            EXPECT(std::string(key + 1, 's'), store.get(key));
        }
		phase();

		// Test deletions

        vector<uint64_t> evenKeys;
        for (i = 0; i < max; i += 2)
            evenKeys.push_back(i);

        vector<uint64_t> oddKeys;
        for (i = 1; i < max; i += 2)
            oddKeys.push_back(i);

        std::shuffle(testKeys.begin(), testKeys.end(), std::mt19937(std::random_device()()));
        std::shuffle(evenKeys.begin(), evenKeys.end(), std::mt19937(std::random_device()()));
        std::shuffle(oddKeys.begin(), oddKeys.end(), std::mt19937(std::random_device()()));

        uint64_t evenNumber = evenKeys.size();
        uint64_t oddNumber = oddKeys.size();

        for (i = 0; i < evenNumber; ++i) {
            uint64_t key = evenKeys[i];
            EXPECT(true, store.del(key));
        }

		for (i = 0; i < max; ++i) {
            uint64_t key = testKeys[i];
            EXPECT((key & 1) ? std::string(key + 1, 's') : not_found,
                   store.get(key));
        }

		for (i = 1; i < oddNumber; ++i) {
            uint64_t key = oddKeys[i];
            EXPECT(key & 1, store.del(key));
        }

		phase();

		report();
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x27c8, %rsp           # imm = 0x27C8
movq %rsi, 0x28(%rsp)
movq %rdi, %r15
leaq 0x28(%rdi), %rsi
leaq 0xb8(%rsp), %rdi
pushq $0x1
popq %rdx
movq %rsi, 0x18(%rsp)
callq 0x7a54
leaq 0xa746(%rip), %rsi      # 0xe0a3
leaq 0x1440(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x37ce
leaq 0x11902(%rip), %rsi     # 0x15278
leaq 0xb8(%rsp), %rdx
leaq 0x1440(%rsp), %rcx
pushq $0x11
popq %r8
movq %r15, %rdi
callq 0x434a
leaq 0x1440(%rsp), %rdi
callq 0x34a8
leaq 0xb8(%rsp), %rdi
callq 0x34a8
leaq 0xa6ff(%rip), %rsi      # 0xe0b2
leaq 0xb8(%rsp), %rdi
leaq 0x1440(%rsp), %rdx
callq 0x37ce
pushq $0x1
popq %rsi
leaq 0xb8(%rsp), %rdx
movq 0x18(%rsp), %rdi
callq 0x79dc
leaq 0xb8(%rsp), %rdi
callq 0x34a8
leaq 0xa6c1(%rip), %rsi      # 0xe0b2
leaq 0xb8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x37ce
leaq 0x1440(%rsp), %rdi
pushq $0x1
popq %rdx
movq 0x18(%rsp), %rsi
callq 0x7a54
leaq 0xa684(%rip), %rsi      # 0xe0a3
leaq 0x50(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0x37ce
leaq 0xb8(%rsp), %rsi
leaq 0x1440(%rsp), %rdx
leaq 0x50(%rsp), %rcx
pushq $0x13
popq %r8
movq %r15, %rdi
callq 0x434a
leaq 0x50(%rsp), %rbx
movq %rbx, %rdi
callq 0x34a8
leaq 0x1440(%rsp), %r14
movq %r14, %rdi
callq 0x34a8
leaq 0xb8(%rsp), %rdi
callq 0x34a8
movb $0x1, (%r14)
pushq $0x1
popq %rsi
movq 0x18(%rsp), %rdi
callq 0x7e02
movb %al, (%rbx)
leaq 0xa610(%rip), %rsi      # 0xe0a3
leaq 0xb8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x37ce
leaq 0x1440(%rsp), %rsi
leaq 0x50(%rsp), %rdx
leaq 0xb8(%rsp), %rcx
pushq $0x14
popq %r8
movq %r15, %rdi
callq 0x440e
leaq 0xb8(%rsp), %rdi
callq 0x34a8
leaq 0xb8(%rsp), %rdi
pushq $0x1
popq %rdx
movq 0x18(%rsp), %rsi
callq 0x7a54
leaq 0xa5b4(%rip), %rsi      # 0xe0a3
leaq 0x1440(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x37ce
leaq 0x11770(%rip), %rsi     # 0x15278
leaq 0xb8(%rsp), %rdx
leaq 0x1440(%rsp), %rcx
pushq $0x15
popq %r8
movq %r15, %rdi
callq 0x434a
leaq 0x1440(%rsp), %rbx
movq %rbx, %rdi
callq 0x34a8
leaq 0xb8(%rsp), %rdi
callq 0x34a8
movb $0x0, (%rbx)
pushq $0x1
popq %r12
movq 0x18(%rsp), %rdi
movq %r12, %rsi
callq 0x7e02
movb %al, 0x50(%rsp)
leaq 0xa543(%rip), %rsi      # 0xe0a3
leaq 0xb8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x37ce
leaq 0x1440(%rsp), %rsi
leaq 0x50(%rsp), %rdx
leaq 0xb8(%rsp), %rcx
pushq $0x16
popq %r8
movq %r15, %rdi
callq 0x440e
leaq 0xb8(%rsp), %rdi
callq 0x34a8
movq %r15, %rdi
callq 0x44be
leaq 0x30(%rsp), %rbx
andq $0x0, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rbx)
xorl %eax, %eax
leaq 0x10(%rsp), %r14
movq %rax, 0x10(%rsp)
cmpq 0x28(%rsp), %rax
jae 0x3be0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4584
movq 0x10(%rsp), %rax
incq %rax
jmp 0x3bbf
movq 0x30(%rsp), %rbx
movq 0x38(%rsp), %r14
leaq 0x1440(%rsp), %rdi
callq 0x46d0
movq %r15, 0x20(%rsp)
leaq 0x1440(%rsp), %rdi
callq 0x3310
movl %eax, %esi
leaq 0xb8(%rsp), %rdi
callq 0x4bac
leaq 0xb8(%rsp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x45a4
leaq 0x1440(%rsp), %r13
movq %r13, %rdi
callq 0x4726
xorl %eax, %eax
leaq 0xb8(%rsp), %rbp
leaq 0x50(%rsp), %r14
movq %rax, 0x10(%rsp)
cmpq 0x28(%rsp), %rax
jae 0x3d1b
movq 0x30(%rsp), %rcx
movq (%rcx,%rax,8), %r15
leaq 0x1(%r15), %rbx
leaq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq %rbp, %rdi
movq %rbx, %rsi
pushq $0x73
popq %rdx
callq 0x3270
movq 0x18(%rsp), %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x79dc
movq %rbp, %rdi
callq 0x34a8
leaq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq %rbp, %rdi
movq %rbx, %rsi
pushq $0x73
popq %rdx
callq 0x3270
movq %r13, %rdi
movq 0x18(%rsp), %rsi
movq %r15, %rdx
callq 0x7a54
movq %r14, %rdi
leaq 0xa3ce(%rip), %rsi      # 0xe0a3
leaq 0x70(%rsp), %rdx
callq 0x37ce
movq 0x20(%rsp), %rdi
movq %rbp, %rsi
movq %r13, %rdx
movq %r14, %rcx
pushq $0x24
popq %r8
callq 0x434a
movq %r14, %rdi
callq 0x34a8
movq %r13, %rdi
callq 0x34a8
movq %rbp, %rdi
callq 0x34a8
movq 0x10(%rsp), %rax
incq %rax
jmp 0x3c4a
movq 0x20(%rsp), %rdi
callq 0x44be
movq 0x30(%rsp), %rbx
movq 0x38(%rsp), %r14
leaq 0x1440(%rsp), %rdi
callq 0x46d0
leaq 0x1440(%rsp), %rdi
callq 0x3310
movl %eax, %esi
leaq 0xb8(%rsp), %rdi
callq 0x4bac
leaq 0xb8(%rsp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x45a4
leaq 0x1440(%rsp), %rbx
movq %rbx, %rdi
callq 0x4726
xorl %eax, %eax
leaq 0xb8(%rsp), %r14
leaq 0x50(%rsp), %rbp
pushq $0x2d
popq %r13
movq %rax, 0x10(%rsp)
cmpq 0x28(%rsp), %rax
jae 0x3e25
movq 0x30(%rsp), %rcx
movq (%rcx,%rax,8), %r15
leaq 0x1(%r15), %rsi
leaq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq %r14, %rdi
pushq $0x73
popq %rdx
callq 0x3270
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
movq %r15, %rdx
callq 0x7a54
movq %rbp, %rdi
leaq 0xa2c3(%rip), %rsi      # 0xe0a3
leaq 0x70(%rsp), %rdx
callq 0x37ce
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movq %rbx, %rdx
movq %rbp, %rcx
movl %r13d, %r8d
callq 0x434a
movq %rbp, %rdi
callq 0x34a8
movq %rbx, %rdi
callq 0x34a8
movq %r14, %rdi
callq 0x34a8
movq 0x10(%rsp), %rax
incq %rax
jmp 0x3d8e
movq 0x20(%rsp), %rdi
callq 0x44be
leaq 0x70(%rsp), %rbx
andq $0x0, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rbx)
xorl %eax, %eax
leaq 0x10(%rsp), %r14
movq %rax, 0x10(%rsp)
cmpq 0x28(%rsp), %rax
jae 0x3e68
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4584
movq 0x10(%rsp), %rax
addq $0x2, %rax
jmp 0x3e46
xorps %xmm0, %xmm0
leaq 0x90(%rsp), %rbx
movaps %xmm0, (%rbx)
andq $0x0, 0x10(%rbx)
leaq 0x10(%rsp), %r14
movq %r12, 0x10(%rsp)
cmpq 0x28(%rsp), %r12
jae 0x3ea2
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4584
movq 0x10(%rsp), %r12
addq $0x2, %r12
jmp 0x3e80
movq 0x30(%rsp), %rbx
movq 0x38(%rsp), %r14
leaq 0x1440(%rsp), %rdi
callq 0x46d0
leaq 0x1440(%rsp), %rdi
callq 0x3310
movl %eax, %esi
leaq 0xb8(%rsp), %rdi
callq 0x4bac
leaq 0xb8(%rsp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x45a4
leaq 0x1440(%rsp), %rdi
callq 0x4726
movq 0x70(%rsp), %rbx
movq 0x78(%rsp), %r14
leaq 0x1440(%rsp), %rdi
callq 0x46d0
leaq 0x1440(%rsp), %rdi
callq 0x3310
movl %eax, %esi
leaq 0xb8(%rsp), %rdi
callq 0x4bac
leaq 0xb8(%rsp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x45a4
leaq 0x1440(%rsp), %rdi
callq 0x4726
movq 0x90(%rsp), %rbx
movq 0x98(%rsp), %r14
leaq 0x1440(%rsp), %rdi
callq 0x46d0
leaq 0x1440(%rsp), %rdi
callq 0x3310
movl %eax, %esi
leaq 0xb8(%rsp), %rdi
callq 0x4bac
leaq 0xb8(%rsp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x45a4
leaq 0x1440(%rsp), %rdi
callq 0x4726
movq 0x78(%rsp), %r15
subq 0x70(%rsp), %r15
movq 0x98(%rsp), %rax
subq 0x90(%rsp), %rax
sarq $0x3, %r15
sarq $0x3, %rax
movq %rax, 0xb0(%rsp)
xorl %eax, %eax
leaq 0xa0cf(%rip), %r14      # 0xe0a3
leaq 0xb8(%rsp), %r12
leaq 0xf(%rsp), %r13
leaq 0x50(%rsp), %rbp
pushq $0x44
popq %rbx
movq %rax, 0x10(%rsp)
cmpq %r15, %rax
jae 0x404d
movq 0x70(%rsp), %rcx
movq (%rcx,%rax,8), %rsi
movb $0x1, 0x1440(%rsp)
movq 0x18(%rsp), %rdi
callq 0x7e02
movb %al, 0x50(%rsp)
movq %r12, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x37ce
movq 0x20(%rsp), %rdi
leaq 0x1440(%rsp), %rsi
movq %rbp, %rdx
movq %r12, %rcx
movl %ebx, %r8d
callq 0x440e
movq %r12, %rdi
callq 0x34a8
movq 0x10(%rsp), %rax
incq %rax
jmp 0x3fe9
xorl %eax, %eax
leaq 0xb8(%rsp), %r14
leaq 0x1440(%rsp), %r12
leaq 0x50(%rsp), %rbp
leaq 0xf(%rsp), %rbx
pushq $0x4a
popq %r13
movq %rax, 0x10(%rsp)
cmpq 0x28(%rsp), %rax
jae 0x4119
movq 0x30(%rsp), %rcx
movq (%rcx,%rax,8), %r15
testb $0x1, %r15b
jne 0x409d
movq %r14, %rdi
leaq 0x111e2(%rip), %rsi     # 0x15278
callq 0x32f0
jmp 0x40bc
leaq 0x1(%r15), %rsi
leaq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq %r14, %rdi
pushq $0x73
popq %rdx
callq 0x3270
movq %r12, %rdi
movq 0x18(%rsp), %rsi
movq %r15, %rdx
callq 0x7a54
movq %rbp, %rdi
leaq 0x9fcd(%rip), %rsi      # 0xe0a3
movq %rbx, %rdx
callq 0x37ce
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %rbp, %rcx
movl %r13d, %r8d
callq 0x434a
movq %rbp, %rdi
callq 0x34a8
movq %r12, %rdi
callq 0x34a8
movq %r14, %rdi
callq 0x34a8
movq 0x10(%rsp), %rax
incq %rax
jmp 0x406d
pushq $0x1
popq %rax
leaq 0x9f80(%rip), %rbx      # 0xe0a3
leaq 0xb8(%rsp), %r14
leaq 0xf(%rsp), %r15
leaq 0x1440(%rsp), %r12
leaq 0x50(%rsp), %r13
pushq $0x4f
popq %rbp
movq %rax, 0x10(%rsp)
cmpq 0xb0(%rsp), %rax
jae 0x41aa
movq 0x90(%rsp), %rcx
movq (%rcx,%rax,8), %rsi
movl %esi, %eax
andb $0x1, %al
movb %al, 0x1440(%rsp)
movq 0x18(%rsp), %rdi
callq 0x7e02
movb %al, 0x50(%rsp)
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x37ce
movq 0x20(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
movq %r14, %rcx
movl %ebp, %r8d
callq 0x440e
movq %r14, %rdi
callq 0x34a8
movq 0x10(%rsp), %rax
incq %rax
jmp 0x4140
movq 0x20(%rsp), %rbx
movq %rbx, %rdi
callq 0x44be
movq %rbx, %rdi
callq 0x4736
leaq 0x90(%rsp), %rdi
callq 0x4be4
leaq 0x70(%rsp), %rdi
callq 0x4be4
leaq 0x30(%rsp), %rdi
callq 0x4be4
addq $0x27c8, %rsp           # imm = 0x27C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x42d2
jmp 0x42d2
jmp 0x42d2
jmp 0x4334
jmp 0x4334
jmp 0x4248
jmp 0x422e
jmp 0x4236
jmp 0x4248
jmp 0x4248
jmp 0x422e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x34a8
jmp 0x4239
jmp 0x4236
jmp 0x4248
jmp 0x422e
jmp 0x4248
movq %rax, %rbx
jmp 0x4341
movq %rax, %rbx
leaq 0x1440(%rsp), %rdi
callq 0x34a8
jmp 0x424b
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x34a8
jmp 0x4341
jmp 0x42d2
jmp 0x4334
jmp 0x4268
jmp 0x4268
movq %rax, %rbx
leaq 0x1440(%rsp), %rdi
callq 0x4726
jmp 0x42d5
jmp 0x427c
movq %rax, %rbx
leaq 0x1440(%rsp), %rdi
callq 0x4726
jmp 0x4337
jmp 0x42bc
jmp 0x42d2
jmp 0x42d2
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x34a8
jmp 0x42a9
movq %rax, %rbx
leaq 0x1440(%rsp), %rdi
callq 0x34a8
jmp 0x42bf
jmp 0x42d2
jmp 0x42bc
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x34a8
jmp 0x42d5
jmp 0x42d2
jmp 0x42d2
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x4be4
leaq 0x70(%rsp), %rdi
callq 0x4be4
jmp 0x4337
movq %rax, %rbx
jmp 0x42e2
jmp 0x42fd
jmp 0x430c
jmp 0x4334
jmp 0x4322
jmp 0x4334
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x34a8
jmp 0x430f
movq %rax, %rbx
leaq 0x1440(%rsp), %rdi
callq 0x34a8
jmp 0x4325
jmp 0x4334
jmp 0x4322
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x34a8
jmp 0x4337
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x4be4
movq %rbx, %rdi
callq 0x3440
nop