// File: demon386[P]git-store/./libs/program_options/src/options_description.cpp
// Function: boost::program_options::(anonymous namespace)::format_description(std::ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned int, unsigned int)
void format_description(std::ostream& os,
                                const std::string& desc, 
                                unsigned first_column_width,
                                unsigned line_length)
        {
            // we need to use one char less per line to work correctly if actual
            // console has longer lines
            assert(line_length > 1);
            if (line_length > 1)
            {
                --line_length;
            }

            // line_length must be larger than first_column_width
            // this assert may fail due to user error or environment conditions!
            assert(line_length > first_column_width);

            // Note: can't use 'tokenizer' as name of typedef -- borland
            // will consider uses of 'tokenizer' below as uses of
            // boost::tokenizer, not typedef.
            typedef boost::tokenizer<boost::char_separator<char> > tok;
          
            tok paragraphs(
                desc,
                char_separator<char>("\n", "", boost::keep_empty_tokens));
          
            tok::const_iterator       par_iter = paragraphs.begin();                
            const tok::const_iterator par_end = paragraphs.end();

            while (par_iter != par_end)  // paragraphs
            {
                format_paragraph(os, *par_iter, first_column_width, 
                                 line_length);
            
                ++par_iter;
            
                // prepair next line if any
                if (par_iter != par_end)
                {
                    os << '\n';
              
                    for(unsigned pad = first_column_width; pad > 0; --pad)
                    {
                        os.put(' ');
                    }                    
                }            
            }  // paragraphs
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x240, %rsp            # imm = 0x240
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
cmpl $0x1, -0x18(%rbp)
jbe 0x25de1
jmp 0x25e00
leaq 0x3a6c1(%rip), %rdi     # 0x604a9
leaq 0x3a4fc(%rip), %rsi     # 0x602eb
movl $0x216, %edx            # imm = 0x216
leaq 0x3a6be(%rip), %rcx     # 0x604b9
callq 0xd400
cmpl $0x1, -0x18(%rbp)
jbe 0x25e0f
movl -0x18(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x14(%rbp), %eax
jbe 0x25e19
jmp 0x25e38
leaq 0x3a721(%rip), %rdi     # 0x60541
leaq 0x3a4c4(%rip), %rsi     # 0x602eb
movl $0x21e, %edx            # imm = 0x21E
leaq 0x3a686(%rip), %rcx     # 0x604b9
callq 0xd400
movq -0x10(%rbp), %rax
movq %rax, -0x220(%rbp)
leaq 0x3a016(%rip), %rsi     # 0x5fe60
leaq 0x3a010(%rip), %rdx     # 0x5fe61
leaq -0xc8(%rbp), %rdi
movq %rdi, -0x218(%rbp)
movl $0x1, %ecx
callq 0x29a60
movq -0x220(%rbp), %rsi
movq -0x218(%rbp), %rdx
leaq -0x78(%rbp), %rdi
callq 0x29b40
jmp 0x25e82
leaq -0xc8(%rbp), %rdi
callq 0x29ba0
leaq -0x160(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x29bd0
jmp 0x25ea0
leaq -0x1e8(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x29c80
jmp 0x25eb2
jmp 0x25eb4
leaq -0x160(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x29d30
movb %al, -0x221(%rbp)
jmp 0x25ecf
movb -0x221(%rbp), %al
testb $0x1, %al
jne 0x25ede
jmp 0x26044
movq -0x8(%rbp), %rax
movq %rax, -0x238(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x29d60
movq %rax, -0x230(%rbp)
jmp 0x25efe
movq -0x230(%rbp), %rsi
leaq -0x208(%rbp), %rdi
callq 0xd230
jmp 0x25f13
movq -0x238(%rbp), %rdi
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
leaq -0x208(%rbp), %rsi
callq 0x260a0
jmp 0x25f2e
leaq -0x208(%rbp), %rdi
callq 0xdca8
leaq -0x160(%rbp), %rdi
callq 0x29d90
jmp 0x25f48
leaq -0x160(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x29d30
movb %al, -0x239(%rbp)
jmp 0x25f63
movb -0x239(%rbp), %al
testb $0x1, %al
jne 0x25f72
jmp 0x2603f
movq -0x8(%rbp), %rdi
movl $0xa, %esi
callq 0xd740
jmp 0x25f82
movl -0x14(%rbp), %eax
movl %eax, -0x20c(%rbp)
cmpl $0x0, -0x20c(%rbp)
jbe 0x2603d
movq -0x8(%rbp), %rdi
movl $0x20, %esi
callq 0xd040
jmp 0x25fa8
jmp 0x25faa
movl -0x20c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x20c(%rbp)
jmp 0x25f8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd0(%rbp)
movl %eax, -0xd4(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x29ba0
jmp 0x2608f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd0(%rbp)
movl %eax, -0xd4(%rbp)
jmp 0x26086
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd0(%rbp)
movl %eax, -0xd4(%rbp)
jmp 0x2607a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd0(%rbp)
movl %eax, -0xd4(%rbp)
jmp 0x2606e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd0(%rbp)
movl %eax, -0xd4(%rbp)
leaq -0x208(%rbp), %rdi
callq 0xdca8
jmp 0x2606e
jmp 0x2603f
jmp 0x25eb4
leaq -0x1e8(%rbp), %rdi
callq 0x29dc0
leaq -0x160(%rbp), %rdi
callq 0x29dc0
leaq -0x78(%rbp), %rdi
callq 0x29df0
addq $0x240, %rsp            # imm = 0x240
popq %rbp
retq
leaq -0x1e8(%rbp), %rdi
callq 0x29dc0
leaq -0x160(%rbp), %rdi
callq 0x29dc0
leaq -0x78(%rbp), %rdi
callq 0x29df0
movq -0xd0(%rbp), %rdi
callq 0xdb30
nopl (%rax,%rax)