// File: /workspace/github_cpp_makefile_star2_O1/iZhangHui[P]CppPrimer/CH12_DynamicMemory/exercises/ex12_02_test.cc
// Function: main
int main(int argc, char const *argv[])
{
	StrBlob sb = { "Hello", "C++ Primer" };

	std::cout << sb.front() << " " << sb.back() << std::endl;
	sb.back() = "C++ Primer 5th";
	std::cout << sb.front() << " " << sb.back() << std::endl;

	const StrBlob csb = { "StrBlob", "Test" };
	std::cout << csb.front() << " " << csb.back() << std::endl;
	// csb.back() = "error";
	// std::cout << csb.front() << " " << csb.back() << std::endl;

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x80, %rsp
leaq -0x78(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0xc66(%rip), %rsi       # 0x3004
leaq 0xc64(%rip), %rdx       # 0x3009
leaq -0x88(%rbp), %r15
movq %r15, %rdi
callq 0x2e22
leaq -0x68(%rbp), %r14
leaq -0x58(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xc43(%rip), %rsi       # 0x300a
leaq 0xc46(%rip), %rdx       # 0x3014
movq %r14, %rdi
callq 0x2e22
leaq -0x88(%rbp), %rax
leaq -0x98(%rbp), %rcx
movq %rax, (%rcx)
movq $0x2, 0x8(%rcx)
leaq -0x30(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x38(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x298a
movq $-0x40, %r14
movq -0x10(%rbx), %rdi
cmpq %rdi, %rbx
je 0x2423
movq (%rbx), %rsi
incq %rsi
callq 0x2110
addq $-0x20, %rbx
addq $0x20, %r14
jne 0x240f
leaq -0x38(%rbp), %rdi
callq 0x276a
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x2b84(%rip), %rdi      # 0x4fc8
callq 0x2120
movq %rax, %rbx
leaq 0xbc2(%rip), %rsi       # 0x3015
movl $0x1, %edx
movq %rax, %rdi
callq 0x2120
leaq -0x38(%rbp), %rdi
callq 0x27f0
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x2120
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2090
leaq -0x38(%rbp), %rdi
callq 0x27f0
movq 0x8(%rax), %rdx
leaq 0xb61(%rip), %rcx       # 0x3017
movl $0xe, %r8d
movq %rax, %rdi
xorl %esi, %esi
callq 0x2170
leaq -0x38(%rbp), %rdi
callq 0x276a
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x2aeb(%rip), %rdi      # 0x4fc8
callq 0x2120
movq %rax, %rbx
leaq 0xb29(%rip), %rsi       # 0x3015
movl $0x1, %edx
movq %rax, %rdi
callq 0x2120
leaq -0x38(%rbp), %rdi
callq 0x27f0
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x2120
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2090
leaq -0x88(%rbp), %r15
movq %r12, (%r15)
leaq 0xb49(%rip), %rsi       # 0x3095
leaq 0xb49(%rip), %rdx       # 0x309c
movq %r15, %rdi
callq 0x2e22
leaq -0x68(%rbp), %r14
leaq -0x58(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xab8(%rip), %rsi       # 0x3026
leaq 0xab5(%rip), %rdx       # 0x302a
movq %r14, %rdi
callq 0x2e22
leaq -0x88(%rbp), %rax
leaq -0x98(%rbp), %rcx
movq %rax, (%rcx)
movq $0x2, 0x8(%rcx)
leaq -0x40(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x48(%rbp), %rsi
leaq -0x21(%rbp), %rdx
callq 0x298a
movq $-0x40, %r14
movq -0x10(%rbx), %rdi
cmpq %rdi, %rbx
je 0x25ca
movq (%rbx), %rsi
incq %rsi
callq 0x2110
addq $-0x20, %rbx
addq $0x20, %r14
jne 0x25b6
leaq -0x48(%rbp), %rdi
callq 0x287a
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x29dd(%rip), %rdi      # 0x4fc8
callq 0x2120
movq %rax, %rbx
leaq 0xa1b(%rip), %rsi       # 0x3015
movl $0x1, %edx
movq %rax, %rdi
callq 0x2120
leaq -0x48(%rbp), %rdi
callq 0x2900
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x2120
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2090
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x2657
callq 0x2db6
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x2665
callq 0x2db6
xorl %eax, %eax
addq $0x80, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x2210
movb $0x1, %al
jmp 0x269d
movq %rax, %rbx
xorl %eax, %eax
jmp 0x269d
movq %rax, %rbx
xorl %eax, %eax
movq %r15, %r14
cmpq %r14, %r15
sete %cl
orb %al, %cl
jne 0x2753
addq $-0x10, %r14
leaq -0x88(%rbp), %r15
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x26ca
movq (%r14), %rsi
incq %rsi
callq 0x2110
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %r15, %r14
movq %rax, %r14
jne 0x26b6
jmp 0x2753
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x21d6
movb $0x1, %al
jmp 0x2702
movq %rax, %rbx
xorl %eax, %eax
jmp 0x2702
movq %rax, %rbx
xorl %eax, %eax
movq %r15, %r14
cmpq %r14, %r15
sete %cl
orb %al, %cl
jne 0x2761
addq $-0x10, %r14
leaq -0x88(%rbp), %r15
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x272b
movq (%r14), %rsi
incq %rsi
callq 0x2110
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %r15, %r14
movq %rax, %r14
jne 0x2717
jmp 0x2761
movq %rax, %rbx
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x2753
callq 0x2db6
jmp 0x2753
movq %rax, %rbx
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x2761
callq 0x2db6
movq %rbx, %rdi
callq 0x21a0
nop