// File: iZhangHui[P]CppPrimer/CH19_SpecializedToolsAndTechniques/examples/tok2.cc
// Function: main
int main()
{
	Token token;
	Token t2;
	Token t3;
	cout << t2 << " " << t3 << endl;
	t2 = string("hi mom!");
	t3 = "good bye";
	token = t2;
	token = "boo";
	cout << token << endl;
	t2 = t3;
	cout << t2 << endl;

	token = 42;
	cout << token << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
leaq -0x28(%rbp), %rdi
callq 0x15e0
leaq -0x50(%rbp), %rdi
callq 0x15e0
jmp 0x127f
leaq -0x88(%rbp), %rdi
callq 0x15e0
jmp 0x128d
movq 0x2d44(%rip), %rdi      # 0x3fd8
leaq -0x50(%rbp), %rsi
callq 0x1600
movq %rax, -0x108(%rbp)
jmp 0x12a6
movq -0x108(%rbp), %rdi
leaq 0xd70(%rip), %rsi       # 0x2024
callq 0x1080
movq %rax, -0x110(%rbp)
jmp 0x12c2
movq -0x110(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x1600
movq %rax, -0x118(%rbp)
jmp 0x12de
movq -0x118(%rbp), %rdi
movq 0x2cdc(%rip), %rsi      # 0x3fc8
callq 0x1090
jmp 0x12f3
leaq -0xa9(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x1100
movq -0x120(%rbp), %rdx
leaq 0xd12(%rip), %rsi       # 0x2026
leaq -0xa8(%rbp), %rdi
callq 0x10c0
jmp 0x1322
leaq -0x50(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x16a0
jmp 0x1334
leaq -0xa8(%rbp), %rdi
callq 0x1050
leaq -0xa9(%rbp), %rdi
callq 0x10a0
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0x1100
movq -0x128(%rbp), %rdx
leaq 0xcc1(%rip), %rsi       # 0x202e
leaq -0xd0(%rbp), %rdi
callq 0x10c0
jmp 0x137b
leaq -0x88(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x16a0
jmp 0x1390
leaq -0xd0(%rbp), %rdi
callq 0x1050
leaq -0xd1(%rbp), %rdi
callq 0x10a0
leaq -0x28(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1700
jmp 0x13b7
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x130(%rbp)
callq 0x1100
movq -0x130(%rbp), %rdx
leaq 0xc5f(%rip), %rsi       # 0x2037
leaq -0xf8(%rbp), %rdi
callq 0x10c0
jmp 0x13e6
leaq -0x28(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x16a0
jmp 0x13f8
leaq -0xf8(%rbp), %rdi
callq 0x1050
leaq -0xf9(%rbp), %rdi
callq 0x10a0
movq 0x2bc1(%rip), %rdi      # 0x3fd8
leaq -0x28(%rbp), %rsi
callq 0x1600
movq %rax, -0x138(%rbp)
jmp 0x1429
movq -0x138(%rbp), %rdi
movq 0x2b91(%rip), %rsi      # 0x3fc8
callq 0x1090
jmp 0x143e
leaq -0x50(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x1700
jmp 0x1450
movq 0x2b81(%rip), %rdi      # 0x3fd8
leaq -0x50(%rbp), %rsi
callq 0x1600
movq %rax, -0x140(%rbp)
jmp 0x1469
movq -0x140(%rbp), %rdi
movq 0x2b51(%rip), %rsi      # 0x3fc8
callq 0x1090
jmp 0x147e
leaq -0x28(%rbp), %rdi
movl $0x2a, %esi
callq 0x1780
jmp 0x148e
movq 0x2b43(%rip), %rdi      # 0x3fd8
leaq -0x28(%rbp), %rsi
callq 0x1600
movq %rax, -0x148(%rbp)
jmp 0x14a7
movq -0x148(%rbp), %rdi
movq 0x2b13(%rip), %rsi      # 0x3fc8
callq 0x1090
jmp 0x14bc
leaq -0x88(%rbp), %rdi
callq 0x17c0
leaq -0x50(%rbp), %rdi
callq 0x17c0
leaq -0x28(%rbp), %rdi
callq 0x17c0
xorl %eax, %eax
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x15c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x15be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x15b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x153e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x1050
leaq -0xa9(%rbp), %rdi
callq 0x10a0
jmp 0x15b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1572
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x1050
leaq -0xd1(%rbp), %rdi
callq 0x10a0
jmp 0x15b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x15a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x1050
leaq -0xf9(%rbp), %rdi
callq 0x10a0
leaq -0x88(%rbp), %rdi
callq 0x17c0
leaq -0x50(%rbp), %rdi
callq 0x17c0
leaq -0x28(%rbp), %rdi
callq 0x17c0
movq -0x58(%rbp), %rdi
callq 0x10f0
nopl (%rax)