// File: 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
subq $0xd0, %rsp
movl $0x0, -0x4(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0x50(%rbp)
callq 0x1110
movq -0x50(%rbp), %rdx
leaq 0xd31(%rip), %rsi       # 0x201b
leaq -0x28(%rbp), %rdi
callq 0x10d0
jmp 0x12f5
leaq -0x29(%rbp), %rdi
callq 0x10b0
movq $0x5, -0x48(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x1060
cmpq $0x5, %rax
jae 0x14d9
movq 0x2cd0(%rip), %rdi      # 0x3ff0
leaq 0xcf8(%rip), %rsi       # 0x201f
callq 0x1090
movq %rax, -0x58(%rbp)
jmp 0x1332
movq -0x58(%rbp), %rdi
leaq 0xcea(%rip), %rsi       # 0x2027
callq 0x1090
movq %rax, -0x60(%rbp)
jmp 0x1348
movq -0x60(%rbp), %rdi
leaq 0xcde(%rip), %rsi       # 0x2031
callq 0x1090
movq %rax, -0x68(%rbp)
jmp 0x135e
movq -0x68(%rbp), %rdi
leaq 0xcd8(%rip), %rsi       # 0x2041
callq 0x1090
movq %rax, -0x70(%rbp)
jmp 0x1374
movq -0x70(%rbp), %rdi
leaq 0xcc7(%rip), %rsi       # 0x2046
callq 0x1090
movq %rax, -0x78(%rbp)
jmp 0x138a
movq -0x78(%rbp), %rdi
movl $0x3f, %esi
callq 0x10f0
movq %rax, -0x80(%rbp)
jmp 0x139e
movq -0x80(%rbp), %rdi
movq 0x2c1f(%rip), %rsi      # 0x3fc8
callq 0x10a0
movq %rax, -0x88(%rbp)
jmp 0x13b7
movq -0x88(%rbp), %rdi
leaq 0xc8b(%rip), %rsi       # 0x2050
callq 0x1090
movq %rax, -0x90(%rbp)
jmp 0x13d3
movq -0x90(%rbp), %rdi
leaq 0xc83(%rip), %rsi       # 0x2064
callq 0x1090
movq %rax, -0x98(%rbp)
jmp 0x13ef
movq -0x98(%rbp), %rdi
leaq 0xc73(%rip), %rsi       # 0x2070
callq 0x1090
movq %rax, -0xa0(%rbp)
jmp 0x140b
movq -0xa0(%rbp), %rdi
leaq 0xc5c(%rip), %rsi       # 0x2075
callq 0x1090
movq %rax, -0xa8(%rbp)
jmp 0x1427
movq -0xa8(%rbp), %rdi
movq 0x2b93(%rip), %rsi      # 0x3fc8
callq 0x10a0
movq %rax, -0xb0(%rbp)
jmp 0x1443
movq -0xb0(%rbp), %rdi
leaq 0xc2d(%rip), %rsi       # 0x207e
callq 0x1090
movq %rax, -0xb8(%rbp)
jmp 0x145f
movq -0xb8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x1080
movq %rax, -0xc0(%rbp)
jmp 0x1478
movq -0xc0(%rbp), %rdi
leaq 0xc0f(%rip), %rsi       # 0x2095
callq 0x1090
movq %rax, -0xc8(%rbp)
jmp 0x1494
movq -0xc8(%rbp), %rdi
movq 0x2b26(%rip), %rsi      # 0x3fc8
callq 0x10a0
jmp 0x14a9
jmp 0x14d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x10b0
jmp 0x1537
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x1040
jmp 0x1537
leaq 0xbca(%rip), %rsi       # 0x20aa
leaq -0x28(%rbp), %rdi
callq 0x10c0
jmp 0x14eb
leaq -0x28(%rbp), %rdi
callq 0x1060
cmpq $0x5, %rax
jbe 0x14fc
jmp 0x151b
leaq 0xbc8(%rip), %rdi       # 0x20cb
leaq 0xb1d(%rip), %rsi       # 0x2027
movl $0x45, %edx
leaq 0xbcd(%rip), %rcx       # 0x20e3
callq 0x1050
movl $0x0, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x1040
movl -0x4(%rbp), %eax
addq $0xd0, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x1100