// File: /workspace/github_cpp_makefile_star2_O3/iZhangHui[P]CppPrimer/CH06_Functions/examples/wdebug.cc
// Function: main
int main()
{
    string word = "foo";
    const string::size_type threshold = 5;
    if (word.size() < threshold) 
        cerr << "Error: " << __FILE__
             << " : in function " << __func__ 
             << " at line " << __LINE__ << endl
             << "       Compiled on " << __DATE__ 
             << " at " << __TIME__ << endl
             << "       Word read was \"" << word 
             << "\":  Length too short" << endl;
    word = "something longer than five chars";
    assert(word.size() > threshold);

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x20, %rsp
leaq -0x20(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xd33(%rip), %rsi       # 0x201b
leaq 0xd2f(%rip), %rdx       # 0x201e
leaq -0x30(%rbp), %rbx
movq %rbx, %rdi
callq 0x151e
movq 0x8(%rbx), %rdx
cmpq $0x4, %rdx
ja 0x149f
movq 0x2ce0(%rip), %rdi      # 0x3ff0
leaq 0xd08(%rip), %rsi       # 0x201f
movl $0x7, %edx
callq 0x10c0
movq 0x2cc8(%rip), %rdi      # 0x3ff0
leaq 0xcf8(%rip), %rsi       # 0x2027
movl $0x9, %edx
callq 0x10c0
movq 0x2cb0(%rip), %rdi      # 0x3ff0
leaq 0xcea(%rip), %rsi       # 0x2031
movl $0xf, %edx
callq 0x10c0
movq 0x2c98(%rip), %rdi      # 0x3ff0
leaq 0xce2(%rip), %rsi       # 0x2041
movl $0x4, %edx
callq 0x10c0
movq 0x2c80(%rip), %rdi      # 0x3ff0
leaq 0xccf(%rip), %rsi       # 0x2046
movl $0x9, %edx
callq 0x10c0
movq 0x2c68(%rip), %rdi      # 0x3ff0
movl $0x3f, %esi
callq 0x10f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1060
movq %rax, %rbx
leaq 0xc8a(%rip), %rsi       # 0x2050
movl $0x13, %edx
movq %rax, %rdi
callq 0x10c0
leaq 0xc8a(%rip), %rsi       # 0x2064
movl $0xb, %edx
movq %rbx, %rdi
callq 0x10c0
leaq 0xc82(%rip), %rsi       # 0x2070
movl $0x4, %edx
movq %rbx, %rdi
callq 0x10c0
leaq 0xc73(%rip), %rsi       # 0x2075
movl $0x8, %edx
movq %rbx, %rdi
callq 0x10c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1060
movq %rax, %rbx
leaq 0xc3e(%rip), %rsi       # 0x207e
movl $0x16, %edx
movq %rax, %rdi
callq 0x10c0
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq %rbx, %rdi
callq 0x10c0
movq %rax, %rbx
leaq 0xc2e(%rip), %rsi       # 0x2095
movl $0x14, %edx
movq %rax, %rdi
callq 0x10c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1060
movq -0x28(%rbp), %rdx
leaq 0xc04(%rip), %rcx       # 0x20aa
leaq -0x30(%rbp), %rdi
movl $0x20, %r8d
xorl %esi, %esi
callq 0x10e0
cmpq $0x5, -0x28(%rbp)
jbe 0x14de
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x14d3
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10b0
xorl %eax, %eax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0xbe6(%rip), %rdi       # 0x20cb
leaq 0xb3b(%rip), %rsi       # 0x2027
leaq 0xbf0(%rip), %rcx       # 0x20e3
movl $0x45, %edx
callq 0x1040
movq %rax, %rbx
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1515
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10b0
movq %rbx, %rdi
callq 0x1100
nop