// File: /workspace/github_cpp_makefile_star2_O2/SeanChao[P]KV-Store/persistence.cc
// Function: main
int main(int argc, char *argv[])
{
	bool verbose = false;
	bool testmode = false;

	if (argc == 2) {
		verbose = std::string(argv[1]) == "-v";
		testmode = std::string(argv[1]) == "-t";
	} else if (argc == 3) {
		verbose = std::string(argv[1]) == "-v" ||
			std::string(argv[2]) == "-v";
		testmode = std::string(argv[1]) == "-t" ||
			std::string(argv[2]) == "-t";
	} else if (argc > 3) {
		std::cerr << "Too many arguments." << std::endl;
		usage(argv[0], "OFF", "Preparation Mode");
		exit(-1);
	}
	usage(argv[0], verbose ? "ON" : "OFF",
	      testmode ? "Test Mode" : "Preparation Mode");

	PersistenceTest test("./data", verbose);

	test.start_test(static_cast<void *>(&testmode));

	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0xd8, %rsp
movq %rsi, %rbx
movb $0x0, 0x5(%rsp)
cmpl $0x3, %edi
je 0x379f
cmpl $0x2, %edi
jne 0x3837
movq 0x8(%rbx), %rsi
leaq 0x28(%rsp), %r14
leaq 0x8(%rsp), %rdx
movq %r14, %rdi
callq 0x3992
leaq 0x6a0f(%rip), %rsi      # 0xa168
movq %r14, %rdi
callq 0x39cd
movl %eax, %ebp
movq %r14, %rdi
callq 0x3438
movq 0x8(%rbx), %rsi
leaq 0x28(%rsp), %r15
leaq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x3992
leaq 0x69e3(%rip), %rsi      # 0xa16b
movq %r15, %rdi
callq 0x39cd
movl %eax, %r14d
movb %al, 0x5(%rsp)
movq %r15, %rdi
jmp 0x388a
movq 0x8(%rbx), %rsi
leaq 0x28(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x3992
leaq 0x69af(%rip), %rsi      # 0xa168
leaq 0x28(%rsp), %rdi
callq 0x39cd
movb $0x1, %bpl
testb %al, %al
jne 0x37fb
movq 0x10(%rbx), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x3992
leaq 0x6984(%rip), %rsi      # 0xa168
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x39cd
movl %eax, %ebp
movq %r14, %rdi
callq 0x3438
leaq 0x28(%rsp), %rdi
callq 0x3438
movq 0x8(%rbx), %rsi
leaq 0x28(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x3992
leaq 0x694c(%rip), %rsi      # 0xa16b
leaq 0x28(%rsp), %rdi
callq 0x39cd
testb %al, %al
je 0x384f
movb $0x1, 0x5(%rsp)
movb $0x1, %r14b
jmp 0x3885
cmpl $0x3, %edi
jg 0x3920
movq (%rbx), %rdi
leaq 0x6938(%rip), %rsi      # 0xa182
xorl %r14d, %r14d
jmp 0x38a9
movq 0x10(%rbx), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x3992
leaq 0x6902(%rip), %rsi      # 0xa16b
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x39cd
movl %eax, %r14d
movb %al, 0x5(%rsp)
movq %r15, %rdi
callq 0x3438
leaq 0x28(%rsp), %rdi
callq 0x3438
movq (%rbx), %rdi
testb %bpl, %bpl
je 0x38a2
leaq 0x68f9(%rip), %rsi      # 0xa197
movb $0x1, %bl
jmp 0x38ab
leaq 0x68d9(%rip), %rsi      # 0xa182
xorl %ebx, %ebx
leaq 0x68e8(%rip), %rax      # 0xa19a
leaq 0x68cd(%rip), %rdx      # 0xa186
testb %r14b, %r14b
cmovneq %rax, %rdx
callq 0x35bc
leaq 0x68d8(%rip), %rsi      # 0xa1a4
leaq 0x8(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x3992
movzbl %bl, %edx
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x39da
leaq 0x8(%rsp), %rdi
callq 0x3438
leaq 0x28(%rsp), %rdi
leaq 0x5(%rsp), %rsi
callq 0x39fa
leaq 0x28(%rsp), %rdi
callq 0x3aa4
xorl %eax, %eax
addq $0xd8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq 0xb6c9(%rip), %rdi      # 0xeff0
leaq 0x6840(%rip), %rsi      # 0xa16e
callq 0x3270
movq %rax, %rdi
callq 0x3160
movq (%rbx), %rdi
leaq 0x683d(%rip), %rsi      # 0xa182
leaq 0x683a(%rip), %rdx      # 0xa186
callq 0x35bc
pushq $-0x1
popq %rdi
callq 0x32c0
jmp 0x395b
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
jmp 0x3980
jmp 0x3987
jmp 0x3987
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x3aa4
jmp 0x398a
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3438
jmp 0x398a
movq %rax, %rbx
movq %rbx, %rdi
callq 0x33e0