// File: iZhangHui[P]CppPrimer/CH11_AssociativeContainers/exercises/ex11_08.cc
// Function: main
int main(int argc, char const *argv[])
{
	std::vector<std::string> exclude = { "aa", "bb", "bb", "cc", "dd", "ee", "ff" };
	for (std::string word; std::cout << "Enter plz:\n", std::cin >> word; ) {
		auto is_excluded = std::binary_search(exclude.cbegin(), exclude.cend(), word);
		auto reply = is_excluded ? "excluded" : "not excluded";
		std::cout << reply << std::endl;
	}

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x260, %rsp            # imm = 0x260
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb $0x1, -0x13b(%rbp)
leaq -0x118(%rbp), %rax
movq %rax, -0x190(%rbp)
movq %rax, -0x120(%rbp)
leaq -0x121(%rbp), %rdi
movq %rdi, -0x188(%rbp)
callq 0x1190
movq -0x190(%rbp), %rdi
movq -0x188(%rbp), %rdx
leaq 0x1cc7(%rip), %rsi      # 0x3004
callq 0x1130
jmp 0x1344
leaq -0xf8(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movq %rax, -0x120(%rbp)
leaq -0x135(%rbp), %rdi
movq %rdi, -0x198(%rbp)
callq 0x1190
movq -0x1a0(%rbp), %rdi
movq -0x198(%rbp), %rdx
leaq 0x1c86(%rip), %rsi      # 0x3007
callq 0x1130
jmp 0x1388
leaq -0xd8(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq %rax, -0x120(%rbp)
leaq -0x136(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x1190
movq -0x1b0(%rbp), %rdi
movq -0x1a8(%rbp), %rdx
leaq 0x1c42(%rip), %rsi      # 0x3007
callq 0x1130
jmp 0x13cc
leaq -0xb8(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movq %rax, -0x120(%rbp)
leaq -0x137(%rbp), %rdi
movq %rdi, -0x1b8(%rbp)
callq 0x1190
movq -0x1c0(%rbp), %rdi
movq -0x1b8(%rbp), %rdx
leaq 0x1c01(%rip), %rsi      # 0x300a
callq 0x1130
jmp 0x1410
leaq -0x98(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq %rax, -0x120(%rbp)
leaq -0x138(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x1190
movq -0x1d0(%rbp), %rdi
movq -0x1c8(%rbp), %rdx
leaq 0x1bc0(%rip), %rsi      # 0x300d
callq 0x1130
jmp 0x1454
leaq -0x78(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movq %rax, -0x120(%rbp)
leaq -0x139(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0x1190
movq -0x1e0(%rbp), %rdi
movq -0x1d8(%rbp), %rdx
leaq 0x1b82(%rip), %rsi      # 0x3010
callq 0x1130
jmp 0x1495
leaq -0x58(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq %rax, -0x120(%rbp)
leaq -0x13a(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
callq 0x1190
movq -0x1f0(%rbp), %rdi
movq -0x1e8(%rbp), %rdx
leaq 0x1b44(%rip), %rsi      # 0x3013
callq 0x1130
jmp 0x14d6
movb $0x0, -0x13b(%rbp)
leaq -0x118(%rbp), %rax
movq %rax, -0x38(%rbp)
movq $0x7, -0x30(%rbp)
leaq -0x13c(%rbp), %rdi
movq %rdi, -0x1f8(%rbp)
callq 0x1910
movq -0x1f8(%rbp), %rcx
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x28(%rbp), %rdi
callq 0x1930
jmp 0x151d
leaq -0x13c(%rbp), %rdi
callq 0x19b0
leaq -0x118(%rbp), %rax
movq %rax, -0x208(%rbp)
addq $0xe0, %rax
movq %rax, -0x200(%rbp)
movq -0x200(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x210(%rbp)
callq 0x1090
movq -0x208(%rbp), %rcx
movq -0x210(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x200(%rbp)
jne 0x1544
leaq -0x13a(%rbp), %rdi
callq 0x1100
leaq -0x139(%rbp), %rdi
callq 0x1100
leaq -0x138(%rbp), %rdi
callq 0x1100
leaq -0x137(%rbp), %rdi
callq 0x1100
leaq -0x136(%rbp), %rdi
callq 0x1100
leaq -0x135(%rbp), %rdi
callq 0x1100
leaq -0x121(%rbp), %rdi
callq 0x1100
leaq -0x160(%rbp), %rdi
callq 0x1140
movq 0x39f4(%rip), %rdi      # 0x4fd0
leaq 0x1a33(%rip), %rsi      # 0x3016
callq 0x10c0
jmp 0x15ea
movq 0x39ef(%rip), %rdi      # 0x4fe0
leaq -0x160(%rbp), %rsi
callq 0x1120
movq %rax, -0x218(%rbp)
jmp 0x1606
movq -0x218(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x1110
movb %al, -0x219(%rbp)
jmp 0x1624
movb -0x219(%rbp), %al
testb $0x1, %al
jne 0x182c
jmp 0x1634
leaq -0x160(%rbp), %rdi
callq 0x1090
jmp 0x18de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
jmp 0x1797
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
jmp 0x178b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
jmp 0x177f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
jmp 0x1773
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
jmp 0x1767
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
jmp 0x175b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
jmp 0x174f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
leaq -0x13c(%rbp), %rdi
callq 0x19b0
leaq -0x118(%rbp), %rax
movq %rax, -0x230(%rbp)
addq $0xe0, %rax
movq %rax, -0x228(%rbp)
movq -0x228(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x238(%rbp)
callq 0x1090
movq -0x230(%rbp), %rcx
movq -0x238(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x228(%rbp)
jne 0x171c
jmp 0x174f
leaq -0x13a(%rbp), %rdi
callq 0x1100
leaq -0x139(%rbp), %rdi
callq 0x1100
leaq -0x138(%rbp), %rdi
callq 0x1100
leaq -0x137(%rbp), %rdi
callq 0x1100
leaq -0x136(%rbp), %rdi
callq 0x1100
leaq -0x135(%rbp), %rdi
callq 0x1100
leaq -0x121(%rbp), %rdi
callq 0x1100
testb $0x1, -0x13b(%rbp)
jne 0x17ae
jmp 0x17fb
movq -0x120(%rbp), %rax
leaq -0x118(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x240(%rbp)
je 0x17f9
movq -0x240(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x248(%rbp)
callq 0x1090
movq -0x248(%rbp), %rax
leaq -0x118(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x240(%rbp)
jne 0x17c8
jmp 0x17fb
jmp 0x18fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x1090
leaq -0x28(%rbp), %rdi
callq 0x1ac0
jmp 0x18fa
leaq -0x28(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x1a60
movq -0x258(%rbp), %rdi
movq %rax, -0x170(%rbp)
callq 0x1a90
movq %rax, -0x178(%rbp)
movq -0x170(%rbp), %rdi
movq -0x178(%rbp), %rsi
leaq -0x160(%rbp), %rdx
callq 0x19d0
movb %al, -0x249(%rbp)
jmp 0x1878
movb -0x249(%rbp), %al
andb $0x1, %al
movb %al, -0x161(%rbp)
movb -0x161(%rbp), %dl
leaq 0x1793(%rip), %rcx      # 0x3026
leaq 0x1788(%rip), %rax      # 0x3022
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, -0x180(%rbp)
movq -0x180(%rbp), %rsi
movq 0x371a(%rip), %rdi      # 0x4fd0
callq 0x10c0
movq %rax, -0x260(%rbp)
jmp 0x18c4
movq -0x260(%rbp), %rdi
movq 0x36ee(%rip), %rsi      # 0x4fc0
callq 0x10f0
jmp 0x18d9
jmp 0x15d5
movl $0x0, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x1ac0
movl -0x4(%rbp), %eax
addq $0x260, %rsp            # imm = 0x260
popq %rbp
retq
movq -0x130(%rbp), %rdi
callq 0x1180
nopw %cs:(%rax,%rax)