// File: dadocolussi[P]gdc-circular_queue/tests/catch.hpp
// Function: Catch::Tbc::Text::Text(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Catch::Tbc::TextAttributes const&)
Text( std::string const& _str, TextAttributes const& _attr = TextAttributes() )
        : attr( _attr )
        {
            std::string wrappableChars = " [({.,/|\\-";
            std::size_t indent = _attr.initialIndent != std::string::npos
                ? _attr.initialIndent
                : _attr.indent;
            std::string remainder = _str;

            while( !remainder.empty() ) {
                if( lines.size() >= 1000 ) {
                    lines.push_back( "... message truncated due to excessive size" );
                    return;
                }
                std::size_t tabPos = std::string::npos;
                std::size_t width = (std::min)( remainder.size(), _attr.width - indent );
                std::size_t pos = remainder.find_first_of( '\n' );
                if( pos <= width ) {
                    width = pos;
                }
                pos = remainder.find_last_of( _attr.tabChar, width );
                if( pos != std::string::npos ) {
                    tabPos = pos;
                    if( remainder[width] == '\n' )
                        width--;
                    remainder = remainder.substr( 0, tabPos ) + remainder.substr( tabPos+1 );
                }

                if( width == remainder.size() ) {
                    spliceLine( indent, remainder, width );
                }
                else if( remainder[width] == '\n' ) {
                    spliceLine( indent, remainder, width );
                    if( width <= 1 || remainder.size() != 1 )
                        remainder = remainder.substr( 1 );
                    indent = _attr.indent;
                }
                else {
                    pos = remainder.find_last_of( wrappableChars, width );
                    if( pos != std::string::npos && pos > 0 ) {
                        spliceLine( indent, remainder, pos );
                        if( remainder[0] == ' ' )
                            remainder = remainder.substr( 1 );
                    }
                    else {
                        spliceLine( indent, remainder, width-1 );
                        lines.back() += "-";
                    }
                    if( lines.size() == 1 )
                        indent = _attr.indent;
                    if( tabPos != std::string::npos )
                        indent += tabPos;
                }
            }
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x180(%rbp)
movq %rdi, %rax
movq %rax, -0x188(%rbp)
callq 0xe900
movq -0x180(%rbp), %rdi
movq -0x18(%rbp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups %xmm1, 0x30(%rdi)
movups %xmm0, 0x20(%rdi)
addq $0x40, %rdi
movq %rdi, -0x178(%rbp)
callq 0x3d1f0
leaq -0x39(%rbp), %rdi
movq %rdi, -0x170(%rbp)
callq 0xeb70
movq -0x170(%rbp), %rdx
leaq 0x3e6fd(%rip), %rsi     # 0x7e486
leaq -0x38(%rbp), %rdi
callq 0x18c80
jmp 0x3fd94
leaq -0x39(%rbp), %rdi
callq 0xe710
movq -0x18(%rbp), %rax
cmpq $-0x1, (%rax)
je 0x3fdb7
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x190(%rbp)
jmp 0x3fdc6
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0xe280
jmp 0x3fde0
jmp 0x3fde2
leaq -0x78(%rbp), %rdi
callq 0xea90
xorb $-0x1, %al
testb $0x1, %al
jne 0x3fdf6
jmp 0x402f3
movq -0x188(%rbp), %rdi
addq $0x40, %rdi
callq 0x223d0
cmpq $0x3e8, %rax            # imm = 0x3E8
jb 0x3fef1
movq -0x188(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x1a0(%rbp)
leaq -0x99(%rbp), %rdi
movq %rdi, -0x198(%rbp)
callq 0xeb70
movq -0x198(%rbp), %rdx
leaq 0x3e64c(%rip), %rsi     # 0x7e491
leaq -0x98(%rbp), %rdi
callq 0x18c80
jmp 0x3fe53
movq -0x1a0(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x18c50
jmp 0x3fe68
leaq -0x98(%rbp), %rdi
callq 0xecd8
leaq -0x99(%rbp), %rdi
callq 0xe710
movl $0x1, -0xa0(%rbp)
jmp 0x402fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x39(%rbp), %rdi
callq 0xe710
jmp 0x4032a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x40321
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x3fee0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0xecd8
leaq -0x99(%rbp), %rdi
callq 0xe710
jmp 0x40318
movq $-0x1, -0xa8(%rbp)
leaq -0x78(%rbp), %rdi
callq 0xe480
movq %rax, -0xb8(%rbp)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
subq -0x58(%rbp), %rax
movq %rax, -0xc0(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x252d0
movq (%rax), %rax
movq %rax, -0xb0(%rbp)
leaq -0x78(%rbp), %rdi
movl $0xa, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0xe3f0
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
ja 0x3ff73
movq -0xc8(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x18(%rbp), %rax
movb 0x18(%rax), %al
movq -0xb0(%rbp), %rdx
leaq -0x78(%rbp), %rdi
movsbl %al, %esi
callq 0xec30
movq %rax, -0xc8(%rbp)
cmpq $-0x1, -0xc8(%rbp)
je 0x400c6
movq -0xc8(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0xb0(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0xec90
movq %rax, -0x1a8(%rbp)
jmp 0x3ffc9
movq -0x1a8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0xa, %eax
jne 0x3fffd
movq -0xb0(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0xb0(%rbp)
jmp 0x3fffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x40318
movq -0xa8(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x108(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0xe6d0
jmp 0x4001a
movq -0xa8(%rbp), %rdx
incq %rdx
leaq -0x128(%rbp), %rdi
leaq -0x78(%rbp), %rsi
movq $-0x1, %rcx
callq 0xe6d0
jmp 0x4003d
leaq -0xe8(%rbp), %rdi
leaq -0x108(%rbp), %rsi
leaq -0x128(%rbp), %rdx
callq 0x1b990
jmp 0x40059
leaq -0x78(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0xe800
leaq -0xe8(%rbp), %rdi
callq 0xecd8
leaq -0x128(%rbp), %rdi
callq 0xecd8
leaq -0x108(%rbp), %rdi
callq 0xecd8
jmp 0x400c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x400b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x128(%rbp), %rdi
callq 0xecd8
leaq -0x108(%rbp), %rdi
callq 0xecd8
jmp 0x40318
movq -0xb0(%rbp), %rax
movq %rax, -0x1b0(%rbp)
leaq -0x78(%rbp), %rdi
callq 0xe480
movq %rax, %rcx
movq -0x1b0(%rbp), %rax
cmpq %rcx, %rax
jne 0x4010e
movq -0x188(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0xb0(%rbp), %rcx
leaq -0x78(%rbp), %rdx
callq 0x43650
jmp 0x40109
jmp 0x402ee
movq -0xb0(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0xec90
movq %rax, -0x1b8(%rbp)
jmp 0x40127
movq -0x1b8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0xa, %eax
jne 0x401bb
movq -0x188(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0xb0(%rbp), %rcx
leaq -0x78(%rbp), %rdx
callq 0x43650
jmp 0x40157
cmpq $0x1, -0xb0(%rbp)
jbe 0x40170
leaq -0x78(%rbp), %rdi
callq 0xe480
cmpq $0x1, %rax
je 0x401aa
leaq -0x148(%rbp), %rdi
leaq -0x78(%rbp), %rsi
movl $0x1, %edx
movq $-0x1, %rcx
callq 0xe6d0
jmp 0x4018e
leaq -0x78(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0xe800
leaq -0x148(%rbp), %rdi
callq 0xecd8
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
jmp 0x402ec
movq -0xb0(%rbp), %rdx
leaq -0x78(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xe9f0
movq %rax, -0xc8(%rbp)
cmpq $-0x1, -0xc8(%rbp)
je 0x4026c
cmpq $0x0, -0xc8(%rbp)
jbe 0x4026c
movq -0x188(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0xc8(%rbp), %rcx
leaq -0x78(%rbp), %rdx
callq 0x43650
jmp 0x4020b
xorl %eax, %eax
movl %eax, %esi
leaq -0x78(%rbp), %rdi
callq 0xec90
movq %rax, -0x1c0(%rbp)
jmp 0x40221
movq -0x1c0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
jne 0x4026a
leaq -0x168(%rbp), %rdi
leaq -0x78(%rbp), %rsi
movl $0x1, %edx
movq $-0x1, %rcx
callq 0xe6d0
jmp 0x4024e
leaq -0x78(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0xe800
leaq -0x168(%rbp), %rdi
callq 0xecd8
jmp 0x402af
movq -0x188(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0xb0(%rbp), %rcx
decq %rcx
leaq -0x78(%rbp), %rdx
callq 0x43650
jmp 0x4028c
movq -0x188(%rbp), %rdi
addq $0x40, %rdi
callq 0x37320
movq %rax, %rdi
leaq 0x3e9a9(%rip), %rsi     # 0x7ec4f
callq 0xe650
jmp 0x402ad
jmp 0x402af
movq -0x188(%rbp), %rdi
addq $0x40, %rdi
callq 0x223d0
cmpq $0x1, %rax
jne 0x402d1
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
cmpq $-0x1, -0xa8(%rbp)
je 0x402ea
movq -0xa8(%rbp), %rax
addq -0x58(%rbp), %rax
movq %rax, -0x58(%rbp)
jmp 0x402ec
jmp 0x402ee
jmp 0x3fde2
movl $0x0, -0xa0(%rbp)
leaq -0x78(%rbp), %rdi
callq 0xecd8
leaq -0x38(%rbp), %rdi
callq 0xecd8
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
leaq -0x78(%rbp), %rdi
callq 0xecd8
leaq -0x38(%rbp), %rdi
callq 0xecd8
movq -0x178(%rbp), %rdi
callq 0x18ee0
movq -0x180(%rbp), %rdi
callq 0xecd8
movq -0x48(%rbp), %rdi
callq 0xeb60
nopl (%rax,%rax)