// File: nmmmnu[P]HM3/hm3/test/test_file.cc
// Function: op_search_v(char, StringRef const&, StringRef const&)
static int op_search_v(char const what, const StringRef &filename, const StringRef &key){
	constexpr auto buckets = 8192;

	FileReader reader{ filename };

	switch(what){

	case 'T':
	case 't':	return op_search(hm3::STLVectorList{},					reader, key);

	case 'v':
	case 'V':	return op_search(hm3::VectorList{},					reader, key);
	case 'w':	return op_search(hm3::HashList<std::vector<hm3::VectorList> >{buckets},	reader, key);

	case 'l':	return op_search(hm3::LinkList{},					reader, key);

	default:
	case 's':	return op_search(hm3::SkipList{},					reader, key);
	case 'z':	return op_search(hm3::HashList<std::vector<hm3::SkipList> >{buckets},	reader, key);

	}
}

// Assembly:
subq $0x538, %rsp            # imm = 0x538
movb %dil, %al
movb %al, 0x533(%rsp)
movq %rsi, 0x528(%rsp)
movq %rdx, 0x520(%rsp)
movl $0x2000, 0x51c(%rsp) # imm = 0x2000
movq 0x528(%rsp), %rsi
leaq 0x308(%rsp), %rdi
movl $0x3, %edx
callq 0x4230
movsbl 0x533(%rsp), %eax
addl $-0x54, %eax
movl %eax, %ecx
movq %rcx, 0x30(%rsp)
subl $0x26, %eax
ja 0x2b6c
movq 0x30(%rsp), %rax
leaq 0xf6d7(%rip), %rcx      # 0x12004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x2f0(%rsp)
movaps %xmm0, 0x2e0(%rsp)
leaq 0x2e0(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x42c0
movq 0x20(%rsp), %rdi
movq 0x520(%rsp), %rdx
leaq 0x308(%rsp), %rsi
callq 0x2ed0
movl %eax, 0x2c(%rsp)
jmp 0x297b
movl 0x2c(%rsp), %eax
movl %eax, 0x534(%rsp)
leaq 0x2e0(%rsp), %rdi
callq 0x42f0
movl $0x1, 0x2d0(%rsp)
jmp 0x2c5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
leaq 0x2e0(%rsp), %rdi
callq 0x42f0
jmp 0x2c76
leaq 0x2a8(%rsp), %rdi
movl $0x10, %esi
callq 0x9e10
jmp 0x29dd
movq 0x520(%rsp), %rdx
leaq 0x2a8(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0x2f50
movl %eax, 0x1c(%rsp)
jmp 0x2a00
movl 0x1c(%rsp), %eax
movl %eax, 0x534(%rsp)
leaq 0x2a8(%rsp), %rdi
callq 0x4300
movl $0x1, 0x2d0(%rsp)
jmp 0x2c5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
jmp 0x2c76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
leaq 0x2a8(%rsp), %rdi
callq 0x4300
jmp 0x2c76
leaq 0x288(%rsp), %rdi
movl $0x2000, %esi           # imm = 0x2000
callq 0x4320
jmp 0x2a7b
movq 0x520(%rsp), %rdx
leaq 0x288(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0x2fd0
movl %eax, 0x18(%rsp)
jmp 0x2a9e
movl 0x18(%rsp), %eax
movl %eax, 0x534(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x43c0
movl $0x1, 0x2d0(%rsp)
jmp 0x2c5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x43c0
jmp 0x2c76
leaq 0x270(%rsp), %rdi
callq 0xa970
jmp 0x2afb
movq 0x520(%rsp), %rdx
leaq 0x270(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0x3050
movl %eax, 0x14(%rsp)
jmp 0x2b1e
movl 0x14(%rsp), %eax
movl %eax, 0x534(%rsp)
leaq 0x270(%rsp), %rdi
callq 0x43d0
movl $0x1, 0x2d0(%rsp)
jmp 0x2c5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
leaq 0x270(%rsp), %rdi
callq 0x43d0
jmp 0x2c76
jmp 0x2b6e
leaq 0x58(%rsp), %rdi
movl $0x20, %esi
callq 0xb530
jmp 0x2b7f
movq 0x520(%rsp), %rdx
leaq 0x58(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0x30d0
movl %eax, 0x10(%rsp)
jmp 0x2b9f
movl 0x10(%rsp), %eax
movl %eax, 0x534(%rsp)
leaq 0x58(%rsp), %rdi
callq 0xb660
movl $0x1, 0x2d0(%rsp)
jmp 0x2c5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
leaq 0x58(%rsp), %rdi
callq 0xb660
jmp 0x2c76
leaq 0x38(%rsp), %rdi
movl $0x2000, %esi           # imm = 0x2000
callq 0x43f0
jmp 0x2bf8
movq 0x520(%rsp), %rdx
leaq 0x38(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0x3150
movl %eax, 0xc(%rsp)
jmp 0x2c18
movl 0xc(%rsp), %eax
movl %eax, 0x534(%rsp)
leaq 0x38(%rsp), %rdi
callq 0x4490
movl $0x1, 0x2d0(%rsp)
jmp 0x2c5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2d8(%rsp)
movl %eax, 0x2d4(%rsp)
leaq 0x38(%rsp), %rdi
callq 0x4490
jmp 0x2c76
leaq 0x308(%rsp), %rdi
callq 0x44a0
movl 0x534(%rsp), %eax
addq $0x538, %rsp            # imm = 0x538
retq
leaq 0x308(%rsp), %rdi
callq 0x44a0
movq 0x2d8(%rsp), %rdi
callq 0x2400