打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
The Secret Life of C++: Exceptions
#include <exception>
#include <string>
#include <iostream>

using namespace std;

class MyExceptionB : public exception {
  private:
    string _what;
  public:
    MyExceptionB(string what) throw ();
    ~MyExceptionB() throw ();

    virtual const char *what() const throw ();
    string as_string() const;
};

MyExceptionB::MyExceptionB(string what) throw ():
    _what(what)
{}

MyExceptionB::~MyExceptionB() throw () {
}

const char *MyExceptionB::what() const throw () {
    return _what.c_str();
}

string MyExceptionB::as_string() const {
    return "MyExceptionB(" + _what + ")";
}


void throw_MyExceptionB(string message) throw (MyExceptionB) {
    throw MyExceptionB(message);
}

void catch_and_rethrow() throw (MyExceptionB) {
    try {
        throw_MyExceptionB("Foo");
    } catch (MyExceptionB &e) {
        cout << "Got exception:" << e.as_string() << " rethrowing..." << endl;
        throw;
    }
}

void catch_and_throw_another() throw (MyExceptionB) {
    try {
        throw_MyExceptionB("Baz");
    } catch (MyExceptionB &e) {
        cout << "Got exception:" << e.as_string() << " throwing another..." << endl;
        throw MyExceptionB(e.as_string());
    }
}

void doesnt_throw() throw () {
    throw_MyExceptionB("Bar");
}

void doRethrow() {
    try {
        catch_and_rethrow();
    } catch (MyExceptionB &e) {
        cout << "Main got exception: " << e.as_string() << endl;
    }

    try {
        catch_and_throw_another();
    } catch (MyExceptionB &e) {
        cout << "Main got exception: " << e.as_string() << endl;
    }

    try {
        doesnt_throw();
    } catch (MyExceptionB &e) {
        cout << "Main got exception: " << e.as_string() << endl;
    }
}
	.section	__TEXT,__text,regular,pure_instructions
	.globl	MyExceptionB::MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
	.align	4, 0x90
MyExceptionB::MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >): ## @_ZN12MyExceptionBC2ENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE
	.cfi_startproc
	.cfi_personality 155, ___gxx_personality_v0
Leh_func_begin0:
	.cfi_lsda 16, Lexception0
## BB#0:
	pushq	%rbp
Ltmp6:
	.cfi_def_cfa_offset 16
Ltmp7:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp8:
	.cfi_def_cfa_register %rbp
	pushq	%r14
	pushq	%rbx
Ltmp9:
	.cfi_offset %rbx, -32
Ltmp10:
	.cfi_offset %r14, -24
	movq	%rdi, %rbx
	leaq	vtable for MyExceptionB+16(%rip), %rax
	movq	%rax, (%rbx)
	leaq	8(%rbx), %rdi
Ltmp0:
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Ltmp1:
## BB#1:
	popq	%rbx
	popq	%r14
	popq	%rbp
	retq
LBB0_2:
Ltmp2:
	movq	%rax, %r14
	movq	%rbx, %rdi
	callq	std::exception::~exception()
	movq	%r14, %rdi
	callq	___cxa_call_unexpected
	.cfi_endproc
Leh_func_end0:
	.section	__TEXT,__gcc_except_tab
	.align	2
GCC_except_table0:
Lexception0:
	.byte	255                     ## @LPStart Encoding = omit
	.byte	155                     ## @TType Encoding = indirect pcrel sdata4
	.asciz	"\236\200\200"          ## @TType base offset
	.byte	3                       ## Call site Encoding = udata4
	.byte	26                      ## Call site table length
Lset0 = Ltmp0-Leh_func_begin0           ## >> Call Site 1 <<
	.long	Lset0
Lset1 = Ltmp1-Ltmp0                     ##   Call between Ltmp0 and Ltmp1
	.long	Lset1
Lset2 = Ltmp2-Leh_func_begin0           ##     jumps to Ltmp2
	.long	Lset2
	.byte	1                       ##   __int128&& action: 1
Lset3 = Ltmp1-Leh_func_begin0           ## >> Call Site 2 <<
	.long	Lset3
Lset4 = Leh_func_end0-Ltmp1             ##   Call between Ltmp1 and Leh_func_end0
	.long	Lset4
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
	.byte	127                     ## >> Action Record 1 <<
                                        ##   Filter TypeInfo -1
	.byte	0                       ##   No further actions
                                        ## >> Filter TypeInfos <<
	.byte	0
	.align	2

	.section	__TEXT,__text,regular,pure_instructions
	.globl	MyExceptionB::MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
	.align	4, 0x90
MyExceptionB::MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >): ## @_ZN12MyExceptionBC1ENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE
	.cfi_startproc
## BB#0:
	pushq	%rbp
Ltmp13:
	.cfi_def_cfa_offset 16
Ltmp14:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp15:
	.cfi_def_cfa_register %rbp
	popq	%rbp
	jmp	MyExceptionB::MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) ## TAILCALL
	.cfi_endproc

	.globl	MyExceptionB::~MyExceptionB()
	.align	4, 0x90
MyExceptionB::~MyExceptionB():                 ## @_ZN12MyExceptionBD2Ev
	.cfi_startproc
## BB#0:
	pushq	%rbp
Ltmp19:
	.cfi_def_cfa_offset 16
Ltmp20:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp21:
	.cfi_def_cfa_register %rbp
	pushq	%rbx
	pushq	%rax
Ltmp22:
	.cfi_offset %rbx, -24
	movq	%rdi, %rbx
	leaq	vtable for MyExceptionB+16(%rip), %rax
	movq	%rax, (%rbx)
	leaq	8(%rbx), %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	movq	%rbx, %rdi
	addq	$8, %rsp
	popq	%rbx
	popq	%rbp
	jmp	std::exception::~exception()    ## TAILCALL
	.cfi_endproc

	.globl	MyExceptionB::~MyExceptionB()
	.align	4, 0x90
MyExceptionB::~MyExceptionB():                 ## @_ZN12MyExceptionBD1Ev
	.cfi_startproc
## BB#0:
	pushq	%rbp
Ltmp25:
	.cfi_def_cfa_offset 16
Ltmp26:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp27:
	.cfi_def_cfa_register %rbp
	popq	%rbp
	jmp	MyExceptionB::~MyExceptionB()  ## TAILCALL
	.cfi_endproc

	.globl	MyExceptionB::~MyExceptionB()
	.align	4, 0x90
MyExceptionB::~MyExceptionB():                 ## @_ZN12MyExceptionBD0Ev
	.cfi_startproc
## BB#0:
	pushq	%rbp
Ltmp31:
	.cfi_def_cfa_offset 16
Ltmp32:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp33:
	.cfi_def_cfa_register %rbp
	pushq	%rbx
	pushq	%rax
Ltmp34:
	.cfi_offset %rbx, -24
	movq	%rdi, %rbx
                                        ## kill: RDI<def> RBX<kill>
	callq	MyExceptionB::~MyExceptionB()
	movq	%rbx, %rdi
	addq	$8, %rsp
	popq	%rbx
	popq	%rbp
	jmp	operator delete(void*)                 ## TAILCALL
	.cfi_endproc

	.globl	MyExceptionB::what() const
	.align	4, 0x90
MyExceptionB::what() const:             ## @_ZNK12MyExceptionB4whatEv
	.cfi_startproc
## BB#0:
	pushq	%rbp
Ltmp37:
	.cfi_def_cfa_offset 16
Ltmp38:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp39:
	.cfi_def_cfa_register %rbp
	testb	$1, 8(%rdi)
	je	LBB5_2
## BB#1:
	movq	24(%rdi), %rdi
	jmp	LBB5_3
LBB5_2:
	addq	$8, %rdi
	incq	%rdi
LBB5_3:                                 ## %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5c_strEv.exit
	movq	%rdi, %rax
	popq	%rbp
	retq
	.cfi_endproc

	.globl	MyExceptionB::as_string() const
	.align	4, 0x90
MyExceptionB::as_string() const:        ## @_ZNK12MyExceptionB9as_stringEv
	.cfi_startproc
	.cfi_personality 155, ___gxx_personality_v0
Leh_func_begin6:
	.cfi_lsda 16, Lexception6
## BB#0:
	pushq	%rbp
Ltmp46:
	.cfi_def_cfa_offset 16
Ltmp47:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp48:
	.cfi_def_cfa_register %rbp
	pushq	%r14
	pushq	%rbx
	subq	$32, %rsp
Ltmp49:
	.cfi_offset %rbx, -32
Ltmp50:
	.cfi_offset %r14, -24
	movq	%rdi, %rbx
	leaq	8(%rsi), %rdx
	leaq	L_.str(%rip), %rsi
	leaq	-40(%rbp), %r14
	movq	%r14, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Ltmp40:
	leaq	L_.str1(%rip), %rsi
	movq	%r14, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*)
Ltmp41:
## BB#1:
	movq	16(%rax), %rcx
	movq	%rcx, 16(%rbx)
	movq	(%rax), %rcx
	movq	8(%rax), %rdx
	movq	%rdx, 8(%rbx)
	movq	%rcx, (%rbx)
	movq	$0, 16(%rax)
	movq	$0, 8(%rax)
	movq	$0, (%rax)
	leaq	-40(%rbp), %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	movq	%rbx, %rax
	addq	$32, %rsp
	popq	%rbx
	popq	%r14
	popq	%rbp
	retq
LBB6_2:
Ltmp42:
	movq	%rax, %rbx
	leaq	-40(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	movq	%rbx, %rdi
	callq	__Unwind_Resume
	.cfi_endproc
Leh_func_end6:
	.section	__TEXT,__gcc_except_tab
	.align	2
GCC_except_table6:
Lexception6:
	.byte	255                     ## @LPStart Encoding = omit
	.byte	155                     ## @TType Encoding = indirect pcrel sdata4
	.byte	41                      ## @TType base offset
	.byte	3                       ## Call site Encoding = udata4
	.byte	39                      ## Call site table length
Lset5 = Leh_func_begin6-Leh_func_begin6 ## >> Call Site 1 <<
	.long	Lset5
Lset6 = Ltmp40-Leh_func_begin6          ##   Call between Leh_func_begin6 and Ltmp40
	.long	Lset6
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset7 = Ltmp40-Leh_func_begin6          ## >> Call Site 2 <<
	.long	Lset7
Lset8 = Ltmp41-Ltmp40                   ##   Call between Ltmp40 and Ltmp41
	.long	Lset8
Lset9 = Ltmp42-Leh_func_begin6          ##     jumps to Ltmp42
	.long	Lset9
	.byte	0                       ##   __int128&& action: cleanup
Lset10 = Ltmp41-Leh_func_begin6         ## >> Call Site 3 <<
	.long	Lset10
Lset11 = Leh_func_end6-Ltmp41           ##   Call between Ltmp41 and Leh_func_end6
	.long	Lset11
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
	.align	2

	.section	__TEXT,__textcoal_nt,coalesced,pure_instructions
	.globl	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
	.weak_def_can_be_hidden	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
	.align	4, 0x90
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&): ## @_ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EEPKS6_RKS9_
	.cfi_startproc
	.cfi_personality 155, ___gxx_personality_v0
Leh_func_begin7:
	.cfi_lsda 16, Lexception7
## BB#0:
	pushq	%rbp
Ltmp59:
	.cfi_def_cfa_offset 16
Ltmp60:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp61:
	.cfi_def_cfa_register %rbp
	pushq	%r15
	pushq	%r14
	pushq	%r12
	pushq	%rbx
Ltmp62:
	.cfi_offset %rbx, -48
Ltmp63:
	.cfi_offset %r12, -40
Ltmp64:
	.cfi_offset %r14, -32
Ltmp65:
	.cfi_offset %r15, -24
	movq	%rdx, %rbx
	movq	%rsi, %r12
	movq	%rdi, %r14
	movq	$0, 16(%r14)
	movq	$0, 8(%r14)
	movq	$0, (%r14)
	movq	%r12, %rdi
	callq	_strlen
	movzbl	(%rbx), %r15d
	testb	$1, %r15b
	je	LBB7_2
## BB#1:
	movq	8(%rbx), %r15
	jmp	LBB7_3
LBB7_2:
	shrq	%r15
LBB7_3:                                 ## %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4sizeEv.exit
	leaq	(%r15,%rax), %rcx
Ltmp51:
	movq	%r14, %rdi
	movq	%r12, %rsi
	movq	%rax, %rdx
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long, unsigned long)
Ltmp52:
## BB#4:
	testb	$1, (%rbx)
	je	LBB7_6
## BB#5:
	movq	16(%rbx), %rbx
	jmp	LBB7_7
LBB7_6:
	incq	%rbx
LBB7_7:                                 ## %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit
Ltmp53:
	movq	%r14, %rdi
	movq	%rbx, %rsi
	movq	%r15, %rdx
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*, unsigned long)
Ltmp54:
## BB#8:
	movq	%r14, %rax
	popq	%rbx
	popq	%r12
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
LBB7_9:
Ltmp55:
	movq	%rax, %rbx
	movq	%r14, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	movq	%rbx, %rdi
	callq	__Unwind_Resume
	.cfi_endproc
Leh_func_end7:
	.section	__TEXT,__gcc_except_tab
	.align	2
GCC_except_table7:
Lexception7:
	.byte	255                     ## @LPStart Encoding = omit
	.byte	155                     ## @TType Encoding = indirect pcrel sdata4
	.asciz	"\234"                  ## @TType base offset
	.byte	3                       ## Call site Encoding = udata4
	.byte	26                      ## Call site table length
Lset12 = Ltmp51-Leh_func_begin7         ## >> Call Site 1 <<
	.long	Lset12
Lset13 = Ltmp54-Ltmp51                  ##   Call between Ltmp51 and Ltmp54
	.long	Lset13
Lset14 = Ltmp55-Leh_func_begin7         ##     jumps to Ltmp55
	.long	Lset14
	.byte	0                       ##   __int128&& action: cleanup
Lset15 = Ltmp54-Leh_func_begin7         ## >> Call Site 2 <<
	.long	Lset15
Lset16 = Leh_func_end7-Ltmp54           ##   Call between Ltmp54 and Leh_func_end7
	.long	Lset16
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
	.align	2

	.section	__TEXT,__text,regular,pure_instructions
	.globl	throw_MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
	.align	4, 0x90
throw_MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >): ## @_Z18throw_MyExceptionBNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE
	.cfi_startproc
	.cfi_personality 155, ___gxx_personality_v0
Leh_func_begin8:
	.cfi_lsda 16, Lexception8
## BB#0:
	pushq	%rbp
Ltmp75:
	.cfi_def_cfa_offset 16
Ltmp76:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp77:
	.cfi_def_cfa_register %rbp
	pushq	%r15
	pushq	%r14
	pushq	%r12
	pushq	%rbx
	subq	$32, %rsp
Ltmp78:
	.cfi_offset %rbx, -48
Ltmp79:
	.cfi_offset %r12, -40
Ltmp80:
	.cfi_offset %r14, -32
Ltmp81:
	.cfi_offset %r15, -24
	movq	%rdi, %rbx
	movl	$32, %edi
	callq	___cxa_allocate_exception
	movq	%rax, %r12
Ltmp66:
	leaq	-56(%rbp), %rdi
	movq	%rbx, %rsi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Ltmp67:
## BB#1:
	leaq	-56(%rbp), %rsi
	movq	%r12, %rdi
	callq	MyExceptionB::MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Ltmp69:
	leaq	typeinfo for MyExceptionB(%rip), %rsi
	leaq	MyExceptionB::~MyExceptionB()(%rip), %rdx
	movq	%r12, %rdi
	callq	___cxa_throw
Ltmp70:
	jmp	LBB8_2
LBB8_3:
Ltmp71:
	movq	%rdx, %r15
	movq	%rax, %r14
	leaq	-56(%rbp), %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	jmp	LBB8_5
LBB8_4:
Ltmp68:
	movq	%rdx, %r15
	movq	%rax, %r14
	movq	%r12, %rdi
	callq	___cxa_free_exception
LBB8_5:
	testl	%r15d, %r15d
	jns	LBB8_6
LBB8_2:
	movq	%r14, %rdi
	callq	___cxa_call_unexpected
LBB8_6:
	movq	%r14, %rdi
	callq	__Unwind_Resume
	.cfi_endproc
Leh_func_end8:
	.section	__TEXT,__gcc_except_tab
	.align	2
GCC_except_table8:
Lexception8:
	.byte	255                     ## @LPStart Encoding = omit
	.byte	155                     ## @TType Encoding = indirect pcrel sdata4
	.asciz	"\276\200\200"          ## @TType base offset
	.byte	3                       ## Call site Encoding = udata4
	.byte	52                      ## Call site table length
Lset17 = Leh_func_begin8-Leh_func_begin8 ## >> Call Site 1 <<
	.long	Lset17
Lset18 = Ltmp66-Leh_func_begin8         ##   Call between Leh_func_begin8 and Ltmp66
	.long	Lset18
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset19 = Ltmp66-Leh_func_begin8         ## >> Call Site 2 <<
	.long	Lset19
Lset20 = Ltmp67-Ltmp66                  ##   Call between Ltmp66 and Ltmp67
	.long	Lset20
Lset21 = Ltmp68-Leh_func_begin8         ##     jumps to Ltmp68
	.long	Lset21
	.byte	3                       ##   __int128&& action: 2
Lset22 = Ltmp69-Leh_func_begin8         ## >> Call Site 3 <<
	.long	Lset22
Lset23 = Ltmp70-Ltmp69                  ##   Call between Ltmp69 and Ltmp70
	.long	Lset23
Lset24 = Ltmp71-Leh_func_begin8         ##     jumps to Ltmp71
	.long	Lset24
	.byte	3                       ##   __int128&& action: 2
Lset25 = Ltmp70-Leh_func_begin8         ## >> Call Site 4 <<
	.long	Lset25
Lset26 = Leh_func_end8-Ltmp70           ##   Call between Ltmp70 and Leh_func_end8
	.long	Lset26
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
	.byte	0                       ## >> Action Record 1 <<
                                        ##   Cleanup
	.byte	0                       ##   No further actions
	.byte	127                     ## >> Action Record 2 <<
                                        ##   Filter TypeInfo -1
	.byte	125                     ##   Continue to action 1
                                        ## >> Catch TypeInfos <<
	.long	typeinfo for MyExceptionB@GOTPCREL+4 ## TypeInfo 1
                                        ## >> Filter TypeInfos <<
	.byte	1                       ## FilterInfo -1
	.byte	0
	.align	2

	.section	__TEXT,__text,regular,pure_instructions
	.globl	catch_and_rethrow()
	.align	4, 0x90
catch_and_rethrow():                ## @_Z17catch_and_rethrowv
	.cfi_startproc
	.cfi_personality 155, ___gxx_personality_v0
Leh_func_begin9:
	.cfi_lsda 16, Lexception9
## BB#0:
	pushq	%rbp
Ltmp117:
	.cfi_def_cfa_offset 16
Ltmp118:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp119:
	.cfi_def_cfa_register %rbp
	pushq	%r14
	pushq	%rbx
	subq	$64, %rsp
Ltmp120:
	.cfi_offset %rbx, -32
Ltmp121:
	.cfi_offset %r14, -24
Ltmp82:
	leaq	L_.str2(%rip), %rsi
	leaq	-48(%rbp), %rdi
	movl	$3, %edx
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long)
Ltmp83:
## BB#1:                                ## %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit
Ltmp85:
	leaq	-48(%rbp), %rdi
	callq	throw_MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Ltmp86:
## BB#2:
	leaq	-48(%rbp), %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	addq	$64, %rsp
	popq	%rbx
	popq	%r14
	popq	%rbp
	retq
LBB9_3:
Ltmp84:
	movq	%rdx, %r14
	movq	%rax, %rbx
	jmp	LBB9_5
LBB9_4:
Ltmp87:
	movq	%rdx, %r14
	movq	%rax, %rbx
	leaq	-48(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
LBB9_5:
	cmpl	$1, %r14d
	jne	LBB9_20
## BB#6:
	movq	%rbx, %rdi
	callq	___cxa_begin_catch
	movq	%rax, %r14
Ltmp88:
	movq	std::__1::cout@GOTPCREL(%rip), %rax
	leaq	L_.str3(%rip), %rcx
	movq	%rax, %rdi
	movq	%rcx, %rsi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)
	movq	%rax, %rbx
Ltmp89:
## BB#7:
Ltmp90:
	leaq	-72(%rbp), %rax
	movq	%rax, %rdi
	movq	%r14, %rsi
	callq	MyExceptionB::as_string() const
Ltmp91:
## BB#8:
Ltmp92:
	leaq	-72(%rbp), %rax
	movq	%rbx, %rdi
	movq	%rax, %rsi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Ltmp93:
## BB#9:
Ltmp94:
	leaq	L_.str4(%rip), %rcx
	movq	%rax, %rdi
	movq	%rcx, %rsi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)
	movq	%rax, %rbx
Ltmp95:
## BB#10:
	movq	(%rbx), %rax
	movq	-24(%rax), %rax
	addq	%rbx, %rax
Ltmp96:
	leaq	-24(%rbp), %rcx
	movq	%rcx, %rdi
	movq	%rax, %rsi
	callq	std::__1::ios_base::getloc() const
Ltmp97:
## BB#11:                               ## %.noexc6
Ltmp98:
	movq	std::__1::ctype<char>::id@GOTPCREL(%rip), %rax
	leaq	-24(%rbp), %rcx
	movq	%rcx, %rdi
	movq	%rax, %rsi
	callq	std::__1::locale::use_facet(std::__1::locale::id&) const
Ltmp99:
## BB#12:
	movq	(%rax), %rcx
	movq	56(%rcx), %rcx
Ltmp100:
	movl	$10, %esi
	movq	%rax, %rdi
	callq	*%rcx
	movb	%al, %r14b
Ltmp101:
## BB#13:                               ## %.noexc
	leaq	-24(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::locale::~locale()
Ltmp103:
	movsbl	%r14b, %eax
	movq	%rbx, %rdi
	movl	%eax, %esi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)
Ltmp104:
## BB#14:                               ## %.noexc4
Ltmp105:
	movq	%rbx, %rdi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()
Ltmp106:
## BB#15:                               ## %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit
	leaq	-72(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
Ltmp108:
	callq	___cxa_rethrow
Ltmp109:
LBB9_23:
Ltmp102:
	movq	%rdx, %r14
	movq	%rax, %rbx
	leaq	-24(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::locale::~locale()
	jmp	LBB9_18
LBB9_17:
Ltmp107:
	movq	%rdx, %r14
	movq	%rax, %rbx
LBB9_18:                                ## %.body
	leaq	-72(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	jmp	LBB9_19
LBB9_16:
Ltmp110:
	movq	%rdx, %r14
	movq	%rax, %rbx
LBB9_19:
Ltmp111:
	callq	___cxa_end_catch
Ltmp112:
LBB9_20:
	movq	%rbx, %rdi
	testl	%r14d, %r14d
	jns	LBB9_21
## BB#24:
	callq	___cxa_call_unexpected
LBB9_22:
Ltmp113:
	movq	%rax, %rdi
	callq	___clang_call_terminate
LBB9_21:
	callq	__Unwind_Resume
	.cfi_endproc
Leh_func_end9:
	.section	__TEXT,__gcc_except_tab
	.align	2
GCC_except_table9:
Lexception9:
	.byte	255                     ## @LPStart Encoding = omit
	.byte	155                     ## @TType Encoding = indirect pcrel sdata4
	.asciz	"\227\201"              ## @TType base offset
	.byte	3                       ## Call site Encoding = udata4
	.ascii	"\202\001"              ## Call site table length
Lset27 = Ltmp82-Leh_func_begin9         ## >> Call Site 1 <<
	.long	Lset27
Lset28 = Ltmp83-Ltmp82                  ##   Call between Ltmp82 and Ltmp83
	.long	Lset28
Lset29 = Ltmp84-Leh_func_begin9         ##     jumps to Ltmp84
	.long	Lset29
	.byte	3                       ##   __int128&& action: 2
Lset30 = Ltmp85-Leh_func_begin9         ## >> Call Site 2 <<
	.long	Lset30
Lset31 = Ltmp86-Ltmp85                  ##   Call between Ltmp85 and Ltmp86
	.long	Lset31
Lset32 = Ltmp87-Leh_func_begin9         ##     jumps to Ltmp87
	.long	Lset32
	.byte	3                       ##   __int128&& action: 2
Lset33 = Ltmp86-Leh_func_begin9         ## >> Call Site 3 <<
	.long	Lset33
Lset34 = Ltmp88-Ltmp86                  ##   Call between Ltmp86 and Ltmp88
	.long	Lset34
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset35 = Ltmp88-Leh_func_begin9         ## >> Call Site 4 <<
	.long	Lset35
Lset36 = Ltmp91-Ltmp88                  ##   Call between Ltmp88 and Ltmp91
	.long	Lset36
Lset37 = Ltmp110-Leh_func_begin9        ##     jumps to Ltmp110
	.long	Lset37
	.byte	7                       ##   __int128&& action: 4
Lset38 = Ltmp92-Leh_func_begin9         ## >> Call Site 5 <<
	.long	Lset38
Lset39 = Ltmp97-Ltmp92                  ##   Call between Ltmp92 and Ltmp97
	.long	Lset39
Lset40 = Ltmp107-Leh_func_begin9        ##     jumps to Ltmp107
	.long	Lset40
	.byte	7                       ##   __int128&& action: 4
Lset41 = Ltmp98-Leh_func_begin9         ## >> Call Site 6 <<
	.long	Lset41
Lset42 = Ltmp101-Ltmp98                 ##   Call between Ltmp98 and Ltmp101
	.long	Lset42
Lset43 = Ltmp102-Leh_func_begin9        ##     jumps to Ltmp102
	.long	Lset43
	.byte	7                       ##   __int128&& action: 4
Lset44 = Ltmp103-Leh_func_begin9        ## >> Call Site 7 <<
	.long	Lset44
Lset45 = Ltmp106-Ltmp103                ##   Call between Ltmp103 and Ltmp106
	.long	Lset45
Lset46 = Ltmp107-Leh_func_begin9        ##     jumps to Ltmp107
	.long	Lset46
	.byte	7                       ##   __int128&& action: 4
Lset47 = Ltmp108-Leh_func_begin9        ## >> Call Site 8 <<
	.long	Lset47
Lset48 = Ltmp109-Ltmp108                ##   Call between Ltmp108 and Ltmp109
	.long	Lset48
Lset49 = Ltmp110-Leh_func_begin9        ##     jumps to Ltmp110
	.long	Lset49
	.byte	7                       ##   __int128&& action: 4
Lset50 = Ltmp111-Leh_func_begin9        ## >> Call Site 9 <<
	.long	Lset50
Lset51 = Ltmp112-Ltmp111                ##   Call between Ltmp111 and Ltmp112
	.long	Lset51
Lset52 = Ltmp113-Leh_func_begin9        ##     jumps to Ltmp113
	.long	Lset52
	.byte	9                       ##   __int128&& action: 5
Lset53 = Ltmp112-Leh_func_begin9        ## >> Call Site 10 <<
	.long	Lset53
Lset54 = Leh_func_end9-Ltmp112          ##   Call between Ltmp112 and Leh_func_end9
	.long	Lset54
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
	.byte	127                     ## >> Action Record 1 <<
                                        ##   Filter TypeInfo -1
	.byte	0                       ##   No further actions
	.byte	1                       ## >> Action Record 2 <<
                                        ##   Catch TypeInfo 1
	.byte	125                     ##   Continue to action 1
	.byte	0                       ## >> Action Record 3 <<
                                        ##   Cleanup
	.byte	0                       ##   No further actions
	.byte	126                     ## >> Action Record 4 <<
                                        ##   Filter TypeInfo -2
	.byte	125                     ##   Continue to action 3
	.byte	2                       ## >> Action Record 5 <<
                                        ##   Catch TypeInfo 2
	.byte	0                       ##   No further actions
                                        ## >> Catch TypeInfos <<
	.long	0                       ## TypeInfo 2
	.long	typeinfo for MyExceptionB@GOTPCREL+4 ## TypeInfo 1
                                        ## >> Filter TypeInfos <<
	.byte	0
	.byte	1                       ## FilterInfo -2
	.byte	0
	.align	2

	.section	__TEXT,__textcoal_nt,coalesced,pure_instructions
	.globl	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)
	.weak_def_can_be_hidden	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)
	.align	4, 0x90
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*): ## @_ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc
	.cfi_startproc
## BB#0:
	pushq	%rbp
Ltmp125:
	.cfi_def_cfa_offset 16
Ltmp126:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp127:
	.cfi_def_cfa_register %rbp
	pushq	%r14
	pushq	%rbx
Ltmp128:
	.cfi_offset %rbx, -32
Ltmp129:
	.cfi_offset %r14, -24
	movq	%rsi, %rbx
	movq	%rdi, %r14
	movq	%rbx, %rdi
	callq	_strlen
	movq	%r14, %rdi
	movq	%rbx, %rsi
	movq	%rax, %rdx
	popq	%rbx
	popq	%r14
	popq	%rbp
	jmp	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) ## TAILCALL
	.cfi_endproc

	.globl	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
	.weak_def_can_be_hidden	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
	.align	4, 0x90
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&): ## @_ZNSt3__1lsIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS_13basic_ostreamIT_T0_EES9_RKNS_12basic_stringIS6_S7_T1_EE
	.cfi_startproc
## BB#0:
	pushq	%rbp
Ltmp132:
	.cfi_def_cfa_offset 16
Ltmp133:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp134:
	.cfi_def_cfa_register %rbp
	movq	%rsi, %rax
	testb	$1, (%rax)
	je	LBB11_2
## BB#1:
	movq	16(%rax), %rsi
	jmp	LBB11_3
LBB11_2:
	leaq	1(%rax), %rsi
LBB11_3:                                ## %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit
	movzbl	(%rax), %edx
	testb	$1, %dl
	je	LBB11_5
## BB#4:
	movq	8(%rax), %rdx
	popq	%rbp
	jmp	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) ## TAILCALL
LBB11_5:
	shrq	%rdx
	popq	%rbp
	jmp	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) ## TAILCALL
	.cfi_endproc

	.private_extern	___clang_call_terminate
	.globl	___clang_call_terminate
	.weak_def_can_be_hidden	___clang_call_terminate
	.align	4, 0x90
___clang_call_terminate:                ## @__clang_call_terminate
## BB#0:
	pushq	%rbp
	movq	%rsp, %rbp
	callq	___cxa_begin_catch
	callq	std::terminate()

	.section	__TEXT,__text,regular,pure_instructions
	.globl	catch_and_throw_another()
	.align	4, 0x90
catch_and_throw_another():          ## @_Z23catch_and_throw_anotherv
	.cfi_startproc
	.cfi_personality 155, ___gxx_personality_v0
Leh_func_begin13:
	.cfi_lsda 16, Lexception13
## BB#0:
	pushq	%rbp
Ltmp174:
	.cfi_def_cfa_offset 16
Ltmp175:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp176:
	.cfi_def_cfa_register %rbp
	pushq	%r15
	pushq	%r14
	pushq	%rbx
	subq	$88, %rsp
Ltmp177:
	.cfi_offset %rbx, -40
Ltmp178:
	.cfi_offset %r14, -32
Ltmp179:
	.cfi_offset %r15, -24
Ltmp135:
	leaq	L_.str5(%rip), %rsi
	leaq	-56(%rbp), %rdi
	movl	$3, %edx
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long)
Ltmp136:
## BB#1:                                ## %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit
Ltmp138:
	leaq	-56(%rbp), %rdi
	callq	throw_MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Ltmp139:
## BB#2:
	leaq	-56(%rbp), %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	addq	$88, %rsp
	popq	%rbx
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
LBB13_3:
Ltmp137:
	movq	%rdx, %r14
	movq	%rax, %rbx
	jmp	LBB13_5
LBB13_4:
Ltmp140:
	movq	%rdx, %r14
	movq	%rax, %rbx
	leaq	-56(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
LBB13_5:
	cmpl	$1, %r14d
	jne	LBB13_24
## BB#6:
	movq	%rbx, %rdi
	callq	___cxa_begin_catch
	movq	%rax, %rbx
Ltmp141:
	movq	std::__1::cout@GOTPCREL(%rip), %rax
	leaq	L_.str3(%rip), %rcx
	movq	%rax, %rdi
	movq	%rcx, %rsi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)
	movq	%rax, %r14
Ltmp142:
## BB#7:
Ltmp143:
	leaq	-80(%rbp), %rax
	movq	%rax, %rdi
	movq	%rbx, %rsi
	callq	MyExceptionB::as_string() const
Ltmp144:
## BB#8:
Ltmp146:
	leaq	-80(%rbp), %rax
	movq	%r14, %rdi
	movq	%rax, %rsi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Ltmp147:
## BB#9:
Ltmp148:
	leaq	L_.str6(%rip), %rcx
	movq	%rax, %rdi
	movq	%rcx, %rsi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)
	movq	%rax, %r14
Ltmp149:
## BB#10:
	movq	(%r14), %rax
	movq	-24(%rax), %rax
	addq	%r14, %rax
Ltmp150:
	leaq	-32(%rbp), %rcx
	movq	%rcx, %rdi
	movq	%rax, %rsi
	callq	std::__1::ios_base::getloc() const
Ltmp151:
## BB#11:                               ## %.noexc
Ltmp152:
	movq	std::__1::ctype<char>::id@GOTPCREL(%rip), %rax
	leaq	-32(%rbp), %rcx
	movq	%rcx, %rdi
	movq	%rax, %rsi
	callq	std::__1::locale::use_facet(std::__1::locale::id&) const
Ltmp153:
## BB#12:
	movq	(%rax), %rcx
	movq	56(%rcx), %rcx
Ltmp154:
	movl	$10, %esi
	movq	%rax, %rdi
	callq	*%rcx
	movb	%al, %r15b
Ltmp155:
## BB#13:                               ## %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i
	leaq	-32(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::locale::~locale()
Ltmp157:
	movsbl	%r15b, %eax
	movq	%r14, %rdi
	movl	%eax, %esi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)
Ltmp158:
## BB#14:                               ## %.noexc6
Ltmp159:
	movq	%r14, %rdi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()
Ltmp160:
## BB#15:                               ## %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit
	leaq	-80(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	movl	$32, %edi
	callq	___cxa_allocate_exception
	movq	%rax, %r15
Ltmp162:
	leaq	-104(%rbp), %rax
	movq	%rax, %rdi
	movq	%rbx, %rsi
	callq	MyExceptionB::as_string() const
Ltmp163:
## BB#16:
	leaq	-104(%rbp), %rax
	movq	%r15, %rdi
	movq	%rax, %rsi
	callq	MyExceptionB::MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Ltmp165:
	leaq	typeinfo for MyExceptionB(%rip), %rax
	leaq	MyExceptionB::~MyExceptionB()(%rip), %rcx
	movq	%r15, %rdi
	movq	%rax, %rsi
	movq	%rcx, %rdx
	callq	___cxa_throw
Ltmp166:
LBB13_27:
Ltmp156:
	movq	%rdx, %r14
	movq	%rax, %rbx
	leaq	-32(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::locale::~locale()
	jmp	LBB13_19
LBB13_17:
Ltmp145:
	movq	%rdx, %r14
	movq	%rax, %rbx
	jmp	LBB13_23
LBB13_18:
Ltmp161:
	movq	%rdx, %r14
	movq	%rax, %rbx
LBB13_19:                               ## %.body
	leaq	-80(%rbp), %rax
	jmp	LBB13_20
LBB13_22:
Ltmp164:
	movq	%rdx, %r14
	movq	%rax, %rbx
	movq	%r15, %rdi
	callq	___cxa_free_exception
	jmp	LBB13_23
LBB13_21:
Ltmp167:
	movq	%rdx, %r14
	movq	%rax, %rbx
	leaq	-104(%rbp), %rax
LBB13_20:
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
LBB13_23:
Ltmp168:
	callq	___cxa_end_catch
Ltmp169:
LBB13_24:
	movq	%rbx, %rdi
	testl	%r14d, %r14d
	jns	LBB13_25
## BB#28:
	callq	___cxa_call_unexpected
LBB13_26:
Ltmp170:
	movq	%rax, %rdi
	callq	___clang_call_terminate
LBB13_25:
	callq	__Unwind_Resume
	.cfi_endproc
Leh_func_end13:
	.section	__TEXT,__gcc_except_tab
	.align	2
GCC_except_table13:
Lexception13:
	.byte	255                     ## @LPStart Encoding = omit
	.byte	155                     ## @TType Encoding = indirect pcrel sdata4
	.asciz	"\276\201\200"          ## @TType base offset
	.byte	3                       ## Call site Encoding = udata4
	.ascii	"\251\001"              ## Call site table length
Lset55 = Ltmp135-Leh_func_begin13       ## >> Call Site 1 <<
	.long	Lset55
Lset56 = Ltmp136-Ltmp135                ##   Call between Ltmp135 and Ltmp136
	.long	Lset56
Lset57 = Ltmp137-Leh_func_begin13       ##     jumps to Ltmp137
	.long	Lset57
	.byte	3                       ##   __int128&& action: 2
Lset58 = Ltmp138-Leh_func_begin13       ## >> Call Site 2 <<
	.long	Lset58
Lset59 = Ltmp139-Ltmp138                ##   Call between Ltmp138 and Ltmp139
	.long	Lset59
Lset60 = Ltmp140-Leh_func_begin13       ##     jumps to Ltmp140
	.long	Lset60
	.byte	3                       ##   __int128&& action: 2
Lset61 = Ltmp139-Leh_func_begin13       ## >> Call Site 3 <<
	.long	Lset61
Lset62 = Ltmp141-Ltmp139                ##   Call between Ltmp139 and Ltmp141
	.long	Lset62
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset63 = Ltmp141-Leh_func_begin13       ## >> Call Site 4 <<
	.long	Lset63
Lset64 = Ltmp144-Ltmp141                ##   Call between Ltmp141 and Ltmp144
	.long	Lset64
Lset65 = Ltmp145-Leh_func_begin13       ##     jumps to Ltmp145
	.long	Lset65
	.byte	7                       ##   __int128&& action: 4
Lset66 = Ltmp146-Leh_func_begin13       ## >> Call Site 5 <<
	.long	Lset66
Lset67 = Ltmp151-Ltmp146                ##   Call between Ltmp146 and Ltmp151
	.long	Lset67
Lset68 = Ltmp161-Leh_func_begin13       ##     jumps to Ltmp161
	.long	Lset68
	.byte	7                       ##   __int128&& action: 4
Lset69 = Ltmp152-Leh_func_begin13       ## >> Call Site 6 <<
	.long	Lset69
Lset70 = Ltmp155-Ltmp152                ##   Call between Ltmp152 and Ltmp155
	.long	Lset70
Lset71 = Ltmp156-Leh_func_begin13       ##     jumps to Ltmp156
	.long	Lset71
	.byte	7                       ##   __int128&& action: 4
Lset72 = Ltmp157-Leh_func_begin13       ## >> Call Site 7 <<
	.long	Lset72
Lset73 = Ltmp160-Ltmp157                ##   Call between Ltmp157 and Ltmp160
	.long	Lset73
Lset74 = Ltmp161-Leh_func_begin13       ##     jumps to Ltmp161
	.long	Lset74
	.byte	7                       ##   __int128&& action: 4
Lset75 = Ltmp160-Leh_func_begin13       ## >> Call Site 8 <<
	.long	Lset75
Lset76 = Ltmp162-Ltmp160                ##   Call between Ltmp160 and Ltmp162
	.long	Lset76
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset77 = Ltmp162-Leh_func_begin13       ## >> Call Site 9 <<
	.long	Lset77
Lset78 = Ltmp163-Ltmp162                ##   Call between Ltmp162 and Ltmp163
	.long	Lset78
Lset79 = Ltmp164-Leh_func_begin13       ##     jumps to Ltmp164
	.long	Lset79
	.byte	7                       ##   __int128&& action: 4
Lset80 = Ltmp165-Leh_func_begin13       ## >> Call Site 10 <<
	.long	Lset80
Lset81 = Ltmp166-Ltmp165                ##   Call between Ltmp165 and Ltmp166
	.long	Lset81
Lset82 = Ltmp167-Leh_func_begin13       ##     jumps to Ltmp167
	.long	Lset82
	.byte	7                       ##   __int128&& action: 4
Lset83 = Ltmp166-Leh_func_begin13       ## >> Call Site 11 <<
	.long	Lset83
Lset84 = Ltmp168-Ltmp166                ##   Call between Ltmp166 and Ltmp168
	.long	Lset84
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset85 = Ltmp168-Leh_func_begin13       ## >> Call Site 12 <<
	.long	Lset85
Lset86 = Ltmp169-Ltmp168                ##   Call between Ltmp168 and Ltmp169
	.long	Lset86
Lset87 = Ltmp170-Leh_func_begin13       ##     jumps to Ltmp170
	.long	Lset87
	.byte	9                       ##   __int128&& action: 5
Lset88 = Ltmp169-Leh_func_begin13       ## >> Call Site 13 <<
	.long	Lset88
Lset89 = Leh_func_end13-Ltmp169         ##   Call between Ltmp169 and Leh_func_end13
	.long	Lset89
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
	.byte	127                     ## >> Action Record 1 <<
                                        ##   Filter TypeInfo -1
	.byte	0                       ##   No further actions
	.byte	1                       ## >> Action Record 2 <<
                                        ##   Catch TypeInfo 1
	.byte	125                     ##   Continue to action 1
	.byte	0                       ## >> Action Record 3 <<
                                        ##   Cleanup
	.byte	0                       ##   No further actions
	.byte	126                     ## >> Action Record 4 <<
                                        ##   Filter TypeInfo -2
	.byte	125                     ##   Continue to action 3
	.byte	2                       ## >> Action Record 5 <<
                                        ##   Catch TypeInfo 2
	.byte	0                       ##   No further actions
                                        ## >> Catch TypeInfos <<
	.long	0                       ## TypeInfo 2
	.long	typeinfo for MyExceptionB@GOTPCREL+4 ## TypeInfo 1
                                        ## >> Filter TypeInfos <<
	.byte	0
	.byte	1                       ## FilterInfo -2
	.byte	0
	.align	2

	.section	__TEXT,__text,regular,pure_instructions
	.globl	doesnt_throw()
	.align	4, 0x90
doesnt_throw():                     ## @_Z12doesnt_throwv
	.cfi_startproc
	.cfi_personality 155, ___gxx_personality_v0
Leh_func_begin14:
	.cfi_lsda 16, Lexception14
## BB#0:
	pushq	%rbp
Ltmp189:
	.cfi_def_cfa_offset 16
Ltmp190:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp191:
	.cfi_def_cfa_register %rbp
	pushq	%rbx
	subq	$24, %rsp
Ltmp192:
	.cfi_offset %rbx, -24
Ltmp180:
	leaq	L_.str7(%rip), %rsi
	leaq	-32(%rbp), %rdi
	movl	$3, %edx
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long)
Ltmp181:
## BB#1:                                ## %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit
Ltmp183:
	leaq	-32(%rbp), %rdi
	callq	throw_MyExceptionB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Ltmp184:
## BB#2:
	leaq	-32(%rbp), %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	addq	$24, %rsp
	popq	%rbx
	popq	%rbp
	retq
LBB14_3:
Ltmp182:
	movq	%rax, %rbx
	movq	%rbx, %rdi
	callq	___cxa_call_unexpected
LBB14_4:
Ltmp185:
	movq	%rax, %rbx
	leaq	-32(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	movq	%rbx, %rdi
	callq	___cxa_call_unexpected
	.cfi_endproc
Leh_func_end14:
	.section	__TEXT,__gcc_except_tab
	.align	2
GCC_except_table14:
Lexception14:
	.byte	255                     ## @LPStart Encoding = omit
	.byte	155                     ## @TType Encoding = indirect pcrel sdata4
	.asciz	"\253\200"              ## @TType base offset
	.byte	3                       ## Call site Encoding = udata4
	.byte	39                      ## Call site table length
Lset90 = Ltmp180-Leh_func_begin14       ## >> Call Site 1 <<
	.long	Lset90
Lset91 = Ltmp181-Ltmp180                ##   Call between Ltmp180 and Ltmp181
	.long	Lset91
Lset92 = Ltmp182-Leh_func_begin14       ##     jumps to Ltmp182
	.long	Lset92
	.byte	1                       ##   __int128&& action: 1
Lset93 = Ltmp183-Leh_func_begin14       ## >> Call Site 2 <<
	.long	Lset93
Lset94 = Ltmp184-Ltmp183                ##   Call between Ltmp183 and Ltmp184
	.long	Lset94
Lset95 = Ltmp185-Leh_func_begin14       ##     jumps to Ltmp185
	.long	Lset95
	.byte	1                       ##   __int128&& action: 1
Lset96 = Ltmp184-Leh_func_begin14       ## >> Call Site 3 <<
	.long	Lset96
Lset97 = Leh_func_end14-Ltmp184         ##   Call between Ltmp184 and Leh_func_end14
	.long	Lset97
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
	.byte	127                     ## >> Action Record 1 <<
                                        ##   Filter TypeInfo -1
	.byte	0                       ##   No further actions
                                        ## >> Filter TypeInfos <<
	.byte	0
	.align	2

	.section	__TEXT,__text,regular,pure_instructions
	.globl	doRethrow()
	.align	4, 0x90
doRethrow():                         ## @_Z9doRethrowv
	.cfi_startproc
	.cfi_personality 155, ___gxx_personality_v0
Leh_func_begin15:
	.cfi_lsda 16, Lexception15
## BB#0:
	pushq	%rbp
Ltmp245:
	.cfi_def_cfa_offset 16
Ltmp246:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp247:
	.cfi_def_cfa_register %rbp
	pushq	%r14
	pushq	%rbx
	subq	$64, %rsp
Ltmp248:
	.cfi_offset %rbx, -32
Ltmp249:
	.cfi_offset %r14, -24
Ltmp193:
	callq	catch_and_rethrow()
Ltmp194:
LBB15_11:
Ltmp217:
	callq	catch_and_throw_another()
Ltmp218:
LBB15_26:
	callq	doesnt_throw()
	addq	$64, %rsp
	popq	%rbx
	popq	%r14
	popq	%rbp
	retq
LBB15_1:
Ltmp195:
	movq	%rdx, %rcx
	movq	%rax, %rbx
	cmpl	$1, %ecx
	jne	LBB15_31
## BB#2:
	movq	%rbx, %rdi
	callq	___cxa_begin_catch
	movq	%rax, %r14
Ltmp196:
	movq	std::__1::cout@GOTPCREL(%rip), %rax
	leaq	L_.str8(%rip), %rcx
	movq	%rax, %rdi
	movq	%rcx, %rsi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)
	movq	%rax, %rbx
Ltmp197:
## BB#3:
Ltmp198:
	leaq	-56(%rbp), %rax
	movq	%rax, %rdi
	movq	%r14, %rsi
	callq	MyExceptionB::as_string() const
Ltmp199:
## BB#4:
Ltmp201:
	leaq	-56(%rbp), %rax
	movq	%rbx, %rdi
	movq	%rax, %rsi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
	movq	%rax, %rbx
Ltmp202:
## BB#5:
	movq	(%rbx), %rax
	movq	-24(%rax), %rax
	addq	%rbx, %rax
Ltmp203:
	leaq	-32(%rbp), %rcx
	movq	%rcx, %rdi
	movq	%rax, %rsi
	callq	std::__1::ios_base::getloc() const
Ltmp204:
## BB#6:                                ## %.noexc
Ltmp205:
	movq	std::__1::ctype<char>::id@GOTPCREL(%rip), %rax
	leaq	-32(%rbp), %rcx
	movq	%rcx, %rdi
	movq	%rax, %rsi
	callq	std::__1::locale::use_facet(std::__1::locale::id&) const
Ltmp206:
## BB#7:
	movq	(%rax), %rcx
	movq	56(%rcx), %rcx
Ltmp207:
	movl	$10, %esi
	movq	%rax, %rdi
	callq	*%rcx
	movb	%al, %r14b
Ltmp208:
## BB#8:                                ## %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i
	leaq	-32(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::locale::~locale()
Ltmp210:
	movsbl	%r14b, %eax
	movq	%rbx, %rdi
	movl	%eax, %esi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)
Ltmp211:
## BB#9:                                ## %.noexc5
Ltmp212:
	movq	%rbx, %rdi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()
Ltmp213:
## BB#10:                               ## %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit
	leaq	-56(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	callq	___cxa_end_catch
	jmp	LBB15_11
LBB15_16:
Ltmp219:
	movq	%rdx, %rcx
	movq	%rax, %rbx
	cmpl	$1, %ecx
	jne	LBB15_31
## BB#17:
	movq	%rbx, %rdi
	callq	___cxa_begin_catch
	movq	%rax, %r14
Ltmp220:
	movq	std::__1::cout@GOTPCREL(%rip), %rax
	leaq	L_.str8(%rip), %rcx
	movq	%rax, %rdi
	movq	%rcx, %rsi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)
	movq	%rax, %rbx
Ltmp221:
## BB#18:
Ltmp222:
	leaq	-80(%rbp), %rax
	movq	%rax, %rdi
	movq	%r14, %rsi
	callq	MyExceptionB::as_string() const
Ltmp223:
## BB#19:
Ltmp225:
	leaq	-80(%rbp), %rax
	movq	%rbx, %rdi
	movq	%rax, %rsi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
	movq	%rax, %rbx
Ltmp226:
## BB#20:
	movq	(%rbx), %rax
	movq	-24(%rax), %rax
	addq	%rbx, %rax
Ltmp227:
	leaq	-24(%rbp), %rcx
	movq	%rcx, %rdi
	movq	%rax, %rsi
	callq	std::__1::ios_base::getloc() const
Ltmp228:
## BB#21:                               ## %.noexc10
Ltmp229:
	movq	std::__1::ctype<char>::id@GOTPCREL(%rip), %rax
	leaq	-24(%rbp), %rcx
	movq	%rcx, %rdi
	movq	%rax, %rsi
	callq	std::__1::locale::use_facet(std::__1::locale::id&) const
Ltmp230:
## BB#22:
	movq	(%rax), %rcx
	movq	56(%rcx), %rcx
Ltmp231:
	movl	$10, %esi
	movq	%rax, %rdi
	callq	*%rcx
	movb	%al, %r14b
Ltmp232:
## BB#23:                               ## %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i9
	leaq	-24(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::locale::~locale()
Ltmp234:
	movsbl	%r14b, %eax
	movq	%rbx, %rdi
	movl	%eax, %esi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)
Ltmp235:
## BB#24:                               ## %.noexc13
Ltmp236:
	movq	%rbx, %rdi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()
Ltmp237:
## BB#25:                               ## %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit8
	leaq	-80(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	callq	___cxa_end_catch
	jmp	LBB15_26
LBB15_12:
Ltmp200:
	movq	%rax, %rbx
	jmp	LBB15_15
LBB15_33:
Ltmp209:
	movq	%rax, %rbx
	leaq	-32(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::locale::~locale()
	jmp	LBB15_14
LBB15_13:
Ltmp214:
	movq	%rax, %rbx
LBB15_14:                               ## %.body
	leaq	-56(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
LBB15_15:
Ltmp215:
	callq	___cxa_end_catch
Ltmp216:
	jmp	LBB15_31
LBB15_27:
Ltmp224:
	movq	%rax, %rbx
	jmp	LBB15_30
LBB15_34:
Ltmp233:
	movq	%rax, %rbx
	leaq	-24(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::locale::~locale()
	jmp	LBB15_29
LBB15_28:
Ltmp238:
	movq	%rax, %rbx
LBB15_29:                               ## %.body11
	leaq	-80(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
LBB15_30:
Ltmp239:
	callq	___cxa_end_catch
Ltmp240:
LBB15_31:
	movq	%rbx, %rdi
	callq	__Unwind_Resume
LBB15_32:
Ltmp241:
	movq	%rax, %rdi
	callq	___clang_call_terminate
	.cfi_endproc
Leh_func_end15:
	.section	__TEXT,__gcc_except_tab
	.align	2
GCC_except_table15:
Lexception15:
	.byte	255                     ## @LPStart Encoding = omit
	.byte	155                     ## @TType Encoding = indirect pcrel sdata4
	.asciz	"\322\201\200"          ## @TType base offset
	.byte	3                       ## Call site Encoding = udata4
	.ascii	"\303\001"              ## Call site table length
Lset98 = Ltmp193-Leh_func_begin15       ## >> Call Site 1 <<
	.long	Lset98
Lset99 = Ltmp194-Ltmp193                ##   Call between Ltmp193 and Ltmp194
	.long	Lset99
Lset100 = Ltmp195-Leh_func_begin15      ##     jumps to Ltmp195
	.long	Lset100
	.byte	1                       ##   __int128&& action: 1
Lset101 = Ltmp217-Leh_func_begin15      ## >> Call Site 2 <<
	.long	Lset101
Lset102 = Ltmp218-Ltmp217               ##   Call between Ltmp217 and Ltmp218
	.long	Lset102
Lset103 = Ltmp219-Leh_func_begin15      ##     jumps to Ltmp219
	.long	Lset103
	.byte	1                       ##   __int128&& action: 1
Lset104 = Ltmp218-Leh_func_begin15      ## >> Call Site 3 <<
	.long	Lset104
Lset105 = Ltmp196-Ltmp218               ##   Call between Ltmp218 and Ltmp196
	.long	Lset105
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset106 = Ltmp196-Leh_func_begin15      ## >> Call Site 4 <<
	.long	Lset106
Lset107 = Ltmp199-Ltmp196               ##   Call between Ltmp196 and Ltmp199
	.long	Lset107
Lset108 = Ltmp200-Leh_func_begin15      ##     jumps to Ltmp200
	.long	Lset108
	.byte	0                       ##   __int128&& action: cleanup
Lset109 = Ltmp201-Leh_func_begin15      ## >> Call Site 5 <<
	.long	Lset109
Lset110 = Ltmp204-Ltmp201               ##   Call between Ltmp201 and Ltmp204
	.long	Lset110
Lset111 = Ltmp214-Leh_func_begin15      ##     jumps to Ltmp214
	.long	Lset111
	.byte	0                       ##   __int128&& action: cleanup
Lset112 = Ltmp205-Leh_func_begin15      ## >> Call Site 6 <<
	.long	Lset112
Lset113 = Ltmp208-Ltmp205               ##   Call between Ltmp205 and Ltmp208
	.long	Lset113
Lset114 = Ltmp209-Leh_func_begin15      ##     jumps to Ltmp209
	.long	Lset114
	.byte	0                       ##   __int128&& action: cleanup
Lset115 = Ltmp210-Leh_func_begin15      ## >> Call Site 7 <<
	.long	Lset115
Lset116 = Ltmp213-Ltmp210               ##   Call between Ltmp210 and Ltmp213
	.long	Lset116
Lset117 = Ltmp214-Leh_func_begin15      ##     jumps to Ltmp214
	.long	Lset117
	.byte	0                       ##   __int128&& action: cleanup
Lset118 = Ltmp213-Leh_func_begin15      ## >> Call Site 8 <<
	.long	Lset118
Lset119 = Ltmp220-Ltmp213               ##   Call between Ltmp213 and Ltmp220
	.long	Lset119
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset120 = Ltmp220-Leh_func_begin15      ## >> Call Site 9 <<
	.long	Lset120
Lset121 = Ltmp223-Ltmp220               ##   Call between Ltmp220 and Ltmp223
	.long	Lset121
Lset122 = Ltmp224-Leh_func_begin15      ##     jumps to Ltmp224
	.long	Lset122
	.byte	0                       ##   __int128&& action: cleanup
Lset123 = Ltmp225-Leh_func_begin15      ## >> Call Site 10 <<
	.long	Lset123
Lset124 = Ltmp228-Ltmp225               ##   Call between Ltmp225 and Ltmp228
	.long	Lset124
Lset125 = Ltmp238-Leh_func_begin15      ##     jumps to Ltmp238
	.long	Lset125
	.byte	0                       ##   __int128&& action: cleanup
Lset126 = Ltmp229-Leh_func_begin15      ## >> Call Site 11 <<
	.long	Lset126
Lset127 = Ltmp232-Ltmp229               ##   Call between Ltmp229 and Ltmp232
	.long	Lset127
Lset128 = Ltmp233-Leh_func_begin15      ##     jumps to Ltmp233
	.long	Lset128
	.byte	0                       ##   __int128&& action: cleanup
Lset129 = Ltmp234-Leh_func_begin15      ## >> Call Site 12 <<
	.long	Lset129
Lset130 = Ltmp237-Ltmp234               ##   Call between Ltmp234 and Ltmp237
	.long	Lset130
Lset131 = Ltmp238-Leh_func_begin15      ##     jumps to Ltmp238
	.long	Lset131
	.byte	0                       ##   __int128&& action: cleanup
Lset132 = Ltmp237-Leh_func_begin15      ## >> Call Site 13 <<
	.long	Lset132
Lset133 = Ltmp215-Ltmp237               ##   Call between Ltmp237 and Ltmp215
	.long	Lset133
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset134 = Ltmp215-Leh_func_begin15      ## >> Call Site 14 <<
	.long	Lset134
Lset135 = Ltmp240-Ltmp215               ##   Call between Ltmp215 and Ltmp240
	.long	Lset135
Lset136 = Ltmp241-Leh_func_begin15      ##     jumps to Ltmp241
	.long	Lset136
	.byte	3                       ##   __int128&& action: 2
Lset137 = Ltmp240-Leh_func_begin15      ## >> Call Site 15 <<
	.long	Lset137
Lset138 = Leh_func_end15-Ltmp240        ##   Call between Ltmp240 and Leh_func_end15
	.long	Lset138
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
	.byte	1                       ## >> Action Record 1 <<
                                        ##   Catch TypeInfo 1
	.byte	0                       ##   No further actions
	.byte	2                       ## >> Action Record 2 <<
                                        ##   Catch TypeInfo 2
	.byte	0                       ##   No further actions
                                        ## >> Catch TypeInfos <<
	.long	0                       ## TypeInfo 2
	.long	typeinfo for MyExceptionB@GOTPCREL+4 ## TypeInfo 1
	.align	2

	.section	__TEXT,__textcoal_nt,coalesced,pure_instructions
	.globl	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long)
	.weak_def_can_be_hidden	std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long)
	.align	4, 0x90
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long): ## @_ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m
	.cfi_startproc
	.cfi_personality 155, ___gxx_personality_v0
Leh_func_begin16:
	.cfi_lsda 16, Lexception16
## BB#0:
	pushq	%rbp
Ltmp274:
	.cfi_def_cfa_offset 16
Ltmp275:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp276:
	.cfi_def_cfa_register %rbp
	pushq	%r15
	pushq	%r14
	pushq	%r13
	pushq	%r12
	pushq	%rbx
	subq	$56, %rsp
Ltmp277:
	.cfi_offset %rbx, -56
Ltmp278:
	.cfi_offset %r12, -48
Ltmp279:
	.cfi_offset %r13, -40
Ltmp280:
	.cfi_offset %r14, -32
Ltmp281:
	.cfi_offset %r15, -24
	movq	%rdx, %r14
	movq	%rsi, %r15
	movq	%rdi, %rbx
Ltmp250:
	leaq	-64(%rbp), %rdi
	movq	%rbx, %rsi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)
Ltmp251:
## BB#1:
	cmpb	$0, -64(%rbp)
	je	LBB16_12
## BB#2:
	movq	(%rbx), %rax
	movq	-24(%rax), %rax
	movq	40(%rax,%rbx), %rdi
	movl	$176, %ecx
	andl	8(%rax,%rbx), %ecx
	cmpl	$32, %ecx
	movq	%r15, %rdx
	jne	LBB16_4
## BB#3:
	leaq	(%r15,%r14), %rdx
LBB16_4:
	movq	(%rbx), %rax
	movq	-24(%rax), %r13
	leaq	(%rbx,%r13), %r12
	cmpl	$-1, 144(%rbx,%r13)
	jne	LBB16_9
## BB#5:
Ltmp253:
	movq	%rdx, -80(%rbp)         ## 8-byte Spill
	movq	%rdi, -72(%rbp)         ## 8-byte Spill
	leaq	-48(%rbp), %rdi
	movq	%r12, %rsi
	callq	std::__1::ios_base::getloc() const
Ltmp254:
## BB#6:                                ## %.noexc
Ltmp255:
	movq	std::__1::ctype<char>::id@GOTPCREL(%rip), %rsi
	leaq	-48(%rbp), %rdi
	callq	std::__1::locale::use_facet(std::__1::locale::id&) const
Ltmp256:
## BB#7:
	movq	(%rax), %rcx
	movq	56(%rcx), %rcx
Ltmp257:
	movl	$32, %esi
	movq	%rax, %rdi
	callq	*%rcx
	movb	%al, -81(%rbp)          ## 1-byte Spill
Ltmp258:
## BB#8:                                ## %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i
	leaq	-48(%rbp), %rdi
	callq	std::__1::locale::~locale()
	movsbl	-81(%rbp), %eax         ## 1-byte Folded Reload
	movl	%eax, 144(%rbx,%r13)
	movq	-72(%rbp), %rdi         ## 8-byte Reload
	movq	-80(%rbp), %rdx         ## 8-byte Reload
LBB16_9:
	addq	%r15, %r14
	movsbl	144(%rbx,%r13), %r9d
Ltmp260:
	movq	%r15, %rsi
	movq	%r14, %rcx
	movq	%r12, %r8
	callq	std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char)
Ltmp261:
## BB#10:
	testq	%rax, %rax
	jne	LBB16_12
## BB#11:
	movq	(%rbx), %rax
	movq	-24(%rax), %rax
	leaq	(%rbx,%rax), %rdi
	movl	32(%rbx,%rax), %esi
	orl	$5, %esi
Ltmp262:
	callq	std::__1::ios_base::clear(unsigned int)
Ltmp263:
LBB16_12:                               ## %_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateEj.exit
	leaq	-64(%rbp), %rdi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()
LBB16_17:
	movq	%rbx, %rax
	addq	$56, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
LBB16_22:
Ltmp252:
	movq	%rax, %r14
	jmp	LBB16_15
LBB16_21:
Ltmp259:
	movq	%rax, %r14
	leaq	-48(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::locale::~locale()
	jmp	LBB16_14
LBB16_13:
Ltmp264:
	movq	%rax, %r14
LBB16_14:                               ## %.body
	leaq	-64(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()
LBB16_15:
	movq	%r14, %rdi
	callq	___cxa_begin_catch
	movq	(%rbx), %rax
	movq	-24(%rax), %rax
	addq	%rbx, %rax
Ltmp265:
	movq	%rax, %rdi
	callq	std::__1::ios_base::__set_badbit_and_consider_rethrow()
Ltmp266:
## BB#16:
	callq	___cxa_end_catch
	jmp	LBB16_17
LBB16_18:
Ltmp267:
	movq	%rax, %rbx
Ltmp268:
	callq	___cxa_end_catch
Ltmp269:
## BB#19:
	movq	%rbx, %rdi
	callq	__Unwind_Resume
LBB16_20:
Ltmp270:
	movq	%rax, %rdi
	callq	___clang_call_terminate
	.cfi_endproc
Leh_func_end16:
	.section	__TEXT,__gcc_except_tab
	.align	2
GCC_except_table16:
Lexception16:
	.byte	255                     ## @LPStart Encoding = omit
	.byte	155                     ## @TType Encoding = indirect pcrel sdata4
	.byte	125                     ## @TType base offset
	.byte	3                       ## Call site Encoding = udata4
	.byte	117                     ## Call site table length
Lset139 = Ltmp250-Leh_func_begin16      ## >> Call Site 1 <<
	.long	Lset139
Lset140 = Ltmp251-Ltmp250               ##   Call between Ltmp250 and Ltmp251
	.long	Lset140
Lset141 = Ltmp252-Leh_func_begin16      ##     jumps to Ltmp252
	.long	Lset141
	.byte	1                       ##   __int128&& action: 1
Lset142 = Ltmp253-Leh_func_begin16      ## >> Call Site 2 <<
	.long	Lset142
Lset143 = Ltmp254-Ltmp253               ##   Call between Ltmp253 and Ltmp254
	.long	Lset143
Lset144 = Ltmp264-Leh_func_begin16      ##     jumps to Ltmp264
	.long	Lset144
	.byte	1                       ##   __int128&& action: 1
Lset145 = Ltmp255-Leh_func_begin16      ## >> Call Site 3 <<
	.long	Lset145
Lset146 = Ltmp258-Ltmp255               ##   Call between Ltmp255 and Ltmp258
	.long	Lset146
Lset147 = Ltmp259-Leh_func_begin16      ##     jumps to Ltmp259
	.long	Lset147
	.byte	1                       ##   __int128&& action: 1
Lset148 = Ltmp260-Leh_func_begin16      ## >> Call Site 4 <<
	.long	Lset148
Lset149 = Ltmp263-Ltmp260               ##   Call between Ltmp260 and Ltmp263
	.long	Lset149
Lset150 = Ltmp264-Leh_func_begin16      ##     jumps to Ltmp264
	.long	Lset150
	.byte	1                       ##   __int128&& action: 1
Lset151 = Ltmp263-Leh_func_begin16      ## >> Call Site 5 <<
	.long	Lset151
Lset152 = Ltmp265-Ltmp263               ##   Call between Ltmp263 and Ltmp265
	.long	Lset152
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset153 = Ltmp265-Leh_func_begin16      ## >> Call Site 6 <<
	.long	Lset153
Lset154 = Ltmp266-Ltmp265               ##   Call between Ltmp265 and Ltmp266
	.long	Lset154
Lset155 = Ltmp267-Leh_func_begin16      ##     jumps to Ltmp267
	.long	Lset155
	.byte	0                       ##   __int128&& action: cleanup
Lset156 = Ltmp266-Leh_func_begin16      ## >> Call Site 7 <<
	.long	Lset156
Lset157 = Ltmp268-Ltmp266               ##   Call between Ltmp266 and Ltmp268
	.long	Lset157
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset158 = Ltmp268-Leh_func_begin16      ## >> Call Site 8 <<
	.long	Lset158
Lset159 = Ltmp269-Ltmp268               ##   Call between Ltmp268 and Ltmp269
	.long	Lset159
Lset160 = Ltmp270-Leh_func_begin16      ##     jumps to Ltmp270
	.long	Lset160
	.byte	1                       ##   __int128&& action: 1
Lset161 = Ltmp269-Leh_func_begin16      ## >> Call Site 9 <<
	.long	Lset161
Lset162 = Leh_func_end16-Ltmp269        ##   Call between Ltmp269 and Leh_func_end16
	.long	Lset162
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
	.byte	1                       ## >> Action Record 1 <<
                                        ##   Catch TypeInfo 1
	.byte	0                       ##   No further actions
                                        ## >> Catch TypeInfos <<
	.long	0                       ## TypeInfo 1
	.align	2

	.section	__TEXT,__textcoal_nt,coalesced,pure_instructions
	.private_extern	std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char)
	.globl	std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char)
	.weak_def_can_be_hidden	std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char)
	.align	4, 0x90
std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char): ## @_ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
	.cfi_startproc
	.cfi_personality 155, ___gxx_personality_v0
Leh_func_begin17:
	.cfi_lsda 16, Lexception17
## BB#0:
	pushq	%rbp
Ltmp288:
	.cfi_def_cfa_offset 16
Ltmp289:
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
Ltmp290:
	.cfi_def_cfa_register %rbp
	pushq	%r15
	pushq	%r14
	pushq	%r13
	pushq	%r12
	pushq	%rbx
	subq	$40, %rsp
Ltmp291:
	.cfi_offset %rbx, -56
Ltmp292:
	.cfi_offset %r12, -48
Ltmp293:
	.cfi_offset %r13, -40
Ltmp294:
	.cfi_offset %r14, -32
Ltmp295:
	.cfi_offset %r15, -24
	movq	%rcx, %r15
	movq	%rdi, %r13
	xorl	%eax, %eax
	testq	%r13, %r13
	je	LBB17_12
## BB#1:
	movq	%r15, %rax
	subq	%rsi, %rax
	movq	24(%r8), %rcx
	xorl	%ebx, %ebx
	subq	%rax, %rcx
	cmovgq	%rcx, %rbx
	movq	%rdx, %r12
	subq	%rsi, %r12
	testq	%r12, %r12
	jle	LBB17_3
## BB#2:
	movq	(%r13), %rax
	movq	%r13, %rdi
	movq	%r15, -80(%rbp)         ## 8-byte Spill
	movq	%rdx, -72(%rbp)         ## 8-byte Spill
	movq	%r12, %rdx
	movq	%r8, %r14
	movl	%r9d, %r15d
	callq	*96(%rax)
	movl	%r15d, %r9d
	movq	-72(%rbp), %rdx         ## 8-byte Reload
	movq	-80(%rbp), %r15         ## 8-byte Reload
	movq	%r14, %r8
	movq	%rax, %rcx
	xorl	%eax, %eax
	cmpq	%r12, %rcx
	jne	LBB17_12
LBB17_3:
	testq	%rbx, %rbx
	jle	LBB17_9
## BB#4:
	movq	%rdx, -72(%rbp)         ## 8-byte Spill
	movq	%r8, %r12
	movsbl	%r9b, %edx
	leaq	-64(%rbp), %rdi
	movq	%rbx, %rsi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(unsigned long, char)
	testb	$1, -64(%rbp)
	je	LBB17_6
## BB#5:
	movq	-48(%rbp), %rsi
	jmp	LBB17_7
LBB17_6:
	leaq	-63(%rbp), %rsi
LBB17_7:                                ## %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit
	movq	(%r13), %rax
	movq	96(%rax), %rax
Ltmp282:
	movq	%r13, %rdi
	movq	%rbx, %rdx
	callq	*%rax
	movq	%rax, %r14
Ltmp283:
## BB#8:                                ## %_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKcl.exit
	leaq	-64(%rbp), %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	xorl	%eax, %eax
	cmpq	%rbx, %r14
	cmovneq	%rax, %r13
	movq	%r12, %r8
	movq	-72(%rbp), %rdx         ## 8-byte Reload
	jne	LBB17_12
LBB17_9:
	subq	%rdx, %r15
	testq	%r15, %r15
	jle	LBB17_11
## BB#10:
	movq	(%r13), %rax
	movq	%r13, %rdi
	movq	%rdx, %rsi
	movq	%r15, %rdx
	movq	%r8, %rbx
	callq	*96(%rax)
	movq	%rbx, %r8
	movq	%rax, %rcx
	xorl	%eax, %eax
	cmpq	%r15, %rcx
	jne	LBB17_12
LBB17_11:
	movq	$0, 24(%r8)
	movq	%r13, %rax
LBB17_12:
	addq	$40, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
LBB17_13:
Ltmp284:
	movq	%rax, %rbx
	leaq	-64(%rbp), %rax
	movq	%rax, %rdi
	callq	std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
	movq	%rbx, %rdi
	callq	__Unwind_Resume
	.cfi_endproc
Leh_func_end17:
	.section	__TEXT,__gcc_except_tab
	.align	2
GCC_except_table17:
Lexception17:
	.byte	255                     ## @LPStart Encoding = omit
	.byte	155                     ## @TType Encoding = indirect pcrel sdata4
	.byte	41                      ## @TType base offset
	.byte	3                       ## Call site Encoding = udata4
	.byte	39                      ## Call site table length
Lset163 = Leh_func_begin17-Leh_func_begin17 ## >> Call Site 1 <<
	.long	Lset163
Lset164 = Ltmp282-Leh_func_begin17      ##   Call between Leh_func_begin17 and Ltmp282
	.long	Lset164
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
Lset165 = Ltmp282-Leh_func_begin17      ## >> Call Site 2 <<
	.long	Lset165
Lset166 = Ltmp283-Ltmp282               ##   Call between Ltmp282 and Ltmp283
	.long	Lset166
Lset167 = Ltmp284-Leh_func_begin17      ##     jumps to Ltmp284
	.long	Lset167
	.byte	0                       ##   __int128&& action: cleanup
Lset168 = Ltmp283-Leh_func_begin17      ## >> Call Site 3 <<
	.long	Lset168
Lset169 = Leh_func_end17-Ltmp283        ##   Call between Ltmp283 and Leh_func_end17
	.long	Lset169
	.long	0                       ##     has no landing pad
	.byte	0                       ##   __int128&& action: cleanup
	.align	2

	.section	__DATA,__const
	.globl	vtable for MyExceptionB     ## @_ZTV12MyExceptionB
	.align	4
vtable for MyExceptionB:
	.quad	0
	.quad	typeinfo for MyExceptionB
	.quad	MyExceptionB::~MyExceptionB()
	.quad	MyExceptionB::~MyExceptionB()
	.quad	MyExceptionB::what() const

	.section	__TEXT,__cstring,cstring_literals
L_.str:                                 ## @.str
	.asciz	"MyExceptionB("

L_.str1:                                ## @.str1
	.asciz	")"

	.section	__TEXT,__const
	.globl	typeinfo name for MyExceptionB     ## @_ZTS12MyExceptionB
typeinfo name for MyExceptionB:
	.asciz	"MyExceptionB"

	.section	__DATA,__const
	.globl	typeinfo for MyExceptionB     ## @_ZTI12MyExceptionB
	.align	4
typeinfo for MyExceptionB:
	.quad	vtable for __cxxabiv1::__si_class_type_info+16
	.quad	typeinfo name for MyExceptionB
	.quad	typeinfo for std::exception

	.section	__TEXT,__cstring,cstring_literals
L_.str2:                                ## @.str2
	.asciz	"Foo"

L_.str3:                                ## @.str3
	.asciz	"Got exception:"

L_.str4:                                ## @.str4
	.asciz	" rethrowing..."

L_.str5:                                ## @.str5
	.asciz	"Baz"

L_.str6:                                ## @.str6
	.asciz	" throwing another..."

L_.str7:                                ## @.str7
	.asciz	"Bar"

L_.str8:                                ## @.str8
	.asciz	"Main got exception: "

	.section	__TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support

.subsections_via_symbols
; ModuleID = 'rethrow.cpp'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.10.0"

%"class.std::__1::basic_ostream" = type { i32 (...)**, %"class.std::__1::basic_ios" }
%"class.std::__1::basic_ios" = type { %"class.std::__1::ios_base", %"class.std::__1::basic_ostream"*, i32 }
%"class.std::__1::ios_base" = type { i32 (...)**, i32, i64, i64, i32, i32, i8*, i8*, void (i32, %"class.std::__1::ios_base"*, i32)**, i32*, i64, i64, i64*, i64, i64, i8**, i64, i64 }
%"class.std::__1::locale::id" = type { %"struct.std::__1::once_flag", i32 }
%"struct.std::__1::once_flag" = type { i64 }
%class.MyExceptionB = type { %"class.std::exception", %"class.std::__1::basic_string" }
%"class.std::exception" = type { i32 (...)** }
%"class.std::__1::basic_string" = type { %"class.std::__1::__compressed_pair" }
%"class.std::__1::__compressed_pair" = type { %"class.std::__1::__libcpp_compressed_pair_imp" }
%"class.std::__1::__libcpp_compressed_pair_imp" = type { %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep" }
%"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep" = type { %union.anon }
%union.anon = type { %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__long" }
%"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__long" = type { i64, i64, i8* }
%"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short" = type { %union.anon.0, [23 x i8] }
%union.anon.0 = type { i8 }
%"class.std::__1::locale" = type { %"class.std::__1::locale::__imp"* }
%"class.std::__1::locale::__imp" = type opaque
%"class.std::__1::locale::facet" = type { %"class.std::__1::__shared_count" }
%"class.std::__1::__shared_count" = type { i32 (...)**, i64 }
%"class.std::__1::ctype" = type { %"class.std::__1::locale::facet", i32*, i8 }
%"class.std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry" = type { i8, %"class.std::__1::basic_ostream"* }
%"class.std::__1::basic_streambuf" = type { i32 (...)**, %"class.std::__1::locale", i8*, i8*, i8*, i8*, i8*, i8* }

@_ZTV12MyExceptionB = unnamed_addr constant [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*), i8* bitcast (void (%class.MyExceptionB*)* @_ZN12MyExceptionBD1Ev to i8*), i8* bitcast (void (%class.MyExceptionB*)* @_ZN12MyExceptionBD0Ev to i8*), i8* bitcast (i8* (%class.MyExceptionB*)* @_ZNK12MyExceptionB4whatEv to i8*)]
@.str = private unnamed_addr constant [14 x i8] c"MyExceptionB(\00", align 1
@.str1 = private unnamed_addr constant [2 x i8] c")\00", align 1
@_ZTVN10__cxxabiv120__si_class_type_infoE = external global i8*
@_ZTS12MyExceptionB = constant [15 x i8] c"12MyExceptionB\00"
@_ZTISt9exception = external constant i8*
@_ZTI12MyExceptionB = constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([15 x i8]* @_ZTS12MyExceptionB, i32 0, i32 0), i8* bitcast (i8** @_ZTISt9exception to i8*) }
@.str2 = private unnamed_addr constant [4 x i8] c"Foo\00", align 1
@_ZNSt3__14coutE = external global %"class.std::__1::basic_ostream"
@.str3 = private unnamed_addr constant [15 x i8] c"Got exception:\00", align 1
@.str4 = private unnamed_addr constant [15 x i8] c" rethrowing...\00", align 1
@.str5 = private unnamed_addr constant [4 x i8] c"Baz\00", align 1
@.str6 = private unnamed_addr constant [21 x i8] c" throwing another...\00", align 1
@.str7 = private unnamed_addr constant [4 x i8] c"Bar\00", align 1
@.str8 = private unnamed_addr constant [21 x i8] c"Main got exception: \00", align 1
@_ZNSt3__15ctypeIcE2idE = external global %"class.std::__1::locale::id"
@_ZTVSt9exception = external unnamed_addr constant [5 x i8*]

; Function Attrs: noinline nounwind uwtable
define void @_ZN12MyExceptionBC2ENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE(%class.MyExceptionB* %this, %"class.std::__1::basic_string"* %what) unnamed_addr #0 align 2 {
  %1 = getelementptr inbounds %class.MyExceptionB* %this, i64 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ([5 x i8*]* @_ZTV12MyExceptionB, i64 0, i64 2) to i32 (...)**), i32 (...)*** %1, align 8, !tbaa !1
  %2 = getelementptr inbounds %class.MyExceptionB* %this, i64 0, i32 1
  invoke void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_(%"class.std::__1::basic_string"* %2, %"class.std::__1::basic_string"* %what)
          to label %3 unwind label %4

; <label>:3                                       ; preds = %0
  ret void

; <label>:4                                       ; preds = %0
  %5 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          filter [0 x i8*] zeroinitializer
  %6 = getelementptr inbounds %class.MyExceptionB* %this, i64 0, i32 0
  %7 = extractvalue { i8*, i32 } %5, 0
  tail call void @_ZNSt9exceptionD2Ev(%"class.std::exception"* %6) #9
  tail call void @__cxa_call_unexpected(i8* %7) #11
  unreachable
}

declare void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_(%"class.std::__1::basic_string"*, %"class.std::__1::basic_string"*) #1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nounwind
declare void @_ZNSt9exceptionD2Ev(%"class.std::exception"*) #2

declare void @__cxa_call_unexpected(i8*)

; Function Attrs: noinline nounwind uwtable
define void @_ZN12MyExceptionBC1ENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE(%class.MyExceptionB* %this, %"class.std::__1::basic_string"* %what) unnamed_addr #0 align 2 {
  tail call void @_ZN12MyExceptionBC2ENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE(%class.MyExceptionB* %this, %"class.std::__1::basic_string"* %what) #9
  ret void
}

; Function Attrs: noinline nounwind uwtable
define void @_ZN12MyExceptionBD2Ev(%class.MyExceptionB* %this) unnamed_addr #0 align 2 {
  %1 = getelementptr inbounds %class.MyExceptionB* %this, i64 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ([5 x i8*]* @_ZTV12MyExceptionB, i64 0, i64 2) to i32 (...)**), i32 (...)*** %1, align 8, !tbaa !1
  %2 = getelementptr inbounds %class.MyExceptionB* %this, i64 0, i32 1
  tail call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %2) #9
  %3 = getelementptr inbounds %class.MyExceptionB* %this, i64 0, i32 0
  tail call void @_ZNSt9exceptionD2Ev(%"class.std::exception"* %3) #9
  ret void
}

; Function Attrs: nounwind
declare void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"*) #2

; Function Attrs: noinline nounwind uwtable
define void @_ZN12MyExceptionBD1Ev(%class.MyExceptionB* %this) unnamed_addr #0 align 2 {
  tail call void @_ZN12MyExceptionBD2Ev(%class.MyExceptionB* %this) #9
  ret void
}

; Function Attrs: noinline nounwind uwtable
define void @_ZN12MyExceptionBD0Ev(%class.MyExceptionB* %this) unnamed_addr #0 align 2 {
  tail call void @_ZN12MyExceptionBD1Ev(%class.MyExceptionB* %this) #9
  %1 = bitcast %class.MyExceptionB* %this to i8*
  tail call void @_ZdlPv(i8* %1) #12
  ret void
}

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPv(i8*) #3

; Function Attrs: noinline nounwind readonly uwtable
define i8* @_ZNK12MyExceptionB4whatEv(%class.MyExceptionB* readonly %this) unnamed_addr #4 align 2 {
  %1 = getelementptr inbounds %class.MyExceptionB* %this, i64 0, i32 1
  %2 = bitcast %"class.std::__1::basic_string"* %1 to i8*
  %3 = load i8* %2, align 1, !tbaa !4
  %4 = and i8 %3, 1
  %5 = icmp eq i8 %4, 0
  br i1 %5, label %9, label %6

; <label>:6                                       ; preds = %0
  %7 = getelementptr inbounds %class.MyExceptionB* %this, i64 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2
  %8 = load i8** %7, align 8, !tbaa !6
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5c_strEv.exit

; <label>:9                                       ; preds = %0
  %10 = bitcast %"class.std::__1::basic_string"* %1 to %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short"*
  %11 = getelementptr inbounds %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short"* %10, i64 0, i32 1, i64 0
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5c_strEv.exit

_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5c_strEv.exit: ; preds = %6, %9
  %12 = phi i8* [ %8, %6 ], [ %11, %9 ]
  ret i8* %12
}

; Function Attrs: noinline uwtable
define void @_ZNK12MyExceptionB9as_stringEv(%"class.std::__1::basic_string"* noalias nocapture sret %agg.result, %class.MyExceptionB* %this) #5 align 2 {
  %1 = alloca %"class.std::__1::basic_string", align 8
  %2 = getelementptr inbounds %class.MyExceptionB* %this, i64 0, i32 1
  call void @_ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EEPKS6_RKS9_(%"class.std::__1::basic_string"* sret %1, i8* getelementptr inbounds ([14 x i8]* @.str, i64 0, i64 0), %"class.std::__1::basic_string"* %2)
  %3 = invoke %"class.std::__1::basic_string"* @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc(%"class.std::__1::basic_string"* %1, i8* getelementptr inbounds ([2 x i8]* @.str1, i64 0, i64 0))
          to label %4 unwind label %7

; <label>:4                                       ; preds = %0
  %5 = bitcast %"class.std::__1::basic_string"* %agg.result to i8*
  %6 = bitcast %"class.std::__1::basic_string"* %3 to i8*
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 8, i1 false) #9
  call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 24, i32 8, i1 false) #9
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %1) #9
  ret void

; <label>:7                                       ; preds = %0
  %8 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %1) #9
  resume { i8*, i32 } %8
}

; Function Attrs: noinline uwtable
define linkonce_odr void @_ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EEPKS6_RKS9_(%"class.std::__1::basic_string"* noalias sret %agg.result, i8* %__lhs, %"class.std::__1::basic_string"* %__rhs) #5 {
  %this2.i.i.i = bitcast %"class.std::__1::basic_string"* %agg.result to i8*
  tail call void @llvm.memset.p0i8.i64(i8* %this2.i.i.i, i8 0, i64 24, i32 8, i1 false) #9
  %1 = tail call i64 @strlen(i8* %__lhs) #9
  %2 = bitcast %"class.std::__1::basic_string"* %__rhs to i8*
  %3 = load i8* %2, align 1, !tbaa !4
  %4 = and i8 %3, 1
  %5 = icmp eq i8 %4, 0
  br i1 %5, label %9, label %6

; <label>:6                                       ; preds = %0
  %7 = getelementptr inbounds %"class.std::__1::basic_string"* %__rhs, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1
  %8 = load i64* %7, align 8, !tbaa !10
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4sizeEv.exit

; <label>:9                                       ; preds = %0
  %10 = zext i8 %3 to i64
  %11 = lshr i64 %10, 1
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4sizeEv.exit

_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4sizeEv.exit: ; preds = %6, %9
  %12 = phi i64 [ %8, %6 ], [ %11, %9 ]
  %13 = add i64 %12, %1
  invoke void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcmm(%"class.std::__1::basic_string"* %agg.result, i8* %__lhs, i64 %1, i64 %13)
          to label %14 unwind label %26

; <label>:14                                      ; preds = %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4sizeEv.exit
  %15 = load i8* %2, align 1, !tbaa !4
  %16 = and i8 %15, 1
  %17 = icmp eq i8 %16, 0
  br i1 %17, label %21, label %18

; <label>:18                                      ; preds = %14
  %19 = getelementptr inbounds %"class.std::__1::basic_string"* %__rhs, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2
  %20 = load i8** %19, align 8, !tbaa !6
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit

; <label>:21                                      ; preds = %14
  %22 = bitcast %"class.std::__1::basic_string"* %__rhs to %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short"*
  %23 = getelementptr inbounds %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short"* %22, i64 0, i32 1, i64 0
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit

_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit: ; preds = %18, %21
  %24 = phi i8* [ %20, %18 ], [ %23, %21 ]
  %25 = invoke %"class.std::__1::basic_string"* @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKcm(%"class.std::__1::basic_string"* %agg.result, i8* %24, i64 %12)
          to label %28 unwind label %26

; <label>:26                                      ; preds = %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit, %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4sizeEv.exit
  %27 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
  tail call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %agg.result) #9
  resume { i8*, i32 } %27

; <label>:28                                      ; preds = %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit
  ret void
}

; Function Attrs: noinline noreturn uwtable
define void @_Z18throw_MyExceptionBNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE(%"class.std::__1::basic_string"* %message) #6 {
  %1 = alloca %"class.std::__1::basic_string", align 8
  %2 = call i8* @__cxa_allocate_exception(i64 32) #9
  invoke void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_(%"class.std::__1::basic_string"* %1, %"class.std::__1::basic_string"* %message)
          to label %3 unwind label %9

; <label>:3                                       ; preds = %0
  %4 = bitcast i8* %2 to %class.MyExceptionB*
  call void @_ZN12MyExceptionBC1ENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE(%class.MyExceptionB* %4, %"class.std::__1::basic_string"* %1) #9
  invoke void @__cxa_throw(i8* %2, i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*), i8* bitcast (void (%class.MyExceptionB*)* @_ZN12MyExceptionBD1Ev to i8*)) #13
          to label %19 unwind label %5

; <label>:5                                       ; preds = %3
  %6 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
          filter [1 x i8*] [i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)]
  %7 = extractvalue { i8*, i32 } %6, 0
  %8 = extractvalue { i8*, i32 } %6, 1
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %1) #9
  br label %13

; <label>:9                                       ; preds = %0
  %10 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
          filter [1 x i8*] [i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)]
  %11 = extractvalue { i8*, i32 } %10, 0
  %12 = extractvalue { i8*, i32 } %10, 1
  call void @__cxa_free_exception(i8* %2) #9
  br label %13

; <label>:13                                      ; preds = %5, %9
  %.015 = phi i32 [ %8, %5 ], [ %12, %9 ]
  %.023 = phi i8* [ %7, %5 ], [ %11, %9 ]
  %14 = icmp slt i32 %.015, 0
  br i1 %14, label %15, label %16

; <label>:15                                      ; preds = %13
  call void @__cxa_call_unexpected(i8* %.023) #13
  unreachable

; <label>:16                                      ; preds = %13
  %17 = insertvalue { i8*, i32 } undef, i8* %.023, 0
  %18 = insertvalue { i8*, i32 } %17, i32 %.015, 1
  resume { i8*, i32 } %18

; <label>:19                                      ; preds = %3
  unreachable
}

declare i8* @__cxa_allocate_exception(i64)

declare void @__cxa_throw(i8*, i8*, i8*)

declare void @__cxa_free_exception(i8*)

; Function Attrs: noinline uwtable
define void @_Z17catch_and_rethrowv() #5 {
  %1 = alloca %"class.std::__1::locale", align 8
  %2 = alloca %"class.std::__1::basic_string", align 8
  %3 = alloca %"class.std::__1::basic_string", align 8
  invoke void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm(%"class.std::__1::basic_string"* %2, i8* getelementptr inbounds ([4 x i8]* @.str2, i64 0, i64 0), i64 3)
          to label %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit unwind label %5

_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit: ; preds = %0
  invoke void @_Z18throw_MyExceptionBNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE(%"class.std::__1::basic_string"* %2)
          to label %4 unwind label %9

; <label>:4                                       ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %2) #9
  ret void

; <label>:5                                       ; preds = %0
  %6 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)
          filter [0 x i8*] zeroinitializer
  %7 = extractvalue { i8*, i32 } %6, 0
  %8 = extractvalue { i8*, i32 } %6, 1
  br label %13

; <label>:9                                       ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit
  %10 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)
          filter [0 x i8*] zeroinitializer
  %11 = extractvalue { i8*, i32 } %10, 0
  %12 = extractvalue { i8*, i32 } %10, 1
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %2) #9
  br label %13

; <label>:13                                      ; preds = %9, %5
  %.01 = phi i32 [ %12, %9 ], [ %8, %5 ]
  %.0 = phi i8* [ %11, %9 ], [ %7, %5 ]
  %14 = call i32 @llvm.eh.typeid.for(i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)) #9
  %15 = icmp eq i32 %.01, %14
  br i1 %15, label %16, label %56

; <label>:16                                      ; preds = %13
  %17 = call i8* @__cxa_begin_catch(i8* %.0) #9
  %18 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(%"class.std::__1::basic_ostream"* @_ZNSt3__14coutE, i8* getelementptr inbounds ([15 x i8]* @.str3, i64 0, i64 0))
          to label %19 unwind label %47

; <label>:19                                      ; preds = %16
  %20 = bitcast i8* %17 to %class.MyExceptionB*
  invoke void @_ZNK12MyExceptionB9as_stringEv(%"class.std::__1::basic_string"* sret %3, %class.MyExceptionB* %20)
          to label %21 unwind label %47

; <label>:21                                      ; preds = %19
  %22 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__1lsIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS_13basic_ostreamIT_T0_EES9_RKNS_12basic_stringIS6_S7_T1_EE(%"class.std::__1::basic_ostream"* %18, %"class.std::__1::basic_string"* %3)
          to label %23 unwind label %51

; <label>:23                                      ; preds = %21
  %24 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(%"class.std::__1::basic_ostream"* %22, i8* getelementptr inbounds ([15 x i8]* @.str4, i64 0, i64 0))
          to label %25 unwind label %51

; <label>:25                                      ; preds = %23
  %26 = bitcast %"class.std::__1::basic_ostream"* %24 to i8**
  %27 = load i8** %26, align 8, !tbaa !1
  %28 = getelementptr i8* %27, i64 -24
  %29 = bitcast i8* %28 to i64*
  %30 = load i64* %29, align 8
  %31 = bitcast %"class.std::__1::basic_ostream"* %24 to i8*
  %32 = getelementptr inbounds i8* %31, i64 %30
  %33 = bitcast %"class.std::__1::locale"* %1 to i8*
  call void @llvm.lifetime.start(i64 8, i8* %33)
  %34 = bitcast i8* %32 to %"class.std::__1::ios_base"*
  invoke void @_ZNKSt3__18ios_base6getlocEv(%"class.std::__1::locale"* sret %1, %"class.std::__1::ios_base"* %34)
          to label %.noexc6 unwind label %51

.noexc6:                                          ; preds = %25
  %35 = invoke %"class.std::__1::locale::facet"* @_ZNKSt3__16locale9use_facetERNS0_2idE(%"class.std::__1::locale"* %1, %"class.std::__1::locale::id"* @_ZNSt3__15ctypeIcE2idE)
          to label %36 unwind label %43

; <label>:36                                      ; preds = %.noexc6
  %37 = bitcast %"class.std::__1::locale::facet"* %35 to %"class.std::__1::ctype"*
  %38 = bitcast %"class.std::__1::locale::facet"* %35 to i8 (%"class.std::__1::ctype"*, i8)***
  %39 = load i8 (%"class.std::__1::ctype"*, i8)*** %38, align 8, !tbaa !1
  %40 = getelementptr inbounds i8 (%"class.std::__1::ctype"*, i8)** %39, i64 7
  %41 = load i8 (%"class.std::__1::ctype"*, i8)** %40, align 8
  %42 = invoke signext i8 %41(%"class.std::__1::ctype"* %37, i8 signext 10)
          to label %.noexc unwind label %43

; <label>:43                                      ; preds = %36, %.noexc6
  %44 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
          filter [1 x i8*] [i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)]
  call void @_ZNSt3__16localeD1Ev(%"class.std::__1::locale"* %1) #9
  br label %.body

.noexc:                                           ; preds = %36
  call void @_ZNSt3__16localeD1Ev(%"class.std::__1::locale"* %1) #9
  call void @llvm.lifetime.end(i64 8, i8* %33)
  %45 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc(%"class.std::__1::basic_ostream"* %24, i8 signext %42)
          to label %.noexc4 unwind label %51

.noexc4:                                          ; preds = %.noexc
  %46 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(%"class.std::__1::basic_ostream"* %24)
          to label %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit unwind label %51

_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit: ; preds = %.noexc4
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %3) #9
  invoke void @__cxa_rethrow() #13
          to label %65 unwind label %47

; <label>:47                                      ; preds = %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit, %19, %16
  %48 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
          filter [1 x i8*] [i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)]
  %49 = extractvalue { i8*, i32 } %48, 0
  %50 = extractvalue { i8*, i32 } %48, 1
  br label %55

; <label>:51                                      ; preds = %25, %.noexc4, %.noexc, %23, %21
  %52 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
          filter [1 x i8*] [i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)]
  br label %.body

.body:                                            ; preds = %43, %51
  %eh.lpad-body = phi { i8*, i32 } [ %52, %51 ], [ %44, %43 ]
  %53 = extractvalue { i8*, i32 } %eh.lpad-body, 0
  %54 = extractvalue { i8*, i32 } %eh.lpad-body, 1
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %3) #9
  br label %55

; <label>:55                                      ; preds = %.body, %47
  %.12 = phi i32 [ %50, %47 ], [ %54, %.body ]
  %.1 = phi i8* [ %49, %47 ], [ %53, %.body ]
  invoke void @__cxa_end_catch()
          to label %56 unwind label %62

; <label>:56                                      ; preds = %55, %13
  %.23 = phi i32 [ %.12, %55 ], [ %.01, %13 ]
  %.2 = phi i8* [ %.1, %55 ], [ %.0, %13 ]
  %57 = icmp slt i32 %.23, 0
  br i1 %57, label %58, label %59

; <label>:58                                      ; preds = %56
  call void @__cxa_call_unexpected(i8* %.2) #13
  unreachable

; <label>:59                                      ; preds = %56
  %60 = insertvalue { i8*, i32 } undef, i8* %.2, 0
  %61 = insertvalue { i8*, i32 } %60, i32 %.23, 1
  resume { i8*, i32 } %61

; <label>:62                                      ; preds = %55
  %63 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* null
  %64 = extractvalue { i8*, i32 } %63, 0
  call void @__clang_call_terminate(i8* %64) #11
  unreachable

; <label>:65                                      ; preds = %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit
  unreachable
}

; Function Attrs: nounwind readnone
declare i32 @llvm.eh.typeid.for(i8*) #7

declare i8* @__cxa_begin_catch(i8*)

; Function Attrs: noinline uwtable
define linkonce_odr %"class.std::__1::basic_ostream"* @_ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(%"class.std::__1::basic_ostream"* %__os, i8* %__str) #5 {
  %1 = tail call i64 @strlen(i8* %__str) #9
  %2 = tail call %"class.std::__1::basic_ostream"* @_ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(%"class.std::__1::basic_ostream"* %__os, i8* %__str, i64 %1)
  ret %"class.std::__1::basic_ostream"* %2
}

; Function Attrs: noinline uwtable
define linkonce_odr %"class.std::__1::basic_ostream"* @_ZNSt3__1lsIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS_13basic_ostreamIT_T0_EES9_RKNS_12basic_stringIS6_S7_T1_EE(%"class.std::__1::basic_ostream"* %__os, %"class.std::__1::basic_string"* %__str) #5 {
  %1 = bitcast %"class.std::__1::basic_string"* %__str to i8*
  %2 = load i8* %1, align 1, !tbaa !4
  %3 = and i8 %2, 1
  %4 = icmp eq i8 %3, 0
  br i1 %4, label %8, label %5

; <label>:5                                       ; preds = %0
  %6 = getelementptr inbounds %"class.std::__1::basic_string"* %__str, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2
  %7 = load i8** %6, align 8, !tbaa !6
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit

; <label>:8                                       ; preds = %0
  %9 = bitcast %"class.std::__1::basic_string"* %__str to %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short"*
  %10 = getelementptr inbounds %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short"* %9, i64 0, i32 1, i64 0
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit

_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit: ; preds = %5, %8
  %11 = phi i8* [ %7, %5 ], [ %10, %8 ]
  %12 = load i8* %1, align 1, !tbaa !4
  %13 = and i8 %12, 1
  %14 = icmp eq i8 %13, 0
  br i1 %14, label %18, label %15

; <label>:15                                      ; preds = %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit
  %16 = getelementptr inbounds %"class.std::__1::basic_string"* %__str, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1
  %17 = load i64* %16, align 8, !tbaa !10
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4sizeEv.exit

; <label>:18                                      ; preds = %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit
  %19 = zext i8 %12 to i64
  %20 = lshr i64 %19, 1
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4sizeEv.exit

_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4sizeEv.exit: ; preds = %15, %18
  %21 = phi i64 [ %17, %15 ], [ %20, %18 ]
  %22 = tail call %"class.std::__1::basic_ostream"* @_ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(%"class.std::__1::basic_ostream"* %__os, i8* %11, i64 %21)
  ret %"class.std::__1::basic_ostream"* %22
}

declare void @__cxa_rethrow()

declare void @__cxa_end_catch()

; Function Attrs: noinline noreturn nounwind
define linkonce_odr hidden void @__clang_call_terminate(i8*) #8 {
  %2 = tail call i8* @__cxa_begin_catch(i8* %0) #9
  tail call void @_ZSt9terminatev() #11
  unreachable
}

declare void @_ZSt9terminatev()

; Function Attrs: noinline uwtable
define void @_Z23catch_and_throw_anotherv() #5 {
  %1 = alloca %"class.std::__1::locale", align 8
  %2 = alloca %"class.std::__1::basic_string", align 8
  %3 = alloca %"class.std::__1::basic_string", align 8
  %4 = alloca %"class.std::__1::basic_string", align 8
  invoke void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm(%"class.std::__1::basic_string"* %2, i8* getelementptr inbounds ([4 x i8]* @.str5, i64 0, i64 0), i64 3)
          to label %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit unwind label %6

_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit: ; preds = %0
  invoke void @_Z18throw_MyExceptionBNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE(%"class.std::__1::basic_string"* %2)
          to label %5 unwind label %10

; <label>:5                                       ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %2) #9
  ret void

; <label>:6                                       ; preds = %0
  %7 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)
          filter [0 x i8*] zeroinitializer
  %8 = extractvalue { i8*, i32 } %7, 0
  %9 = extractvalue { i8*, i32 } %7, 1
  br label %14

; <label>:10                                      ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit
  %11 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)
          filter [0 x i8*] zeroinitializer
  %12 = extractvalue { i8*, i32 } %11, 0
  %13 = extractvalue { i8*, i32 } %11, 1
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %2) #9
  br label %14

; <label>:14                                      ; preds = %10, %6
  %.02 = phi i32 [ %13, %10 ], [ %9, %6 ]
  %.01 = phi i8* [ %12, %10 ], [ %8, %6 ]
  %15 = call i32 @llvm.eh.typeid.for(i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)) #9
  %16 = icmp eq i32 %.02, %15
  br i1 %16, label %17, label %68

; <label>:17                                      ; preds = %14
  %18 = call i8* @__cxa_begin_catch(i8* %.01) #9
  %19 = bitcast i8* %18 to %class.MyExceptionB*
  %20 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(%"class.std::__1::basic_ostream"* @_ZNSt3__14coutE, i8* getelementptr inbounds ([15 x i8]* @.str3, i64 0, i64 0))
          to label %21 unwind label %51

; <label>:21                                      ; preds = %17
  invoke void @_ZNK12MyExceptionB9as_stringEv(%"class.std::__1::basic_string"* sret %3, %class.MyExceptionB* %19)
          to label %22 unwind label %51

; <label>:22                                      ; preds = %21
  %23 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__1lsIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS_13basic_ostreamIT_T0_EES9_RKNS_12basic_stringIS6_S7_T1_EE(%"class.std::__1::basic_ostream"* %20, %"class.std::__1::basic_string"* %3)
          to label %24 unwind label %55

; <label>:24                                      ; preds = %22
  %25 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(%"class.std::__1::basic_ostream"* %23, i8* getelementptr inbounds ([21 x i8]* @.str6, i64 0, i64 0))
          to label %26 unwind label %55

; <label>:26                                      ; preds = %24
  %27 = bitcast %"class.std::__1::basic_ostream"* %25 to i8**
  %28 = load i8** %27, align 8, !tbaa !1
  %29 = getelementptr i8* %28, i64 -24
  %30 = bitcast i8* %29 to i64*
  %31 = load i64* %30, align 8
  %32 = bitcast %"class.std::__1::basic_ostream"* %25 to i8*
  %33 = getelementptr inbounds i8* %32, i64 %31
  %34 = bitcast %"class.std::__1::locale"* %1 to i8*
  call void @llvm.lifetime.start(i64 8, i8* %34)
  %35 = bitcast i8* %33 to %"class.std::__1::ios_base"*
  invoke void @_ZNKSt3__18ios_base6getlocEv(%"class.std::__1::locale"* sret %1, %"class.std::__1::ios_base"* %35)
          to label %.noexc unwind label %55

.noexc:                                           ; preds = %26
  %36 = invoke %"class.std::__1::locale::facet"* @_ZNKSt3__16locale9use_facetERNS0_2idE(%"class.std::__1::locale"* %1, %"class.std::__1::locale::id"* @_ZNSt3__15ctypeIcE2idE)
          to label %37 unwind label %44

; <label>:37                                      ; preds = %.noexc
  %38 = bitcast %"class.std::__1::locale::facet"* %36 to %"class.std::__1::ctype"*
  %39 = bitcast %"class.std::__1::locale::facet"* %36 to i8 (%"class.std::__1::ctype"*, i8)***
  %40 = load i8 (%"class.std::__1::ctype"*, i8)*** %39, align 8, !tbaa !1
  %41 = getelementptr inbounds i8 (%"class.std::__1::ctype"*, i8)** %40, i64 7
  %42 = load i8 (%"class.std::__1::ctype"*, i8)** %41, align 8
  %43 = invoke signext i8 %42(%"class.std::__1::ctype"* %38, i8 signext 10)
          to label %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i unwind label %44

; <label>:44                                      ; preds = %37, %.noexc
  %45 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
          filter [1 x i8*] [i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)]
  call void @_ZNSt3__16localeD1Ev(%"class.std::__1::locale"* %1) #9
  br label %.body

_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i: ; preds = %37
  call void @_ZNSt3__16localeD1Ev(%"class.std::__1::locale"* %1) #9
  call void @llvm.lifetime.end(i64 8, i8* %34)
  %46 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc(%"class.std::__1::basic_ostream"* %25, i8 signext %43)
          to label %.noexc6 unwind label %55

.noexc6:                                          ; preds = %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i
  %47 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(%"class.std::__1::basic_ostream"* %25)
          to label %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit unwind label %55

_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit: ; preds = %.noexc6
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %3) #9
  %48 = call i8* @__cxa_allocate_exception(i64 32) #9
  invoke void @_ZNK12MyExceptionB9as_stringEv(%"class.std::__1::basic_string"* sret %4, %class.MyExceptionB* %19)
          to label %49 unwind label %63

; <label>:49                                      ; preds = %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit
  %50 = bitcast i8* %48 to %class.MyExceptionB*
  call void @_ZN12MyExceptionBC1ENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE(%class.MyExceptionB* %50, %"class.std::__1::basic_string"* %4) #9
  invoke void @__cxa_throw(i8* %48, i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*), i8* bitcast (void (%class.MyExceptionB*)* @_ZN12MyExceptionBD1Ev to i8*)) #13
          to label %77 unwind label %59

; <label>:51                                      ; preds = %21, %17
  %52 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
          filter [1 x i8*] [i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)]
  %53 = extractvalue { i8*, i32 } %52, 0
  %54 = extractvalue { i8*, i32 } %52, 1
  br label %67

; <label>:55                                      ; preds = %.noexc6, %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i, %26, %24, %22
  %56 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
          filter [1 x i8*] [i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)]
  br label %.body

.body:                                            ; preds = %44, %55
  %eh.lpad-body = phi { i8*, i32 } [ %56, %55 ], [ %45, %44 ]
  %57 = extractvalue { i8*, i32 } %eh.lpad-body, 0
  %58 = extractvalue { i8*, i32 } %eh.lpad-body, 1
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %3) #9
  br label %67

; <label>:59                                      ; preds = %49
  %60 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
          filter [1 x i8*] [i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)]
  %61 = extractvalue { i8*, i32 } %60, 0
  %62 = extractvalue { i8*, i32 } %60, 1
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %4) #9
  br label %67

; <label>:63                                      ; preds = %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit
  %64 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
          filter [1 x i8*] [i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)]
  %65 = extractvalue { i8*, i32 } %64, 0
  %66 = extractvalue { i8*, i32 } %64, 1
  call void @__cxa_free_exception(i8* %48) #9
  br label %67

; <label>:67                                      ; preds = %59, %63, %.body, %51
  %.24 = phi i32 [ %66, %63 ], [ %62, %59 ], [ %58, %.body ], [ %54, %51 ]
  %.2 = phi i8* [ %65, %63 ], [ %61, %59 ], [ %57, %.body ], [ %53, %51 ]
  invoke void @__cxa_end_catch()
          to label %68 unwind label %74

; <label>:68                                      ; preds = %67, %14
  %.35 = phi i32 [ %.24, %67 ], [ %.02, %14 ]
  %.3 = phi i8* [ %.2, %67 ], [ %.01, %14 ]
  %69 = icmp slt i32 %.35, 0
  br i1 %69, label %70, label %71

; <label>:70                                      ; preds = %68
  call void @__cxa_call_unexpected(i8* %.3) #13
  unreachable

; <label>:71                                      ; preds = %68
  %72 = insertvalue { i8*, i32 } undef, i8* %.3, 0
  %73 = insertvalue { i8*, i32 } %72, i32 %.35, 1
  resume { i8*, i32 } %73

; <label>:74                                      ; preds = %67
  %75 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* null
  %76 = extractvalue { i8*, i32 } %75, 0
  call void @__clang_call_terminate(i8* %76) #11
  unreachable

; <label>:77                                      ; preds = %49
  unreachable
}

; Function Attrs: noinline nounwind uwtable
define void @_Z12doesnt_throwv() #0 {
  %1 = alloca %"class.std::__1::basic_string", align 8
  invoke void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm(%"class.std::__1::basic_string"* %1, i8* getelementptr inbounds ([4 x i8]* @.str7, i64 0, i64 0), i64 3)
          to label %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit unwind label %3

_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit: ; preds = %0
  invoke void @_Z18throw_MyExceptionBNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE(%"class.std::__1::basic_string"* %1)
          to label %2 unwind label %6

; <label>:2                                       ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %1) #9
  ret void

; <label>:3                                       ; preds = %0
  %4 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          filter [0 x i8*] zeroinitializer
  %5 = extractvalue { i8*, i32 } %4, 0
  br label %9

; <label>:6                                       ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKc.exit
  %7 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          filter [0 x i8*] zeroinitializer
  %8 = extractvalue { i8*, i32 } %7, 0
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %1) #9
  br label %9

; <label>:9                                       ; preds = %6, %3
  %.0 = phi i8* [ %8, %6 ], [ %5, %3 ]
  call void @__cxa_call_unexpected(i8* %.0) #11
  unreachable
}

; Function Attrs: noinline uwtable
define void @_Z9doRethrowv() #5 {
  %1 = alloca %"class.std::__1::locale", align 8
  %2 = alloca %"class.std::__1::locale", align 8
  %3 = alloca %"class.std::__1::basic_string", align 8
  %4 = alloca %"class.std::__1::basic_string", align 8
  invoke void @_Z17catch_and_rethrowv()
          to label %40 unwind label %5

; <label>:5                                       ; preds = %0
  %6 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)
  %7 = extractvalue { i8*, i32 } %6, 0
  %8 = extractvalue { i8*, i32 } %6, 1
  %9 = call i32 @llvm.eh.typeid.for(i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)) #9
  %10 = icmp eq i32 %8, %9
  br i1 %10, label %11, label %95

; <label>:11                                      ; preds = %5
  %12 = call i8* @__cxa_begin_catch(i8* %7) #9
  %13 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(%"class.std::__1::basic_ostream"* @_ZNSt3__14coutE, i8* getelementptr inbounds ([21 x i8]* @.str8, i64 0, i64 0))
          to label %14 unwind label %41

; <label>:14                                      ; preds = %11
  %15 = bitcast i8* %12 to %class.MyExceptionB*
  invoke void @_ZNK12MyExceptionB9as_stringEv(%"class.std::__1::basic_string"* sret %3, %class.MyExceptionB* %15)
          to label %16 unwind label %41

; <label>:16                                      ; preds = %14
  %17 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__1lsIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS_13basic_ostreamIT_T0_EES9_RKNS_12basic_stringIS6_S7_T1_EE(%"class.std::__1::basic_ostream"* %13, %"class.std::__1::basic_string"* %3)
          to label %18 unwind label %45

; <label>:18                                      ; preds = %16
  %19 = bitcast %"class.std::__1::basic_ostream"* %17 to i8**
  %20 = load i8** %19, align 8, !tbaa !1
  %21 = getelementptr i8* %20, i64 -24
  %22 = bitcast i8* %21 to i64*
  %23 = load i64* %22, align 8
  %24 = bitcast %"class.std::__1::basic_ostream"* %17 to i8*
  %25 = getelementptr inbounds i8* %24, i64 %23
  %26 = bitcast %"class.std::__1::locale"* %2 to i8*
  call void @llvm.lifetime.start(i64 8, i8* %26)
  %27 = bitcast i8* %25 to %"class.std::__1::ios_base"*
  invoke void @_ZNKSt3__18ios_base6getlocEv(%"class.std::__1::locale"* sret %2, %"class.std::__1::ios_base"* %27)
          to label %.noexc unwind label %45

.noexc:                                           ; preds = %18
  %28 = invoke %"class.std::__1::locale::facet"* @_ZNKSt3__16locale9use_facetERNS0_2idE(%"class.std::__1::locale"* %2, %"class.std::__1::locale::id"* @_ZNSt3__15ctypeIcE2idE)
          to label %29 unwind label %36

; <label>:29                                      ; preds = %.noexc
  %30 = bitcast %"class.std::__1::locale::facet"* %28 to %"class.std::__1::ctype"*
  %31 = bitcast %"class.std::__1::locale::facet"* %28 to i8 (%"class.std::__1::ctype"*, i8)***
  %32 = load i8 (%"class.std::__1::ctype"*, i8)*** %31, align 8, !tbaa !1
  %33 = getelementptr inbounds i8 (%"class.std::__1::ctype"*, i8)** %32, i64 7
  %34 = load i8 (%"class.std::__1::ctype"*, i8)** %33, align 8
  %35 = invoke signext i8 %34(%"class.std::__1::ctype"* %30, i8 signext 10)
          to label %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i unwind label %36

; <label>:36                                      ; preds = %29, %.noexc
  %37 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
  call void @_ZNSt3__16localeD1Ev(%"class.std::__1::locale"* %2) #9
  br label %.body

_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i: ; preds = %29
  call void @_ZNSt3__16localeD1Ev(%"class.std::__1::locale"* %2) #9
  call void @llvm.lifetime.end(i64 8, i8* %26)
  %38 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc(%"class.std::__1::basic_ostream"* %17, i8 signext %35)
          to label %.noexc5 unwind label %45

.noexc5:                                          ; preds = %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i
  %39 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(%"class.std::__1::basic_ostream"* %17)
          to label %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit unwind label %45

_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit: ; preds = %.noexc5
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %3) #9
  call void @__cxa_end_catch()
  br label %40

; <label>:40                                      ; preds = %0, %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit
  invoke void @_Z23catch_and_throw_anotherv()
          to label %85 unwind label %50

; <label>:41                                      ; preds = %14, %11
  %42 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
  %43 = extractvalue { i8*, i32 } %42, 0
  %44 = extractvalue { i8*, i32 } %42, 1
  br label %49

; <label>:45                                      ; preds = %.noexc5, %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i, %18, %16
  %46 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
  br label %.body

.body:                                            ; preds = %36, %45
  %eh.lpad-body = phi { i8*, i32 } [ %46, %45 ], [ %37, %36 ]
  %47 = extractvalue { i8*, i32 } %eh.lpad-body, 0
  %48 = extractvalue { i8*, i32 } %eh.lpad-body, 1
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %3) #9
  br label %49

; <label>:49                                      ; preds = %.body, %41
  %.02 = phi i32 [ %48, %.body ], [ %44, %41 ]
  %.0 = phi i8* [ %47, %.body ], [ %43, %41 ]
  invoke void @__cxa_end_catch()
          to label %95 unwind label %98

; <label>:50                                      ; preds = %40
  %51 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)
  %52 = extractvalue { i8*, i32 } %51, 0
  %53 = extractvalue { i8*, i32 } %51, 1
  %54 = call i32 @llvm.eh.typeid.for(i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12MyExceptionB to i8*)) #9
  %55 = icmp eq i32 %53, %54
  br i1 %55, label %56, label %95

; <label>:56                                      ; preds = %50
  %57 = call i8* @__cxa_begin_catch(i8* %52) #9
  %58 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(%"class.std::__1::basic_ostream"* @_ZNSt3__14coutE, i8* getelementptr inbounds ([21 x i8]* @.str8, i64 0, i64 0))
          to label %59 unwind label %86

; <label>:59                                      ; preds = %56
  %60 = bitcast i8* %57 to %class.MyExceptionB*
  invoke void @_ZNK12MyExceptionB9as_stringEv(%"class.std::__1::basic_string"* sret %4, %class.MyExceptionB* %60)
          to label %61 unwind label %86

; <label>:61                                      ; preds = %59
  %62 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__1lsIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS_13basic_ostreamIT_T0_EES9_RKNS_12basic_stringIS6_S7_T1_EE(%"class.std::__1::basic_ostream"* %58, %"class.std::__1::basic_string"* %4)
          to label %63 unwind label %90

; <label>:63                                      ; preds = %61
  %64 = bitcast %"class.std::__1::basic_ostream"* %62 to i8**
  %65 = load i8** %64, align 8, !tbaa !1
  %66 = getelementptr i8* %65, i64 -24
  %67 = bitcast i8* %66 to i64*
  %68 = load i64* %67, align 8
  %69 = bitcast %"class.std::__1::basic_ostream"* %62 to i8*
  %70 = getelementptr inbounds i8* %69, i64 %68
  %71 = bitcast %"class.std::__1::locale"* %1 to i8*
  call void @llvm.lifetime.start(i64 8, i8* %71)
  %72 = bitcast i8* %70 to %"class.std::__1::ios_base"*
  invoke void @_ZNKSt3__18ios_base6getlocEv(%"class.std::__1::locale"* sret %1, %"class.std::__1::ios_base"* %72)
          to label %.noexc10 unwind label %90

.noexc10:                                         ; preds = %63
  %73 = invoke %"class.std::__1::locale::facet"* @_ZNKSt3__16locale9use_facetERNS0_2idE(%"class.std::__1::locale"* %1, %"class.std::__1::locale::id"* @_ZNSt3__15ctypeIcE2idE)
          to label %74 unwind label %81

; <label>:74                                      ; preds = %.noexc10
  %75 = bitcast %"class.std::__1::locale::facet"* %73 to %"class.std::__1::ctype"*
  %76 = bitcast %"class.std::__1::locale::facet"* %73 to i8 (%"class.std::__1::ctype"*, i8)***
  %77 = load i8 (%"class.std::__1::ctype"*, i8)*** %76, align 8, !tbaa !1
  %78 = getelementptr inbounds i8 (%"class.std::__1::ctype"*, i8)** %77, i64 7
  %79 = load i8 (%"class.std::__1::ctype"*, i8)** %78, align 8
  %80 = invoke signext i8 %79(%"class.std::__1::ctype"* %75, i8 signext 10)
          to label %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i9 unwind label %81

; <label>:81                                      ; preds = %74, %.noexc10
  %82 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
  call void @_ZNSt3__16localeD1Ev(%"class.std::__1::locale"* %1) #9
  br label %.body11

_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i9: ; preds = %74
  call void @_ZNSt3__16localeD1Ev(%"class.std::__1::locale"* %1) #9
  call void @llvm.lifetime.end(i64 8, i8* %71)
  %83 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc(%"class.std::__1::basic_ostream"* %62, i8 signext %80)
          to label %.noexc13 unwind label %90

.noexc13:                                         ; preds = %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i9
  %84 = invoke %"class.std::__1::basic_ostream"* @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(%"class.std::__1::basic_ostream"* %62)
          to label %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit8 unwind label %90

_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit8: ; preds = %.noexc13
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %4) #9
  call void @__cxa_end_catch()
  br label %85

; <label>:85                                      ; preds = %40, %_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E.exit8
  call void @_Z12doesnt_throwv() #9
  ret void

; <label>:86                                      ; preds = %59, %56
  %87 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
  %88 = extractvalue { i8*, i32 } %87, 0
  %89 = extractvalue { i8*, i32 } %87, 1
  br label %94

; <label>:90                                      ; preds = %.noexc13, %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i9, %63, %61
  %91 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
  br label %.body11

.body11:                                          ; preds = %81, %90
  %eh.lpad-body12 = phi { i8*, i32 } [ %91, %90 ], [ %82, %81 ]
  %92 = extractvalue { i8*, i32 } %eh.lpad-body12, 0
  %93 = extractvalue { i8*, i32 } %eh.lpad-body12, 1
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %4) #9
  br label %94

; <label>:94                                      ; preds = %.body11, %86
  %.13 = phi i32 [ %93, %.body11 ], [ %89, %86 ]
  %.1 = phi i8* [ %92, %.body11 ], [ %88, %86 ]
  invoke void @__cxa_end_catch()
          to label %95 unwind label %98

; <label>:95                                      ; preds = %94, %49, %50, %5
  %.24 = phi i32 [ %.13, %94 ], [ %53, %50 ], [ %.02, %49 ], [ %8, %5 ]
  %.2 = phi i8* [ %.1, %94 ], [ %52, %50 ], [ %.0, %49 ], [ %7, %5 ]
  %96 = insertvalue { i8*, i32 } undef, i8* %.2, 0
  %97 = insertvalue { i8*, i32 } %96, i32 %.24, 1
  resume { i8*, i32 } %97

; <label>:98                                      ; preds = %94, %49
  %99 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* null
  %100 = extractvalue { i8*, i32 } %99, 0
  call void @__clang_call_terminate(i8* %100) #11
  unreachable
}

declare %"class.std::__1::basic_ostream"* @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc(%"class.std::__1::basic_ostream"*, i8 signext) #1

declare %"class.std::__1::basic_ostream"* @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(%"class.std::__1::basic_ostream"*) #1

declare void @_ZNKSt3__18ios_base6getlocEv(%"class.std::__1::locale"* sret, %"class.std::__1::ios_base"*) #1

; Function Attrs: nounwind
declare void @_ZNSt3__16localeD1Ev(%"class.std::__1::locale"*) #2

declare %"class.std::__1::locale::facet"* @_ZNKSt3__16locale9use_facetERNS0_2idE(%"class.std::__1::locale"*, %"class.std::__1::locale::id"*) #1

; Function Attrs: noinline uwtable
define linkonce_odr %"class.std::__1::basic_ostream"* @_ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(%"class.std::__1::basic_ostream"* %__os, i8* %__str, i64 %__len) #5 {
  %1 = alloca %"class.std::__1::locale", align 8
  %__s = alloca %"class.std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry", align 8
  invoke void @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC1ERS3_(%"class.std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry"* %__s, %"class.std::__1::basic_ostream"* %__os)
          to label %2 unwind label %68

; <label>:2                                       ; preds = %0
  %3 = getelementptr inbounds %"class.std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry"* %__s, i64 0, i32 0
  %4 = load i8* %3, align 8, !tbaa !11, !range !14
  %5 = icmp eq i8 %4, 0
  br i1 %5, label %_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateEj.exit, label %6

; <label>:6                                       ; preds = %2
  %7 = bitcast %"class.std::__1::basic_ostream"* %__os to i8**
  %8 = load i8** %7, align 8, !tbaa !1
  %9 = getelementptr i8* %8, i64 -24
  %10 = bitcast i8* %9 to i64*
  %11 = load i64* %10, align 8
  %12 = bitcast %"class.std::__1::basic_ostream"* %__os to i8*
  %.sum.i.i = add i64 %11, 40
  %13 = getelementptr inbounds i8* %12, i64 %.sum.i.i
  %14 = bitcast i8* %13 to i8**
  %15 = load i8** %14, align 8, !tbaa !15
  %16 = bitcast i8* %15 to %"class.std::__1::basic_streambuf"*
  %.sum = add i64 %11, 8
  %17 = getelementptr inbounds i8* %12, i64 %.sum
  %18 = bitcast i8* %17 to i32*
  %19 = load i32* %18, align 4, !tbaa !18
  %20 = and i32 %19, 176
  %21 = icmp eq i32 %20, 32
  br i1 %21, label %22, label %24

; <label>:22                                      ; preds = %6
  %23 = getelementptr inbounds i8* %__str, i64 %__len
  br label %24

; <label>:24                                      ; preds = %6, %22
  %25 = phi i8* [ %23, %22 ], [ %__str, %6 ]
  %26 = load i8** %7, align 8, !tbaa !1
  %27 = getelementptr i8* %26, i64 -24
  %28 = bitcast i8* %27 to i64*
  %29 = load i64* %28, align 8
  %30 = getelementptr inbounds i8* %12, i64 %29
  %.sum2 = add i64 %29, 144
  %31 = getelementptr inbounds i8* %12, i64 %.sum2
  %32 = bitcast i8* %31 to i32*
  %33 = load i32* %32, align 4, !tbaa !19
  %34 = icmp eq i32 %33, -1
  br i1 %34, label %35, label %49

; <label>:35                                      ; preds = %24
  %36 = bitcast %"class.std::__1::locale"* %1 to i8*
  call void @llvm.lifetime.start(i64 8, i8* %36)
  %37 = bitcast i8* %30 to %"class.std::__1::ios_base"*
  invoke void @_ZNKSt3__18ios_base6getlocEv(%"class.std::__1::locale"* sret %1, %"class.std::__1::ios_base"* %37)
          to label %.noexc unwind label %71

.noexc:                                           ; preds = %35
  %38 = invoke %"class.std::__1::locale::facet"* @_ZNKSt3__16locale9use_facetERNS0_2idE(%"class.std::__1::locale"* %1, %"class.std::__1::locale::id"* @_ZNSt3__15ctypeIcE2idE)
          to label %39 unwind label %46

; <label>:39                                      ; preds = %.noexc
  %40 = bitcast %"class.std::__1::locale::facet"* %38 to %"class.std::__1::ctype"*
  %41 = bitcast %"class.std::__1::locale::facet"* %38 to i8 (%"class.std::__1::ctype"*, i8)***
  %42 = load i8 (%"class.std::__1::ctype"*, i8)*** %41, align 8, !tbaa !1
  %43 = getelementptr inbounds i8 (%"class.std::__1::ctype"*, i8)** %42, i64 7
  %44 = load i8 (%"class.std::__1::ctype"*, i8)** %43, align 8
  %45 = invoke signext i8 %44(%"class.std::__1::ctype"* %40, i8 signext 32)
          to label %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i unwind label %46

; <label>:46                                      ; preds = %39, %.noexc
  %47 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* null
  call void @_ZNSt3__16localeD1Ev(%"class.std::__1::locale"* %1) #9
  br label %.body

_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i: ; preds = %39
  call void @_ZNSt3__16localeD1Ev(%"class.std::__1::locale"* %1) #9
  call void @llvm.lifetime.end(i64 8, i8* %36)
  %48 = sext i8 %45 to i32
  store i32 %48, i32* %32, align 4, !tbaa !19
  br label %49

; <label>:49                                      ; preds = %_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenEc.exit.i, %24
  %50 = load i32* %32, align 4, !tbaa !19
  %51 = trunc i32 %50 to i8
  %52 = bitcast i8* %30 to %"class.std::__1::ios_base"*
  %53 = getelementptr inbounds i8* %__str, i64 %__len
  %54 = invoke %"class.std::__1::basic_streambuf"* @_ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(%"class.std::__1::basic_streambuf"* %16, i8* %__str, i8* %25, i8* %53, %"class.std::__1::ios_base"* %52, i8 signext %51)
          to label %55 unwind label %71

; <label>:55                                      ; preds = %49
  %56 = icmp eq %"class.std::__1::basic_streambuf"* %54, null
  br i1 %56, label %57, label %_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateEj.exit

; <label>:57                                      ; preds = %55
  %58 = load i8** %7, align 8, !tbaa !1
  %59 = getelementptr i8* %58, i64 -24
  %60 = bitcast i8* %59 to i64*
  %61 = load i64* %60, align 8
  %62 = getelementptr inbounds i8* %12, i64 %61
  %63 = bitcast i8* %62 to %"class.std::__1::ios_base"*
  %.sum3 = add i64 %61, 32
  %64 = getelementptr inbounds i8* %12, i64 %.sum3
  %65 = bitcast i8* %64 to i32*
  %66 = load i32* %65, align 4, !tbaa !21
  %67 = or i32 %66, 5
  invoke void @_ZNSt3__18ios_base5clearEj(%"class.std::__1::ios_base"* %63, i32 %67)
          to label %_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateEj.exit unwind label %71

; <label>:68                                      ; preds = %0
  %69 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* null
  %70 = extractvalue { i8*, i32 } %69, 0
  br label %74

; <label>:71                                      ; preds = %35, %57, %49
  %72 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* null
  br label %.body

.body:                                            ; preds = %46, %71
  %eh.lpad-body = phi { i8*, i32 } [ %72, %71 ], [ %47, %46 ]
  %73 = extractvalue { i8*, i32 } %eh.lpad-body, 0
  call void @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev(%"class.std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry"* %__s) #9
  br label %74

; <label>:74                                      ; preds = %.body, %68
  %.0 = phi i8* [ %73, %.body ], [ %70, %68 ]
  %75 = call i8* @__cxa_begin_catch(i8* %.0) #9
  %76 = bitcast %"class.std::__1::basic_ostream"* %__os to i8**
  %77 = load i8** %76, align 8, !tbaa !1
  %78 = getelementptr i8* %77, i64 -24
  %79 = bitcast i8* %78 to i64*
  %80 = load i64* %79, align 8
  %81 = bitcast %"class.std::__1::basic_ostream"* %__os to i8*
  %82 = getelementptr inbounds i8* %81, i64 %80
  %83 = bitcast i8* %82 to %"class.std::__1::ios_base"*
  invoke void @_ZNSt3__18ios_base33__set_badbit_and_consider_rethrowEv(%"class.std::__1::ios_base"* %83)
          to label %84 unwind label %86

; <label>:84                                      ; preds = %74
  call void @__cxa_end_catch()
  br label %85

; <label>:85                                      ; preds = %84, %_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateEj.exit
  ret %"class.std::__1::basic_ostream"* %__os

_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateEj.exit: ; preds = %2, %57, %55
  call void @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev(%"class.std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry"* %__s) #9
  br label %85

; <label>:86                                      ; preds = %74
  %87 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
  invoke void @__cxa_end_catch()
          to label %88 unwind label %89

; <label>:88                                      ; preds = %86
  resume { i8*, i32 } %87

; <label>:89                                      ; preds = %86
  %90 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          catch i8* null
  %91 = extractvalue { i8*, i32 } %90, 0
  call void @__clang_call_terminate(i8* %91) #11
  unreachable
}

declare void @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC1ERS3_(%"class.std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry"*, %"class.std::__1::basic_ostream"*) #1

; Function Attrs: noinline uwtable
define linkonce_odr hidden %"class.std::__1::basic_streambuf"* @_ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(%"class.std::__1::basic_streambuf"* %__s.coerce, i8* %__ob, i8* %__op, i8* %__oe, %"class.std::__1::ios_base"* nocapture %__iob, i8 signext %__fl) #5 {
  %__sp = alloca %"class.std::__1::basic_string", align 8
  %1 = icmp eq %"class.std::__1::basic_streambuf"* %__s.coerce, null
  br i1 %1, label %53, label %2

; <label>:2                                       ; preds = %0
  %3 = ptrtoint i8* %__oe to i64
  %4 = ptrtoint i8* %__ob to i64
  %5 = sub i64 %3, %4
  %6 = getelementptr inbounds %"class.std::__1::ios_base"* %__iob, i64 0, i32 3
  %7 = load i64* %6, align 8, !tbaa !22
  %8 = icmp sgt i64 %7, %5
  %9 = sub nsw i64 %7, %5
  %__ns.0 = select i1 %8, i64 %9, i64 0
  %10 = ptrtoint i8* %__op to i64
  %11 = sub i64 %10, %4
  %12 = icmp sgt i64 %11, 0
  br i1 %12, label %13, label %20

; <label>:13                                      ; preds = %2
  %14 = bitcast %"class.std::__1::basic_streambuf"* %__s.coerce to i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)***
  %15 = load i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)*** %14, align 8, !tbaa !1
  %16 = getelementptr inbounds i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)** %15, i64 12
  %17 = load i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)** %16, align 8
  %18 = call i64 %17(%"class.std::__1::basic_streambuf"* %__s.coerce, i8* %__ob, i64 %11)
  %19 = icmp eq i64 %18, %11
  br i1 %19, label %20, label %53

; <label>:20                                      ; preds = %13, %2
  %21 = icmp sgt i64 %__ns.0, 0
  br i1 %21, label %22, label %42

; <label>:22                                      ; preds = %20
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEmc(%"class.std::__1::basic_string"* %__sp, i64 %__ns.0, i8 signext %__fl)
  %23 = bitcast %"class.std::__1::basic_string"* %__sp to i8*
  %24 = load i8* %23, align 8, !tbaa !4
  %25 = and i8 %24, 1
  %26 = icmp eq i8 %25, 0
  br i1 %26, label %30, label %27

; <label>:27                                      ; preds = %22
  %28 = getelementptr inbounds %"class.std::__1::basic_string"* %__sp, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2
  %29 = load i8** %28, align 8, !tbaa !6
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit

; <label>:30                                      ; preds = %22
  %31 = bitcast %"class.std::__1::basic_string"* %__sp to %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short"*
  %32 = getelementptr inbounds %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short"* %31, i64 0, i32 1, i64 0
  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit

_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit: ; preds = %27, %30
  %33 = phi i8* [ %29, %27 ], [ %32, %30 ]
  %34 = bitcast %"class.std::__1::basic_streambuf"* %__s.coerce to i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)***
  %35 = load i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)*** %34, align 8, !tbaa !1
  %36 = getelementptr inbounds i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)** %35, i64 12
  %37 = load i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)** %36, align 8
  %38 = invoke i64 %37(%"class.std::__1::basic_streambuf"* %__s.coerce, i8* %33, i64 %__ns.0)
          to label %_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKcl.exit unwind label %40

_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKcl.exit: ; preds = %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit
  %39 = icmp eq i64 %38, %__ns.0
  %__s.coerce. = select i1 %39, %"class.std::__1::basic_streambuf"* %__s.coerce, %"class.std::__1::basic_streambuf"* null
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %__sp) #9
  br i1 %39, label %42, label %53

; <label>:40                                      ; preds = %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit
  %41 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
          cleanup
  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(%"class.std::__1::basic_string"* %__sp) #9
  resume { i8*, i32 } %41

; <label>:42                                      ; preds = %_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKcl.exit, %20
  %__s.sroa.0.1 = phi %"class.std::__1::basic_streambuf"* [ %__s.coerce., %_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKcl.exit ], [ %__s.coerce, %20 ]
  %43 = sub i64 %3, %10
  %44 = icmp sgt i64 %43, 0
  br i1 %44, label %45, label %52

; <label>:45                                      ; preds = %42
  %46 = bitcast %"class.std::__1::basic_streambuf"* %__s.sroa.0.1 to i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)***
  %47 = load i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)*** %46, align 8, !tbaa !1
  %48 = getelementptr inbounds i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)** %47, i64 12
  %49 = load i64 (%"class.std::__1::basic_streambuf"*, i8*, i64)** %48, align 8
  %50 = call i64 %49(%"class.std::__1::basic_streambuf"* %__s.sroa.0.1, i8* %__op, i64 %43)
  %51 = icmp eq i64 %50, %43
  br i1 %51, label %52, label %53

; <label>:52                                      ; preds = %45, %42
  store i64 0, i64* %6, align 8, !tbaa !22
  br label %53

; <label>:53                                      ; preds = %_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKcl.exit, %45, %13, %0, %52
  %.sroa.0.1 = phi %"class.std::__1::basic_streambuf"* [ null, %_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKcl.exit ], [ %__s.sroa.0.1, %52 ], [ null, %0 ], [ null, %13 ], [ null, %45 ]
  ret %"class.std::__1::basic_streambuf"* %.sroa.0.1
}

; Function Attrs: nounwind
declare void @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev(%"class.std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry"*) #2

declare void @_ZNSt3__18ios_base33__set_badbit_and_consider_rethrowEv(%"class.std::__1::ios_base"*) #1

declare void @_ZNSt3__18ios_base5clearEj(%"class.std::__1::ios_base"*, i32) #1

; Function Attrs: nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #9

declare void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEmc(%"class.std::__1::basic_string"*, i64, i8 signext) #1

; Function Attrs: nounwind readonly
declare i64 @strlen(i8* nocapture) #10

declare void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm(%"class.std::__1::basic_string"*, i8*, i64) #1

declare %"class.std::__1::basic_string"* @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc(%"class.std::__1::basic_string"*, i8*) #1

declare void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcmm(%"class.std::__1::basic_string"*, i8*, i64, i64) #1

declare %"class.std::__1::basic_string"* @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKcm(%"class.std::__1::basic_string"*, i8*, i64) #1

; Function Attrs: nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) #9

; Function Attrs: nounwind
declare void @llvm.lifetime.start(i64, i8* nocapture) #9

; Function Attrs: nounwind
declare void @llvm.lifetime.end(i64, i8* nocapture) #9

attributes #0 = { noinline nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #3 = { nobuiltin nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #4 = { noinline nounwind readonly uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #5 = { noinline uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #6 = { noinline noreturn uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #7 = { nounwind readnone }
attributes #8 = { noinline noreturn nounwind }
attributes #9 = { nounwind }
attributes #10 = { nounwind readonly "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #11 = { noreturn nounwind }
attributes #12 = { builtin nounwind }
attributes #13 = { noreturn }

!llvm.ident = !{!0}

!0 = metadata !{metadata !"Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)"}
!1 = metadata !{metadata !2, metadata !2, i64 0}
!2 = metadata !{metadata !"vtable pointer", metadata !3, i64 0}
!3 = metadata !{metadata !"Simple C/C++ TBAA"}
!4 = metadata !{metadata !5, metadata !5, i64 0}
!5 = metadata !{metadata !"omnipotent char", metadata !3, i64 0}
!6 = metadata !{metadata !7, metadata !9, i64 16}
!7 = metadata !{metadata !"_ZTSNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__longE", metadata !8, i64 0, metadata !8, i64 8, metadata !9, i64 16}
!8 = metadata !{metadata !"long", metadata !5, i64 0}
!9 = metadata !{metadata !"any pointer", metadata !5, i64 0}
!10 = metadata !{metadata !7, metadata !8, i64 8}
!11 = metadata !{metadata !12, metadata !13, i64 0}
!12 = metadata !{metadata !"_ZTSNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryE", metadata !13, i64 0, metadata !5, i64 8}
!13 = metadata !{metadata !"bool", metadata !5, i64 0}
!14 = metadata !{i8 0, i8 2}
!15 = metadata !{metadata !16, metadata !9, i64 40}
!16 = metadata !{metadata !"_ZTSNSt3__18ios_baseE", metadata !17, i64 8, metadata !8, i64 16, metadata !8, i64 24, metadata !17, i64 32, metadata !17, i64 36, metadata !9, i64 40, metadata !9, i64 48, metadata !9, i64 56, metadata !9, i64 64, metadata !8, i64 72, metadata !8, i64 80, metadata !9, i64 88, metadata !8, i64 96, metadata !8, i64 104, metadata !9, i64 112, metadata !8, i64 120, metadata !8, i64 128}
!17 = metadata !{metadata !"int", metadata !5, i64 0}
!18 = metadata !{metadata !16, metadata !17, i64 8}
!19 = metadata !{metadata !20, metadata !17, i64 144}
!20 = metadata !{metadata !"_ZTSNSt3__19basic_iosIcNS_11char_traitsIcEEEE", metadata !9, i64 136, metadata !17, i64 144}
!21 = metadata !{metadata !16, metadata !17, i64 32}
!22 = metadata !{metadata !16, metadata !8, i64 24}
	.file	"rethrow.cpp"
	.text
	.align 2
	.globl	_ZNK12MyExceptionB4whatEv
	.type	_ZNK12MyExceptionB4whatEv, @function
_ZNK12MyExceptionB4whatEv:
.LFB1250:
	.cfi_startproc
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	addq	$8, %rdi
	call	_ZNKSs5c_strEv
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE1250:
	.size	_ZNK12MyExceptionB4whatEv, .-_ZNK12MyExceptionB4whatEv
	.align 2
	.globl	_ZN12MyExceptionBD2Ev
	.type	_ZN12MyExceptionBD2Ev, @function
_ZN12MyExceptionBD2Ev:
.LFB1247:
	.cfi_startproc
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdi, %rbx
	movq	$_ZTV12MyExceptionB+16, (%rdi)
	leaq	8(%rdi), %rdi
	call	_ZNSsD1Ev
	movq	%rbx, %rdi
	call	_ZNSt9exceptionD2Ev
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE1247:
	.size	_ZN12MyExceptionBD2Ev, .-_ZN12MyExceptionBD2Ev
	.globl	_ZN12MyExceptionBD1Ev
	.set	_ZN12MyExceptionBD1Ev,_ZN12MyExceptionBD2Ev
	.align 2
	.globl	_ZN12MyExceptionBD0Ev
	.type	_ZN12MyExceptionBD0Ev, @function
_ZN12MyExceptionBD0Ev:
.LFB1249:
	.cfi_startproc
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdi, %rbx
	call	_ZN12MyExceptionBD1Ev
	movq	%rbx, %rdi
	call	_ZdlPv
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE1249:
	.size	_ZN12MyExceptionBD0Ev, .-_ZN12MyExceptionBD0Ev
	.type	_Z41__static_initialization_and_destruction_0ii, @function
_Z41__static_initialization_and_destruction_0ii:
.LFB1426:
	.cfi_startproc
	cmpl	$1, %edi
	jne	.L11
	cmpl	$65535, %esi
	jne	.L11
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movl	$_ZStL8__ioinit, %edi
	call	_ZNSt8ios_base4InitC1Ev
	movl	$__dso_handle, %edx
	movl	$_ZStL8__ioinit, %esi
	movl	$_ZNSt8ios_base4InitD1Ev, %edi
	call	__cxa_atexit
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
.L11:
	ret
	.cfi_endproc
.LFE1426:
	.size	_Z41__static_initialization_and_destruction_0ii, .-_Z41__static_initialization_and_destruction_0ii
	.section	.text._ZNSt9exceptionC2Ev,"axG",@progbits,_ZNSt9exceptionC5Ev,comdat
	.align 2
	.weak	_ZNSt9exceptionC2Ev
	.type	_ZNSt9exceptionC2Ev, @function
_ZNSt9exceptionC2Ev:
.LFB1:
	.cfi_startproc
	movq	$_ZTVSt9exception+16, (%rdi)
	ret
	.cfi_endproc
.LFE1:
	.size	_ZNSt9exceptionC2Ev, .-_ZNSt9exceptionC2Ev
	.weak	_ZNSt9exceptionC1Ev
	.set	_ZNSt9exceptionC1Ev,_ZNSt9exceptionC2Ev
	.section	.text._ZNSt11char_traitsIcE6lengthEPKc,"axG",@progbits,_ZNSt11char_traitsIcE6lengthEPKc,comdat
	.weak	_ZNSt11char_traitsIcE6lengthEPKc
	.type	_ZNSt11char_traitsIcE6lengthEPKc, @function
_ZNSt11char_traitsIcE6lengthEPKc:
.LFB299:
	.cfi_startproc
	movl	$0, %eax
	movq	$-1, %rcx
	repnz scasb
	notq	%rcx
	leaq	-1(%rcx), %rax
	ret
	.cfi_endproc
.LFE299:
	.size	_ZNSt11char_traitsIcE6lengthEPKc, .-_ZNSt11char_traitsIcE6lengthEPKc
	.text
	.align 2
	.globl	_ZN12MyExceptionBC2ESs
	.type	_ZN12MyExceptionBC2ESs, @function
_ZN12MyExceptionBC2ESs:
.LFB1244:
	.cfi_startproc
	.cfi_personality 0x3,__gxx_personality_v0
	.cfi_lsda 0x3,.LLSDA1244
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rdi, %rbx
	movq	%rsi, %rbp
	call	_ZNSt9exceptionC2Ev
	movq	$_ZTV12MyExceptionB+16, (%rbx)
	leaq	8(%rbx), %rdi
	movq	%rbp, %rsi
.LEHB0:
	call	_ZNSsC1ERKSs
.LEHE0:
	jmp	.L18
.L17:
	movq	%rax, %rbp
	movq	%rdx, %r12
	movq	%rbx, %rdi
	call	_ZNSt9exceptionD2Ev
	cmpq	$-1, %r12
	je	.L16
	movq	%rbp, %rdi
.LEHB1:
	call	_Unwind_Resume
.L16:
	movq	%rbp, %rdi
	call	__cxa_call_unexpected
.LEHE1:
.L18:
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE1244:
	.globl	__gxx_personality_v0
	.section	.gcc_except_table,"a",@progbits
	.align 4
.LLSDA1244:
	.byte	0xff
	.byte	0x3
	.uleb128 .LLSDATT1244-.LLSDATTD1244
.LLSDATTD1244:
	.byte	0x1
	.uleb128 .LLSDACSE1244-.LLSDACSB1244
.LLSDACSB1244:
	.uleb128 .LEHB0-.LFB1244
	.uleb128 .LEHE0-.LEHB0
	.uleb128 .L17-.LFB1244
	.uleb128 0x3
	.uleb128 .LEHB1-.LFB1244
	.uleb128 .LEHE1-.LEHB1
	.uleb128 0
	.uleb128 0
.LLSDACSE1244:
	.byte	0x7f
	.byte	0
	.byte	0
	.byte	0x7d
	.align 4
.LLSDATT1244:
	.byte	0
	.text
	.size	_ZN12MyExceptionBC2ESs, .-_ZN12MyExceptionBC2ESs
	.globl	_ZN12MyExceptionBC1ESs
	.set	_ZN12MyExceptionBC1ESs,_ZN12MyExceptionBC2ESs
	.globl	_Z18throw_MyExceptionBSs
	.type	_Z18throw_MyExceptionBSs, @function
_Z18throw_MyExceptionBSs:
.LFB1252:
	.cfi_startproc
	.cfi_personality 0x3,__gxx_personality_v0
	.cfi_lsda 0x3,.LLSDA1252
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	subq	$16, %rsp
	.cfi_def_cfa_offset 48
	movq	%rdi, %rbp
	movl	$16, %edi
	call	__cxa_allocate_exception
	movq	%rax, %rbx
	movq	%rbp, %rsi
	movq	%rsp, %rdi
.LEHB2:
	call	_ZNSsC1ERKSs
.LEHE2:
	movq	%rsp, %rsi
	movq	%rbx, %rdi
	call	_ZN12MyExceptionBC1ESs
	movq	%rsp, %rdi
	call	_ZNSsD1Ev
	movl	$_ZN12MyExceptionBD1Ev, %edx
	movl	$_ZTI12MyExceptionB, %esi
	movq	%rbx, %rdi
.LEHB3:
	call	__cxa_throw
.LEHE3:
.L24:
	movq	%rax, %r12
	movq	%rdx, %rbp
	movq	%rbx, %rdi
	call	__cxa_free_exception
	movq	%r12, %rdi
	movq	%rbp, %rdx
	jmp	.L22
.L25:
	movq	%rax, %rdi
.L22:
	cmpq	$-1, %rdx
	je	.L23
.LEHB4:
	call	_Unwind_Resume
.L23:
	call	__cxa_call_unexpected
.LEHE4:
	.cfi_endproc
.LFE1252:
	.section	.gcc_except_table
	.align 4
.LLSDA1252:
	.byte	0xff
	.byte	0x3
	.uleb128 .LLSDATT1252-.LLSDATTD1252
.LLSDATTD1252:
	.byte	0x1
	.uleb128 .LLSDACSE1252-.LLSDACSB1252
.LLSDACSB1252:
	.uleb128 .LEHB2-.LFB1252
	.uleb128 .LEHE2-.LEHB2
	.uleb128 .L24-.LFB1252
	.uleb128 0x3
	.uleb128 .LEHB3-.LFB1252
	.uleb128 .LEHE3-.LEHB3
	.uleb128 .L25-.LFB1252
	.uleb128 0x1
	.uleb128 .LEHB4-.LFB1252
	.uleb128 .LEHE4-.LEHB4
	.uleb128 0
	.uleb128 0
.LLSDACSE1252:
	.byte	0x7f
	.byte	0
	.byte	0
	.byte	0x7d
	.align 4
	.long	_ZTI12MyExceptionB
.LLSDATT1252:
	.byte	0x1
	.byte	0
	.text
	.size	_Z18throw_MyExceptionBSs, .-_Z18throw_MyExceptionBSs
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"Bar"
	.text
	.globl	_Z12doesnt_throwv
	.type	_Z12doesnt_throwv, @function
_Z12doesnt_throwv:
.LFB1261:
	.cfi_startproc
	.cfi_personality 0x3,__gxx_personality_v0
	.cfi_lsda 0x3,.LLSDA1261
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	leaq	15(%rsp), %rdx
	movl	$.LC0, %esi
	leaq	16(%rsp), %rdi
.LEHB5:
	call	_ZNSsC1EPKcRKSaIcE
.LEHE5:
	leaq	16(%rsp), %rdi
.LEHB6:
	call	_Z18throw_MyExceptionBSs
.LEHE6:
.L32:
	movq	%rax, %rbp
	movq	%rdx, %rbx
	leaq	16(%rsp), %rdi
	call	_ZNSsD1Ev
	movq	%rbp, %rdi
	movq	%rbx, %rdx
	jmp	.L29
.L31:
	movq	%rax, %rdi
.L29:
	cmpq	$-1, %rdx
	je	.L30
.LEHB7:
	call	_Unwind_Resume
.L30:
	call	__cxa_call_unexpected
.LEHE7:
	.cfi_endproc
.LFE1261:
	.section	.gcc_except_table
	.align 4
.LLSDA1261:
	.byte	0xff
	.byte	0x3
	.uleb128 .LLSDATT1261-.LLSDATTD1261
.LLSDATTD1261:
	.byte	0x1
	.uleb128 .LLSDACSE1261-.LLSDACSB1261
.LLSDACSB1261:
	.uleb128 .LEHB5-.LFB1261
	.uleb128 .LEHE5-.LEHB5
	.uleb128 .L31-.LFB1261
	.uleb128 0x1
	.uleb128 .LEHB6-.LFB1261
	.uleb128 .LEHE6-.LEHB6
	.uleb128 .L32-.LFB1261
	.uleb128 0x3
	.uleb128 .LEHB7-.LFB1261
	.uleb128 .LEHE7-.LEHB7
	.uleb128 0
	.uleb128 0
.LLSDACSE1261:
	.byte	0x7f
	.byte	0
	.byte	0
	.byte	0x7d
	.align 4
.LLSDATT1261:
	.byte	0
	.text
	.size	_Z12doesnt_throwv, .-_Z12doesnt_throwv
	.section	.text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"axG",@progbits,_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,comdat
	.weak	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_
	.type	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_, @function
_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_:
.LFB1317:
	.cfi_startproc
	.cfi_personality 0x3,__gxx_personality_v0
	.cfi_lsda 0x3,.LLSDA1317
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	subq	$8, %rsp
	.cfi_def_cfa_offset 48
	movq	%rdi, %rbx
	movq	%rsi, %r12
	movq	%rdx, %rbp
	movq	%rsi, %rdi
	call	_ZNSt11char_traitsIcE6lengthEPKc
	movq	%rax, %r13
	movq	%rbx, %rdi
	call	_ZNSsC1Ev
	movq	%rbp, %rdi
	call	_ZNKSs4sizeEv
	leaq	(%rax,%r13), %rsi
	movq	%rbx, %rdi
.LEHB8:
	call	_ZNSs7reserveEm
	movq	%r13, %rdx
	movq	%r12, %rsi
	movq	%rbx, %rdi
	call	_ZNSs6appendEPKcm
	movq	%rbp, %rsi
	movq	%rbx, %rdi
	call	_ZNSs6appendERKSs
.LEHE8:
	jmp	.L37
.L36:
	movq	%rax, %rbp
	movq	%rbx, %rdi
	call	_ZNSsD1Ev
	movq	%rbp, %rdi
.LEHB9:
	call	_Unwind_Resume
.LEHE9:
.L37:
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE1317:
	.section	.gcc_except_table
.LLSDA1317:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE1317-.LLSDACSB1317
.LLSDACSB1317:
	.uleb128 .LEHB8-.LFB1317
	.uleb128 .LEHE8-.LEHB8
	.uleb128 .L36-.LFB1317
	.uleb128 0
	.uleb128 .LEHB9-.LFB1317
	.uleb128 .LEHE9-.LEHB9
	.uleb128 0
	.uleb128 0
.LLSDACSE1317:
	.section	.text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"axG",@progbits,_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,comdat
	.size	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_, .-_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_
	.section	.text._ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_,"axG",@progbits,_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_,comdat
	.weak	_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_
	.type	_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_, @function
_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_:
.LFB1319:
	.cfi_startproc
	movq	%rdi, %rax
	ret
	.cfi_endproc
.LFE1319:
	.size	_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_, .-_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_
	.section	.text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_,"axG",@progbits,_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_,comdat
	.weak	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_
	.type	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_, @function
_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_:
.LFB1318:
	.cfi_startproc
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdi, %rbx
	movq	%rsi, %rdi
	movq	%rdx, %rsi
	call	_ZNSs6appendEPKc
	movq	%rax, %rdi
	call	_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_
	movq	%rax, %rsi
	movq	%rbx, %rdi
	call	_ZNSsC1EOSs
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE1318:
	.size	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_, .-_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_
	.section	.rodata.str1.1
.LC1:
	.string	"MyExceptionB("
.LC2:
	.string	")"
	.text
	.align 2
	.globl	_ZNK12MyExceptionB9as_stringEv
	.type	_ZNK12MyExceptionB9as_stringEv, @function
_ZNK12MyExceptionB9as_stringEv:
.LFB1251:
	.cfi_startproc
	.cfi_personality 0x3,__gxx_personality_v0
	.cfi_lsda 0x3,.LLSDA1251
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	subq	$16, %rsp
	.cfi_def_cfa_offset 32
	movq	%rdi, %rbx
	leaq	8(%rsi), %rdx
	movl	$.LC1, %esi
	movq	%rsp, %rdi
.LEHB10:
	call	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_
.LEHE10:
	movl	$.LC2, %edx
	movq	%rsp, %rsi
	movq	%rbx, %rdi
.LEHB11:
	call	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_
.LEHE11:
	jmp	.L46
.L44:
	movq	%rax, %rbx
	movq	%rsp, %rdi
	call	_ZNSsD1Ev
	movq	%rbx, %rdi
.LEHB12:
	call	_Unwind_Resume
.LEHE12:
.L46:
	movq	%rsp, %rdi
	call	_ZNSsD1Ev
	movq	%rbx, %rax
	addq	$16, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE1251:
	.section	.gcc_except_table
.LLSDA1251:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE1251-.LLSDACSB1251
.LLSDACSB1251:
	.uleb128 .LEHB10-.LFB1251
	.uleb128 .LEHE10-.LEHB10
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB11-.LFB1251
	.uleb128 .LEHE11-.LEHB11
	.uleb128 .L44-.LFB1251
	.uleb128 0
	.uleb128 .LEHB12-.LFB1251
	.uleb128 .LEHE12-.LEHB12
	.uleb128 0
	.uleb128 0
.LLSDACSE1251:
	.text
	.size	_ZNK12MyExceptionB9as_stringEv, .-_ZNK12MyExceptionB9as_stringEv
	.section	.rodata.str1.1
.LC3:
	.string	"Foo"
.LC4:
	.string	"Got exception:"
.LC5:
	.string	" rethrowing..."
	.text
	.globl	_Z17catch_and_rethrowv
	.type	_Z17catch_and_rethrowv, @function
_Z17catch_and_rethrowv:
.LFB1259:
	.cfi_startproc
	.cfi_personality 0x3,__gxx_personality_v0
	.cfi_lsda 0x3,.LLSDA1259
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	subq	$40, %rsp
	.cfi_def_cfa_offset 64
	leaq	16(%rsp), %rdx
	movl	$.LC3, %esi
	movq	%rsp, %rdi
.LEHB13:
	call	_ZNSsC1EPKcRKSaIcE
.LEHE13:
	movq	%rsp, %rdi
.LEHB14:
	call	_Z18throw_MyExceptionBSs
.LEHE14:
.L58:
	movq	%rax, %rbp
	movq	%rdx, %rbx
	movq	%rsp, %rdi
	call	_ZNSsD1Ev
	movq	%rbp, %rax
	movq	%rbx, %rdx
	jmp	.L50
.L57:
.L50:
	cmpq	$1, %rdx
	je	.L52
	jmp	.L61
.L60:
	movq	%rax, %rbp
	movq	%rdx, %rbx
	leaq	16(%rsp), %rdi
	call	_ZNSsD1Ev
	jmp	.L54
.L59:
	movq	%rax, %rbp
	movq	%rdx, %rbx
.L54:
	call	__cxa_end_catch
	movq	%rbp, %rdi
	movq	%rbx, %rdx
	jmp	.L55
.L61:
	movq	%rax, %rdi
	jmp	.L55
.L52:
	movq	%rax, %rdi
	call	__cxa_begin_catch
	movq	%rax, %rsi
	leaq	16(%rsp), %rdi
.LEHB15:
	call	_ZNK12MyExceptionB9as_stringEv
.LEHE15:
	movl	$.LC4, %esi
	movl	$_ZSt4cout, %edi
.LEHB16:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
	leaq	16(%rsp), %rsi
	movq	%rax, %rdi
	call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
	movl	$.LC5, %esi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
	movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E
.LEHE16:
	leaq	16(%rsp), %rdi
	call	_ZNSsD1Ev
.LEHB17:
	call	__cxa_rethrow
.LEHE17:
.L55:
	cmpq	$-1, %rdx
	je	.L56
.LEHB18:
	call	_Unwind_Resume
.L56:
	call	__cxa_call_unexpected
.LEHE18:
	.cfi_endproc
.LFE1259:
	.section	.gcc_except_table
	.align 4
.LLSDA1259:
	.byte	0xff
	.byte	0x3
	.uleb128 .LLSDATT1259-.LLSDATTD1259
.LLSDATTD1259:
	.byte	0x1
	.uleb128 .LLSDACSE1259-.LLSDACSB1259
.LLSDACSB1259:
	.uleb128 .LEHB13-.LFB1259
	.uleb128 .LEHE13-.LEHB13
	.uleb128 .L57-.LFB1259
	.uleb128 0x3
	.uleb128 .LEHB14-.LFB1259
	.uleb128 .LEHE14-.LEHB14
	.uleb128 .L58-.LFB1259
	.uleb128 0x5
	.uleb128 .LEHB15-.LFB1259
	.uleb128 .LEHE15-.LEHB15
	.uleb128 .L59-.LFB1259
	.uleb128 0x7
	.uleb128 .LEHB16-.LFB1259
	.uleb128 .LEHE16-.LEHB16
	.uleb128 .L60-.LFB1259
	.uleb128 0x7
	.uleb128 .LEHB17-.LFB1259
	.uleb128 .LEHE17-.LEHB17
	.uleb128 .L59-.LFB1259
	.uleb128 0x7
	.uleb128 .LEHB18-.LFB1259
	.uleb128 .LEHE18-.LEHB18
	.uleb128 0
	.uleb128 0
.LLSDACSE1259:
	.byte	0x7f
	.byte	0
	.byte	0x1
	.byte	0x7d
	.byte	0
	.byte	0x7d
	.byte	0
	.byte	0x79
	.align 4
	.long	_ZTI12MyExceptionB
.LLSDATT1259:
	.byte	0x1
	.byte	0
	.text
	.size	_Z17catch_and_rethrowv, .-_Z17catch_and_rethrowv
	.section	.rodata.str1.1
.LC6:
	.string	"Baz"
.LC7:
	.string	" throwing another..."
	.text
	.globl	_Z23catch_and_throw_anotherv
	.type	_Z23catch_and_throw_anotherv, @function
_Z23catch_and_throw_anotherv:
.LFB1260:
	.cfi_startproc
	.cfi_personality 0x3,__gxx_personality_v0
	.cfi_lsda 0x3,.LLSDA1260
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	subq	$48, %rsp
	.cfi_def_cfa_offset 80
	leaq	32(%rsp), %rdx
	movl	$.LC6, %esi
	movq	%rsp, %rdi
.LEHB19:
	call	_ZNSsC1EPKcRKSaIcE
.LEHE19:
	movq	%rsp, %rdi
.LEHB20:
	call	_Z18throw_MyExceptionBSs
.LEHE20:
.L74:
	movq	%rax, %rbp
	movq	%rdx, %rbx
	movq	%rsp, %rdi
	call	_ZNSsD1Ev
	movq	%rbp, %rax
	movq	%rbx, %rdx
	jmp	.L65
.L73:
.L65:
	cmpq	$1, %rdx
	je	.L67
	jmp	.L78
.L76:
	movq	%rax, %rbp
	movq	%rdx, %rbx
	leaq	16(%rsp), %rdi
	call	_ZNSsD1Ev
	jmp	.L69
.L77:
	movq	%rax, %rbp
	movq	%rdx, %r12
	movq	%rbx, %rdi
	call	__cxa_free_exception
	movq	%r12, %rbx
	jmp	.L69
.L75:
	movq	%rax, %rbp
	movq	%rdx, %rbx
.L69:
	call	__cxa_end_catch
	movq	%rbp, %rdi
	movq	%rbx, %rdx
	jmp	.L71
.L78:
	movq	%rax, %rdi
	jmp	.L71
.L67:
	movq	%rax, %rdi
	call	__cxa_begin_catch
	movq	%rax, %rbp
	movq	%rax, %rsi
	leaq	16(%rsp), %rdi
.LEHB21:
	call	_ZNK12MyExceptionB9as_stringEv
.LEHE21:
	movl	$.LC4, %esi
	movl	$_ZSt4cout, %edi
.LEHB22:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
	leaq	16(%rsp), %rsi
	movq	%rax, %rdi
	call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
	movl	$.LC7, %esi
	movq	%rax, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
	movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E
.LEHE22:
	leaq	16(%rsp), %rdi
	call	_ZNSsD1Ev
	movl	$16, %edi
	call	__cxa_allocate_exception
	movq	%rax, %rbx
	movq	%rbp, %rsi
	leaq	32(%rsp), %rdi
.LEHB23:
	call	_ZNK12MyExceptionB9as_stringEv
.LEHE23:
	leaq	32(%rsp), %rsi
	movq	%rbx, %rdi
	call	_ZN12MyExceptionBC1ESs
	leaq	32(%rsp), %rdi
	call	_ZNSsD1Ev
	movl	$_ZN12MyExceptionBD1Ev, %edx
	movl	$_ZTI12MyExceptionB, %esi
	movq	%rbx, %rdi
.LEHB24:
	call	__cxa_throw
.LEHE24:
.L71:
	cmpq	$-1, %rdx
	je	.L72
.LEHB25:
	call	_Unwind_Resume
.L72:
	call	__cxa_call_unexpected
.LEHE25:
	.cfi_endproc
.LFE1260:
	.section	.gcc_except_table
	.align 4
.LLSDA1260:
	.byte	0xff
	.byte	0x3
	.uleb128 .LLSDATT1260-.LLSDATTD1260
.LLSDATTD1260:
	.byte	0x1
	.uleb128 .LLSDACSE1260-.LLSDACSB1260
.LLSDACSB1260:
	.uleb128 .LEHB19-.LFB1260
	.uleb128 .LEHE19-.LEHB19
	.uleb128 .L73-.LFB1260
	.uleb128 0x3
	.uleb128 .LEHB20-.LFB1260
	.uleb128 .LEHE20-.LEHB20
	.uleb128 .L74-.LFB1260
	.uleb128 0x5
	.uleb128 .LEHB21-.LFB1260
	.uleb128 .LEHE21-.LEHB21
	.uleb128 .L75-.LFB1260
	.uleb128 0x7
	.uleb128 .LEHB22-.LFB1260
	.uleb128 .LEHE22-.LEHB22
	.uleb128 .L76-.LFB1260
	.uleb128 0x7
	.uleb128 .LEHB23-.LFB1260
	.uleb128 .LEHE23-.LEHB23
	.uleb128 .L77-.LFB1260
	.uleb128 0x7
	.uleb128 .LEHB24-.LFB1260
	.uleb128 .LEHE24-.LEHB24
	.uleb128 .L75-.LFB1260
	.uleb128 0x7
	.uleb128 .LEHB25-.LFB1260
	.uleb128 .LEHE25-.LEHB25
	.uleb128 0
	.uleb128 0
.LLSDACSE1260:
	.byte	0x7f
	.byte	0
	.byte	0x1
	.byte	0x7d
	.byte	0
	.byte	0x7d
	.byte	0
	.byte	0x79
	.align 4
	.long	_ZTI12MyExceptionB
.LLSDATT1260:
	.byte	0x1
	.byte	0
	.text
	.size	_Z23catch_and_throw_anotherv, .-_Z23catch_and_throw_anotherv
	.section	.rodata.str1.1
.LC8:
	.string	"Main got exception: "
	.text
	.globl	_Z9doRethrowv
	.type	_Z9doRethrowv, @function
_Z9doRethrowv:
.LFB1262:
	.cfi_startproc
	.cfi_personality 0x3,__gxx_personality_v0
	.cfi_lsda 0x3,.LLSDA1262
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	subq	$16, %rsp
	.cfi_def_cfa_offset 32
.LEHB26:
	call	_Z17catch_and_rethrowv
.LEHE26:
.L93:
	movq	%rax, %rbx
	movq	%rsp, %rdi
	call	_ZNSsD1Ev
	jmp	.L82
.L92:
	movq	%rax, %rbx
.L82:
	call	__cxa_end_catch
	movq	%rbx, %rdi
.LEHB27:
	call	_Unwind_Resume
.L91:
	movq	%rax, %rdi
	cmpq	$1, %rdx
	je	.L85
	call	_Unwind_Resume
.LEHE27:
.L85:
	call	__cxa_begin_catch
	movq	%rax, %rsi
	movq	%rsp, %rdi
.LEHB28:
	call	_ZNK12MyExceptionB9as_stringEv
.LEHE28:
	movl	$.LC8, %esi
	movl	$_ZSt4cout, %edi
.LEHB29:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
	movq	%rsp, %rsi
	movq	%rax, %rdi
	call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
	movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E
.LEHE29:
	movq	%rsp, %rdi
	call	_ZNSsD1Ev
	call	__cxa_end_catch
.LEHB30:
	call	_Z23catch_and_throw_anotherv
.LEHE30:
.L96:
	movq	%rax, %rbx
	movq	%rsp, %rdi
	call	_ZNSsD1Ev
	jmp	.L87
.L95:
	movq	%rax, %rbx
.L87:
	call	__cxa_end_catch
	movq	%rbx, %rdi
.LEHB31:
	call	_Unwind_Resume
.L94:
	movq	%rax, %rdi
	cmpq	$1, %rdx
	je	.L90
	call	_Unwind_Resume
.LEHE31:
.L90:
	call	__cxa_begin_catch
	movq	%rax, %rsi
	movq	%rsp, %rdi
.LEHB32:
	call	_ZNK12MyExceptionB9as_stringEv
.LEHE32:
	movl	$.LC8, %esi
	movl	$_ZSt4cout, %edi
.LEHB33:
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
	movq	%rsp, %rsi
	movq	%rax, %rdi
	call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
	movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
	movq	%rax, %rdi
	call	_ZNSolsEPFRSoS_E
.LEHE33:
	movq	%rsp, %rdi
	call	_ZNSsD1Ev
	call	__cxa_end_catch
	call	_Z12doesnt_throwv
	.cfi_endproc
.LFE1262:
	.section	.gcc_except_table
	.align 4
.LLSDA1262:
	.byte	0xff
	.byte	0x3
	.uleb128 .LLSDATT1262-.LLSDATTD1262
.LLSDATTD1262:
	.byte	0x1
	.uleb128 .LLSDACSE1262-.LLSDACSB1262
.LLSDACSB1262:
	.uleb128 .LEHB26-.LFB1262
	.uleb128 .LEHE26-.LEHB26
	.uleb128 .L91-.LFB1262
	.uleb128 0x1
	.uleb128 .LEHB27-.LFB1262
	.uleb128 .LEHE27-.LEHB27
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB28-.LFB1262
	.uleb128 .LEHE28-.LEHB28
	.uleb128 .L92-.LFB1262
	.uleb128 0
	.uleb128 .LEHB29-.LFB1262
	.uleb128 .LEHE29-.LEHB29
	.uleb128 .L93-.LFB1262
	.uleb128 0
	.uleb128 .LEHB30-.LFB1262
	.uleb128 .LEHE30-.LEHB30
	.uleb128 .L94-.LFB1262
	.uleb128 0x1
	.uleb128 .LEHB31-.LFB1262
	.uleb128 .LEHE31-.LEHB31
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB32-.LFB1262
	.uleb128 .LEHE32-.LEHB32
	.uleb128 .L95-.LFB1262
	.uleb128 0
	.uleb128 .LEHB33-.LFB1262
	.uleb128 .LEHE33-.LEHB33
	.uleb128 .L96-.LFB1262
	.uleb128 0
.LLSDACSE1262:
	.byte	0x1
	.byte	0
	.align 4
	.long	_ZTI12MyExceptionB
.LLSDATT1262:
	.text
	.size	_Z9doRethrowv, .-_Z9doRethrowv
	.type	_GLOBAL__sub_I__ZN12MyExceptionBC2ESs, @function
_GLOBAL__sub_I__ZN12MyExceptionBC2ESs:
.LFB1427:
	.cfi_startproc
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movl	$65535, %esi
	movl	$1, %edi
	call	_Z41__static_initialization_and_destruction_0ii
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE1427:
	.size	_GLOBAL__sub_I__ZN12MyExceptionBC2ESs, .-_GLOBAL__sub_I__ZN12MyExceptionBC2ESs
	.section	.init_array,"aw"
	.align 8
	.quad	_GLOBAL__sub_I__ZN12MyExceptionBC2ESs
	.weak	_ZTS12MyExceptionB
	.section	.rodata._ZTS12MyExceptionB,"aG",@progbits,_ZTS12MyExceptionB,comdat
	.type	_ZTS12MyExceptionB, @object
	.size	_ZTS12MyExceptionB, 15
_ZTS12MyExceptionB:
	.string	"12MyExceptionB"
	.weak	_ZTI12MyExceptionB
	.section	.rodata._ZTI12MyExceptionB,"aG",@progbits,_ZTI12MyExceptionB,comdat
	.align 16
	.type	_ZTI12MyExceptionB, @object
	.size	_ZTI12MyExceptionB, 24
_ZTI12MyExceptionB:
	.quad	_ZTVN10__cxxabiv120__si_class_type_infoE+16
	.quad	_ZTS12MyExceptionB
	.quad	_ZTISt9exception
	.weak	_ZTV12MyExceptionB
	.section	.rodata._ZTV12MyExceptionB,"aG",@progbits,_ZTV12MyExceptionB,comdat
	.align 32
	.type	_ZTV12MyExceptionB, @object
	.size	_ZTV12MyExceptionB, 40
_ZTV12MyExceptionB:
	.quad	0
	.quad	_ZTI12MyExceptionB
	.quad	_ZN12MyExceptionBD1Ev
	.quad	_ZN12MyExceptionBD0Ev
	.quad	_ZNK12MyExceptionB4whatEv
	.local	_ZStL8__ioinit
	.comm	_ZStL8__ioinit,1,1
	.hidden	__dso_handle
	.ident	"GCC: (Ubuntu 4.8.2-19ubuntu1) 4.8.2"
	.section	.note.GNU-stack,"",@progbits
GAS LISTING /tmp/ccrG9BDx.s 			page 1


   1              		.file	"rethrow.cpp"
   2              		.text
   3              	.Ltext0:
   4              		.align 2
   5              		.globl	_ZNK12MyExceptionB4whatEv
   7              	_ZNK12MyExceptionB4whatEv:
   8              	.LFB1250:
   9              		.file 1 "rethrow.cpp"
   1:rethrow.cpp   **** #include <exception>
   2:rethrow.cpp   **** #include <string>
   3:rethrow.cpp   **** #include <iostream>
   4:rethrow.cpp   **** 
   5:rethrow.cpp   **** using namespace std;
   6:rethrow.cpp   **** 
   7:rethrow.cpp   **** class MyExceptionB : public exception {
   8:rethrow.cpp   ****   private:
   9:rethrow.cpp   ****     string _what;
  10:rethrow.cpp   ****   public:
  11:rethrow.cpp   ****     MyExceptionB(string what) throw ();
  12:rethrow.cpp   ****     ~MyExceptionB() throw ();
  13:rethrow.cpp   **** 
  14:rethrow.cpp   ****     virtual const char *what() const throw ();
  15:rethrow.cpp   ****     string as_string() const;
  16:rethrow.cpp   **** };
  17:rethrow.cpp   **** 
  18:rethrow.cpp   **** MyExceptionB::MyExceptionB(string what) throw ():
  19:rethrow.cpp   ****     _what(what)
  20:rethrow.cpp   **** {}
  21:rethrow.cpp   **** 
  22:rethrow.cpp   **** MyExceptionB::~MyExceptionB() throw () {
  23:rethrow.cpp   **** }
  24:rethrow.cpp   **** 
  25:rethrow.cpp   **** const char *MyExceptionB::what() const throw () {
  10              		.loc 1 25 0
  11              		.cfi_startproc
  12              	.LVL0:
  13 0000 4883EC08 		subq	$8, %rsp
  14              		.cfi_def_cfa_offset 16
  26:rethrow.cpp   ****     return _what.c_str();
  15              		.loc 1 26 0
  16 0004 4883C708 		addq	$8, %rdi
  17              	.LVL1:
  18 0008 E8000000 		call	_ZNKSs5c_strEv
  18      00
  19              	.LVL2:
  27:rethrow.cpp   **** }
  20              		.loc 1 27 0
  21 000d 4883C408 		addq	$8, %rsp
  22              		.cfi_def_cfa_offset 8
  23 0011 C3       		ret
  24              		.cfi_endproc
  25              	.LFE1250:
  27              		.align 2
  28              		.globl	_ZN12MyExceptionBD2Ev
  30              	_ZN12MyExceptionBD2Ev:
  31              	.LFB1247:
  22:rethrow.cpp   **** }
GAS LISTING /tmp/ccrG9BDx.s 			page 2


  32              		.loc 1 22 0
  33              		.cfi_startproc
  34              	.LVL3:
  35 0012 53       		pushq	%rbx
  36              		.cfi_def_cfa_offset 16
  37              		.cfi_offset 3, -16
  38 0013 4889FB   		movq	%rdi, %rbx
  39              	.LBB2:
  22:rethrow.cpp   **** }
  40              		.loc 1 22 0
  41 0016 48C70700 		movq	$_ZTV12MyExceptionB+16, (%rdi)
  41      000000
  42 001d 488D7F08 		leaq	8(%rdi), %rdi
  43              	.LVL4:
  44 0021 E8000000 		call	_ZNSsD1Ev
  44      00
  45              	.LVL5:
  46 0026 4889DF   		movq	%rbx, %rdi
  47 0029 E8000000 		call	_ZNSt9exceptionD2Ev
  47      00
  48              	.LVL6:
  49              	.LBE2:
  23:rethrow.cpp   **** 
  50              		.loc 1 23 0
  51 002e 5B       		popq	%rbx
  52              		.cfi_def_cfa_offset 8
  53              	.LVL7:
  54 002f C3       		ret
  55              		.cfi_endproc
  56              	.LFE1247:
  58              		.globl	_ZN12MyExceptionBD1Ev
  59              		.set	_ZN12MyExceptionBD1Ev,_ZN12MyExceptionBD2Ev
  60              		.align 2
  61              		.globl	_ZN12MyExceptionBD0Ev
  63              	_ZN12MyExceptionBD0Ev:
  64              	.LFB1249:
  22:rethrow.cpp   **** }
  65              		.loc 1 22 0
  66              		.cfi_startproc
  67              	.LVL8:
  68 0030 53       		pushq	%rbx
  69              		.cfi_def_cfa_offset 16
  70              		.cfi_offset 3, -16
  71 0031 4889FB   		movq	%rdi, %rbx
  23:rethrow.cpp   **** 
  72              		.loc 1 23 0
  73 0034 E8000000 		call	_ZN12MyExceptionBD1Ev
  73      00
  74              	.LVL9:
  75 0039 4889DF   		movq	%rbx, %rdi
  76 003c E8000000 		call	_ZdlPv
  76      00
  77              	.LVL10:
  78 0041 5B       		popq	%rbx
  79              		.cfi_def_cfa_offset 8
  80              	.LVL11:
  81 0042 C3       		ret
GAS LISTING /tmp/ccrG9BDx.s 			page 3


  82              		.cfi_endproc
  83              	.LFE1249:
  86              	_Z41__static_initialization_and_destruction_0ii:
  87              	.LFB1426:
  28:rethrow.cpp   **** 
  29:rethrow.cpp   **** string MyExceptionB::as_string() const {
  30:rethrow.cpp   ****     return "MyExceptionB(" + _what + ")";
  31:rethrow.cpp   **** }
  32:rethrow.cpp   **** 
  33:rethrow.cpp   **** 
  34:rethrow.cpp   **** void throw_MyExceptionB(string message) throw (MyExceptionB) {
  35:rethrow.cpp   ****     throw MyExceptionB(message);
  36:rethrow.cpp   **** }
  37:rethrow.cpp   **** 
  38:rethrow.cpp   **** void catch_and_rethrow() throw (MyExceptionB) {
  39:rethrow.cpp   ****     try {
  40:rethrow.cpp   ****         throw_MyExceptionB("Foo");
  41:rethrow.cpp   ****     } catch (MyExceptionB &e) {
  42:rethrow.cpp   ****         cout << "Got exception:" << e.as_string() << " rethrowing..." << endl;
  43:rethrow.cpp   ****         throw;
  44:rethrow.cpp   ****     }
  45:rethrow.cpp   **** }
  46:rethrow.cpp   **** 
  47:rethrow.cpp   **** void catch_and_throw_another() throw (MyExceptionB) {
  48:rethrow.cpp   ****     try {
  49:rethrow.cpp   ****         throw_MyExceptionB("Baz");
  50:rethrow.cpp   ****     } catch (MyExceptionB &e) {
  51:rethrow.cpp   ****         cout << "Got exception:" << e.as_string() << " throwing another..." << endl;
  52:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
  53:rethrow.cpp   ****     }
  54:rethrow.cpp   **** }
  55:rethrow.cpp   **** 
  56:rethrow.cpp   **** void doesnt_throw() throw () {
  57:rethrow.cpp   ****     throw_MyExceptionB("Bar");
  58:rethrow.cpp   **** }
  59:rethrow.cpp   **** 
  60:rethrow.cpp   **** void doRethrow() {
  61:rethrow.cpp   ****     try {
  62:rethrow.cpp   ****         catch_and_rethrow();
  63:rethrow.cpp   ****     } catch (MyExceptionB &e) {
  64:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
  65:rethrow.cpp   ****     }
  66:rethrow.cpp   **** 
  67:rethrow.cpp   ****     try {
  68:rethrow.cpp   ****         catch_and_throw_another();
  69:rethrow.cpp   ****     } catch (MyExceptionB &e) {
  70:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
  71:rethrow.cpp   ****     }
  72:rethrow.cpp   **** 
  73:rethrow.cpp   ****     try {
  74:rethrow.cpp   ****         doesnt_throw();
  75:rethrow.cpp   ****     } catch (MyExceptionB &e) {
  76:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
  77:rethrow.cpp   ****     }
  78:rethrow.cpp   **** }
  88              		.loc 1 78 0
  89              		.cfi_startproc
GAS LISTING /tmp/ccrG9BDx.s 			page 4


  90              	.LVL12:
  91 0043 83FF01   		cmpl	$1, %edi
  92 0046 752E     		jne	.L11
  93              		.loc 1 78 0 discriminator 1
  94 0048 81FEFFFF 		cmpl	$65535, %esi
  94      0000
  95 004e 7526     		jne	.L11
  96              		.loc 1 78 0 is_stmt 0
  97 0050 4883EC08 		subq	$8, %rsp
  98              		.cfi_def_cfa_offset 16
  99              		.file 2 "/usr/include/c++/4.8/iostream"
   1:/usr/include/c++/4.8/iostream **** // Standard iostream objects -*- C++ -*-
   2:/usr/include/c++/4.8/iostream **** 
   3:/usr/include/c++/4.8/iostream **** // Copyright (C) 1997-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/iostream **** //
   5:/usr/include/c++/4.8/iostream **** // This file is part of the GNU ISO C++ Library.  This library is free
   6:/usr/include/c++/4.8/iostream **** // software; you can redistribute it and/or modify it under the
   7:/usr/include/c++/4.8/iostream **** // terms of the GNU General Public License as published by the
   8:/usr/include/c++/4.8/iostream **** // Free Software Foundation; either version 3, or (at your option)
   9:/usr/include/c++/4.8/iostream **** // any later version.
  10:/usr/include/c++/4.8/iostream **** 
  11:/usr/include/c++/4.8/iostream **** // This library is distributed in the hope that it will be useful,
  12:/usr/include/c++/4.8/iostream **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13:/usr/include/c++/4.8/iostream **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14:/usr/include/c++/4.8/iostream **** // GNU General Public License for more details.
  15:/usr/include/c++/4.8/iostream **** 
  16:/usr/include/c++/4.8/iostream **** // Under Section 7 of GPL version 3, you are granted additional
  17:/usr/include/c++/4.8/iostream **** // permissions described in the GCC Runtime Library Exception, version
  18:/usr/include/c++/4.8/iostream **** // 3.1, as published by the Free Software Foundation.
  19:/usr/include/c++/4.8/iostream **** 
  20:/usr/include/c++/4.8/iostream **** // You should have received a copy of the GNU General Public License and
  21:/usr/include/c++/4.8/iostream **** // a copy of the GCC Runtime Library Exception along with this program;
  22:/usr/include/c++/4.8/iostream **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23:/usr/include/c++/4.8/iostream **** // <http://www.gnu.org/licenses/>.
  24:/usr/include/c++/4.8/iostream **** 
  25:/usr/include/c++/4.8/iostream **** /** @file include/iostream
  26:/usr/include/c++/4.8/iostream ****  *  This is a Standard C++ Library header.
  27:/usr/include/c++/4.8/iostream ****  */
  28:/usr/include/c++/4.8/iostream **** 
  29:/usr/include/c++/4.8/iostream **** //
  30:/usr/include/c++/4.8/iostream **** // ISO C++ 14882: 27.3  Standard iostream objects
  31:/usr/include/c++/4.8/iostream **** //
  32:/usr/include/c++/4.8/iostream **** 
  33:/usr/include/c++/4.8/iostream **** #ifndef _GLIBCXX_IOSTREAM
  34:/usr/include/c++/4.8/iostream **** #define _GLIBCXX_IOSTREAM 1
  35:/usr/include/c++/4.8/iostream **** 
  36:/usr/include/c++/4.8/iostream **** #pragma GCC system_header
  37:/usr/include/c++/4.8/iostream **** 
  38:/usr/include/c++/4.8/iostream **** #include <bits/c++config.h>
  39:/usr/include/c++/4.8/iostream **** #include <ostream>
  40:/usr/include/c++/4.8/iostream **** #include <istream>
  41:/usr/include/c++/4.8/iostream **** 
  42:/usr/include/c++/4.8/iostream **** namespace std _GLIBCXX_VISIBILITY(default)
  43:/usr/include/c++/4.8/iostream **** {
  44:/usr/include/c++/4.8/iostream **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  45:/usr/include/c++/4.8/iostream **** 
  46:/usr/include/c++/4.8/iostream ****   /**
GAS LISTING /tmp/ccrG9BDx.s 			page 5


  47:/usr/include/c++/4.8/iostream ****    *  @name Standard Stream Objects
  48:/usr/include/c++/4.8/iostream ****    *
  49:/usr/include/c++/4.8/iostream ****    *  The &lt;iostream> header declares the eight <em>standard stream
  50:/usr/include/c++/4.8/iostream ****    *  objects</em>.  For other declarations, see
  51:/usr/include/c++/4.8/iostream ****    *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch24.html
  52:/usr/include/c++/4.8/iostream ****    *  and the @link iosfwd I/O forward declarations @endlink
  53:/usr/include/c++/4.8/iostream ****    *
  54:/usr/include/c++/4.8/iostream ****    *  They are required by default to cooperate with the global C
  55:/usr/include/c++/4.8/iostream ****    *  library's @c FILE streams, and to be available during program
  56:/usr/include/c++/4.8/iostream ****    *  startup and termination. For more information, see the HOWTO
  57:/usr/include/c++/4.8/iostream ****    *  linked to above.
  58:/usr/include/c++/4.8/iostream ****   */
  59:/usr/include/c++/4.8/iostream ****   //@{
  60:/usr/include/c++/4.8/iostream ****   extern istream cin;		/// Linked to standard input
  61:/usr/include/c++/4.8/iostream ****   extern ostream cout;		/// Linked to standard output
  62:/usr/include/c++/4.8/iostream ****   extern ostream cerr;		/// Linked to standard error (unbuffered)
  63:/usr/include/c++/4.8/iostream ****   extern ostream clog;		/// Linked to standard error (buffered)
  64:/usr/include/c++/4.8/iostream **** 
  65:/usr/include/c++/4.8/iostream **** #ifdef _GLIBCXX_USE_WCHAR_T
  66:/usr/include/c++/4.8/iostream ****   extern wistream wcin;		/// Linked to standard input
  67:/usr/include/c++/4.8/iostream ****   extern wostream wcout;	/// Linked to standard output
  68:/usr/include/c++/4.8/iostream ****   extern wostream wcerr;	/// Linked to standard error (unbuffered)
  69:/usr/include/c++/4.8/iostream ****   extern wostream wclog;	/// Linked to standard error (buffered)
  70:/usr/include/c++/4.8/iostream **** #endif
  71:/usr/include/c++/4.8/iostream ****   //@}
  72:/usr/include/c++/4.8/iostream **** 
  73:/usr/include/c++/4.8/iostream ****   // For construction of filebuffers for cout, cin, cerr, clog et. al.
  74:/usr/include/c++/4.8/iostream ****   static ios_base::Init __ioinit;
 100              		.loc 2 74 0 is_stmt 1
 101 0054 BF000000 		movl	$_ZStL8__ioinit, %edi
 101      00
 102              	.LVL13:
 103 0059 E8000000 		call	_ZNSt8ios_base4InitC1Ev
 103      00
 104              	.LVL14:
 105 005e BA000000 		movl	$__dso_handle, %edx
 105      00
 106 0063 BE000000 		movl	$_ZStL8__ioinit, %esi
 106      00
 107 0068 BF000000 		movl	$_ZNSt8ios_base4InitD1Ev, %edi
 107      00
 108 006d E8000000 		call	__cxa_atexit
 108      00
 109              	.LVL15:
 110              		.loc 1 78 0
 111 0072 4883C408 		addq	$8, %rsp
 112              		.cfi_def_cfa_offset 8
 113              	.L11:
 114 0076 C3       		ret
 115              		.cfi_endproc
 116              	.LFE1426:
 118              		.section	.text._ZNSt9exceptionC2Ev,"axG",@progbits,_ZNSt9exceptionC5Ev,comdat
 119              		.align 2
 120              		.weak	_ZNSt9exceptionC2Ev
 122              	_ZNSt9exceptionC2Ev:
 123              	.LFB1:
 124              		.file 3 "/usr/include/c++/4.8/exception"
GAS LISTING /tmp/ccrG9BDx.s 			page 6


   1:/usr/include/c++/4.8/exception **** // Exception Handling support header for -*- C++ -*-
   2:/usr/include/c++/4.8/exception **** 
   3:/usr/include/c++/4.8/exception **** // Copyright (C) 1995-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/exception **** //
   5:/usr/include/c++/4.8/exception **** // This file is part of GCC.
   6:/usr/include/c++/4.8/exception **** //
   7:/usr/include/c++/4.8/exception **** // GCC is free software; you can redistribute it and/or modify
   8:/usr/include/c++/4.8/exception **** // it under the terms of the GNU General Public License as published by
   9:/usr/include/c++/4.8/exception **** // the Free Software Foundation; either version 3, or (at your option)
  10:/usr/include/c++/4.8/exception **** // any later version.
  11:/usr/include/c++/4.8/exception **** //
  12:/usr/include/c++/4.8/exception **** // GCC is distributed in the hope that it will be useful,
  13:/usr/include/c++/4.8/exception **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  14:/usr/include/c++/4.8/exception **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15:/usr/include/c++/4.8/exception **** // GNU General Public License for more details.
  16:/usr/include/c++/4.8/exception **** //
  17:/usr/include/c++/4.8/exception **** // Under Section 7 of GPL version 3, you are granted additional
  18:/usr/include/c++/4.8/exception **** // permissions described in the GCC Runtime Library Exception, version
  19:/usr/include/c++/4.8/exception **** // 3.1, as published by the Free Software Foundation.
  20:/usr/include/c++/4.8/exception **** 
  21:/usr/include/c++/4.8/exception **** // You should have received a copy of the GNU General Public License and
  22:/usr/include/c++/4.8/exception **** // a copy of the GCC Runtime Library Exception along with this program;
  23:/usr/include/c++/4.8/exception **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  24:/usr/include/c++/4.8/exception **** // <http://www.gnu.org/licenses/>.
  25:/usr/include/c++/4.8/exception **** 
  26:/usr/include/c++/4.8/exception **** /** @file exception
  27:/usr/include/c++/4.8/exception ****  *  This is a Standard C++ Library header.
  28:/usr/include/c++/4.8/exception ****  */
  29:/usr/include/c++/4.8/exception **** 
  30:/usr/include/c++/4.8/exception **** #ifndef __EXCEPTION__
  31:/usr/include/c++/4.8/exception **** #define __EXCEPTION__
  32:/usr/include/c++/4.8/exception **** 
  33:/usr/include/c++/4.8/exception **** #pragma GCC system_header
  34:/usr/include/c++/4.8/exception **** 
  35:/usr/include/c++/4.8/exception **** #pragma GCC visibility push(default)
  36:/usr/include/c++/4.8/exception **** 
  37:/usr/include/c++/4.8/exception **** #include <bits/c++config.h>
  38:/usr/include/c++/4.8/exception **** #include <bits/atomic_lockfree_defines.h>
  39:/usr/include/c++/4.8/exception **** 
  40:/usr/include/c++/4.8/exception **** extern "C++" {
  41:/usr/include/c++/4.8/exception **** 
  42:/usr/include/c++/4.8/exception **** namespace std
  43:/usr/include/c++/4.8/exception **** {
  44:/usr/include/c++/4.8/exception ****   /**
  45:/usr/include/c++/4.8/exception ****    * @defgroup exceptions Exceptions
  46:/usr/include/c++/4.8/exception ****    * @ingroup diagnostics
  47:/usr/include/c++/4.8/exception ****    *
  48:/usr/include/c++/4.8/exception ****    * Classes and functions for reporting errors via exception classes.
  49:/usr/include/c++/4.8/exception ****    * @{
  50:/usr/include/c++/4.8/exception ****    */
  51:/usr/include/c++/4.8/exception **** 
  52:/usr/include/c++/4.8/exception ****   /**
  53:/usr/include/c++/4.8/exception ****    *  @brief Base class for all library exceptions.
  54:/usr/include/c++/4.8/exception ****    *
  55:/usr/include/c++/4.8/exception ****    *  This is the base class for all exceptions thrown by the standard
  56:/usr/include/c++/4.8/exception ****    *  library, and by certain language expressions.  You are free to derive
  57:/usr/include/c++/4.8/exception ****    *  your own %exception classes, or use a different hierarchy, or to
GAS LISTING /tmp/ccrG9BDx.s 			page 7


  58:/usr/include/c++/4.8/exception ****    *  throw non-class data (e.g., fundamental types).
  59:/usr/include/c++/4.8/exception ****    */
  60:/usr/include/c++/4.8/exception ****   class exception
  61:/usr/include/c++/4.8/exception ****   {
  62:/usr/include/c++/4.8/exception ****   public:
  63:/usr/include/c++/4.8/exception ****     exception() _GLIBCXX_USE_NOEXCEPT { }
 125              		.loc 3 63 0
 126              		.cfi_startproc
 127              	.LVL16:
 128              	.LBB3:
 129              		.loc 3 63 0
 130 0000 48C70700 		movq	$_ZTVSt9exception+16, (%rdi)
 130      000000
 131 0007 C3       		ret
 132              	.LBE3:
 133              		.cfi_endproc
 134              	.LFE1:
 136              		.weak	_ZNSt9exceptionC1Ev
 137              		.set	_ZNSt9exceptionC1Ev,_ZNSt9exceptionC2Ev
 138              		.section	.text._ZNSt11char_traitsIcE6lengthEPKc,"axG",@progbits,_ZNSt11char_traitsIcE6lengthEPKc,c
 139              		.weak	_ZNSt11char_traitsIcE6lengthEPKc
 141              	_ZNSt11char_traitsIcE6lengthEPKc:
 142              	.LFB299:
 143              		.file 4 "/usr/include/c++/4.8/bits/char_traits.h"
   1:/usr/include/c++/4.8/bits/char_traits.h **** // Character Traits for use by standard string and iostream -*- C++ -*-
   2:/usr/include/c++/4.8/bits/char_traits.h **** 
   3:/usr/include/c++/4.8/bits/char_traits.h **** // Copyright (C) 1997-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/bits/char_traits.h **** //
   5:/usr/include/c++/4.8/bits/char_traits.h **** // This file is part of the GNU ISO C++ Library.  This library is free
   6:/usr/include/c++/4.8/bits/char_traits.h **** // software; you can redistribute it and/or modify it under the
   7:/usr/include/c++/4.8/bits/char_traits.h **** // terms of the GNU General Public License as published by the
   8:/usr/include/c++/4.8/bits/char_traits.h **** // Free Software Foundation; either version 3, or (at your option)
   9:/usr/include/c++/4.8/bits/char_traits.h **** // any later version.
  10:/usr/include/c++/4.8/bits/char_traits.h **** 
  11:/usr/include/c++/4.8/bits/char_traits.h **** // This library is distributed in the hope that it will be useful,
  12:/usr/include/c++/4.8/bits/char_traits.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13:/usr/include/c++/4.8/bits/char_traits.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14:/usr/include/c++/4.8/bits/char_traits.h **** // GNU General Public License for more details.
  15:/usr/include/c++/4.8/bits/char_traits.h **** 
  16:/usr/include/c++/4.8/bits/char_traits.h **** // Under Section 7 of GPL version 3, you are granted additional
  17:/usr/include/c++/4.8/bits/char_traits.h **** // permissions described in the GCC Runtime Library Exception, version
  18:/usr/include/c++/4.8/bits/char_traits.h **** // 3.1, as published by the Free Software Foundation.
  19:/usr/include/c++/4.8/bits/char_traits.h **** 
  20:/usr/include/c++/4.8/bits/char_traits.h **** // You should have received a copy of the GNU General Public License and
  21:/usr/include/c++/4.8/bits/char_traits.h **** // a copy of the GCC Runtime Library Exception along with this program;
  22:/usr/include/c++/4.8/bits/char_traits.h **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23:/usr/include/c++/4.8/bits/char_traits.h **** // <http://www.gnu.org/licenses/>.
  24:/usr/include/c++/4.8/bits/char_traits.h **** 
  25:/usr/include/c++/4.8/bits/char_traits.h **** /** @file bits/char_traits.h
  26:/usr/include/c++/4.8/bits/char_traits.h ****  *  This is an internal header file, included by other library headers.
  27:/usr/include/c++/4.8/bits/char_traits.h ****  *  Do not attempt to use it directly. @headername{string}
  28:/usr/include/c++/4.8/bits/char_traits.h ****  */
  29:/usr/include/c++/4.8/bits/char_traits.h **** 
  30:/usr/include/c++/4.8/bits/char_traits.h **** //
  31:/usr/include/c++/4.8/bits/char_traits.h **** // ISO C++ 14882: 21  Strings library
  32:/usr/include/c++/4.8/bits/char_traits.h **** //
  33:/usr/include/c++/4.8/bits/char_traits.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 8


  34:/usr/include/c++/4.8/bits/char_traits.h **** #ifndef _CHAR_TRAITS_H
  35:/usr/include/c++/4.8/bits/char_traits.h **** #define _CHAR_TRAITS_H 1
  36:/usr/include/c++/4.8/bits/char_traits.h **** 
  37:/usr/include/c++/4.8/bits/char_traits.h **** #pragma GCC system_header
  38:/usr/include/c++/4.8/bits/char_traits.h **** 
  39:/usr/include/c++/4.8/bits/char_traits.h **** #include <bits/stl_algobase.h>  // std::copy, std::fill_n
  40:/usr/include/c++/4.8/bits/char_traits.h **** #include <bits/postypes.h>      // For streampos
  41:/usr/include/c++/4.8/bits/char_traits.h **** #include <cwchar>               // For WEOF, wmemmove, wmemset, etc.
  42:/usr/include/c++/4.8/bits/char_traits.h **** 
  43:/usr/include/c++/4.8/bits/char_traits.h **** namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
  44:/usr/include/c++/4.8/bits/char_traits.h **** {
  45:/usr/include/c++/4.8/bits/char_traits.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  46:/usr/include/c++/4.8/bits/char_traits.h **** 
  47:/usr/include/c++/4.8/bits/char_traits.h ****   /**
  48:/usr/include/c++/4.8/bits/char_traits.h ****    *  @brief  Mapping from character type to associated types.
  49:/usr/include/c++/4.8/bits/char_traits.h ****    *
  50:/usr/include/c++/4.8/bits/char_traits.h ****    *  @note This is an implementation class for the generic version
  51:/usr/include/c++/4.8/bits/char_traits.h ****    *  of char_traits.  It defines int_type, off_type, pos_type, and
  52:/usr/include/c++/4.8/bits/char_traits.h ****    *  state_type.  By default these are unsigned long, streamoff,
  53:/usr/include/c++/4.8/bits/char_traits.h ****    *  streampos, and mbstate_t.  Users who need a different set of
  54:/usr/include/c++/4.8/bits/char_traits.h ****    *  types, but who don't need to change the definitions of any function
  55:/usr/include/c++/4.8/bits/char_traits.h ****    *  defined in char_traits, can specialize __gnu_cxx::_Char_types
  56:/usr/include/c++/4.8/bits/char_traits.h ****    *  while leaving __gnu_cxx::char_traits alone. */
  57:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
  58:/usr/include/c++/4.8/bits/char_traits.h ****     struct _Char_types
  59:/usr/include/c++/4.8/bits/char_traits.h ****     {
  60:/usr/include/c++/4.8/bits/char_traits.h ****       typedef unsigned long   int_type;
  61:/usr/include/c++/4.8/bits/char_traits.h ****       typedef std::streampos  pos_type;
  62:/usr/include/c++/4.8/bits/char_traits.h ****       typedef std::streamoff  off_type;
  63:/usr/include/c++/4.8/bits/char_traits.h ****       typedef std::mbstate_t  state_type;
  64:/usr/include/c++/4.8/bits/char_traits.h ****     };
  65:/usr/include/c++/4.8/bits/char_traits.h **** 
  66:/usr/include/c++/4.8/bits/char_traits.h **** 
  67:/usr/include/c++/4.8/bits/char_traits.h ****   /**
  68:/usr/include/c++/4.8/bits/char_traits.h ****    *  @brief  Base class used to implement std::char_traits.
  69:/usr/include/c++/4.8/bits/char_traits.h ****    *
  70:/usr/include/c++/4.8/bits/char_traits.h ****    *  @note For any given actual character type, this definition is
  71:/usr/include/c++/4.8/bits/char_traits.h ****    *  probably wrong.  (Most of the member functions are likely to be
  72:/usr/include/c++/4.8/bits/char_traits.h ****    *  right, but the int_type and state_type typedefs, and the eof()
  73:/usr/include/c++/4.8/bits/char_traits.h ****    *  member function, are likely to be wrong.)  The reason this class
  74:/usr/include/c++/4.8/bits/char_traits.h ****    *  exists is so users can specialize it.  Classes in namespace std
  75:/usr/include/c++/4.8/bits/char_traits.h ****    *  may not be specialized for fundamental types, but classes in
  76:/usr/include/c++/4.8/bits/char_traits.h ****    *  namespace __gnu_cxx may be.
  77:/usr/include/c++/4.8/bits/char_traits.h ****    *
  78:/usr/include/c++/4.8/bits/char_traits.h ****    *  See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt05ch13s03.html
  79:/usr/include/c++/4.8/bits/char_traits.h ****    *  for advice on how to make use of this class for @a unusual character
  80:/usr/include/c++/4.8/bits/char_traits.h ****    *  types. Also, check out include/ext/pod_char_traits.h.  
  81:/usr/include/c++/4.8/bits/char_traits.h ****    */
  82:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
  83:/usr/include/c++/4.8/bits/char_traits.h ****     struct char_traits
  84:/usr/include/c++/4.8/bits/char_traits.h ****     {
  85:/usr/include/c++/4.8/bits/char_traits.h ****       typedef _CharT                                    char_type;
  86:/usr/include/c++/4.8/bits/char_traits.h ****       typedef typename _Char_types<_CharT>::int_type    int_type;
  87:/usr/include/c++/4.8/bits/char_traits.h ****       typedef typename _Char_types<_CharT>::pos_type    pos_type;
  88:/usr/include/c++/4.8/bits/char_traits.h ****       typedef typename _Char_types<_CharT>::off_type    off_type;
  89:/usr/include/c++/4.8/bits/char_traits.h ****       typedef typename _Char_types<_CharT>::state_type  state_type;
  90:/usr/include/c++/4.8/bits/char_traits.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 9


  91:/usr/include/c++/4.8/bits/char_traits.h ****       static void
  92:/usr/include/c++/4.8/bits/char_traits.h ****       assign(char_type& __c1, const char_type& __c2)
  93:/usr/include/c++/4.8/bits/char_traits.h ****       { __c1 = __c2; }
  94:/usr/include/c++/4.8/bits/char_traits.h **** 
  95:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR bool
  96:/usr/include/c++/4.8/bits/char_traits.h ****       eq(const char_type& __c1, const char_type& __c2)
  97:/usr/include/c++/4.8/bits/char_traits.h ****       { return __c1 == __c2; }
  98:/usr/include/c++/4.8/bits/char_traits.h **** 
  99:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR bool
 100:/usr/include/c++/4.8/bits/char_traits.h ****       lt(const char_type& __c1, const char_type& __c2)
 101:/usr/include/c++/4.8/bits/char_traits.h ****       { return __c1 < __c2; }
 102:/usr/include/c++/4.8/bits/char_traits.h **** 
 103:/usr/include/c++/4.8/bits/char_traits.h ****       static int
 104:/usr/include/c++/4.8/bits/char_traits.h ****       compare(const char_type* __s1, const char_type* __s2, std::size_t __n);
 105:/usr/include/c++/4.8/bits/char_traits.h **** 
 106:/usr/include/c++/4.8/bits/char_traits.h ****       static std::size_t
 107:/usr/include/c++/4.8/bits/char_traits.h ****       length(const char_type* __s);
 108:/usr/include/c++/4.8/bits/char_traits.h **** 
 109:/usr/include/c++/4.8/bits/char_traits.h ****       static const char_type*
 110:/usr/include/c++/4.8/bits/char_traits.h ****       find(const char_type* __s, std::size_t __n, const char_type& __a);
 111:/usr/include/c++/4.8/bits/char_traits.h **** 
 112:/usr/include/c++/4.8/bits/char_traits.h ****       static char_type*
 113:/usr/include/c++/4.8/bits/char_traits.h ****       move(char_type* __s1, const char_type* __s2, std::size_t __n);
 114:/usr/include/c++/4.8/bits/char_traits.h **** 
 115:/usr/include/c++/4.8/bits/char_traits.h ****       static char_type*
 116:/usr/include/c++/4.8/bits/char_traits.h ****       copy(char_type* __s1, const char_type* __s2, std::size_t __n);
 117:/usr/include/c++/4.8/bits/char_traits.h **** 
 118:/usr/include/c++/4.8/bits/char_traits.h ****       static char_type*
 119:/usr/include/c++/4.8/bits/char_traits.h ****       assign(char_type* __s, std::size_t __n, char_type __a);
 120:/usr/include/c++/4.8/bits/char_traits.h **** 
 121:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR char_type
 122:/usr/include/c++/4.8/bits/char_traits.h ****       to_char_type(const int_type& __c)
 123:/usr/include/c++/4.8/bits/char_traits.h ****       { return static_cast<char_type>(__c); }
 124:/usr/include/c++/4.8/bits/char_traits.h **** 
 125:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR int_type
 126:/usr/include/c++/4.8/bits/char_traits.h ****       to_int_type(const char_type& __c)
 127:/usr/include/c++/4.8/bits/char_traits.h ****       { return static_cast<int_type>(__c); }
 128:/usr/include/c++/4.8/bits/char_traits.h **** 
 129:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR bool
 130:/usr/include/c++/4.8/bits/char_traits.h ****       eq_int_type(const int_type& __c1, const int_type& __c2)
 131:/usr/include/c++/4.8/bits/char_traits.h ****       { return __c1 == __c2; }
 132:/usr/include/c++/4.8/bits/char_traits.h **** 
 133:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR int_type
 134:/usr/include/c++/4.8/bits/char_traits.h ****       eof()
 135:/usr/include/c++/4.8/bits/char_traits.h ****       { return static_cast<int_type>(_GLIBCXX_STDIO_EOF); }
 136:/usr/include/c++/4.8/bits/char_traits.h **** 
 137:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR int_type
 138:/usr/include/c++/4.8/bits/char_traits.h ****       not_eof(const int_type& __c)
 139:/usr/include/c++/4.8/bits/char_traits.h ****       { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
 140:/usr/include/c++/4.8/bits/char_traits.h ****     };
 141:/usr/include/c++/4.8/bits/char_traits.h **** 
 142:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 143:/usr/include/c++/4.8/bits/char_traits.h ****     int
 144:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 145:/usr/include/c++/4.8/bits/char_traits.h ****     compare(const char_type* __s1, const char_type* __s2, std::size_t __n)
 146:/usr/include/c++/4.8/bits/char_traits.h ****     {
 147:/usr/include/c++/4.8/bits/char_traits.h ****       for (std::size_t __i = 0; __i < __n; ++__i)
GAS LISTING /tmp/ccrG9BDx.s 			page 10


 148:/usr/include/c++/4.8/bits/char_traits.h **** 	if (lt(__s1[__i], __s2[__i]))
 149:/usr/include/c++/4.8/bits/char_traits.h **** 	  return -1;
 150:/usr/include/c++/4.8/bits/char_traits.h **** 	else if (lt(__s2[__i], __s1[__i]))
 151:/usr/include/c++/4.8/bits/char_traits.h **** 	  return 1;
 152:/usr/include/c++/4.8/bits/char_traits.h ****       return 0;
 153:/usr/include/c++/4.8/bits/char_traits.h ****     }
 154:/usr/include/c++/4.8/bits/char_traits.h **** 
 155:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 156:/usr/include/c++/4.8/bits/char_traits.h ****     std::size_t
 157:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 158:/usr/include/c++/4.8/bits/char_traits.h ****     length(const char_type* __p)
 159:/usr/include/c++/4.8/bits/char_traits.h ****     {
 160:/usr/include/c++/4.8/bits/char_traits.h ****       std::size_t __i = 0;
 161:/usr/include/c++/4.8/bits/char_traits.h ****       while (!eq(__p[__i], char_type()))
 162:/usr/include/c++/4.8/bits/char_traits.h ****         ++__i;
 163:/usr/include/c++/4.8/bits/char_traits.h ****       return __i;
 164:/usr/include/c++/4.8/bits/char_traits.h ****     }
 165:/usr/include/c++/4.8/bits/char_traits.h **** 
 166:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 167:/usr/include/c++/4.8/bits/char_traits.h ****     const typename char_traits<_CharT>::char_type*
 168:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 169:/usr/include/c++/4.8/bits/char_traits.h ****     find(const char_type* __s, std::size_t __n, const char_type& __a)
 170:/usr/include/c++/4.8/bits/char_traits.h ****     {
 171:/usr/include/c++/4.8/bits/char_traits.h ****       for (std::size_t __i = 0; __i < __n; ++__i)
 172:/usr/include/c++/4.8/bits/char_traits.h ****         if (eq(__s[__i], __a))
 173:/usr/include/c++/4.8/bits/char_traits.h ****           return __s + __i;
 174:/usr/include/c++/4.8/bits/char_traits.h ****       return 0;
 175:/usr/include/c++/4.8/bits/char_traits.h ****     }
 176:/usr/include/c++/4.8/bits/char_traits.h **** 
 177:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 178:/usr/include/c++/4.8/bits/char_traits.h ****     typename char_traits<_CharT>::char_type*
 179:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 180:/usr/include/c++/4.8/bits/char_traits.h ****     move(char_type* __s1, const char_type* __s2, std::size_t __n)
 181:/usr/include/c++/4.8/bits/char_traits.h ****     {
 182:/usr/include/c++/4.8/bits/char_traits.h ****       return static_cast<_CharT*>(__builtin_memmove(__s1, __s2,
 183:/usr/include/c++/4.8/bits/char_traits.h **** 						    __n * sizeof(char_type)));
 184:/usr/include/c++/4.8/bits/char_traits.h ****     }
 185:/usr/include/c++/4.8/bits/char_traits.h **** 
 186:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 187:/usr/include/c++/4.8/bits/char_traits.h ****     typename char_traits<_CharT>::char_type*
 188:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 189:/usr/include/c++/4.8/bits/char_traits.h ****     copy(char_type* __s1, const char_type* __s2, std::size_t __n)
 190:/usr/include/c++/4.8/bits/char_traits.h ****     {
 191:/usr/include/c++/4.8/bits/char_traits.h ****       // NB: Inline std::copy so no recursive dependencies.
 192:/usr/include/c++/4.8/bits/char_traits.h ****       std::copy(__s2, __s2 + __n, __s1);
 193:/usr/include/c++/4.8/bits/char_traits.h ****       return __s1;
 194:/usr/include/c++/4.8/bits/char_traits.h ****     }
 195:/usr/include/c++/4.8/bits/char_traits.h **** 
 196:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 197:/usr/include/c++/4.8/bits/char_traits.h ****     typename char_traits<_CharT>::char_type*
 198:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 199:/usr/include/c++/4.8/bits/char_traits.h ****     assign(char_type* __s, std::size_t __n, char_type __a)
 200:/usr/include/c++/4.8/bits/char_traits.h ****     {
 201:/usr/include/c++/4.8/bits/char_traits.h ****       // NB: Inline std::fill_n so no recursive dependencies.
 202:/usr/include/c++/4.8/bits/char_traits.h ****       std::fill_n(__s, __n, __a);
 203:/usr/include/c++/4.8/bits/char_traits.h ****       return __s;
 204:/usr/include/c++/4.8/bits/char_traits.h ****     }
GAS LISTING /tmp/ccrG9BDx.s 			page 11


 205:/usr/include/c++/4.8/bits/char_traits.h **** 
 206:/usr/include/c++/4.8/bits/char_traits.h **** _GLIBCXX_END_NAMESPACE_VERSION
 207:/usr/include/c++/4.8/bits/char_traits.h **** } // namespace
 208:/usr/include/c++/4.8/bits/char_traits.h **** 
 209:/usr/include/c++/4.8/bits/char_traits.h **** namespace std _GLIBCXX_VISIBILITY(default)
 210:/usr/include/c++/4.8/bits/char_traits.h **** {
 211:/usr/include/c++/4.8/bits/char_traits.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
 212:/usr/include/c++/4.8/bits/char_traits.h **** 
 213:/usr/include/c++/4.8/bits/char_traits.h ****   // 21.1
 214:/usr/include/c++/4.8/bits/char_traits.h ****   /**
 215:/usr/include/c++/4.8/bits/char_traits.h ****    *  @brief  Basis for explicit traits specializations.
 216:/usr/include/c++/4.8/bits/char_traits.h ****    *
 217:/usr/include/c++/4.8/bits/char_traits.h ****    *  @note  For any given actual character type, this definition is
 218:/usr/include/c++/4.8/bits/char_traits.h ****    *  probably wrong.  Since this is just a thin wrapper around
 219:/usr/include/c++/4.8/bits/char_traits.h ****    *  __gnu_cxx::char_traits, it is possible to achieve a more
 220:/usr/include/c++/4.8/bits/char_traits.h ****    *  appropriate definition by specializing __gnu_cxx::char_traits.
 221:/usr/include/c++/4.8/bits/char_traits.h ****    *
 222:/usr/include/c++/4.8/bits/char_traits.h ****    *  See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt05ch13s03.html
 223:/usr/include/c++/4.8/bits/char_traits.h ****    *  for advice on how to make use of this class for @a unusual character
 224:/usr/include/c++/4.8/bits/char_traits.h ****    *  types. Also, check out include/ext/pod_char_traits.h.
 225:/usr/include/c++/4.8/bits/char_traits.h ****   */
 226:/usr/include/c++/4.8/bits/char_traits.h ****   template<class _CharT>
 227:/usr/include/c++/4.8/bits/char_traits.h ****     struct char_traits : public __gnu_cxx::char_traits<_CharT>
 228:/usr/include/c++/4.8/bits/char_traits.h ****     { };
 229:/usr/include/c++/4.8/bits/char_traits.h **** 
 230:/usr/include/c++/4.8/bits/char_traits.h **** 
 231:/usr/include/c++/4.8/bits/char_traits.h ****   /// 21.1.3.1  char_traits specializations
 232:/usr/include/c++/4.8/bits/char_traits.h ****   template<>
 233:/usr/include/c++/4.8/bits/char_traits.h ****     struct char_traits<char>
 234:/usr/include/c++/4.8/bits/char_traits.h ****     {
 235:/usr/include/c++/4.8/bits/char_traits.h ****       typedef char              char_type;
 236:/usr/include/c++/4.8/bits/char_traits.h ****       typedef int               int_type;
 237:/usr/include/c++/4.8/bits/char_traits.h ****       typedef streampos         pos_type;
 238:/usr/include/c++/4.8/bits/char_traits.h ****       typedef streamoff         off_type;
 239:/usr/include/c++/4.8/bits/char_traits.h ****       typedef mbstate_t         state_type;
 240:/usr/include/c++/4.8/bits/char_traits.h **** 
 241:/usr/include/c++/4.8/bits/char_traits.h ****       static void
 242:/usr/include/c++/4.8/bits/char_traits.h ****       assign(char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT
 243:/usr/include/c++/4.8/bits/char_traits.h ****       { __c1 = __c2; }
 244:/usr/include/c++/4.8/bits/char_traits.h **** 
 245:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR bool
 246:/usr/include/c++/4.8/bits/char_traits.h ****       eq(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT
 247:/usr/include/c++/4.8/bits/char_traits.h ****       { return __c1 == __c2; }
 248:/usr/include/c++/4.8/bits/char_traits.h **** 
 249:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR bool
 250:/usr/include/c++/4.8/bits/char_traits.h ****       lt(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT
 251:/usr/include/c++/4.8/bits/char_traits.h ****       { return __c1 < __c2; }
 252:/usr/include/c++/4.8/bits/char_traits.h **** 
 253:/usr/include/c++/4.8/bits/char_traits.h ****       static int
 254:/usr/include/c++/4.8/bits/char_traits.h ****       compare(const char_type* __s1, const char_type* __s2, size_t __n)
 255:/usr/include/c++/4.8/bits/char_traits.h ****       { return __builtin_memcmp(__s1, __s2, __n); }
 256:/usr/include/c++/4.8/bits/char_traits.h **** 
 257:/usr/include/c++/4.8/bits/char_traits.h ****       static size_t
 258:/usr/include/c++/4.8/bits/char_traits.h ****       length(const char_type* __s)
 144              		.loc 4 258 0
 145              		.cfi_startproc
 146              	.LVL17:
GAS LISTING /tmp/ccrG9BDx.s 			page 12


 259:/usr/include/c++/4.8/bits/char_traits.h ****       { return __builtin_strlen(__s); }
 147              		.loc 4 259 0
 148 0000 B8000000 		movl	$0, %eax
 148      00
 149 0005 48C7C1FF 		movq	$-1, %rcx
 149      FFFFFF
 150 000c F2AE     		repnz scasb
 151              	.LVL18:
 152 000e 48F7D1   		notq	%rcx
 153 0011 488D41FF 		leaq	-1(%rcx), %rax
 154 0015 C3       		ret
 155              		.cfi_endproc
 156              	.LFE299:
 158              		.text
 159 0077 90       		.align 2
 160              		.globl	_ZN12MyExceptionBC2ESs
 162              	_ZN12MyExceptionBC2ESs:
 163              	.LFB1244:
  18:rethrow.cpp   ****     _what(what)
 164              		.loc 1 18 0
 165              		.cfi_startproc
 166              		.cfi_personality 0x3,__gxx_personality_v0
 167              		.cfi_lsda 0x3,.LLSDA1244
 168              	.LVL19:
 169 0078 4154     		pushq	%r12
 170              		.cfi_def_cfa_offset 16
 171              		.cfi_offset 12, -16
 172 007a 55       		pushq	%rbp
 173              		.cfi_def_cfa_offset 24
 174              		.cfi_offset 6, -24
 175 007b 53       		pushq	%rbx
 176              		.cfi_def_cfa_offset 32
 177              		.cfi_offset 3, -32
 178 007c 4889FB   		movq	%rdi, %rbx
 179 007f 4889F5   		movq	%rsi, %rbp
 180              	.LBB4:
  19:rethrow.cpp   **** {}
 181              		.loc 1 19 0
 182 0082 E8000000 		call	_ZNSt9exceptionC2Ev
 182      00
 183              	.LVL20:
 184 0087 48C70300 		movq	$_ZTV12MyExceptionB+16, (%rbx)
 184      000000
 185 008e 488D7B08 		leaq	8(%rbx), %rdi
 186 0092 4889EE   		movq	%rbp, %rsi
 187              	.LEHB0:
 188 0095 E8000000 		call	_ZNSsC1ERKSs
 188      00
 189              	.LEHE0:
 190              	.LVL21:
 191 009a EB24     		jmp	.L18
 192              	.L17:
 193 009c 4889C5   		movq	%rax, %rbp
 194              	.LVL22:
 195 009f 4989D4   		movq	%rdx, %r12
 196 00a2 4889DF   		movq	%rbx, %rdi
 197 00a5 E8000000 		call	_ZNSt9exceptionD2Ev
GAS LISTING /tmp/ccrG9BDx.s 			page 13


 197      00
 198              	.LVL23:
 199 00aa 4983FCFF 		cmpq	$-1, %r12
 200 00ae 7408     		je	.L16
 201 00b0 4889EF   		movq	%rbp, %rdi
 202              	.LEHB1:
 203 00b3 E8000000 		call	_Unwind_Resume
 203      00
 204              	.LVL24:
 205              	.L16:
 206              	.LBE4:
  18:rethrow.cpp   ****     _what(what)
 207              		.loc 1 18 0
 208 00b8 4889EF   		movq	%rbp, %rdi
 209 00bb E8000000 		call	__cxa_call_unexpected
 209      00
 210              	.LEHE1:
 211              	.LVL25:
 212              	.L18:
  20:rethrow.cpp   **** 
 213              		.loc 1 20 0
 214 00c0 5B       		popq	%rbx
 215              		.cfi_def_cfa_offset 24
 216              	.LVL26:
 217 00c1 5D       		popq	%rbp
 218              		.cfi_def_cfa_offset 16
 219              	.LVL27:
 220 00c2 415C     		popq	%r12
 221              		.cfi_def_cfa_offset 8
 222 00c4 C3       		ret
 223              		.cfi_endproc
 224              	.LFE1244:
 225              		.globl	__gxx_personality_v0
 226              		.section	.gcc_except_table,"a",@progbits
 227              		.align 4
 228              	.LLSDA1244:
 229 0000 FF       		.byte	0xff
 230 0001 03       		.byte	0x3
 231 0002 11       		.uleb128 .LLSDATT1244-.LLSDATTD1244
 232              	.LLSDATTD1244:
 233 0003 01       		.byte	0x1
 234 0004 08       		.uleb128 .LLSDACSE1244-.LLSDACSB1244
 235              	.LLSDACSB1244:
 236 0005 1D       		.uleb128 .LEHB0-.LFB1244
 237 0006 05       		.uleb128 .LEHE0-.LEHB0
 238 0007 24       		.uleb128 .L17-.LFB1244
 239 0008 03       		.uleb128 0x3
 240 0009 3B       		.uleb128 .LEHB1-.LFB1244
 241 000a 0D       		.uleb128 .LEHE1-.LEHB1
 242 000b 00       		.uleb128 0
 243 000c 00       		.uleb128 0
 244              	.LLSDACSE1244:
 245 000d 7F       		.byte	0x7f
 246 000e 00       		.byte	0
 247 000f 00       		.byte	0
 248 0010 7D       		.byte	0x7d
 249 0011 000000   		.align 4
GAS LISTING /tmp/ccrG9BDx.s 			page 14


 250              	.LLSDATT1244:
 251 0014 00       		.byte	0
 252              		.text
 254              		.globl	_ZN12MyExceptionBC1ESs
 255              		.set	_ZN12MyExceptionBC1ESs,_ZN12MyExceptionBC2ESs
 256              		.globl	_Z18throw_MyExceptionBSs
 258              	_Z18throw_MyExceptionBSs:
 259              	.LFB1252:
  34:rethrow.cpp   ****     throw MyExceptionB(message);
 260              		.loc 1 34 0
 261              		.cfi_startproc
 262              		.cfi_personality 0x3,__gxx_personality_v0
 263              		.cfi_lsda 0x3,.LLSDA1252
 264              	.LVL28:
 265 00c5 4154     		pushq	%r12
 266              		.cfi_def_cfa_offset 16
 267              		.cfi_offset 12, -16
 268 00c7 55       		pushq	%rbp
 269              		.cfi_def_cfa_offset 24
 270              		.cfi_offset 6, -24
 271 00c8 53       		pushq	%rbx
 272              		.cfi_def_cfa_offset 32
 273              		.cfi_offset 3, -32
 274 00c9 4883EC10 		subq	$16, %rsp
 275              		.cfi_def_cfa_offset 48
 276 00cd 4889FD   		movq	%rdi, %rbp
  35:rethrow.cpp   **** }
 277              		.loc 1 35 0
 278 00d0 BF100000 		movl	$16, %edi
 278      00
 279              	.LVL29:
 280 00d5 E8000000 		call	__cxa_allocate_exception
 280      00
 281              	.LVL30:
 282 00da 4889C3   		movq	%rax, %rbx
 283 00dd 4889EE   		movq	%rbp, %rsi
 284 00e0 4889E7   		movq	%rsp, %rdi
 285              	.LEHB2:
 286 00e3 E8000000 		call	_ZNSsC1ERKSs
 286      00
 287              	.LEHE2:
 288              	.LVL31:
  35:rethrow.cpp   **** }
 289              		.loc 1 35 0 is_stmt 0 discriminator 1
 290 00e8 4889E6   		movq	%rsp, %rsi
 291 00eb 4889DF   		movq	%rbx, %rdi
 292 00ee E8000000 		call	_ZN12MyExceptionBC1ESs
 292      00
 293              	.LVL32:
 294 00f3 4889E7   		movq	%rsp, %rdi
 295 00f6 E8000000 		call	_ZNSsD1Ev
 295      00
 296              	.LVL33:
 297 00fb BA000000 		movl	$_ZN12MyExceptionBD1Ev, %edx
 297      00
 298 0100 BE000000 		movl	$_ZTI12MyExceptionB, %esi
 298      00
GAS LISTING /tmp/ccrG9BDx.s 			page 15


 299 0105 4889DF   		movq	%rbx, %rdi
 300              	.LEHB3:
 301 0108 E8000000 		call	__cxa_throw
 301      00
 302              	.LEHE3:
 303              	.LVL34:
 304              	.L24:
 305 010d 4989C4   		movq	%rax, %r12
 306 0110 4889D5   		movq	%rdx, %rbp
 307              	.LVL35:
  35:rethrow.cpp   **** }
 308              		.loc 1 35 0
 309 0113 4889DF   		movq	%rbx, %rdi
 310 0116 E8000000 		call	__cxa_free_exception
 310      00
 311              	.LVL36:
 312 011b 4C89E7   		movq	%r12, %rdi
 313 011e 4889EA   		movq	%rbp, %rdx
 314 0121 EB03     		jmp	.L22
 315              	.LVL37:
 316              	.L25:
 317 0123 4889C7   		movq	%rax, %rdi
 318              	.LVL38:
 319              	.L22:
 320 0126 4883FAFF 		cmpq	$-1, %rdx
 321 012a 7405     		je	.L23
 322              	.LEHB4:
 323 012c E8000000 		call	_Unwind_Resume
 323      00
 324              	.LVL39:
 325              	.L23:
  34:rethrow.cpp   ****     throw MyExceptionB(message);
 326              		.loc 1 34 0 is_stmt 1
 327 0131 E8000000 		call	__cxa_call_unexpected
 327      00
 328              	.LEHE4:
 329              	.LVL40:
 330              		.cfi_endproc
 331              	.LFE1252:
 332              		.section	.gcc_except_table
 333 0015 000000   		.align 4
 334              	.LLSDA1252:
 335 0018 FF       		.byte	0xff
 336 0019 03       		.byte	0x3
 337 001a 19       		.uleb128 .LLSDATT1252-.LLSDATTD1252
 338              	.LLSDATTD1252:
 339 001b 01       		.byte	0x1
 340 001c 0C       		.uleb128 .LLSDACSE1252-.LLSDACSB1252
 341              	.LLSDACSB1252:
 342 001d 1E       		.uleb128 .LEHB2-.LFB1252
 343 001e 05       		.uleb128 .LEHE2-.LEHB2
 344 001f 48       		.uleb128 .L24-.LFB1252
 345 0020 03       		.uleb128 0x3
 346 0021 43       		.uleb128 .LEHB3-.LFB1252
 347 0022 05       		.uleb128 .LEHE3-.LEHB3
 348 0023 5E       		.uleb128 .L25-.LFB1252
 349 0024 01       		.uleb128 0x1
GAS LISTING /tmp/ccrG9BDx.s 			page 16


 350 0025 67       		.uleb128 .LEHB4-.LFB1252
 351 0026 0A       		.uleb128 .LEHE4-.LEHB4
 352 0027 00       		.uleb128 0
 353 0028 00       		.uleb128 0
 354              	.LLSDACSE1252:
 355 0029 7F       		.byte	0x7f
 356 002a 00       		.byte	0
 357 002b 00       		.byte	0
 358 002c 7D       		.byte	0x7d
 359 002d 000000   		.align 4
 360 0030 00000000 		.long	_ZTI12MyExceptionB
 361              	.LLSDATT1252:
 362 0034 01       		.byte	0x1
 363 0035 00       		.byte	0
 364              		.text
 366              		.section	.rodata.str1.1,"aMS",@progbits,1
 367              	.LC0:
 368 0000 42617200 		.string	"Bar"
 369              		.text
 370              		.globl	_Z12doesnt_throwv
 372              	_Z12doesnt_throwv:
 373              	.LFB1261:
  56:rethrow.cpp   ****     throw_MyExceptionB("Bar");
 374              		.loc 1 56 0
 375              		.cfi_startproc
 376              		.cfi_personality 0x3,__gxx_personality_v0
 377              		.cfi_lsda 0x3,.LLSDA1261
 378 0136 55       		pushq	%rbp
 379              		.cfi_def_cfa_offset 16
 380              		.cfi_offset 6, -16
 381 0137 53       		pushq	%rbx
 382              		.cfi_def_cfa_offset 24
 383              		.cfi_offset 3, -24
 384 0138 4883EC28 		subq	$40, %rsp
 385              		.cfi_def_cfa_offset 64
  57:rethrow.cpp   **** }
 386              		.loc 1 57 0
 387 013c 488D5424 		leaq	15(%rsp), %rdx
 387      0F
 388 0141 BE000000 		movl	$.LC0, %esi
 388      00
 389 0146 488D7C24 		leaq	16(%rsp), %rdi
 389      10
 390              	.LEHB5:
 391 014b E8000000 		call	_ZNSsC1EPKcRKSaIcE
 391      00
 392              	.LEHE5:
 393              	.LVL41:
  57:rethrow.cpp   **** }
 394              		.loc 1 57 0 is_stmt 0 discriminator 1
 395 0150 488D7C24 		leaq	16(%rsp), %rdi
 395      10
 396              	.LEHB6:
 397 0155 E8000000 		call	_Z18throw_MyExceptionBSs
 397      00
 398              	.LEHE6:
 399              	.LVL42:
GAS LISTING /tmp/ccrG9BDx.s 			page 17


 400              	.L32:
 401 015a 4889C5   		movq	%rax, %rbp
 402 015d 4889D3   		movq	%rdx, %rbx
  57:rethrow.cpp   **** }
 403              		.loc 1 57 0
 404 0160 488D7C24 		leaq	16(%rsp), %rdi
 404      10
 405 0165 E8000000 		call	_ZNSsD1Ev
 405      00
 406              	.LVL43:
 407 016a 4889EF   		movq	%rbp, %rdi
 408 016d 4889DA   		movq	%rbx, %rdx
 409 0170 EB03     		jmp	.L29
 410              	.L31:
 411 0172 4889C7   		movq	%rax, %rdi
 412              	.L29:
 413 0175 4883FAFF 		cmpq	$-1, %rdx
 414 0179 7405     		je	.L30
 415              	.LEHB7:
 416 017b E8000000 		call	_Unwind_Resume
 416      00
 417              	.LVL44:
 418              	.L30:
  56:rethrow.cpp   ****     throw_MyExceptionB("Bar");
 419              		.loc 1 56 0 is_stmt 1
 420 0180 E8000000 		call	__cxa_call_unexpected
 420      00
 421              	.LEHE7:
 422              	.LVL45:
 423              		.cfi_endproc
 424              	.LFE1261:
 425              		.section	.gcc_except_table
 426 0036 0000     		.align 4
 427              	.LLSDA1261:
 428 0038 FF       		.byte	0xff
 429 0039 03       		.byte	0x3
 430 003a 15       		.uleb128 .LLSDATT1261-.LLSDATTD1261
 431              	.LLSDATTD1261:
 432 003b 01       		.byte	0x1
 433 003c 0C       		.uleb128 .LLSDACSE1261-.LLSDACSB1261
 434              	.LLSDACSB1261:
 435 003d 15       		.uleb128 .LEHB5-.LFB1261
 436 003e 05       		.uleb128 .LEHE5-.LEHB5
 437 003f 3C       		.uleb128 .L31-.LFB1261
 438 0040 01       		.uleb128 0x1
 439 0041 1F       		.uleb128 .LEHB6-.LFB1261
 440 0042 05       		.uleb128 .LEHE6-.LEHB6
 441 0043 24       		.uleb128 .L32-.LFB1261
 442 0044 03       		.uleb128 0x3
 443 0045 45       		.uleb128 .LEHB7-.LFB1261
 444 0046 0A       		.uleb128 .LEHE7-.LEHB7
 445 0047 00       		.uleb128 0
 446 0048 00       		.uleb128 0
 447              	.LLSDACSE1261:
 448 0049 7F       		.byte	0x7f
 449 004a 00       		.byte	0
 450 004b 00       		.byte	0
GAS LISTING /tmp/ccrG9BDx.s 			page 18


 451 004c 7D       		.byte	0x7d
 452 004d 000000   		.align 4
 453              	.LLSDATT1261:
 454 0050 00       		.byte	0
 455              		.text
 457              		.section	.text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"axG",@progbits,_ZStplIcSt11
 458              		.weak	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_
 460              	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_:
 461              	.LFB1317:
 462              		.file 5 "/usr/include/c++/4.8/bits/basic_string.tcc"
   1:/usr/include/c++/4.8/bits/basic_string.tcc **** // Components for manipulating sequences of characters -*- C++ -*-
   2:/usr/include/c++/4.8/bits/basic_string.tcc **** 
   3:/usr/include/c++/4.8/bits/basic_string.tcc **** // Copyright (C) 1997-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/bits/basic_string.tcc **** //
   5:/usr/include/c++/4.8/bits/basic_string.tcc **** // This file is part of the GNU ISO C++ Library.  This library is free
   6:/usr/include/c++/4.8/bits/basic_string.tcc **** // software; you can redistribute it and/or modify it under the
   7:/usr/include/c++/4.8/bits/basic_string.tcc **** // terms of the GNU General Public License as published by the
   8:/usr/include/c++/4.8/bits/basic_string.tcc **** // Free Software Foundation; either version 3, or (at your option)
   9:/usr/include/c++/4.8/bits/basic_string.tcc **** // any later version.
  10:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  11:/usr/include/c++/4.8/bits/basic_string.tcc **** // This library is distributed in the hope that it will be useful,
  12:/usr/include/c++/4.8/bits/basic_string.tcc **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13:/usr/include/c++/4.8/bits/basic_string.tcc **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14:/usr/include/c++/4.8/bits/basic_string.tcc **** // GNU General Public License for more details.
  15:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  16:/usr/include/c++/4.8/bits/basic_string.tcc **** // Under Section 7 of GPL version 3, you are granted additional
  17:/usr/include/c++/4.8/bits/basic_string.tcc **** // permissions described in the GCC Runtime Library Exception, version
  18:/usr/include/c++/4.8/bits/basic_string.tcc **** // 3.1, as published by the Free Software Foundation.
  19:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  20:/usr/include/c++/4.8/bits/basic_string.tcc **** // You should have received a copy of the GNU General Public License and
  21:/usr/include/c++/4.8/bits/basic_string.tcc **** // a copy of the GCC Runtime Library Exception along with this program;
  22:/usr/include/c++/4.8/bits/basic_string.tcc **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23:/usr/include/c++/4.8/bits/basic_string.tcc **** // <http://www.gnu.org/licenses/>.
  24:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  25:/usr/include/c++/4.8/bits/basic_string.tcc **** /** @file bits/basic_string.tcc
  26:/usr/include/c++/4.8/bits/basic_string.tcc ****  *  This is an internal header file, included by other library headers.
  27:/usr/include/c++/4.8/bits/basic_string.tcc ****  *  Do not attempt to use it directly. @headername{string}
  28:/usr/include/c++/4.8/bits/basic_string.tcc ****  */
  29:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  30:/usr/include/c++/4.8/bits/basic_string.tcc **** //
  31:/usr/include/c++/4.8/bits/basic_string.tcc **** // ISO C++ 14882: 21  Strings library
  32:/usr/include/c++/4.8/bits/basic_string.tcc **** //
  33:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  34:/usr/include/c++/4.8/bits/basic_string.tcc **** // Written by Jason Merrill based upon the specification by Takanori Adachi
  35:/usr/include/c++/4.8/bits/basic_string.tcc **** // in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers to ISO-14882.
  36:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  37:/usr/include/c++/4.8/bits/basic_string.tcc **** #ifndef _BASIC_STRING_TCC
  38:/usr/include/c++/4.8/bits/basic_string.tcc **** #define _BASIC_STRING_TCC 1
  39:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  40:/usr/include/c++/4.8/bits/basic_string.tcc **** #pragma GCC system_header
  41:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  42:/usr/include/c++/4.8/bits/basic_string.tcc **** #include <bits/cxxabi_forced.h>
  43:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  44:/usr/include/c++/4.8/bits/basic_string.tcc **** namespace std _GLIBCXX_VISIBILITY(default)
  45:/usr/include/c++/4.8/bits/basic_string.tcc **** {
  46:/usr/include/c++/4.8/bits/basic_string.tcc **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  47:/usr/include/c++/4.8/bits/basic_string.tcc **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 19


  48:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
  49:/usr/include/c++/4.8/bits/basic_string.tcc ****     const typename basic_string<_CharT, _Traits, _Alloc>::size_type
  50:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
  51:/usr/include/c++/4.8/bits/basic_string.tcc ****     _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4;
  52:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  53:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
  54:/usr/include/c++/4.8/bits/basic_string.tcc ****     const _CharT
  55:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
  56:/usr/include/c++/4.8/bits/basic_string.tcc ****     _Rep::_S_terminal = _CharT();
  57:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  58:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
  59:/usr/include/c++/4.8/bits/basic_string.tcc ****     const typename basic_string<_CharT, _Traits, _Alloc>::size_type
  60:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::npos;
  61:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  62:/usr/include/c++/4.8/bits/basic_string.tcc ****   // Linker sets _S_empty_rep_storage to all 0s (one reference, empty string)
  63:/usr/include/c++/4.8/bits/basic_string.tcc ****   // at static init time (before static ctors are run).
  64:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
  65:/usr/include/c++/4.8/bits/basic_string.tcc ****     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  66:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[
  67:/usr/include/c++/4.8/bits/basic_string.tcc ****     (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) /
  68:/usr/include/c++/4.8/bits/basic_string.tcc ****       sizeof(size_type)];
  69:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  70:/usr/include/c++/4.8/bits/basic_string.tcc ****   // NB: This is the special case for Input Iterators, used in
  71:/usr/include/c++/4.8/bits/basic_string.tcc ****   // istreambuf_iterators, etc.
  72:/usr/include/c++/4.8/bits/basic_string.tcc ****   // Input Iterators have a cost structure very different from
  73:/usr/include/c++/4.8/bits/basic_string.tcc ****   // pointers, calling for a different coding style.
  74:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
  75:/usr/include/c++/4.8/bits/basic_string.tcc ****     template<typename _InIterator>
  76:/usr/include/c++/4.8/bits/basic_string.tcc ****       _CharT*
  77:/usr/include/c++/4.8/bits/basic_string.tcc ****       basic_string<_CharT, _Traits, _Alloc>::
  78:/usr/include/c++/4.8/bits/basic_string.tcc ****       _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
  79:/usr/include/c++/4.8/bits/basic_string.tcc **** 		   input_iterator_tag)
  80:/usr/include/c++/4.8/bits/basic_string.tcc ****       {
  81:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
  82:/usr/include/c++/4.8/bits/basic_string.tcc **** 	if (__beg == __end && __a == _Alloc())
  83:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  return _S_empty_rep()._M_refdata();
  84:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif
  85:/usr/include/c++/4.8/bits/basic_string.tcc **** 	// Avoid reallocation for common case.
  86:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_CharT __buf[128];
  87:/usr/include/c++/4.8/bits/basic_string.tcc **** 	size_type __len = 0;
  88:/usr/include/c++/4.8/bits/basic_string.tcc **** 	while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))
  89:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  {
  90:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __buf[__len++] = *__beg;
  91:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    ++__beg;
  92:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  }
  93:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_Rep* __r = _Rep::_S_create(__len, size_type(0), __a);
  94:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_copy(__r->_M_refdata(), __buf, __len);
  95:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__try
  96:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  {
  97:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    while (__beg != __end)
  98:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      {
  99:/usr/include/c++/4.8/bits/basic_string.tcc **** 		if (__len == __r->_M_capacity)
 100:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  {
 101:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    // Allocate more space.
 102:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);
 103:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len);
 104:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    __r->_M_destroy(__a);
GAS LISTING /tmp/ccrG9BDx.s 			page 20


 105:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    __r = __another;
 106:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  }
 107:/usr/include/c++/4.8/bits/basic_string.tcc **** 		__r->_M_refdata()[__len++] = *__beg;
 108:/usr/include/c++/4.8/bits/basic_string.tcc **** 		++__beg;
 109:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      }
 110:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  }
 111:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__catch(...)
 112:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  {
 113:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __r->_M_destroy(__a);
 114:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __throw_exception_again;
 115:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  }
 116:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__r->_M_set_length_and_sharable(__len);
 117:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return __r->_M_refdata();
 118:/usr/include/c++/4.8/bits/basic_string.tcc ****       }
 119:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 120:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 121:/usr/include/c++/4.8/bits/basic_string.tcc ****     template <typename _InIterator>
 122:/usr/include/c++/4.8/bits/basic_string.tcc ****       _CharT*
 123:/usr/include/c++/4.8/bits/basic_string.tcc ****       basic_string<_CharT, _Traits, _Alloc>::
 124:/usr/include/c++/4.8/bits/basic_string.tcc ****       _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
 125:/usr/include/c++/4.8/bits/basic_string.tcc **** 		   forward_iterator_tag)
 126:/usr/include/c++/4.8/bits/basic_string.tcc ****       {
 127:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 128:/usr/include/c++/4.8/bits/basic_string.tcc **** 	if (__beg == __end && __a == _Alloc())
 129:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  return _S_empty_rep()._M_refdata();
 130:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif
 131:/usr/include/c++/4.8/bits/basic_string.tcc **** 	// NB: Not required, but considered best practice.
 132:/usr/include/c++/4.8/bits/basic_string.tcc **** 	if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end)
 133:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  __throw_logic_error(__N("basic_string::_S_construct null not valid"));
 134:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 135:/usr/include/c++/4.8/bits/basic_string.tcc **** 	const size_type __dnew = static_cast<size_type>(std::distance(__beg,
 136:/usr/include/c++/4.8/bits/basic_string.tcc **** 								      __end));
 137:/usr/include/c++/4.8/bits/basic_string.tcc **** 	// Check for out_of_range and length_error exceptions.
 138:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);
 139:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__try
 140:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  { _S_copy_chars(__r->_M_refdata(), __beg, __end); }
 141:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__catch(...)
 142:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  {
 143:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __r->_M_destroy(__a);
 144:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __throw_exception_again;
 145:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  }
 146:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__r->_M_set_length_and_sharable(__dnew);
 147:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return __r->_M_refdata();
 148:/usr/include/c++/4.8/bits/basic_string.tcc ****       }
 149:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 150:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 151:/usr/include/c++/4.8/bits/basic_string.tcc ****     _CharT*
 152:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 153:/usr/include/c++/4.8/bits/basic_string.tcc ****     _S_construct(size_type __n, _CharT __c, const _Alloc& __a)
 154:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 155:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 156:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n == 0 && __a == _Alloc())
 157:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return _S_empty_rep()._M_refdata();
 158:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif
 159:/usr/include/c++/4.8/bits/basic_string.tcc ****       // Check for out_of_range and length_error exceptions.
 160:/usr/include/c++/4.8/bits/basic_string.tcc ****       _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);
 161:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n)
GAS LISTING /tmp/ccrG9BDx.s 			page 21


 162:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_assign(__r->_M_refdata(), __n, __c);
 163:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 164:/usr/include/c++/4.8/bits/basic_string.tcc ****       __r->_M_set_length_and_sharable(__n);
 165:/usr/include/c++/4.8/bits/basic_string.tcc ****       return __r->_M_refdata();
 166:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 167:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 168:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 169:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 170:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const basic_string& __str)
 171:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()),
 172:/usr/include/c++/4.8/bits/basic_string.tcc **** 					  __str.get_allocator()),
 173:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  __str.get_allocator())
 174:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 175:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 176:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 177:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 178:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const _Alloc& __a)
 179:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a)
 180:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 181:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 182:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 183:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 184:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const basic_string& __str, size_type __pos, size_type __n)
 185:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__str._M_data()
 186:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       + __str._M_check(__pos,
 187:/usr/include/c++/4.8/bits/basic_string.tcc **** 						"basic_string::basic_string"),
 188:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       __str._M_data() + __str._M_limit(__pos, __n)
 189:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       + __pos, _Alloc()), _Alloc())
 190:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 191:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 192:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 193:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 194:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const basic_string& __str, size_type __pos,
 195:/usr/include/c++/4.8/bits/basic_string.tcc **** 		 size_type __n, const _Alloc& __a)
 196:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__str._M_data()
 197:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       + __str._M_check(__pos,
 198:/usr/include/c++/4.8/bits/basic_string.tcc **** 						"basic_string::basic_string"),
 199:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       __str._M_data() + __str._M_limit(__pos, __n)
 200:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       + __pos, __a), __a)
 201:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 202:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 203:/usr/include/c++/4.8/bits/basic_string.tcc ****   // TBD: DPG annotate
 204:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 205:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 206:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const _CharT* __s, size_type __n, const _Alloc& __a)
 207:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__s, __s + __n, __a), __a)
 208:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 209:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 210:/usr/include/c++/4.8/bits/basic_string.tcc ****   // TBD: DPG annotate
 211:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 212:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 213:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const _CharT* __s, const _Alloc& __a)
 214:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) :
 215:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       __s + npos, __a), __a)
 216:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 217:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 218:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
GAS LISTING /tmp/ccrG9BDx.s 			page 22


 219:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 220:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(size_type __n, _CharT __c, const _Alloc& __a)
 221:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__n, __c, __a), __a)
 222:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 223:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 224:/usr/include/c++/4.8/bits/basic_string.tcc ****   // TBD: DPG annotate
 225:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 226:/usr/include/c++/4.8/bits/basic_string.tcc ****     template<typename _InputIterator>
 227:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 228:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a)
 229:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__beg, __end, __a), __a)
 230:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 231:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 232:/usr/include/c++/4.8/bits/basic_string.tcc **** #if __cplusplus >= 201103L
 233:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 234:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 235:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(initializer_list<_CharT> __l, const _Alloc& __a)
 236:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__l.begin(), __l.end(), __a), __a)
 237:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 238:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif
 239:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 240:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 241:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 242:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 243:/usr/include/c++/4.8/bits/basic_string.tcc ****     assign(const basic_string& __str)
 244:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 245:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (_M_rep() != __str._M_rep())
 246:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 247:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // XXX MT
 248:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const allocator_type __a = this->get_allocator();
 249:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator());
 250:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_dispose(__a);
 251:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_data(__tmp);
 252:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 253:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 254:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 255:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 256:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 257:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 258:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 259:/usr/include/c++/4.8/bits/basic_string.tcc ****     assign(const _CharT* __s, size_type __n)
 260:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 261:/usr/include/c++/4.8/bits/basic_string.tcc ****       __glibcxx_requires_string_len(__s, __n);
 262:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_check_length(this->size(), __n, "basic_string::assign");
 263:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
 264:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return _M_replace_safe(size_type(0), this->size(), __s, __n);
 265:/usr/include/c++/4.8/bits/basic_string.tcc ****       else
 266:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 267:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // Work in-place.
 268:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __pos = __s - _M_data();
 269:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__pos >= __n)
 270:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    _M_copy(_M_data(), __s, __n);
 271:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  else if (__pos)
 272:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    _M_move(_M_data(), __s, __n);
 273:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_set_length_and_sharable(__n);
 274:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  return *this;
 275:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
GAS LISTING /tmp/ccrG9BDx.s 			page 23


 276:/usr/include/c++/4.8/bits/basic_string.tcc ****      }
 277:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 278:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 279:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 280:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 281:/usr/include/c++/4.8/bits/basic_string.tcc ****     append(size_type __n, _CharT __c)
 282:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 283:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n)
 284:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 285:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_check_length(size_type(0), __n, "basic_string::append");	  
 286:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __len = __n + this->size();
 287:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
 288:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    this->reserve(__len);
 289:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_assign(_M_data() + this->size(), __n, __c);
 290:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_set_length_and_sharable(__len);
 291:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 292:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 293:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 294:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 295:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 296:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 297:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 298:/usr/include/c++/4.8/bits/basic_string.tcc ****     append(const _CharT* __s, size_type __n)
 299:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 300:/usr/include/c++/4.8/bits/basic_string.tcc ****       __glibcxx_requires_string_len(__s, __n);
 301:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n)
 302:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 303:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_check_length(size_type(0), __n, "basic_string::append");
 304:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __len = __n + this->size();
 305:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
 306:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    {
 307:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      if (_M_disjunct(__s))
 308:/usr/include/c++/4.8/bits/basic_string.tcc **** 		this->reserve(__len);
 309:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      else
 310:/usr/include/c++/4.8/bits/basic_string.tcc **** 		{
 311:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  const size_type __off = __s - _M_data();
 312:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  this->reserve(__len);
 313:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  __s = _M_data() + __off;
 314:/usr/include/c++/4.8/bits/basic_string.tcc **** 		}
 315:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    }
 316:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_copy(_M_data() + this->size(), __s, __n);
 317:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_set_length_and_sharable(__len);
 318:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 319:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 320:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 321:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 322:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 323:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 324:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 325:/usr/include/c++/4.8/bits/basic_string.tcc ****     append(const basic_string& __str)
 326:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 327:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __size = __str.size();
 328:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__size)
 329:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 330:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __len = __size + this->size();
 331:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
 332:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    this->reserve(__len);
GAS LISTING /tmp/ccrG9BDx.s 			page 24


 333:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_copy(_M_data() + this->size(), __str._M_data(), __size);
 334:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_set_length_and_sharable(__len);
 335:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 336:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 337:/usr/include/c++/4.8/bits/basic_string.tcc ****     }    
 338:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 339:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 340:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 341:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 342:/usr/include/c++/4.8/bits/basic_string.tcc ****     append(const basic_string& __str, size_type __pos, size_type __n)
 343:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 344:/usr/include/c++/4.8/bits/basic_string.tcc ****       __str._M_check(__pos, "basic_string::append");
 345:/usr/include/c++/4.8/bits/basic_string.tcc ****       __n = __str._M_limit(__pos, __n);
 346:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n)
 347:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 348:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __len = __n + this->size();
 349:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
 350:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    this->reserve(__len);
 351:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n);
 352:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_set_length_and_sharable(__len);	  
 353:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 354:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 355:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 356:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 357:/usr/include/c++/4.8/bits/basic_string.tcc ****    template<typename _CharT, typename _Traits, typename _Alloc>
 358:/usr/include/c++/4.8/bits/basic_string.tcc ****      basic_string<_CharT, _Traits, _Alloc>&
 359:/usr/include/c++/4.8/bits/basic_string.tcc ****      basic_string<_CharT, _Traits, _Alloc>::
 360:/usr/include/c++/4.8/bits/basic_string.tcc ****      insert(size_type __pos, const _CharT* __s, size_type __n)
 361:/usr/include/c++/4.8/bits/basic_string.tcc ****      {
 362:/usr/include/c++/4.8/bits/basic_string.tcc ****        __glibcxx_requires_string_len(__s, __n);
 363:/usr/include/c++/4.8/bits/basic_string.tcc ****        _M_check(__pos, "basic_string::insert");
 364:/usr/include/c++/4.8/bits/basic_string.tcc ****        _M_check_length(size_type(0), __n, "basic_string::insert");
 365:/usr/include/c++/4.8/bits/basic_string.tcc ****        if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
 366:/usr/include/c++/4.8/bits/basic_string.tcc ****          return _M_replace_safe(__pos, size_type(0), __s, __n);
 367:/usr/include/c++/4.8/bits/basic_string.tcc ****        else
 368:/usr/include/c++/4.8/bits/basic_string.tcc ****          {
 369:/usr/include/c++/4.8/bits/basic_string.tcc ****            // Work in-place.
 370:/usr/include/c++/4.8/bits/basic_string.tcc ****            const size_type __off = __s - _M_data();
 371:/usr/include/c++/4.8/bits/basic_string.tcc ****            _M_mutate(__pos, 0, __n);
 372:/usr/include/c++/4.8/bits/basic_string.tcc ****            __s = _M_data() + __off;
 373:/usr/include/c++/4.8/bits/basic_string.tcc ****            _CharT* __p = _M_data() + __pos;
 374:/usr/include/c++/4.8/bits/basic_string.tcc ****            if (__s  + __n <= __p)
 375:/usr/include/c++/4.8/bits/basic_string.tcc ****              _M_copy(__p, __s, __n);
 376:/usr/include/c++/4.8/bits/basic_string.tcc ****            else if (__s >= __p)
 377:/usr/include/c++/4.8/bits/basic_string.tcc ****              _M_copy(__p, __s + __n, __n);
 378:/usr/include/c++/4.8/bits/basic_string.tcc ****            else
 379:/usr/include/c++/4.8/bits/basic_string.tcc ****              {
 380:/usr/include/c++/4.8/bits/basic_string.tcc **** 	       const size_type __nleft = __p - __s;
 381:/usr/include/c++/4.8/bits/basic_string.tcc ****                _M_copy(__p, __s, __nleft);
 382:/usr/include/c++/4.8/bits/basic_string.tcc ****                _M_copy(__p + __nleft, __p + __n, __n - __nleft);
 383:/usr/include/c++/4.8/bits/basic_string.tcc ****              }
 384:/usr/include/c++/4.8/bits/basic_string.tcc ****            return *this;
 385:/usr/include/c++/4.8/bits/basic_string.tcc ****          }
 386:/usr/include/c++/4.8/bits/basic_string.tcc ****      }
 387:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 388:/usr/include/c++/4.8/bits/basic_string.tcc ****    template<typename _CharT, typename _Traits, typename _Alloc>
 389:/usr/include/c++/4.8/bits/basic_string.tcc ****      typename basic_string<_CharT, _Traits, _Alloc>::iterator
GAS LISTING /tmp/ccrG9BDx.s 			page 25


 390:/usr/include/c++/4.8/bits/basic_string.tcc ****      basic_string<_CharT, _Traits, _Alloc>::
 391:/usr/include/c++/4.8/bits/basic_string.tcc ****      erase(iterator __first, iterator __last)
 392:/usr/include/c++/4.8/bits/basic_string.tcc ****      {
 393:/usr/include/c++/4.8/bits/basic_string.tcc ****        _GLIBCXX_DEBUG_PEDASSERT(__first >= _M_ibegin() && __first <= __last
 394:/usr/include/c++/4.8/bits/basic_string.tcc **** 				&& __last <= _M_iend());
 395:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 396:/usr/include/c++/4.8/bits/basic_string.tcc ****        // NB: This isn't just an optimization (bail out early when
 397:/usr/include/c++/4.8/bits/basic_string.tcc ****        // there is nothing to do, really), it's also a correctness
 398:/usr/include/c++/4.8/bits/basic_string.tcc ****        // issue vs MT, see libstdc++/40518.
 399:/usr/include/c++/4.8/bits/basic_string.tcc ****        const size_type __size = __last - __first;
 400:/usr/include/c++/4.8/bits/basic_string.tcc ****        if (__size)
 401:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 {
 402:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   const size_type __pos = __first - _M_ibegin();
 403:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   _M_mutate(__pos, __size, size_type(0));
 404:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   _M_rep()->_M_set_leaked();
 405:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   return iterator(_M_data() + __pos);
 406:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 }
 407:/usr/include/c++/4.8/bits/basic_string.tcc ****        else
 408:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 return __first;
 409:/usr/include/c++/4.8/bits/basic_string.tcc ****      }
 410:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 411:/usr/include/c++/4.8/bits/basic_string.tcc ****    template<typename _CharT, typename _Traits, typename _Alloc>
 412:/usr/include/c++/4.8/bits/basic_string.tcc ****      basic_string<_CharT, _Traits, _Alloc>&
 413:/usr/include/c++/4.8/bits/basic_string.tcc ****      basic_string<_CharT, _Traits, _Alloc>::
 414:/usr/include/c++/4.8/bits/basic_string.tcc ****      replace(size_type __pos, size_type __n1, const _CharT* __s,
 415:/usr/include/c++/4.8/bits/basic_string.tcc **** 	     size_type __n2)
 416:/usr/include/c++/4.8/bits/basic_string.tcc ****      {
 417:/usr/include/c++/4.8/bits/basic_string.tcc ****        __glibcxx_requires_string_len(__s, __n2);
 418:/usr/include/c++/4.8/bits/basic_string.tcc ****        _M_check(__pos, "basic_string::replace");
 419:/usr/include/c++/4.8/bits/basic_string.tcc ****        __n1 = _M_limit(__pos, __n1);
 420:/usr/include/c++/4.8/bits/basic_string.tcc ****        _M_check_length(__n1, __n2, "basic_string::replace");
 421:/usr/include/c++/4.8/bits/basic_string.tcc ****        bool __left;
 422:/usr/include/c++/4.8/bits/basic_string.tcc ****        if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
 423:/usr/include/c++/4.8/bits/basic_string.tcc ****          return _M_replace_safe(__pos, __n1, __s, __n2);
 424:/usr/include/c++/4.8/bits/basic_string.tcc ****        else if ((__left = __s + __n2 <= _M_data() + __pos)
 425:/usr/include/c++/4.8/bits/basic_string.tcc **** 		|| _M_data() + __pos + __n1 <= __s)
 426:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 {
 427:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   // Work in-place: non-overlapping case.
 428:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   size_type __off = __s - _M_data();
 429:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   __left ? __off : (__off += __n2 - __n1);
 430:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   _M_mutate(__pos, __n1, __n2);
 431:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   _M_copy(_M_data() + __pos, _M_data() + __off, __n2);
 432:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   return *this;
 433:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 }
 434:/usr/include/c++/4.8/bits/basic_string.tcc ****        else
 435:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 {
 436:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   // Todo: overlapping case.
 437:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   const basic_string __tmp(__s, __n2);
 438:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2);
 439:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 }
 440:/usr/include/c++/4.8/bits/basic_string.tcc ****      }
 441:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 442:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 443:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 444:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::_Rep::
 445:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_destroy(const _Alloc& __a) throw ()
 446:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
GAS LISTING /tmp/ccrG9BDx.s 			page 26


 447:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __size = sizeof(_Rep_base) +
 448:/usr/include/c++/4.8/bits/basic_string.tcc **** 	                       (this->_M_capacity + 1) * sizeof(_CharT);
 449:/usr/include/c++/4.8/bits/basic_string.tcc ****       _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size);
 450:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 451:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 452:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 453:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 454:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 455:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_leak_hard()
 456:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 457:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 458:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (_M_rep() == &_S_empty_rep())
 459:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return;
 460:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif
 461:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (_M_rep()->_M_is_shared())
 462:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_mutate(0, 0, 0);
 463:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_rep()->_M_set_leaked();
 464:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 465:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 466:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 467:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 468:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 469:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_mutate(size_type __pos, size_type __len1, size_type __len2)
 470:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 471:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __old_size = this->size();
 472:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __new_size = __old_size + __len2 - __len1;
 473:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __how_much = __old_size - __pos - __len1;
 474:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 475:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__new_size > this->capacity() || _M_rep()->_M_is_shared())
 476:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 477:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // Must reallocate.
 478:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const allocator_type __a = get_allocator();
 479:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a);
 480:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 481:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__pos)
 482:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    _M_copy(__r->_M_refdata(), _M_data(), __pos);
 483:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__how_much)
 484:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    _M_copy(__r->_M_refdata() + __pos + __len2,
 485:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    _M_data() + __pos + __len1, __how_much);
 486:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 487:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_dispose(__a);
 488:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_data(__r->_M_refdata());
 489:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 490:/usr/include/c++/4.8/bits/basic_string.tcc ****       else if (__how_much && __len1 != __len2)
 491:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 492:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // Work in-place.
 493:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_move(_M_data() + __pos + __len2,
 494:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  _M_data() + __pos + __len1, __how_much);
 495:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 496:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_rep()->_M_set_length_and_sharable(__new_size);
 497:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 498:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 499:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 500:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 501:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 502:/usr/include/c++/4.8/bits/basic_string.tcc ****     reserve(size_type __res)
 503:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
GAS LISTING /tmp/ccrG9BDx.s 			page 27


 504:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__res != this->capacity() || _M_rep()->_M_is_shared())
 505:/usr/include/c++/4.8/bits/basic_string.tcc ****         {
 506:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // Make sure we don't shrink below the current size
 507:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__res < this->size())
 508:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __res = this->size();
 509:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const allocator_type __a = get_allocator();
 510:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size());
 511:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_dispose(__a);
 512:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_data(__tmp);
 513:/usr/include/c++/4.8/bits/basic_string.tcc ****         }
 514:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 515:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 516:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 517:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 518:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 519:/usr/include/c++/4.8/bits/basic_string.tcc ****     swap(basic_string& __s)
 520:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 521:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (_M_rep()->_M_is_leaked())
 522:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_rep()->_M_set_sharable();
 523:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__s._M_rep()->_M_is_leaked())
 524:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__s._M_rep()->_M_set_sharable();
 525:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (this->get_allocator() == __s.get_allocator())
 526:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 527:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _CharT* __tmp = _M_data();
 528:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_data(__s._M_data());
 529:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  __s._M_data(__tmp);
 530:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 531:/usr/include/c++/4.8/bits/basic_string.tcc ****       // The code below can usually be optimized away.
 532:/usr/include/c++/4.8/bits/basic_string.tcc ****       else
 533:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 534:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const basic_string __tmp1(_M_ibegin(), _M_iend(),
 535:/usr/include/c++/4.8/bits/basic_string.tcc **** 				    __s.get_allocator());
 536:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(),
 537:/usr/include/c++/4.8/bits/basic_string.tcc **** 				    this->get_allocator());
 538:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  *this = __tmp2;
 539:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  __s = __tmp1;
 540:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 541:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 542:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 543:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 544:/usr/include/c++/4.8/bits/basic_string.tcc ****     typename basic_string<_CharT, _Traits, _Alloc>::_Rep*
 545:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::_Rep::
 546:/usr/include/c++/4.8/bits/basic_string.tcc ****     _S_create(size_type __capacity, size_type __old_capacity,
 547:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      const _Alloc& __alloc)
 548:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 549:/usr/include/c++/4.8/bits/basic_string.tcc ****       // _GLIBCXX_RESOLVE_LIB_DEFECTS
 550:/usr/include/c++/4.8/bits/basic_string.tcc ****       // 83.  String::npos vs. string::max_size()
 551:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__capacity > _S_max_size)
 552:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__throw_length_error(__N("basic_string::_S_create"));
 553:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 554:/usr/include/c++/4.8/bits/basic_string.tcc ****       // The standard places no restriction on allocating more memory
 555:/usr/include/c++/4.8/bits/basic_string.tcc ****       // than is strictly needed within this layer at the moment or as
 556:/usr/include/c++/4.8/bits/basic_string.tcc ****       // requested by an explicit application call to reserve().
 557:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 558:/usr/include/c++/4.8/bits/basic_string.tcc ****       // Many malloc implementations perform quite poorly when an
 559:/usr/include/c++/4.8/bits/basic_string.tcc ****       // application attempts to allocate memory in a stepwise fashion
 560:/usr/include/c++/4.8/bits/basic_string.tcc ****       // growing each allocation size by only 1 char.  Additionally,
GAS LISTING /tmp/ccrG9BDx.s 			page 28


 561:/usr/include/c++/4.8/bits/basic_string.tcc ****       // it makes little sense to allocate less linear memory than the
 562:/usr/include/c++/4.8/bits/basic_string.tcc ****       // natural blocking size of the malloc implementation.
 563:/usr/include/c++/4.8/bits/basic_string.tcc ****       // Unfortunately, we would need a somewhat low-level calculation
 564:/usr/include/c++/4.8/bits/basic_string.tcc ****       // with tuned parameters to get this perfect for any particular
 565:/usr/include/c++/4.8/bits/basic_string.tcc ****       // malloc implementation.  Fortunately, generalizations about
 566:/usr/include/c++/4.8/bits/basic_string.tcc ****       // common features seen among implementations seems to suffice.
 567:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 568:/usr/include/c++/4.8/bits/basic_string.tcc ****       // __pagesize need not match the actual VM page size for good
 569:/usr/include/c++/4.8/bits/basic_string.tcc ****       // results in practice, thus we pick a common value on the low
 570:/usr/include/c++/4.8/bits/basic_string.tcc ****       // side.  __malloc_header_size is an estimate of the amount of
 571:/usr/include/c++/4.8/bits/basic_string.tcc ****       // overhead per memory allocation (in practice seen N * sizeof
 572:/usr/include/c++/4.8/bits/basic_string.tcc ****       // (void*) where N is 0, 2 or 4).  According to folklore,
 573:/usr/include/c++/4.8/bits/basic_string.tcc ****       // picking this value on the high side is better than
 574:/usr/include/c++/4.8/bits/basic_string.tcc ****       // low-balling it (especially when this algorithm is used with
 575:/usr/include/c++/4.8/bits/basic_string.tcc ****       // malloc implementations that allocate memory blocks rounded up
 576:/usr/include/c++/4.8/bits/basic_string.tcc ****       // to a size which is a power of 2).
 577:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __pagesize = 4096;
 578:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __malloc_header_size = 4 * sizeof(void*);
 579:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 580:/usr/include/c++/4.8/bits/basic_string.tcc ****       // The below implements an exponential growth policy, necessary to
 581:/usr/include/c++/4.8/bits/basic_string.tcc ****       // meet amortized linear time requirements of the library: see
 582:/usr/include/c++/4.8/bits/basic_string.tcc ****       // http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html.
 583:/usr/include/c++/4.8/bits/basic_string.tcc ****       // It's active for allocations requiring an amount of memory above
 584:/usr/include/c++/4.8/bits/basic_string.tcc ****       // system pagesize. This is consistent with the requirements of the
 585:/usr/include/c++/4.8/bits/basic_string.tcc ****       // standard: http://gcc.gnu.org/ml/libstdc++/2001-07/msg00130.html
 586:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
 587:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__capacity = 2 * __old_capacity;
 588:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 589:/usr/include/c++/4.8/bits/basic_string.tcc ****       // NB: Need an array of char_type[__capacity], plus a terminating
 590:/usr/include/c++/4.8/bits/basic_string.tcc ****       // null char_type() element, plus enough for the _Rep data structure.
 591:/usr/include/c++/4.8/bits/basic_string.tcc ****       // Whew. Seemingly so needy, yet so elemental.
 592:/usr/include/c++/4.8/bits/basic_string.tcc ****       size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
 593:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 594:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __adj_size = __size + __malloc_header_size;
 595:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__adj_size > __pagesize && __capacity > __old_capacity)
 596:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 597:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __extra = __pagesize - __adj_size % __pagesize;
 598:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  __capacity += __extra / sizeof(_CharT);
 599:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // Never allocate a string bigger than _S_max_size.
 600:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__capacity > _S_max_size)
 601:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __capacity = _S_max_size;
 602:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
 603:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 604:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 605:/usr/include/c++/4.8/bits/basic_string.tcc ****       // NB: Might throw, but no worries about a leak, mate: _Rep()
 606:/usr/include/c++/4.8/bits/basic_string.tcc ****       // does not throw.
 607:/usr/include/c++/4.8/bits/basic_string.tcc ****       void* __place = _Raw_bytes_alloc(__alloc).allocate(__size);
 608:/usr/include/c++/4.8/bits/basic_string.tcc ****       _Rep *__p = new (__place) _Rep;
 609:/usr/include/c++/4.8/bits/basic_string.tcc ****       __p->_M_capacity = __capacity;
 610:/usr/include/c++/4.8/bits/basic_string.tcc ****       // ABI compatibility - 3.4.x set in _S_create both
 611:/usr/include/c++/4.8/bits/basic_string.tcc ****       // _M_refcount and _M_length.  All callers of _S_create
 612:/usr/include/c++/4.8/bits/basic_string.tcc ****       // in basic_string.tcc then set just _M_length.
 613:/usr/include/c++/4.8/bits/basic_string.tcc ****       // In 4.0.x and later both _M_refcount and _M_length
 614:/usr/include/c++/4.8/bits/basic_string.tcc ****       // are initialized in the callers, unfortunately we can
 615:/usr/include/c++/4.8/bits/basic_string.tcc ****       // have 3.4.x compiled code with _S_create callers inlined
 616:/usr/include/c++/4.8/bits/basic_string.tcc ****       // calling 4.0.x+ _S_create.
 617:/usr/include/c++/4.8/bits/basic_string.tcc ****       __p->_M_set_sharable();
GAS LISTING /tmp/ccrG9BDx.s 			page 29


 618:/usr/include/c++/4.8/bits/basic_string.tcc ****       return __p;
 619:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 620:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 621:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 622:/usr/include/c++/4.8/bits/basic_string.tcc ****     _CharT*
 623:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::_Rep::
 624:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_clone(const _Alloc& __alloc, size_type __res)
 625:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 626:/usr/include/c++/4.8/bits/basic_string.tcc ****       // Requested capacity of the clone.
 627:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __requested_cap = this->_M_length + __res;
 628:/usr/include/c++/4.8/bits/basic_string.tcc ****       _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity,
 629:/usr/include/c++/4.8/bits/basic_string.tcc **** 				  __alloc);
 630:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (this->_M_length)
 631:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length);
 632:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 633:/usr/include/c++/4.8/bits/basic_string.tcc ****       __r->_M_set_length_and_sharable(this->_M_length);
 634:/usr/include/c++/4.8/bits/basic_string.tcc ****       return __r->_M_refdata();
 635:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 636:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 637:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 638:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 639:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 640:/usr/include/c++/4.8/bits/basic_string.tcc ****     resize(size_type __n, _CharT __c)
 641:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 642:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __size = this->size();
 643:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_check_length(__size, __n, "basic_string::resize");
 644:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__size < __n)
 645:/usr/include/c++/4.8/bits/basic_string.tcc **** 	this->append(__n - __size, __c);
 646:/usr/include/c++/4.8/bits/basic_string.tcc ****       else if (__n < __size)
 647:/usr/include/c++/4.8/bits/basic_string.tcc **** 	this->erase(__n);
 648:/usr/include/c++/4.8/bits/basic_string.tcc ****       // else nothing (in particular, avoid calling _M_mutate() unnecessarily.)
 649:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 650:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 651:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 652:/usr/include/c++/4.8/bits/basic_string.tcc ****     template<typename _InputIterator>
 653:/usr/include/c++/4.8/bits/basic_string.tcc ****       basic_string<_CharT, _Traits, _Alloc>&
 654:/usr/include/c++/4.8/bits/basic_string.tcc ****       basic_string<_CharT, _Traits, _Alloc>::
 655:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
 656:/usr/include/c++/4.8/bits/basic_string.tcc **** 			  _InputIterator __k2, __false_type)
 657:/usr/include/c++/4.8/bits/basic_string.tcc ****       {
 658:/usr/include/c++/4.8/bits/basic_string.tcc **** 	const basic_string __s(__k1, __k2);
 659:/usr/include/c++/4.8/bits/basic_string.tcc **** 	const size_type __n1 = __i2 - __i1;
 660:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch");
 661:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(),
 662:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       __s.size());
 663:/usr/include/c++/4.8/bits/basic_string.tcc ****       }
 664:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 665:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 666:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 667:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 668:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
 669:/usr/include/c++/4.8/bits/basic_string.tcc **** 		   _CharT __c)
 670:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 671:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");
 672:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_mutate(__pos1, __n1, __n2);
 673:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n2)
 674:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_assign(_M_data() + __pos1, __n2, __c);
GAS LISTING /tmp/ccrG9BDx.s 			page 30


 675:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 676:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 677:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 678:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 679:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 680:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 681:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
 682:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    size_type __n2)
 683:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 684:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_mutate(__pos1, __n1, __n2);
 685:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n2)
 686:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_copy(_M_data() + __pos1, __s, __n2);
 687:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 688:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 689:/usr/include/c++/4.8/bits/basic_string.tcc ****    
 690:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 691:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>
 692:/usr/include/c++/4.8/bits/basic_string.tcc ****     operator+(const _CharT* __lhs,
 463              		.loc 5 692 0
 464              		.cfi_startproc
 465              		.cfi_personality 0x3,__gxx_personality_v0
 466              		.cfi_lsda 0x3,.LLSDA1317
 467              	.LVL46:
 468 0000 4155     		pushq	%r13
 469              		.cfi_def_cfa_offset 16
 470              		.cfi_offset 13, -16
 471 0002 4154     		pushq	%r12
 472              		.cfi_def_cfa_offset 24
 473              		.cfi_offset 12, -24
 474 0004 55       		pushq	%rbp
 475              		.cfi_def_cfa_offset 32
 476              		.cfi_offset 6, -32
 477 0005 53       		pushq	%rbx
 478              		.cfi_def_cfa_offset 40
 479              		.cfi_offset 3, -40
 480 0006 4883EC08 		subq	$8, %rsp
 481              		.cfi_def_cfa_offset 48
 482 000a 4889FB   		movq	%rdi, %rbx
 483 000d 4989F4   		movq	%rsi, %r12
 484 0010 4889D5   		movq	%rdx, %rbp
 485              	.LBB5:
 693:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
 694:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 695:/usr/include/c++/4.8/bits/basic_string.tcc ****       __glibcxx_requires_string(__lhs);
 696:/usr/include/c++/4.8/bits/basic_string.tcc ****       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
 697:/usr/include/c++/4.8/bits/basic_string.tcc ****       typedef typename __string_type::size_type	  __size_type;
 698:/usr/include/c++/4.8/bits/basic_string.tcc ****       const __size_type __len = _Traits::length(__lhs);
 486              		.loc 5 698 0
 487 0013 4889F7   		movq	%rsi, %rdi
 488              	.LVL47:
 489 0016 E8000000 		call	_ZNSt11char_traitsIcE6lengthEPKc
 489      00
 490              	.LVL48:
 491 001b 4989C5   		movq	%rax, %r13
 492              	.LVL49:
 699:/usr/include/c++/4.8/bits/basic_string.tcc ****       __string_type __str;
 493              		.loc 5 699 0
GAS LISTING /tmp/ccrG9BDx.s 			page 31


 494 001e 4889DF   		movq	%rbx, %rdi
 495 0021 E8000000 		call	_ZNSsC1Ev
 495      00
 496              	.LVL50:
 700:/usr/include/c++/4.8/bits/basic_string.tcc ****       __str.reserve(__len + __rhs.size());
 497              		.loc 5 700 0
 498 0026 4889EF   		movq	%rbp, %rdi
 499 0029 E8000000 		call	_ZNKSs4sizeEv
 499      00
 500              	.LVL51:
 501 002e 4A8D3428 		leaq	(%rax,%r13), %rsi
 502 0032 4889DF   		movq	%rbx, %rdi
 503              	.LEHB8:
 504 0035 E8000000 		call	_ZNSs7reserveEm
 504      00
 505              	.LVL52:
 701:/usr/include/c++/4.8/bits/basic_string.tcc ****       __str.append(__lhs, __len);
 506              		.loc 5 701 0
 507 003a 4C89EA   		movq	%r13, %rdx
 508 003d 4C89E6   		movq	%r12, %rsi
 509 0040 4889DF   		movq	%rbx, %rdi
 510 0043 E8000000 		call	_ZNSs6appendEPKcm
 510      00
 511              	.LVL53:
 702:/usr/include/c++/4.8/bits/basic_string.tcc ****       __str.append(__rhs);
 512              		.loc 5 702 0
 513 0048 4889EE   		movq	%rbp, %rsi
 514 004b 4889DF   		movq	%rbx, %rdi
 515 004e E8000000 		call	_ZNSs6appendERKSs
 515      00
 516              	.LEHE8:
 517              	.LVL54:
 518 0053 EB13     		jmp	.L37
 519              	.L36:
 520 0055 4889C5   		movq	%rax, %rbp
 521              	.LVL55:
 522 0058 4889DF   		movq	%rbx, %rdi
 523 005b E8000000 		call	_ZNSsD1Ev
 523      00
 524              	.LVL56:
 525 0060 4889EF   		movq	%rbp, %rdi
 526              	.LEHB9:
 527 0063 E8000000 		call	_Unwind_Resume
 527      00
 528              	.LEHE9:
 529              	.LVL57:
 530              	.L37:
 531              	.LBE5:
 703:/usr/include/c++/4.8/bits/basic_string.tcc ****       return __str;
 704:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 532              		.loc 5 704 0
 533 0068 4889D8   		movq	%rbx, %rax
 534 006b 4883C408 		addq	$8, %rsp
 535              		.cfi_def_cfa_offset 40
 536 006f 5B       		popq	%rbx
 537              		.cfi_def_cfa_offset 32
 538              	.LVL58:
GAS LISTING /tmp/ccrG9BDx.s 			page 32


 539 0070 5D       		popq	%rbp
 540              		.cfi_def_cfa_offset 24
 541              	.LVL59:
 542 0071 415C     		popq	%r12
 543              		.cfi_def_cfa_offset 16
 544              	.LVL60:
 545 0073 415D     		popq	%r13
 546              		.cfi_def_cfa_offset 8
 547              	.LVL61:
 548 0075 C3       		ret
 549              		.cfi_endproc
 550              	.LFE1317:
 551              		.section	.gcc_except_table
 552              	.LLSDA1317:
 553 0051 FF       		.byte	0xff
 554 0052 FF       		.byte	0xff
 555 0053 01       		.byte	0x1
 556 0054 08       		.uleb128 .LLSDACSE1317-.LLSDACSB1317
 557              	.LLSDACSB1317:
 558 0055 35       		.uleb128 .LEHB8-.LFB1317
 559 0056 1E       		.uleb128 .LEHE8-.LEHB8
 560 0057 55       		.uleb128 .L36-.LFB1317
 561 0058 00       		.uleb128 0
 562 0059 63       		.uleb128 .LEHB9-.LFB1317
 563 005a 05       		.uleb128 .LEHE9-.LEHB9
 564 005b 00       		.uleb128 0
 565 005c 00       		.uleb128 0
 566              	.LLSDACSE1317:
 567              		.section	.text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"axG",@progbits,_ZStplIcSt11
 569              		.section	.text._ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_,"axG",@progbits,_ZSt4moveIRSsEON
 570              		.weak	_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_
 572              	_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_:
 573              	.LFB1319:
 574              		.file 6 "/usr/include/c++/4.8/bits/move.h"
   1:/usr/include/c++/4.8/bits/move.h **** // Move, forward and identity for C++0x + swap -*- C++ -*-
   2:/usr/include/c++/4.8/bits/move.h **** 
   3:/usr/include/c++/4.8/bits/move.h **** // Copyright (C) 2007-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/bits/move.h **** //
   5:/usr/include/c++/4.8/bits/move.h **** // This file is part of the GNU ISO C++ Library.  This library is free
   6:/usr/include/c++/4.8/bits/move.h **** // software; you can redistribute it and/or modify it under the
   7:/usr/include/c++/4.8/bits/move.h **** // terms of the GNU General Public License as published by the
   8:/usr/include/c++/4.8/bits/move.h **** // Free Software Foundation; either version 3, or (at your option)
   9:/usr/include/c++/4.8/bits/move.h **** // any later version.
  10:/usr/include/c++/4.8/bits/move.h **** 
  11:/usr/include/c++/4.8/bits/move.h **** // This library is distributed in the hope that it will be useful,
  12:/usr/include/c++/4.8/bits/move.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13:/usr/include/c++/4.8/bits/move.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14:/usr/include/c++/4.8/bits/move.h **** // GNU General Public License for more details.
  15:/usr/include/c++/4.8/bits/move.h **** 
  16:/usr/include/c++/4.8/bits/move.h **** // Under Section 7 of GPL version 3, you are granted additional
  17:/usr/include/c++/4.8/bits/move.h **** // permissions described in the GCC Runtime Library Exception, version
  18:/usr/include/c++/4.8/bits/move.h **** // 3.1, as published by the Free Software Foundation.
  19:/usr/include/c++/4.8/bits/move.h **** 
  20:/usr/include/c++/4.8/bits/move.h **** // You should have received a copy of the GNU General Public License and
  21:/usr/include/c++/4.8/bits/move.h **** // a copy of the GCC Runtime Library Exception along with this program;
  22:/usr/include/c++/4.8/bits/move.h **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23:/usr/include/c++/4.8/bits/move.h **** // <http://www.gnu.org/licenses/>.
GAS LISTING /tmp/ccrG9BDx.s 			page 33


  24:/usr/include/c++/4.8/bits/move.h **** 
  25:/usr/include/c++/4.8/bits/move.h **** /** @file bits/move.h
  26:/usr/include/c++/4.8/bits/move.h ****  *  This is an internal header file, included by other library headers.
  27:/usr/include/c++/4.8/bits/move.h ****  *  Do not attempt to use it directly. @headername{utility}
  28:/usr/include/c++/4.8/bits/move.h ****  */
  29:/usr/include/c++/4.8/bits/move.h **** 
  30:/usr/include/c++/4.8/bits/move.h **** #ifndef _MOVE_H
  31:/usr/include/c++/4.8/bits/move.h **** #define _MOVE_H 1
  32:/usr/include/c++/4.8/bits/move.h **** 
  33:/usr/include/c++/4.8/bits/move.h **** #include <bits/c++config.h>
  34:/usr/include/c++/4.8/bits/move.h **** #include <bits/concept_check.h>
  35:/usr/include/c++/4.8/bits/move.h **** 
  36:/usr/include/c++/4.8/bits/move.h **** namespace std _GLIBCXX_VISIBILITY(default)
  37:/usr/include/c++/4.8/bits/move.h **** {
  38:/usr/include/c++/4.8/bits/move.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  39:/usr/include/c++/4.8/bits/move.h **** 
  40:/usr/include/c++/4.8/bits/move.h ****   // Used, in C++03 mode too, by allocators, etc.
  41:/usr/include/c++/4.8/bits/move.h ****   /**
  42:/usr/include/c++/4.8/bits/move.h ****    *  @brief Same as C++11 std::addressof
  43:/usr/include/c++/4.8/bits/move.h ****    *  @ingroup utilities
  44:/usr/include/c++/4.8/bits/move.h ****    */
  45:/usr/include/c++/4.8/bits/move.h ****   template<typename _Tp>
  46:/usr/include/c++/4.8/bits/move.h ****     inline _Tp*
  47:/usr/include/c++/4.8/bits/move.h ****     __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
  48:/usr/include/c++/4.8/bits/move.h ****     {
  49:/usr/include/c++/4.8/bits/move.h ****       return reinterpret_cast<_Tp*>
  50:/usr/include/c++/4.8/bits/move.h **** 	(&const_cast<char&>(reinterpret_cast<const volatile char&>(__r)));
  51:/usr/include/c++/4.8/bits/move.h ****     }
  52:/usr/include/c++/4.8/bits/move.h **** 
  53:/usr/include/c++/4.8/bits/move.h **** _GLIBCXX_END_NAMESPACE_VERSION
  54:/usr/include/c++/4.8/bits/move.h **** } // namespace
  55:/usr/include/c++/4.8/bits/move.h **** 
  56:/usr/include/c++/4.8/bits/move.h **** #if __cplusplus >= 201103L
  57:/usr/include/c++/4.8/bits/move.h **** #include <type_traits> // Brings in std::declval too.
  58:/usr/include/c++/4.8/bits/move.h **** 
  59:/usr/include/c++/4.8/bits/move.h **** namespace std _GLIBCXX_VISIBILITY(default)
  60:/usr/include/c++/4.8/bits/move.h **** {
  61:/usr/include/c++/4.8/bits/move.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  62:/usr/include/c++/4.8/bits/move.h **** 
  63:/usr/include/c++/4.8/bits/move.h ****   /**
  64:/usr/include/c++/4.8/bits/move.h ****    *  @addtogroup utilities
  65:/usr/include/c++/4.8/bits/move.h ****    *  @{
  66:/usr/include/c++/4.8/bits/move.h ****    */
  67:/usr/include/c++/4.8/bits/move.h **** 
  68:/usr/include/c++/4.8/bits/move.h ****   /**
  69:/usr/include/c++/4.8/bits/move.h ****    *  @brief  Forward an lvalue.
  70:/usr/include/c++/4.8/bits/move.h ****    *  @return The parameter cast to the specified type.
  71:/usr/include/c++/4.8/bits/move.h ****    *
  72:/usr/include/c++/4.8/bits/move.h ****    *  This function is used to implement "perfect forwarding".
  73:/usr/include/c++/4.8/bits/move.h ****    */
  74:/usr/include/c++/4.8/bits/move.h ****   template<typename _Tp>
  75:/usr/include/c++/4.8/bits/move.h ****     constexpr _Tp&&
  76:/usr/include/c++/4.8/bits/move.h ****     forward(typename std::remove_reference<_Tp>::type& __t) noexcept
  77:/usr/include/c++/4.8/bits/move.h ****     { return static_cast<_Tp&&>(__t); }
  78:/usr/include/c++/4.8/bits/move.h **** 
  79:/usr/include/c++/4.8/bits/move.h ****   /**
  80:/usr/include/c++/4.8/bits/move.h ****    *  @brief  Forward an rvalue.
GAS LISTING /tmp/ccrG9BDx.s 			page 34


  81:/usr/include/c++/4.8/bits/move.h ****    *  @return The parameter cast to the specified type.
  82:/usr/include/c++/4.8/bits/move.h ****    *
  83:/usr/include/c++/4.8/bits/move.h ****    *  This function is used to implement "perfect forwarding".
  84:/usr/include/c++/4.8/bits/move.h ****    */
  85:/usr/include/c++/4.8/bits/move.h ****   template<typename _Tp>
  86:/usr/include/c++/4.8/bits/move.h ****     constexpr _Tp&&
  87:/usr/include/c++/4.8/bits/move.h ****     forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
  88:/usr/include/c++/4.8/bits/move.h ****     {
  89:/usr/include/c++/4.8/bits/move.h ****       static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument"
  90:/usr/include/c++/4.8/bits/move.h **** 		    " substituting _Tp is an lvalue reference type");
  91:/usr/include/c++/4.8/bits/move.h ****       return static_cast<_Tp&&>(__t);
  92:/usr/include/c++/4.8/bits/move.h ****     }
  93:/usr/include/c++/4.8/bits/move.h **** 
  94:/usr/include/c++/4.8/bits/move.h ****   /**
  95:/usr/include/c++/4.8/bits/move.h ****    *  @brief  Convert a value to an rvalue.
  96:/usr/include/c++/4.8/bits/move.h ****    *  @param  __t  A thing of arbitrary type.
  97:/usr/include/c++/4.8/bits/move.h ****    *  @return The parameter cast to an rvalue-reference to allow moving it.
  98:/usr/include/c++/4.8/bits/move.h ****   */
  99:/usr/include/c++/4.8/bits/move.h ****   template<typename _Tp>
 100:/usr/include/c++/4.8/bits/move.h ****     constexpr typename std::remove_reference<_Tp>::type&&
 101:/usr/include/c++/4.8/bits/move.h ****     move(_Tp&& __t) noexcept
 575              		.loc 6 101 0
 576              		.cfi_startproc
 577              	.LVL62:
 578 0000 4889F8   		movq	%rdi, %rax
 102:/usr/include/c++/4.8/bits/move.h ****     { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
 579              		.loc 6 102 0
 580 0003 C3       		ret
 581              		.cfi_endproc
 582              	.LFE1319:
 584              		.section	.text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_,"axG",@progbits,_ZStplIcSt11c
 585              		.weak	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_
 587              	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_:
 588              	.LFB1318:
 589              		.file 7 "/usr/include/c++/4.8/bits/basic_string.h"
   1:/usr/include/c++/4.8/bits/basic_string.h **** // Components for manipulating sequences of characters -*- C++ -*-
   2:/usr/include/c++/4.8/bits/basic_string.h **** 
   3:/usr/include/c++/4.8/bits/basic_string.h **** // Copyright (C) 1997-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/bits/basic_string.h **** //
   5:/usr/include/c++/4.8/bits/basic_string.h **** // This file is part of the GNU ISO C++ Library.  This library is free
   6:/usr/include/c++/4.8/bits/basic_string.h **** // software; you can redistribute it and/or modify it under the
   7:/usr/include/c++/4.8/bits/basic_string.h **** // terms of the GNU General Public License as published by the
   8:/usr/include/c++/4.8/bits/basic_string.h **** // Free Software Foundation; either version 3, or (at your option)
   9:/usr/include/c++/4.8/bits/basic_string.h **** // any later version.
  10:/usr/include/c++/4.8/bits/basic_string.h **** 
  11:/usr/include/c++/4.8/bits/basic_string.h **** // This library is distributed in the hope that it will be useful,
  12:/usr/include/c++/4.8/bits/basic_string.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13:/usr/include/c++/4.8/bits/basic_string.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14:/usr/include/c++/4.8/bits/basic_string.h **** // GNU General Public License for more details.
  15:/usr/include/c++/4.8/bits/basic_string.h **** 
  16:/usr/include/c++/4.8/bits/basic_string.h **** // Under Section 7 of GPL version 3, you are granted additional
  17:/usr/include/c++/4.8/bits/basic_string.h **** // permissions described in the GCC Runtime Library Exception, version
  18:/usr/include/c++/4.8/bits/basic_string.h **** // 3.1, as published by the Free Software Foundation.
  19:/usr/include/c++/4.8/bits/basic_string.h **** 
  20:/usr/include/c++/4.8/bits/basic_string.h **** // You should have received a copy of the GNU General Public License and
  21:/usr/include/c++/4.8/bits/basic_string.h **** // a copy of the GCC Runtime Library Exception along with this program;
  22:/usr/include/c++/4.8/bits/basic_string.h **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
GAS LISTING /tmp/ccrG9BDx.s 			page 35


  23:/usr/include/c++/4.8/bits/basic_string.h **** // <http://www.gnu.org/licenses/>.
  24:/usr/include/c++/4.8/bits/basic_string.h **** 
  25:/usr/include/c++/4.8/bits/basic_string.h **** /** @file bits/basic_string.h
  26:/usr/include/c++/4.8/bits/basic_string.h ****  *  This is an internal header file, included by other library headers.
  27:/usr/include/c++/4.8/bits/basic_string.h ****  *  Do not attempt to use it directly. @headername{string}
  28:/usr/include/c++/4.8/bits/basic_string.h ****  */
  29:/usr/include/c++/4.8/bits/basic_string.h **** 
  30:/usr/include/c++/4.8/bits/basic_string.h **** //
  31:/usr/include/c++/4.8/bits/basic_string.h **** // ISO C++ 14882: 21 Strings library
  32:/usr/include/c++/4.8/bits/basic_string.h **** //
  33:/usr/include/c++/4.8/bits/basic_string.h **** 
  34:/usr/include/c++/4.8/bits/basic_string.h **** #ifndef _BASIC_STRING_H
  35:/usr/include/c++/4.8/bits/basic_string.h **** #define _BASIC_STRING_H 1
  36:/usr/include/c++/4.8/bits/basic_string.h **** 
  37:/usr/include/c++/4.8/bits/basic_string.h **** #pragma GCC system_header
  38:/usr/include/c++/4.8/bits/basic_string.h **** 
  39:/usr/include/c++/4.8/bits/basic_string.h **** #include <ext/atomicity.h>
  40:/usr/include/c++/4.8/bits/basic_string.h **** #include <debug/debug.h>
  41:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
  42:/usr/include/c++/4.8/bits/basic_string.h **** #include <initializer_list>
  43:/usr/include/c++/4.8/bits/basic_string.h **** #endif
  44:/usr/include/c++/4.8/bits/basic_string.h **** 
  45:/usr/include/c++/4.8/bits/basic_string.h **** namespace std _GLIBCXX_VISIBILITY(default)
  46:/usr/include/c++/4.8/bits/basic_string.h **** {
  47:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  48:/usr/include/c++/4.8/bits/basic_string.h **** 
  49:/usr/include/c++/4.8/bits/basic_string.h ****   /**
  50:/usr/include/c++/4.8/bits/basic_string.h ****    *  @class basic_string basic_string.h <string>
  51:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Managing sequences of characters and character-like objects.
  52:/usr/include/c++/4.8/bits/basic_string.h ****    *
  53:/usr/include/c++/4.8/bits/basic_string.h ****    *  @ingroup strings
  54:/usr/include/c++/4.8/bits/basic_string.h ****    *  @ingroup sequences
  55:/usr/include/c++/4.8/bits/basic_string.h ****    *
  56:/usr/include/c++/4.8/bits/basic_string.h ****    *  @tparam _CharT  Type of character
  57:/usr/include/c++/4.8/bits/basic_string.h ****    *  @tparam _Traits  Traits for character type, defaults to
  58:/usr/include/c++/4.8/bits/basic_string.h ****    *                   char_traits<_CharT>.
  59:/usr/include/c++/4.8/bits/basic_string.h ****    *  @tparam _Alloc  Allocator type, defaults to allocator<_CharT>.
  60:/usr/include/c++/4.8/bits/basic_string.h ****    *
  61:/usr/include/c++/4.8/bits/basic_string.h ****    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
  62:/usr/include/c++/4.8/bits/basic_string.h ****    *  <a href="tables.html#66">reversible container</a>, and a
  63:/usr/include/c++/4.8/bits/basic_string.h ****    *  <a href="tables.html#67">sequence</a>.  Of the
  64:/usr/include/c++/4.8/bits/basic_string.h ****    *  <a href="tables.html#68">optional sequence requirements</a>, only
  65:/usr/include/c++/4.8/bits/basic_string.h ****    *  @c push_back, @c at, and @c %array access are supported.
  66:/usr/include/c++/4.8/bits/basic_string.h ****    *
  67:/usr/include/c++/4.8/bits/basic_string.h ****    *  @doctodo
  68:/usr/include/c++/4.8/bits/basic_string.h ****    *
  69:/usr/include/c++/4.8/bits/basic_string.h ****    *
  70:/usr/include/c++/4.8/bits/basic_string.h ****    *  Documentation?  What's that?
  71:/usr/include/c++/4.8/bits/basic_string.h ****    *  Nathan Myers <ncm@cantrip.org>.
  72:/usr/include/c++/4.8/bits/basic_string.h ****    *
  73:/usr/include/c++/4.8/bits/basic_string.h ****    *  A string looks like this:
  74:/usr/include/c++/4.8/bits/basic_string.h ****    *
  75:/usr/include/c++/4.8/bits/basic_string.h ****    *  @code
  76:/usr/include/c++/4.8/bits/basic_string.h ****    *                                        [_Rep]
  77:/usr/include/c++/4.8/bits/basic_string.h ****    *                                        _M_length
  78:/usr/include/c++/4.8/bits/basic_string.h ****    *   [basic_string<char_type>]            _M_capacity
  79:/usr/include/c++/4.8/bits/basic_string.h ****    *   _M_dataplus                          _M_refcount
GAS LISTING /tmp/ccrG9BDx.s 			page 36


  80:/usr/include/c++/4.8/bits/basic_string.h ****    *   _M_p ---------------->               unnamed array of char_type
  81:/usr/include/c++/4.8/bits/basic_string.h ****    *  @endcode
  82:/usr/include/c++/4.8/bits/basic_string.h ****    *
  83:/usr/include/c++/4.8/bits/basic_string.h ****    *  Where the _M_p points to the first character in the string, and
  84:/usr/include/c++/4.8/bits/basic_string.h ****    *  you cast it to a pointer-to-_Rep and subtract 1 to get a
  85:/usr/include/c++/4.8/bits/basic_string.h ****    *  pointer to the header.
  86:/usr/include/c++/4.8/bits/basic_string.h ****    *
  87:/usr/include/c++/4.8/bits/basic_string.h ****    *  This approach has the enormous advantage that a string object
  88:/usr/include/c++/4.8/bits/basic_string.h ****    *  requires only one allocation.  All the ugliness is confined
  89:/usr/include/c++/4.8/bits/basic_string.h ****    *  within a single %pair of inline functions, which each compile to
  90:/usr/include/c++/4.8/bits/basic_string.h ****    *  a single @a add instruction: _Rep::_M_data(), and
  91:/usr/include/c++/4.8/bits/basic_string.h ****    *  string::_M_rep(); and the allocation function which gets a
  92:/usr/include/c++/4.8/bits/basic_string.h ****    *  block of raw bytes and with room enough and constructs a _Rep
  93:/usr/include/c++/4.8/bits/basic_string.h ****    *  object at the front.
  94:/usr/include/c++/4.8/bits/basic_string.h ****    *
  95:/usr/include/c++/4.8/bits/basic_string.h ****    *  The reason you want _M_data pointing to the character %array and
  96:/usr/include/c++/4.8/bits/basic_string.h ****    *  not the _Rep is so that the debugger can see the string
  97:/usr/include/c++/4.8/bits/basic_string.h ****    *  contents. (Probably we should add a non-inline member to get
  98:/usr/include/c++/4.8/bits/basic_string.h ****    *  the _Rep for the debugger to use, so users can check the actual
  99:/usr/include/c++/4.8/bits/basic_string.h ****    *  string length.)
 100:/usr/include/c++/4.8/bits/basic_string.h ****    *
 101:/usr/include/c++/4.8/bits/basic_string.h ****    *  Note that the _Rep object is a POD so that you can have a
 102:/usr/include/c++/4.8/bits/basic_string.h ****    *  static <em>empty string</em> _Rep object already @a constructed before
 103:/usr/include/c++/4.8/bits/basic_string.h ****    *  static constructors have run.  The reference-count encoding is
 104:/usr/include/c++/4.8/bits/basic_string.h ****    *  chosen so that a 0 indicates one reference, so you never try to
 105:/usr/include/c++/4.8/bits/basic_string.h ****    *  destroy the empty-string _Rep object.
 106:/usr/include/c++/4.8/bits/basic_string.h ****    *
 107:/usr/include/c++/4.8/bits/basic_string.h ****    *  All but the last paragraph is considered pretty conventional
 108:/usr/include/c++/4.8/bits/basic_string.h ****    *  for a C++ string implementation.
 109:/usr/include/c++/4.8/bits/basic_string.h ****   */
 110:/usr/include/c++/4.8/bits/basic_string.h ****   // 21.3  Template class basic_string
 111:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
 112:/usr/include/c++/4.8/bits/basic_string.h ****     class basic_string
 113:/usr/include/c++/4.8/bits/basic_string.h ****     {
 114:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
 115:/usr/include/c++/4.8/bits/basic_string.h **** 
 116:/usr/include/c++/4.8/bits/basic_string.h ****       // Types:
 117:/usr/include/c++/4.8/bits/basic_string.h ****     public:
 118:/usr/include/c++/4.8/bits/basic_string.h ****       typedef _Traits					    traits_type;
 119:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _Traits::char_type		    value_type;
 120:/usr/include/c++/4.8/bits/basic_string.h ****       typedef _Alloc					    allocator_type;
 121:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::size_type	    size_type;
 122:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::difference_type   difference_type;
 123:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::reference	    reference;
 124:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::const_reference   const_reference;
 125:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::pointer	    pointer;
 126:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::const_pointer	    const_pointer;
 127:/usr/include/c++/4.8/bits/basic_string.h ****       typedef __gnu_cxx::__normal_iterator<pointer, basic_string>  iterator;
 128:/usr/include/c++/4.8/bits/basic_string.h ****       typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
 129:/usr/include/c++/4.8/bits/basic_string.h ****                                                             const_iterator;
 130:/usr/include/c++/4.8/bits/basic_string.h ****       typedef std::reverse_iterator<const_iterator>	const_reverse_iterator;
 131:/usr/include/c++/4.8/bits/basic_string.h ****       typedef std::reverse_iterator<iterator>		    reverse_iterator;
 132:/usr/include/c++/4.8/bits/basic_string.h **** 
 133:/usr/include/c++/4.8/bits/basic_string.h ****     private:
 134:/usr/include/c++/4.8/bits/basic_string.h ****       // _Rep: string representation
 135:/usr/include/c++/4.8/bits/basic_string.h ****       //   Invariants:
 136:/usr/include/c++/4.8/bits/basic_string.h ****       //   1. String really contains _M_length + 1 characters: due to 21.3.4
GAS LISTING /tmp/ccrG9BDx.s 			page 37


 137:/usr/include/c++/4.8/bits/basic_string.h ****       //      must be kept null-terminated.
 138:/usr/include/c++/4.8/bits/basic_string.h ****       //   2. _M_capacity >= _M_length
 139:/usr/include/c++/4.8/bits/basic_string.h ****       //      Allocated memory is always (_M_capacity + 1) * sizeof(_CharT).
 140:/usr/include/c++/4.8/bits/basic_string.h ****       //   3. _M_refcount has three states:
 141:/usr/include/c++/4.8/bits/basic_string.h ****       //      -1: leaked, one reference, no ref-copies allowed, non-const.
 142:/usr/include/c++/4.8/bits/basic_string.h ****       //       0: one reference, non-const.
 143:/usr/include/c++/4.8/bits/basic_string.h ****       //     n>0: n + 1 references, operations require a lock, const.
 144:/usr/include/c++/4.8/bits/basic_string.h ****       //   4. All fields==0 is an empty string, given the extra storage
 145:/usr/include/c++/4.8/bits/basic_string.h ****       //      beyond-the-end for a null terminator; thus, the shared
 146:/usr/include/c++/4.8/bits/basic_string.h ****       //      empty string representation needs no constructor.
 147:/usr/include/c++/4.8/bits/basic_string.h **** 
 148:/usr/include/c++/4.8/bits/basic_string.h ****       struct _Rep_base
 149:/usr/include/c++/4.8/bits/basic_string.h ****       {
 150:/usr/include/c++/4.8/bits/basic_string.h **** 	size_type		_M_length;
 151:/usr/include/c++/4.8/bits/basic_string.h **** 	size_type		_M_capacity;
 152:/usr/include/c++/4.8/bits/basic_string.h **** 	_Atomic_word		_M_refcount;
 153:/usr/include/c++/4.8/bits/basic_string.h ****       };
 154:/usr/include/c++/4.8/bits/basic_string.h **** 
 155:/usr/include/c++/4.8/bits/basic_string.h ****       struct _Rep : _Rep_base
 156:/usr/include/c++/4.8/bits/basic_string.h ****       {
 157:/usr/include/c++/4.8/bits/basic_string.h **** 	// Types:
 158:/usr/include/c++/4.8/bits/basic_string.h **** 	typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;
 159:/usr/include/c++/4.8/bits/basic_string.h **** 
 160:/usr/include/c++/4.8/bits/basic_string.h **** 	// (Public) Data members:
 161:/usr/include/c++/4.8/bits/basic_string.h **** 
 162:/usr/include/c++/4.8/bits/basic_string.h **** 	// The maximum number of individual char_type elements of an
 163:/usr/include/c++/4.8/bits/basic_string.h **** 	// individual string is determined by _S_max_size. This is the
 164:/usr/include/c++/4.8/bits/basic_string.h **** 	// value that will be returned by max_size().  (Whereas npos
 165:/usr/include/c++/4.8/bits/basic_string.h **** 	// is the maximum number of bytes the allocator can allocate.)
 166:/usr/include/c++/4.8/bits/basic_string.h **** 	// If one was to divvy up the theoretical largest size string,
 167:/usr/include/c++/4.8/bits/basic_string.h **** 	// with a terminating character and m _CharT elements, it'd
 168:/usr/include/c++/4.8/bits/basic_string.h **** 	// look like this:
 169:/usr/include/c++/4.8/bits/basic_string.h **** 	// npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT)
 170:/usr/include/c++/4.8/bits/basic_string.h **** 	// Solving for m:
 171:/usr/include/c++/4.8/bits/basic_string.h **** 	// m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1
 172:/usr/include/c++/4.8/bits/basic_string.h **** 	// In addition, this implementation quarters this amount.
 173:/usr/include/c++/4.8/bits/basic_string.h **** 	static const size_type	_S_max_size;
 174:/usr/include/c++/4.8/bits/basic_string.h **** 	static const _CharT	_S_terminal;
 175:/usr/include/c++/4.8/bits/basic_string.h **** 
 176:/usr/include/c++/4.8/bits/basic_string.h **** 	// The following storage is init'd to 0 by the linker, resulting
 177:/usr/include/c++/4.8/bits/basic_string.h ****         // (carefully) in an empty string with one reference.
 178:/usr/include/c++/4.8/bits/basic_string.h ****         static size_type _S_empty_rep_storage[];
 179:/usr/include/c++/4.8/bits/basic_string.h **** 
 180:/usr/include/c++/4.8/bits/basic_string.h ****         static _Rep&
 181:/usr/include/c++/4.8/bits/basic_string.h ****         _S_empty_rep()
 182:/usr/include/c++/4.8/bits/basic_string.h ****         { 
 183:/usr/include/c++/4.8/bits/basic_string.h **** 	  // NB: Mild hack to avoid strict-aliasing warnings.  Note that
 184:/usr/include/c++/4.8/bits/basic_string.h **** 	  // _S_empty_rep_storage is never modified and the punning should
 185:/usr/include/c++/4.8/bits/basic_string.h **** 	  // be reasonably safe in this case.
 186:/usr/include/c++/4.8/bits/basic_string.h **** 	  void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage);
 187:/usr/include/c++/4.8/bits/basic_string.h **** 	  return *reinterpret_cast<_Rep*>(__p);
 188:/usr/include/c++/4.8/bits/basic_string.h **** 	}
 189:/usr/include/c++/4.8/bits/basic_string.h **** 
 190:/usr/include/c++/4.8/bits/basic_string.h ****         bool
 191:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_is_leaked() const
 192:/usr/include/c++/4.8/bits/basic_string.h ****         { return this->_M_refcount < 0; }
 193:/usr/include/c++/4.8/bits/basic_string.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 38


 194:/usr/include/c++/4.8/bits/basic_string.h ****         bool
 195:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_is_shared() const
 196:/usr/include/c++/4.8/bits/basic_string.h ****         { return this->_M_refcount > 0; }
 197:/usr/include/c++/4.8/bits/basic_string.h **** 
 198:/usr/include/c++/4.8/bits/basic_string.h ****         void
 199:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_set_leaked()
 200:/usr/include/c++/4.8/bits/basic_string.h ****         { this->_M_refcount = -1; }
 201:/usr/include/c++/4.8/bits/basic_string.h **** 
 202:/usr/include/c++/4.8/bits/basic_string.h ****         void
 203:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_set_sharable()
 204:/usr/include/c++/4.8/bits/basic_string.h ****         { this->_M_refcount = 0; }
 205:/usr/include/c++/4.8/bits/basic_string.h **** 
 206:/usr/include/c++/4.8/bits/basic_string.h **** 	void
 207:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_set_length_and_sharable(size_type __n)
 208:/usr/include/c++/4.8/bits/basic_string.h **** 	{
 209:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 210:/usr/include/c++/4.8/bits/basic_string.h **** 	  if (__builtin_expect(this != &_S_empty_rep(), false))
 211:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 212:/usr/include/c++/4.8/bits/basic_string.h **** 	    {
 213:/usr/include/c++/4.8/bits/basic_string.h **** 	      this->_M_set_sharable();  // One reference.
 214:/usr/include/c++/4.8/bits/basic_string.h **** 	      this->_M_length = __n;
 215:/usr/include/c++/4.8/bits/basic_string.h **** 	      traits_type::assign(this->_M_refdata()[__n], _S_terminal);
 216:/usr/include/c++/4.8/bits/basic_string.h **** 	      // grrr. (per 21.3.4)
 217:/usr/include/c++/4.8/bits/basic_string.h **** 	      // You cannot leave those LWG people alone for a second.
 218:/usr/include/c++/4.8/bits/basic_string.h **** 	    }
 219:/usr/include/c++/4.8/bits/basic_string.h **** 	}
 220:/usr/include/c++/4.8/bits/basic_string.h **** 
 221:/usr/include/c++/4.8/bits/basic_string.h **** 	_CharT*
 222:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_refdata() throw()
 223:/usr/include/c++/4.8/bits/basic_string.h **** 	{ return reinterpret_cast<_CharT*>(this + 1); }
 224:/usr/include/c++/4.8/bits/basic_string.h **** 
 225:/usr/include/c++/4.8/bits/basic_string.h **** 	_CharT*
 226:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)
 227:/usr/include/c++/4.8/bits/basic_string.h **** 	{
 228:/usr/include/c++/4.8/bits/basic_string.h **** 	  return (!_M_is_leaked() && __alloc1 == __alloc2)
 229:/usr/include/c++/4.8/bits/basic_string.h **** 	          ? _M_refcopy() : _M_clone(__alloc1);
 230:/usr/include/c++/4.8/bits/basic_string.h **** 	}
 231:/usr/include/c++/4.8/bits/basic_string.h **** 
 232:/usr/include/c++/4.8/bits/basic_string.h **** 	// Create & Destroy
 233:/usr/include/c++/4.8/bits/basic_string.h **** 	static _Rep*
 234:/usr/include/c++/4.8/bits/basic_string.h **** 	_S_create(size_type, size_type, const _Alloc&);
 235:/usr/include/c++/4.8/bits/basic_string.h **** 
 236:/usr/include/c++/4.8/bits/basic_string.h **** 	void
 237:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_dispose(const _Alloc& __a)
 238:/usr/include/c++/4.8/bits/basic_string.h **** 	{
 239:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 240:/usr/include/c++/4.8/bits/basic_string.h **** 	  if (__builtin_expect(this != &_S_empty_rep(), false))
 241:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 242:/usr/include/c++/4.8/bits/basic_string.h **** 	    {
 243:/usr/include/c++/4.8/bits/basic_string.h **** 	      // Be race-detector-friendly.  For more info see bits/c++config.
 244:/usr/include/c++/4.8/bits/basic_string.h **** 	      _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount);
 245:/usr/include/c++/4.8/bits/basic_string.h **** 	      if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount,
 246:/usr/include/c++/4.8/bits/basic_string.h **** 							 -1) <= 0)
 247:/usr/include/c++/4.8/bits/basic_string.h **** 		{
 248:/usr/include/c++/4.8/bits/basic_string.h **** 		  _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount);
 249:/usr/include/c++/4.8/bits/basic_string.h **** 		  _M_destroy(__a);
 250:/usr/include/c++/4.8/bits/basic_string.h **** 		}
GAS LISTING /tmp/ccrG9BDx.s 			page 39


 251:/usr/include/c++/4.8/bits/basic_string.h **** 	    }
 252:/usr/include/c++/4.8/bits/basic_string.h **** 	}  // XXX MT
 253:/usr/include/c++/4.8/bits/basic_string.h **** 
 254:/usr/include/c++/4.8/bits/basic_string.h **** 	void
 255:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_destroy(const _Alloc&) throw();
 256:/usr/include/c++/4.8/bits/basic_string.h **** 
 257:/usr/include/c++/4.8/bits/basic_string.h **** 	_CharT*
 258:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_refcopy() throw()
 259:/usr/include/c++/4.8/bits/basic_string.h **** 	{
 260:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 261:/usr/include/c++/4.8/bits/basic_string.h **** 	  if (__builtin_expect(this != &_S_empty_rep(), false))
 262:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 263:/usr/include/c++/4.8/bits/basic_string.h ****             __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1);
 264:/usr/include/c++/4.8/bits/basic_string.h **** 	  return _M_refdata();
 265:/usr/include/c++/4.8/bits/basic_string.h **** 	}  // XXX MT
 266:/usr/include/c++/4.8/bits/basic_string.h **** 
 267:/usr/include/c++/4.8/bits/basic_string.h **** 	_CharT*
 268:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_clone(const _Alloc&, size_type __res = 0);
 269:/usr/include/c++/4.8/bits/basic_string.h ****       };
 270:/usr/include/c++/4.8/bits/basic_string.h **** 
 271:/usr/include/c++/4.8/bits/basic_string.h ****       // Use empty-base optimization: http://www.cantrip.org/emptyopt.html
 272:/usr/include/c++/4.8/bits/basic_string.h ****       struct _Alloc_hider : _Alloc
 273:/usr/include/c++/4.8/bits/basic_string.h ****       {
 274:/usr/include/c++/4.8/bits/basic_string.h **** 	_Alloc_hider(_CharT* __dat, const _Alloc& __a)
 275:/usr/include/c++/4.8/bits/basic_string.h **** 	: _Alloc(__a), _M_p(__dat) { }
 276:/usr/include/c++/4.8/bits/basic_string.h **** 
 277:/usr/include/c++/4.8/bits/basic_string.h **** 	_CharT* _M_p; // The actual data.
 278:/usr/include/c++/4.8/bits/basic_string.h ****       };
 279:/usr/include/c++/4.8/bits/basic_string.h **** 
 280:/usr/include/c++/4.8/bits/basic_string.h ****     public:
 281:/usr/include/c++/4.8/bits/basic_string.h ****       // Data Members (public):
 282:/usr/include/c++/4.8/bits/basic_string.h ****       // NB: This is an unsigned type, and thus represents the maximum
 283:/usr/include/c++/4.8/bits/basic_string.h ****       // size that the allocator can hold.
 284:/usr/include/c++/4.8/bits/basic_string.h ****       ///  Value returned by various member functions when they fail.
 285:/usr/include/c++/4.8/bits/basic_string.h ****       static const size_type	npos = static_cast<size_type>(-1);
 286:/usr/include/c++/4.8/bits/basic_string.h **** 
 287:/usr/include/c++/4.8/bits/basic_string.h ****     private:
 288:/usr/include/c++/4.8/bits/basic_string.h ****       // Data Members (private):
 289:/usr/include/c++/4.8/bits/basic_string.h ****       mutable _Alloc_hider	_M_dataplus;
 290:/usr/include/c++/4.8/bits/basic_string.h **** 
 291:/usr/include/c++/4.8/bits/basic_string.h ****       _CharT*
 292:/usr/include/c++/4.8/bits/basic_string.h ****       _M_data() const
 293:/usr/include/c++/4.8/bits/basic_string.h ****       { return  _M_dataplus._M_p; }
 294:/usr/include/c++/4.8/bits/basic_string.h **** 
 295:/usr/include/c++/4.8/bits/basic_string.h ****       _CharT*
 296:/usr/include/c++/4.8/bits/basic_string.h ****       _M_data(_CharT* __p)
 297:/usr/include/c++/4.8/bits/basic_string.h ****       { return (_M_dataplus._M_p = __p); }
 298:/usr/include/c++/4.8/bits/basic_string.h **** 
 299:/usr/include/c++/4.8/bits/basic_string.h ****       _Rep*
 300:/usr/include/c++/4.8/bits/basic_string.h ****       _M_rep() const
 301:/usr/include/c++/4.8/bits/basic_string.h ****       { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
 302:/usr/include/c++/4.8/bits/basic_string.h **** 
 303:/usr/include/c++/4.8/bits/basic_string.h ****       // For the internal use we have functions similar to `begin'/`end'
 304:/usr/include/c++/4.8/bits/basic_string.h ****       // but they do not call _M_leak.
 305:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
 306:/usr/include/c++/4.8/bits/basic_string.h ****       _M_ibegin() const
 307:/usr/include/c++/4.8/bits/basic_string.h ****       { return iterator(_M_data()); }
GAS LISTING /tmp/ccrG9BDx.s 			page 40


 308:/usr/include/c++/4.8/bits/basic_string.h **** 
 309:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
 310:/usr/include/c++/4.8/bits/basic_string.h ****       _M_iend() const
 311:/usr/include/c++/4.8/bits/basic_string.h ****       { return iterator(_M_data() + this->size()); }
 312:/usr/include/c++/4.8/bits/basic_string.h **** 
 313:/usr/include/c++/4.8/bits/basic_string.h ****       void
 314:/usr/include/c++/4.8/bits/basic_string.h ****       _M_leak()    // for use in begin() & non-const op[]
 315:/usr/include/c++/4.8/bits/basic_string.h ****       {
 316:/usr/include/c++/4.8/bits/basic_string.h **** 	if (!_M_rep()->_M_is_leaked())
 317:/usr/include/c++/4.8/bits/basic_string.h **** 	  _M_leak_hard();
 318:/usr/include/c++/4.8/bits/basic_string.h ****       }
 319:/usr/include/c++/4.8/bits/basic_string.h **** 
 320:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 321:/usr/include/c++/4.8/bits/basic_string.h ****       _M_check(size_type __pos, const char* __s) const
 322:/usr/include/c++/4.8/bits/basic_string.h ****       {
 323:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__pos > this->size())
 324:/usr/include/c++/4.8/bits/basic_string.h **** 	  __throw_out_of_range(__N(__s));
 325:/usr/include/c++/4.8/bits/basic_string.h **** 	return __pos;
 326:/usr/include/c++/4.8/bits/basic_string.h ****       }
 327:/usr/include/c++/4.8/bits/basic_string.h **** 
 328:/usr/include/c++/4.8/bits/basic_string.h ****       void
 329:/usr/include/c++/4.8/bits/basic_string.h ****       _M_check_length(size_type __n1, size_type __n2, const char* __s) const
 330:/usr/include/c++/4.8/bits/basic_string.h ****       {
 331:/usr/include/c++/4.8/bits/basic_string.h **** 	if (this->max_size() - (this->size() - __n1) < __n2)
 332:/usr/include/c++/4.8/bits/basic_string.h **** 	  __throw_length_error(__N(__s));
 333:/usr/include/c++/4.8/bits/basic_string.h ****       }
 334:/usr/include/c++/4.8/bits/basic_string.h **** 
 335:/usr/include/c++/4.8/bits/basic_string.h ****       // NB: _M_limit doesn't check for a bad __pos value.
 336:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 337:/usr/include/c++/4.8/bits/basic_string.h ****       _M_limit(size_type __pos, size_type __off) const
 338:/usr/include/c++/4.8/bits/basic_string.h ****       {
 339:/usr/include/c++/4.8/bits/basic_string.h **** 	const bool __testoff =  __off < this->size() - __pos;
 340:/usr/include/c++/4.8/bits/basic_string.h **** 	return __testoff ? __off : this->size() - __pos;
 341:/usr/include/c++/4.8/bits/basic_string.h ****       }
 342:/usr/include/c++/4.8/bits/basic_string.h **** 
 343:/usr/include/c++/4.8/bits/basic_string.h ****       // True if _Rep and source do not overlap.
 344:/usr/include/c++/4.8/bits/basic_string.h ****       bool
 345:/usr/include/c++/4.8/bits/basic_string.h ****       _M_disjunct(const _CharT* __s) const
 346:/usr/include/c++/4.8/bits/basic_string.h ****       {
 347:/usr/include/c++/4.8/bits/basic_string.h **** 	return (less<const _CharT*>()(__s, _M_data())
 348:/usr/include/c++/4.8/bits/basic_string.h **** 		|| less<const _CharT*>()(_M_data() + this->size(), __s));
 349:/usr/include/c++/4.8/bits/basic_string.h ****       }
 350:/usr/include/c++/4.8/bits/basic_string.h **** 
 351:/usr/include/c++/4.8/bits/basic_string.h ****       // When __n = 1 way faster than the general multichar
 352:/usr/include/c++/4.8/bits/basic_string.h ****       // traits_type::copy/move/assign.
 353:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 354:/usr/include/c++/4.8/bits/basic_string.h ****       _M_copy(_CharT* __d, const _CharT* __s, size_type __n)
 355:/usr/include/c++/4.8/bits/basic_string.h ****       {
 356:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__n == 1)
 357:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::assign(*__d, *__s);
 358:/usr/include/c++/4.8/bits/basic_string.h **** 	else
 359:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::copy(__d, __s, __n);
 360:/usr/include/c++/4.8/bits/basic_string.h ****       }
 361:/usr/include/c++/4.8/bits/basic_string.h **** 
 362:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 363:/usr/include/c++/4.8/bits/basic_string.h ****       _M_move(_CharT* __d, const _CharT* __s, size_type __n)
 364:/usr/include/c++/4.8/bits/basic_string.h ****       {
GAS LISTING /tmp/ccrG9BDx.s 			page 41


 365:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__n == 1)
 366:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::assign(*__d, *__s);
 367:/usr/include/c++/4.8/bits/basic_string.h **** 	else
 368:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::move(__d, __s, __n);	  
 369:/usr/include/c++/4.8/bits/basic_string.h ****       }
 370:/usr/include/c++/4.8/bits/basic_string.h **** 
 371:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 372:/usr/include/c++/4.8/bits/basic_string.h ****       _M_assign(_CharT* __d, size_type __n, _CharT __c)
 373:/usr/include/c++/4.8/bits/basic_string.h ****       {
 374:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__n == 1)
 375:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::assign(*__d, __c);
 376:/usr/include/c++/4.8/bits/basic_string.h **** 	else
 377:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::assign(__d, __n, __c);	  
 378:/usr/include/c++/4.8/bits/basic_string.h ****       }
 379:/usr/include/c++/4.8/bits/basic_string.h **** 
 380:/usr/include/c++/4.8/bits/basic_string.h ****       // _S_copy_chars is a separate template to permit specialization
 381:/usr/include/c++/4.8/bits/basic_string.h ****       // to optimize for the common case of pointers as iterators.
 382:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _Iterator>
 383:/usr/include/c++/4.8/bits/basic_string.h ****         static void
 384:/usr/include/c++/4.8/bits/basic_string.h ****         _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
 385:/usr/include/c++/4.8/bits/basic_string.h ****         {
 386:/usr/include/c++/4.8/bits/basic_string.h **** 	  for (; __k1 != __k2; ++__k1, ++__p)
 387:/usr/include/c++/4.8/bits/basic_string.h **** 	    traits_type::assign(*__p, *__k1); // These types are off.
 388:/usr/include/c++/4.8/bits/basic_string.h **** 	}
 389:/usr/include/c++/4.8/bits/basic_string.h **** 
 390:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 391:/usr/include/c++/4.8/bits/basic_string.h ****       _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)
 392:/usr/include/c++/4.8/bits/basic_string.h ****       { _S_copy_chars(__p, __k1.base(), __k2.base()); }
 393:/usr/include/c++/4.8/bits/basic_string.h **** 
 394:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 395:/usr/include/c++/4.8/bits/basic_string.h ****       _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
 396:/usr/include/c++/4.8/bits/basic_string.h ****       { _S_copy_chars(__p, __k1.base(), __k2.base()); }
 397:/usr/include/c++/4.8/bits/basic_string.h **** 
 398:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 399:/usr/include/c++/4.8/bits/basic_string.h ****       _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
 400:/usr/include/c++/4.8/bits/basic_string.h ****       { _M_copy(__p, __k1, __k2 - __k1); }
 401:/usr/include/c++/4.8/bits/basic_string.h **** 
 402:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 403:/usr/include/c++/4.8/bits/basic_string.h ****       _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
 404:/usr/include/c++/4.8/bits/basic_string.h ****       { _M_copy(__p, __k1, __k2 - __k1); }
 405:/usr/include/c++/4.8/bits/basic_string.h **** 
 406:/usr/include/c++/4.8/bits/basic_string.h ****       static int
 407:/usr/include/c++/4.8/bits/basic_string.h ****       _S_compare(size_type __n1, size_type __n2)
 408:/usr/include/c++/4.8/bits/basic_string.h ****       {
 409:/usr/include/c++/4.8/bits/basic_string.h **** 	const difference_type __d = difference_type(__n1 - __n2);
 410:/usr/include/c++/4.8/bits/basic_string.h **** 
 411:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__d > __gnu_cxx::__numeric_traits<int>::__max)
 412:/usr/include/c++/4.8/bits/basic_string.h **** 	  return __gnu_cxx::__numeric_traits<int>::__max;
 413:/usr/include/c++/4.8/bits/basic_string.h **** 	else if (__d < __gnu_cxx::__numeric_traits<int>::__min)
 414:/usr/include/c++/4.8/bits/basic_string.h **** 	  return __gnu_cxx::__numeric_traits<int>::__min;
 415:/usr/include/c++/4.8/bits/basic_string.h **** 	else
 416:/usr/include/c++/4.8/bits/basic_string.h **** 	  return int(__d);
 417:/usr/include/c++/4.8/bits/basic_string.h ****       }
 418:/usr/include/c++/4.8/bits/basic_string.h **** 
 419:/usr/include/c++/4.8/bits/basic_string.h ****       void
 420:/usr/include/c++/4.8/bits/basic_string.h ****       _M_mutate(size_type __pos, size_type __len1, size_type __len2);
 421:/usr/include/c++/4.8/bits/basic_string.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 42


 422:/usr/include/c++/4.8/bits/basic_string.h ****       void
 423:/usr/include/c++/4.8/bits/basic_string.h ****       _M_leak_hard();
 424:/usr/include/c++/4.8/bits/basic_string.h **** 
 425:/usr/include/c++/4.8/bits/basic_string.h ****       static _Rep&
 426:/usr/include/c++/4.8/bits/basic_string.h ****       _S_empty_rep()
 427:/usr/include/c++/4.8/bits/basic_string.h ****       { return _Rep::_S_empty_rep(); }
 428:/usr/include/c++/4.8/bits/basic_string.h **** 
 429:/usr/include/c++/4.8/bits/basic_string.h ****     public:
 430:/usr/include/c++/4.8/bits/basic_string.h ****       // Construct/copy/destroy:
 431:/usr/include/c++/4.8/bits/basic_string.h ****       // NB: We overload ctors in some cases instead of using default
 432:/usr/include/c++/4.8/bits/basic_string.h ****       // arguments, per 17.4.4.4 para. 2 item 2.
 433:/usr/include/c++/4.8/bits/basic_string.h **** 
 434:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 435:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Default constructor creates an empty string.
 436:/usr/include/c++/4.8/bits/basic_string.h ****        */
 437:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string()
 438:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 439:/usr/include/c++/4.8/bits/basic_string.h ****       : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
 440:/usr/include/c++/4.8/bits/basic_string.h **** #else
 441:/usr/include/c++/4.8/bits/basic_string.h ****       : _M_dataplus(_S_construct(size_type(), _CharT(), _Alloc()), _Alloc()){ }
 442:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 443:/usr/include/c++/4.8/bits/basic_string.h **** 
 444:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 445:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct an empty string using allocator @a a.
 446:/usr/include/c++/4.8/bits/basic_string.h ****        */
 447:/usr/include/c++/4.8/bits/basic_string.h ****       explicit
 448:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const _Alloc& __a);
 449:/usr/include/c++/4.8/bits/basic_string.h **** 
 450:/usr/include/c++/4.8/bits/basic_string.h ****       // NB: per LWG issue 42, semantics different from IS:
 451:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 452:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string with copy of value of @a str.
 453:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 454:/usr/include/c++/4.8/bits/basic_string.h ****        */
 455:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const basic_string& __str);
 456:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 457:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string as copy of a substring.
 458:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 459:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __pos  Index of first character to copy from.
 460:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters to copy (default remainder).
 461:/usr/include/c++/4.8/bits/basic_string.h ****        */
 462:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const basic_string& __str, size_type __pos,
 463:/usr/include/c++/4.8/bits/basic_string.h **** 		   size_type __n = npos);
 464:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 465:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string as copy of a substring.
 466:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 467:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __pos  Index of first character to copy from.
 468:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters to copy.
 469:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use.
 470:/usr/include/c++/4.8/bits/basic_string.h ****        */
 471:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const basic_string& __str, size_type __pos,
 472:/usr/include/c++/4.8/bits/basic_string.h **** 		   size_type __n, const _Alloc& __a);
 473:/usr/include/c++/4.8/bits/basic_string.h **** 
 474:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 475:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string initialized by a character %array.
 476:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __s  Source character %array.
 477:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters to copy.
 478:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use (default is default allocator).
GAS LISTING /tmp/ccrG9BDx.s 			page 43


 479:/usr/include/c++/4.8/bits/basic_string.h ****        *
 480:/usr/include/c++/4.8/bits/basic_string.h ****        *  NB: @a __s must have at least @a __n characters, &apos;\\0'
 481:/usr/include/c++/4.8/bits/basic_string.h ****        *  has no special meaning.
 482:/usr/include/c++/4.8/bits/basic_string.h ****        */
 483:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const _CharT* __s, size_type __n,
 484:/usr/include/c++/4.8/bits/basic_string.h **** 		   const _Alloc& __a = _Alloc());
 485:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 486:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string as copy of a C string.
 487:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __s  Source C string.
 488:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use (default is default allocator).
 489:/usr/include/c++/4.8/bits/basic_string.h ****        */
 490:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
 491:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 492:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string as multiple characters.
 493:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters.
 494:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __c  Character to use.
 495:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use (default is default allocator).
 496:/usr/include/c++/4.8/bits/basic_string.h ****        */
 497:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());
 498:/usr/include/c++/4.8/bits/basic_string.h **** 
 499:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 500:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 501:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Move construct string.
 502:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 503:/usr/include/c++/4.8/bits/basic_string.h ****        *
 504:/usr/include/c++/4.8/bits/basic_string.h ****        *  The newly-created string contains the exact contents of @a __str.
 505:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __str is a valid, but unspecified string.
 506:/usr/include/c++/4.8/bits/basic_string.h ****        **/
 507:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(basic_string&& __str) noexcept
 508:/usr/include/c++/4.8/bits/basic_string.h ****       : _M_dataplus(__str._M_dataplus)
 509:/usr/include/c++/4.8/bits/basic_string.h ****       {
 510:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 511:/usr/include/c++/4.8/bits/basic_string.h **** 	__str._M_data(_S_empty_rep()._M_refdata());
 512:/usr/include/c++/4.8/bits/basic_string.h **** #else
 513:/usr/include/c++/4.8/bits/basic_string.h **** 	__str._M_data(_S_construct(size_type(), _CharT(), get_allocator()));
 514:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 515:/usr/include/c++/4.8/bits/basic_string.h ****       }
 516:/usr/include/c++/4.8/bits/basic_string.h **** 
 517:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 518:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string from an initializer %list.
 519:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __l  std::initializer_list of characters.
 520:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use (default is default allocator).
 521:/usr/include/c++/4.8/bits/basic_string.h ****        */
 522:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc());
 523:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
 524:/usr/include/c++/4.8/bits/basic_string.h **** 
 525:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 526:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string as copy of a range.
 527:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __beg  Start of range.
 528:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __end  End of range.
 529:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use (default is default allocator).
 530:/usr/include/c++/4.8/bits/basic_string.h ****        */
 531:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
 532:/usr/include/c++/4.8/bits/basic_string.h ****         basic_string(_InputIterator __beg, _InputIterator __end,
 533:/usr/include/c++/4.8/bits/basic_string.h **** 		     const _Alloc& __a = _Alloc());
 534:/usr/include/c++/4.8/bits/basic_string.h **** 
 535:/usr/include/c++/4.8/bits/basic_string.h ****       /**
GAS LISTING /tmp/ccrG9BDx.s 			page 44


 536:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Destroy the string instance.
 537:/usr/include/c++/4.8/bits/basic_string.h ****        */
 538:/usr/include/c++/4.8/bits/basic_string.h ****       ~basic_string() _GLIBCXX_NOEXCEPT
 539:/usr/include/c++/4.8/bits/basic_string.h ****       { _M_rep()->_M_dispose(this->get_allocator()); }
 540:/usr/include/c++/4.8/bits/basic_string.h **** 
 541:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 542:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Assign the value of @a str to this string.
 543:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 544:/usr/include/c++/4.8/bits/basic_string.h ****        */
 545:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 546:/usr/include/c++/4.8/bits/basic_string.h ****       operator=(const basic_string& __str) 
 547:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->assign(__str); }
 548:/usr/include/c++/4.8/bits/basic_string.h **** 
 549:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 550:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Copy contents of @a s into this string.
 551:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __s  Source null-terminated string.
 552:/usr/include/c++/4.8/bits/basic_string.h ****        */
 553:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 554:/usr/include/c++/4.8/bits/basic_string.h ****       operator=(const _CharT* __s) 
 555:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->assign(__s); }
 556:/usr/include/c++/4.8/bits/basic_string.h **** 
 557:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 558:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to string of length 1.
 559:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __c  Source character.
 560:/usr/include/c++/4.8/bits/basic_string.h ****        *
 561:/usr/include/c++/4.8/bits/basic_string.h ****        *  Assigning to a character makes this string length 1 and
 562:/usr/include/c++/4.8/bits/basic_string.h ****        *  (*this)[0] == @a c.
 563:/usr/include/c++/4.8/bits/basic_string.h ****        */
 564:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 565:/usr/include/c++/4.8/bits/basic_string.h ****       operator=(_CharT __c) 
 566:/usr/include/c++/4.8/bits/basic_string.h ****       { 
 567:/usr/include/c++/4.8/bits/basic_string.h **** 	this->assign(1, __c); 
 568:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
 569:/usr/include/c++/4.8/bits/basic_string.h ****       }
 570:/usr/include/c++/4.8/bits/basic_string.h **** 
 571:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 572:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 573:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Move assign the value of @a str to this string.
 574:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 575:/usr/include/c++/4.8/bits/basic_string.h ****        *
 576:/usr/include/c++/4.8/bits/basic_string.h ****        *  The contents of @a str are moved into this string (without copying).
 577:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a str is a valid, but unspecified string.
 578:/usr/include/c++/4.8/bits/basic_string.h ****        **/
 579:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 580:/usr/include/c++/4.8/bits/basic_string.h ****       operator=(basic_string&& __str)
 581:/usr/include/c++/4.8/bits/basic_string.h ****       {
 582:/usr/include/c++/4.8/bits/basic_string.h **** 	// NB: DR 1204.
 583:/usr/include/c++/4.8/bits/basic_string.h **** 	this->swap(__str);
 584:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
 585:/usr/include/c++/4.8/bits/basic_string.h ****       }
 586:/usr/include/c++/4.8/bits/basic_string.h **** 
 587:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 588:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to string constructed from initializer %list.
 589:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __l  std::initializer_list.
 590:/usr/include/c++/4.8/bits/basic_string.h ****        */
 591:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 592:/usr/include/c++/4.8/bits/basic_string.h ****       operator=(initializer_list<_CharT> __l)
GAS LISTING /tmp/ccrG9BDx.s 			page 45


 593:/usr/include/c++/4.8/bits/basic_string.h ****       {
 594:/usr/include/c++/4.8/bits/basic_string.h **** 	this->assign(__l.begin(), __l.size());
 595:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
 596:/usr/include/c++/4.8/bits/basic_string.h ****       }
 597:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
 598:/usr/include/c++/4.8/bits/basic_string.h **** 
 599:/usr/include/c++/4.8/bits/basic_string.h ****       // Iterators:
 600:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 601:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write iterator that points to the first character in
 602:/usr/include/c++/4.8/bits/basic_string.h ****        *  the %string.  Unshares the string.
 603:/usr/include/c++/4.8/bits/basic_string.h ****        */
 604:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
 605:/usr/include/c++/4.8/bits/basic_string.h ****       begin() _GLIBCXX_NOEXCEPT
 606:/usr/include/c++/4.8/bits/basic_string.h ****       {
 607:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_leak();
 608:/usr/include/c++/4.8/bits/basic_string.h **** 	return iterator(_M_data());
 609:/usr/include/c++/4.8/bits/basic_string.h ****       }
 610:/usr/include/c++/4.8/bits/basic_string.h **** 
 611:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 612:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) iterator that points to the first
 613:/usr/include/c++/4.8/bits/basic_string.h ****        *  character in the %string.
 614:/usr/include/c++/4.8/bits/basic_string.h ****        */
 615:/usr/include/c++/4.8/bits/basic_string.h ****       const_iterator
 616:/usr/include/c++/4.8/bits/basic_string.h ****       begin() const _GLIBCXX_NOEXCEPT
 617:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_iterator(_M_data()); }
 618:/usr/include/c++/4.8/bits/basic_string.h **** 
 619:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 620:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write iterator that points one past the last
 621:/usr/include/c++/4.8/bits/basic_string.h ****        *  character in the %string.  Unshares the string.
 622:/usr/include/c++/4.8/bits/basic_string.h ****        */
 623:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
 624:/usr/include/c++/4.8/bits/basic_string.h ****       end() _GLIBCXX_NOEXCEPT
 625:/usr/include/c++/4.8/bits/basic_string.h ****       {
 626:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_leak();
 627:/usr/include/c++/4.8/bits/basic_string.h **** 	return iterator(_M_data() + this->size());
 628:/usr/include/c++/4.8/bits/basic_string.h ****       }
 629:/usr/include/c++/4.8/bits/basic_string.h **** 
 630:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 631:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) iterator that points one past the
 632:/usr/include/c++/4.8/bits/basic_string.h ****        *  last character in the %string.
 633:/usr/include/c++/4.8/bits/basic_string.h ****        */
 634:/usr/include/c++/4.8/bits/basic_string.h ****       const_iterator
 635:/usr/include/c++/4.8/bits/basic_string.h ****       end() const _GLIBCXX_NOEXCEPT
 636:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_iterator(_M_data() + this->size()); }
 637:/usr/include/c++/4.8/bits/basic_string.h **** 
 638:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 639:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write reverse iterator that points to the last
 640:/usr/include/c++/4.8/bits/basic_string.h ****        *  character in the %string.  Iteration is done in reverse element
 641:/usr/include/c++/4.8/bits/basic_string.h ****        *  order.  Unshares the string.
 642:/usr/include/c++/4.8/bits/basic_string.h ****        */
 643:/usr/include/c++/4.8/bits/basic_string.h ****       reverse_iterator
 644:/usr/include/c++/4.8/bits/basic_string.h ****       rbegin() _GLIBCXX_NOEXCEPT
 645:/usr/include/c++/4.8/bits/basic_string.h ****       { return reverse_iterator(this->end()); }
 646:/usr/include/c++/4.8/bits/basic_string.h **** 
 647:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 648:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reverse iterator that points
 649:/usr/include/c++/4.8/bits/basic_string.h ****        *  to the last character in the %string.  Iteration is done in
GAS LISTING /tmp/ccrG9BDx.s 			page 46


 650:/usr/include/c++/4.8/bits/basic_string.h ****        *  reverse element order.
 651:/usr/include/c++/4.8/bits/basic_string.h ****        */
 652:/usr/include/c++/4.8/bits/basic_string.h ****       const_reverse_iterator
 653:/usr/include/c++/4.8/bits/basic_string.h ****       rbegin() const _GLIBCXX_NOEXCEPT
 654:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_reverse_iterator(this->end()); }
 655:/usr/include/c++/4.8/bits/basic_string.h **** 
 656:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 657:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write reverse iterator that points to one before the
 658:/usr/include/c++/4.8/bits/basic_string.h ****        *  first character in the %string.  Iteration is done in reverse
 659:/usr/include/c++/4.8/bits/basic_string.h ****        *  element order.  Unshares the string.
 660:/usr/include/c++/4.8/bits/basic_string.h ****        */
 661:/usr/include/c++/4.8/bits/basic_string.h ****       reverse_iterator
 662:/usr/include/c++/4.8/bits/basic_string.h ****       rend() _GLIBCXX_NOEXCEPT
 663:/usr/include/c++/4.8/bits/basic_string.h ****       { return reverse_iterator(this->begin()); }
 664:/usr/include/c++/4.8/bits/basic_string.h **** 
 665:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 666:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reverse iterator that points
 667:/usr/include/c++/4.8/bits/basic_string.h ****        *  to one before the first character in the %string.  Iteration
 668:/usr/include/c++/4.8/bits/basic_string.h ****        *  is done in reverse element order.
 669:/usr/include/c++/4.8/bits/basic_string.h ****        */
 670:/usr/include/c++/4.8/bits/basic_string.h ****       const_reverse_iterator
 671:/usr/include/c++/4.8/bits/basic_string.h ****       rend() const _GLIBCXX_NOEXCEPT
 672:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_reverse_iterator(this->begin()); }
 673:/usr/include/c++/4.8/bits/basic_string.h **** 
 674:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 675:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 676:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) iterator that points to the first
 677:/usr/include/c++/4.8/bits/basic_string.h ****        *  character in the %string.
 678:/usr/include/c++/4.8/bits/basic_string.h ****        */
 679:/usr/include/c++/4.8/bits/basic_string.h ****       const_iterator
 680:/usr/include/c++/4.8/bits/basic_string.h ****       cbegin() const noexcept
 681:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_iterator(this->_M_data()); }
 682:/usr/include/c++/4.8/bits/basic_string.h **** 
 683:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 684:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) iterator that points one past the
 685:/usr/include/c++/4.8/bits/basic_string.h ****        *  last character in the %string.
 686:/usr/include/c++/4.8/bits/basic_string.h ****        */
 687:/usr/include/c++/4.8/bits/basic_string.h ****       const_iterator
 688:/usr/include/c++/4.8/bits/basic_string.h ****       cend() const noexcept
 689:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_iterator(this->_M_data() + this->size()); }
 690:/usr/include/c++/4.8/bits/basic_string.h **** 
 691:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 692:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reverse iterator that points
 693:/usr/include/c++/4.8/bits/basic_string.h ****        *  to the last character in the %string.  Iteration is done in
 694:/usr/include/c++/4.8/bits/basic_string.h ****        *  reverse element order.
 695:/usr/include/c++/4.8/bits/basic_string.h ****        */
 696:/usr/include/c++/4.8/bits/basic_string.h ****       const_reverse_iterator
 697:/usr/include/c++/4.8/bits/basic_string.h ****       crbegin() const noexcept
 698:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_reverse_iterator(this->end()); }
 699:/usr/include/c++/4.8/bits/basic_string.h **** 
 700:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 701:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reverse iterator that points
 702:/usr/include/c++/4.8/bits/basic_string.h ****        *  to one before the first character in the %string.  Iteration
 703:/usr/include/c++/4.8/bits/basic_string.h ****        *  is done in reverse element order.
 704:/usr/include/c++/4.8/bits/basic_string.h ****        */
 705:/usr/include/c++/4.8/bits/basic_string.h ****       const_reverse_iterator
 706:/usr/include/c++/4.8/bits/basic_string.h ****       crend() const noexcept
GAS LISTING /tmp/ccrG9BDx.s 			page 47


 707:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_reverse_iterator(this->begin()); }
 708:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 709:/usr/include/c++/4.8/bits/basic_string.h **** 
 710:/usr/include/c++/4.8/bits/basic_string.h ****     public:
 711:/usr/include/c++/4.8/bits/basic_string.h ****       // Capacity:
 712:/usr/include/c++/4.8/bits/basic_string.h ****       ///  Returns the number of characters in the string, not including any
 713:/usr/include/c++/4.8/bits/basic_string.h ****       ///  null-termination.
 714:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 715:/usr/include/c++/4.8/bits/basic_string.h ****       size() const _GLIBCXX_NOEXCEPT
 716:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_rep()->_M_length; }
 717:/usr/include/c++/4.8/bits/basic_string.h **** 
 718:/usr/include/c++/4.8/bits/basic_string.h ****       ///  Returns the number of characters in the string, not including any
 719:/usr/include/c++/4.8/bits/basic_string.h ****       ///  null-termination.
 720:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 721:/usr/include/c++/4.8/bits/basic_string.h ****       length() const _GLIBCXX_NOEXCEPT
 722:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_rep()->_M_length; }
 723:/usr/include/c++/4.8/bits/basic_string.h **** 
 724:/usr/include/c++/4.8/bits/basic_string.h ****       ///  Returns the size() of the largest possible %string.
 725:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 726:/usr/include/c++/4.8/bits/basic_string.h ****       max_size() const _GLIBCXX_NOEXCEPT
 727:/usr/include/c++/4.8/bits/basic_string.h ****       { return _Rep::_S_max_size; }
 728:/usr/include/c++/4.8/bits/basic_string.h **** 
 729:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 730:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Resizes the %string to the specified number of characters.
 731:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters the %string should contain.
 732:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __c  Character to fill any new elements.
 733:/usr/include/c++/4.8/bits/basic_string.h ****        *
 734:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function will %resize the %string to the specified
 735:/usr/include/c++/4.8/bits/basic_string.h ****        *  number of characters.  If the number is smaller than the
 736:/usr/include/c++/4.8/bits/basic_string.h ****        *  %string's current size the %string is truncated, otherwise
 737:/usr/include/c++/4.8/bits/basic_string.h ****        *  the %string is extended and new elements are %set to @a __c.
 738:/usr/include/c++/4.8/bits/basic_string.h ****        */
 739:/usr/include/c++/4.8/bits/basic_string.h ****       void
 740:/usr/include/c++/4.8/bits/basic_string.h ****       resize(size_type __n, _CharT __c);
 741:/usr/include/c++/4.8/bits/basic_string.h **** 
 742:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 743:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Resizes the %string to the specified number of characters.
 744:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters the %string should contain.
 745:/usr/include/c++/4.8/bits/basic_string.h ****        *
 746:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function will resize the %string to the specified length.  If
 747:/usr/include/c++/4.8/bits/basic_string.h ****        *  the new size is smaller than the %string's current size the %string
 748:/usr/include/c++/4.8/bits/basic_string.h ****        *  is truncated, otherwise the %string is extended and new characters
 749:/usr/include/c++/4.8/bits/basic_string.h ****        *  are default-constructed.  For basic types such as char, this means
 750:/usr/include/c++/4.8/bits/basic_string.h ****        *  setting them to 0.
 751:/usr/include/c++/4.8/bits/basic_string.h ****        */
 752:/usr/include/c++/4.8/bits/basic_string.h ****       void
 753:/usr/include/c++/4.8/bits/basic_string.h ****       resize(size_type __n)
 754:/usr/include/c++/4.8/bits/basic_string.h ****       { this->resize(__n, _CharT()); }
 755:/usr/include/c++/4.8/bits/basic_string.h **** 
 756:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 757:/usr/include/c++/4.8/bits/basic_string.h ****       ///  A non-binding request to reduce capacity() to size().
 758:/usr/include/c++/4.8/bits/basic_string.h ****       void
 759:/usr/include/c++/4.8/bits/basic_string.h ****       shrink_to_fit()
 760:/usr/include/c++/4.8/bits/basic_string.h ****       {
 761:/usr/include/c++/4.8/bits/basic_string.h **** 	if (capacity() > size())
 762:/usr/include/c++/4.8/bits/basic_string.h **** 	  {
 763:/usr/include/c++/4.8/bits/basic_string.h **** 	    __try
GAS LISTING /tmp/ccrG9BDx.s 			page 48


 764:/usr/include/c++/4.8/bits/basic_string.h **** 	      { reserve(0); }
 765:/usr/include/c++/4.8/bits/basic_string.h **** 	    __catch(...)
 766:/usr/include/c++/4.8/bits/basic_string.h **** 	      { }
 767:/usr/include/c++/4.8/bits/basic_string.h **** 	  }
 768:/usr/include/c++/4.8/bits/basic_string.h ****       }
 769:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 770:/usr/include/c++/4.8/bits/basic_string.h **** 
 771:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 772:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns the total number of characters that the %string can hold
 773:/usr/include/c++/4.8/bits/basic_string.h ****        *  before needing to allocate more memory.
 774:/usr/include/c++/4.8/bits/basic_string.h ****        */
 775:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 776:/usr/include/c++/4.8/bits/basic_string.h ****       capacity() const _GLIBCXX_NOEXCEPT
 777:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_rep()->_M_capacity; }
 778:/usr/include/c++/4.8/bits/basic_string.h **** 
 779:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 780:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Attempt to preallocate enough memory for specified number of
 781:/usr/include/c++/4.8/bits/basic_string.h ****        *          characters.
 782:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __res_arg  Number of characters required.
 783:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If @a __res_arg exceeds @c max_size().
 784:/usr/include/c++/4.8/bits/basic_string.h ****        *
 785:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function attempts to reserve enough memory for the
 786:/usr/include/c++/4.8/bits/basic_string.h ****        *  %string to hold the specified number of characters.  If the
 787:/usr/include/c++/4.8/bits/basic_string.h ****        *  number requested is more than max_size(), length_error is
 788:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.
 789:/usr/include/c++/4.8/bits/basic_string.h ****        *
 790:/usr/include/c++/4.8/bits/basic_string.h ****        *  The advantage of this function is that if optimal code is a
 791:/usr/include/c++/4.8/bits/basic_string.h ****        *  necessity and the user can determine the string length that will be
 792:/usr/include/c++/4.8/bits/basic_string.h ****        *  required, the user can reserve the memory in %advance, and thus
 793:/usr/include/c++/4.8/bits/basic_string.h ****        *  prevent a possible reallocation of memory and copying of %string
 794:/usr/include/c++/4.8/bits/basic_string.h ****        *  data.
 795:/usr/include/c++/4.8/bits/basic_string.h ****        */
 796:/usr/include/c++/4.8/bits/basic_string.h ****       void
 797:/usr/include/c++/4.8/bits/basic_string.h ****       reserve(size_type __res_arg = 0);
 798:/usr/include/c++/4.8/bits/basic_string.h **** 
 799:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 800:/usr/include/c++/4.8/bits/basic_string.h ****        *  Erases the string, making it empty.
 801:/usr/include/c++/4.8/bits/basic_string.h ****        */
 802:/usr/include/c++/4.8/bits/basic_string.h ****       void
 803:/usr/include/c++/4.8/bits/basic_string.h ****       clear() _GLIBCXX_NOEXCEPT
 804:/usr/include/c++/4.8/bits/basic_string.h ****       { _M_mutate(0, this->size(), 0); }
 805:/usr/include/c++/4.8/bits/basic_string.h **** 
 806:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 807:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns true if the %string is empty.  Equivalent to 
 808:/usr/include/c++/4.8/bits/basic_string.h ****        *  <code>*this == ""</code>.
 809:/usr/include/c++/4.8/bits/basic_string.h ****        */
 810:/usr/include/c++/4.8/bits/basic_string.h ****       bool
 811:/usr/include/c++/4.8/bits/basic_string.h ****       empty() const _GLIBCXX_NOEXCEPT
 812:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->size() == 0; }
 813:/usr/include/c++/4.8/bits/basic_string.h **** 
 814:/usr/include/c++/4.8/bits/basic_string.h ****       // Element access:
 815:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 816:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Subscript access to the data contained in the %string.
 817:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __pos  The index of the character to access.
 818:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Read-only (constant) reference to the character.
 819:/usr/include/c++/4.8/bits/basic_string.h ****        *
 820:/usr/include/c++/4.8/bits/basic_string.h ****        *  This operator allows for easy, array-style, data access.
GAS LISTING /tmp/ccrG9BDx.s 			page 49


 821:/usr/include/c++/4.8/bits/basic_string.h ****        *  Note that data access with this operator is unchecked and
 822:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range lookups are not defined. (For checked lookups
 823:/usr/include/c++/4.8/bits/basic_string.h ****        *  see at().)
 824:/usr/include/c++/4.8/bits/basic_string.h ****        */
 825:/usr/include/c++/4.8/bits/basic_string.h ****       const_reference
 826:/usr/include/c++/4.8/bits/basic_string.h ****       operator[] (size_type __pos) const
 827:/usr/include/c++/4.8/bits/basic_string.h ****       {
 828:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_ASSERT(__pos <= size());
 829:/usr/include/c++/4.8/bits/basic_string.h **** 	return _M_data()[__pos];
 830:/usr/include/c++/4.8/bits/basic_string.h ****       }
 831:/usr/include/c++/4.8/bits/basic_string.h **** 
 832:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 833:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Subscript access to the data contained in the %string.
 834:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __pos  The index of the character to access.
 835:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Read/write reference to the character.
 836:/usr/include/c++/4.8/bits/basic_string.h ****        *
 837:/usr/include/c++/4.8/bits/basic_string.h ****        *  This operator allows for easy, array-style, data access.
 838:/usr/include/c++/4.8/bits/basic_string.h ****        *  Note that data access with this operator is unchecked and
 839:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range lookups are not defined. (For checked lookups
 840:/usr/include/c++/4.8/bits/basic_string.h ****        *  see at().)  Unshares the string.
 841:/usr/include/c++/4.8/bits/basic_string.h ****        */
 842:/usr/include/c++/4.8/bits/basic_string.h ****       reference
 843:/usr/include/c++/4.8/bits/basic_string.h ****       operator[](size_type __pos)
 844:/usr/include/c++/4.8/bits/basic_string.h ****       {
 845:/usr/include/c++/4.8/bits/basic_string.h ****         // allow pos == size() as v3 extension:
 846:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_ASSERT(__pos <= size());
 847:/usr/include/c++/4.8/bits/basic_string.h ****         // but be strict in pedantic mode:
 848:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(__pos < size());
 849:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_leak();
 850:/usr/include/c++/4.8/bits/basic_string.h **** 	return _M_data()[__pos];
 851:/usr/include/c++/4.8/bits/basic_string.h ****       }
 852:/usr/include/c++/4.8/bits/basic_string.h **** 
 853:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 854:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Provides access to the data contained in the %string.
 855:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n The index of the character to access.
 856:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Read-only (const) reference to the character.
 857:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a n is an invalid index.
 858:/usr/include/c++/4.8/bits/basic_string.h ****        *
 859:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function provides for safer data access.  The parameter is
 860:/usr/include/c++/4.8/bits/basic_string.h ****        *  first checked that it is in the range of the string.  The function
 861:/usr/include/c++/4.8/bits/basic_string.h ****        *  throws out_of_range if the check fails.
 862:/usr/include/c++/4.8/bits/basic_string.h ****        */
 863:/usr/include/c++/4.8/bits/basic_string.h ****       const_reference
 864:/usr/include/c++/4.8/bits/basic_string.h ****       at(size_type __n) const
 865:/usr/include/c++/4.8/bits/basic_string.h ****       {
 866:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__n >= this->size())
 867:/usr/include/c++/4.8/bits/basic_string.h **** 	  __throw_out_of_range(__N("basic_string::at"));
 868:/usr/include/c++/4.8/bits/basic_string.h **** 	return _M_data()[__n];
 869:/usr/include/c++/4.8/bits/basic_string.h ****       }
 870:/usr/include/c++/4.8/bits/basic_string.h **** 
 871:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 872:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Provides access to the data contained in the %string.
 873:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n The index of the character to access.
 874:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Read/write reference to the character.
 875:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a n is an invalid index.
 876:/usr/include/c++/4.8/bits/basic_string.h ****        *
 877:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function provides for safer data access.  The parameter is
GAS LISTING /tmp/ccrG9BDx.s 			page 50


 878:/usr/include/c++/4.8/bits/basic_string.h ****        *  first checked that it is in the range of the string.  The function
 879:/usr/include/c++/4.8/bits/basic_string.h ****        *  throws out_of_range if the check fails.  Success results in
 880:/usr/include/c++/4.8/bits/basic_string.h ****        *  unsharing the string.
 881:/usr/include/c++/4.8/bits/basic_string.h ****        */
 882:/usr/include/c++/4.8/bits/basic_string.h ****       reference
 883:/usr/include/c++/4.8/bits/basic_string.h ****       at(size_type __n)
 884:/usr/include/c++/4.8/bits/basic_string.h ****       {
 885:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__n >= size())
 886:/usr/include/c++/4.8/bits/basic_string.h **** 	  __throw_out_of_range(__N("basic_string::at"));
 887:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_leak();
 888:/usr/include/c++/4.8/bits/basic_string.h **** 	return _M_data()[__n];
 889:/usr/include/c++/4.8/bits/basic_string.h ****       }
 890:/usr/include/c++/4.8/bits/basic_string.h **** 
 891:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 892:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 893:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write reference to the data at the first
 894:/usr/include/c++/4.8/bits/basic_string.h ****        *  element of the %string.
 895:/usr/include/c++/4.8/bits/basic_string.h ****        */
 896:/usr/include/c++/4.8/bits/basic_string.h ****       reference
 897:/usr/include/c++/4.8/bits/basic_string.h ****       front()
 898:/usr/include/c++/4.8/bits/basic_string.h ****       { return operator[](0); }
 899:/usr/include/c++/4.8/bits/basic_string.h **** 
 900:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 901:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reference to the data at the first
 902:/usr/include/c++/4.8/bits/basic_string.h ****        *  element of the %string.
 903:/usr/include/c++/4.8/bits/basic_string.h ****        */
 904:/usr/include/c++/4.8/bits/basic_string.h ****       const_reference
 905:/usr/include/c++/4.8/bits/basic_string.h ****       front() const
 906:/usr/include/c++/4.8/bits/basic_string.h ****       { return operator[](0); }
 907:/usr/include/c++/4.8/bits/basic_string.h **** 
 908:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 909:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write reference to the data at the last
 910:/usr/include/c++/4.8/bits/basic_string.h ****        *  element of the %string.
 911:/usr/include/c++/4.8/bits/basic_string.h ****        */
 912:/usr/include/c++/4.8/bits/basic_string.h ****       reference
 913:/usr/include/c++/4.8/bits/basic_string.h ****       back()
 914:/usr/include/c++/4.8/bits/basic_string.h ****       { return operator[](this->size() - 1); }
 915:/usr/include/c++/4.8/bits/basic_string.h **** 
 916:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 917:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reference to the data at the
 918:/usr/include/c++/4.8/bits/basic_string.h ****        *  last element of the %string.
 919:/usr/include/c++/4.8/bits/basic_string.h ****        */
 920:/usr/include/c++/4.8/bits/basic_string.h ****       const_reference
 921:/usr/include/c++/4.8/bits/basic_string.h ****       back() const
 922:/usr/include/c++/4.8/bits/basic_string.h ****       { return operator[](this->size() - 1); }
 923:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 924:/usr/include/c++/4.8/bits/basic_string.h **** 
 925:/usr/include/c++/4.8/bits/basic_string.h ****       // Modifiers:
 926:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 927:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a string to this string.
 928:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to append.
 929:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 930:/usr/include/c++/4.8/bits/basic_string.h ****        */
 931:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 932:/usr/include/c++/4.8/bits/basic_string.h ****       operator+=(const basic_string& __str)
 933:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->append(__str); }
 934:/usr/include/c++/4.8/bits/basic_string.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 51


 935:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 936:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a C string.
 937:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to append.
 938:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 939:/usr/include/c++/4.8/bits/basic_string.h ****        */
 940:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 941:/usr/include/c++/4.8/bits/basic_string.h ****       operator+=(const _CharT* __s)
 942:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->append(__s); }
 943:/usr/include/c++/4.8/bits/basic_string.h **** 
 944:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 945:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a character.
 946:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to append.
 947:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 948:/usr/include/c++/4.8/bits/basic_string.h ****        */
 949:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 950:/usr/include/c++/4.8/bits/basic_string.h ****       operator+=(_CharT __c)
 951:/usr/include/c++/4.8/bits/basic_string.h ****       { 
 952:/usr/include/c++/4.8/bits/basic_string.h **** 	this->push_back(__c);
 953:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
 954:/usr/include/c++/4.8/bits/basic_string.h ****       }
 955:/usr/include/c++/4.8/bits/basic_string.h **** 
 956:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 957:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 958:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append an initializer_list of characters.
 959:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __l  The initializer_list of characters to be appended.
 960:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 961:/usr/include/c++/4.8/bits/basic_string.h ****        */
 962:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 963:/usr/include/c++/4.8/bits/basic_string.h ****       operator+=(initializer_list<_CharT> __l)
 964:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->append(__l.begin(), __l.size()); }
 965:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
 966:/usr/include/c++/4.8/bits/basic_string.h **** 
 967:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 968:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a string to this string.
 969:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to append.
 970:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 971:/usr/include/c++/4.8/bits/basic_string.h ****        */
 972:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 973:/usr/include/c++/4.8/bits/basic_string.h ****       append(const basic_string& __str);
 974:/usr/include/c++/4.8/bits/basic_string.h **** 
 975:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 976:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a substring.
 977:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to append.
 978:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of the first character of str to append.
 979:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  The number of characters to append.
 980:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 981:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range if @a __pos is not a valid index.
 982:/usr/include/c++/4.8/bits/basic_string.h ****        *
 983:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function appends @a __n characters from @a __str
 984:/usr/include/c++/4.8/bits/basic_string.h ****        *  starting at @a __pos to this string.  If @a __n is is larger
 985:/usr/include/c++/4.8/bits/basic_string.h ****        *  than the number of available characters in @a __str, the
 986:/usr/include/c++/4.8/bits/basic_string.h ****        *  remainder of @a __str is appended.
 987:/usr/include/c++/4.8/bits/basic_string.h ****        */
 988:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 989:/usr/include/c++/4.8/bits/basic_string.h ****       append(const basic_string& __str, size_type __pos, size_type __n);
 990:/usr/include/c++/4.8/bits/basic_string.h **** 
 991:/usr/include/c++/4.8/bits/basic_string.h ****       /**
GAS LISTING /tmp/ccrG9BDx.s 			page 52


 992:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a C substring.
 993:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to append.
 994:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  The number of characters to append.
 995:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 996:/usr/include/c++/4.8/bits/basic_string.h ****        */
 997:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 998:/usr/include/c++/4.8/bits/basic_string.h ****       append(const _CharT* __s, size_type __n);
 999:/usr/include/c++/4.8/bits/basic_string.h **** 
1000:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1001:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a C string.
1002:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to append.
1003:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1004:/usr/include/c++/4.8/bits/basic_string.h ****        */
1005:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1006:/usr/include/c++/4.8/bits/basic_string.h ****       append(const _CharT* __s)
1007:/usr/include/c++/4.8/bits/basic_string.h ****       {
1008:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1009:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->append(__s, traits_type::length(__s));
1010:/usr/include/c++/4.8/bits/basic_string.h ****       }
1011:/usr/include/c++/4.8/bits/basic_string.h **** 
1012:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1013:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append multiple characters.
1014:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  The number of characters to append.
1015:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to use.
1016:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1017:/usr/include/c++/4.8/bits/basic_string.h ****        *
1018:/usr/include/c++/4.8/bits/basic_string.h ****        *  Appends __n copies of __c to this string.
1019:/usr/include/c++/4.8/bits/basic_string.h ****        */
1020:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1021:/usr/include/c++/4.8/bits/basic_string.h ****       append(size_type __n, _CharT __c);
1022:/usr/include/c++/4.8/bits/basic_string.h **** 
1023:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1024:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1025:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append an initializer_list of characters.
1026:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __l  The initializer_list of characters to append.
1027:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1028:/usr/include/c++/4.8/bits/basic_string.h ****        */
1029:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1030:/usr/include/c++/4.8/bits/basic_string.h ****       append(initializer_list<_CharT> __l)
1031:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->append(__l.begin(), __l.size()); }
1032:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1033:/usr/include/c++/4.8/bits/basic_string.h **** 
1034:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1035:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a range of characters.
1036:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __first  Iterator referencing the first character to append.
1037:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __last  Iterator marking the end of the range.
1038:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1039:/usr/include/c++/4.8/bits/basic_string.h ****        *
1040:/usr/include/c++/4.8/bits/basic_string.h ****        *  Appends characters in the range [__first,__last) to this string.
1041:/usr/include/c++/4.8/bits/basic_string.h ****        */
1042:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
1043:/usr/include/c++/4.8/bits/basic_string.h ****         basic_string&
1044:/usr/include/c++/4.8/bits/basic_string.h ****         append(_InputIterator __first, _InputIterator __last)
1045:/usr/include/c++/4.8/bits/basic_string.h ****         { return this->replace(_M_iend(), _M_iend(), __first, __last); }
1046:/usr/include/c++/4.8/bits/basic_string.h **** 
1047:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1048:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a single character.
GAS LISTING /tmp/ccrG9BDx.s 			page 53


1049:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to append.
1050:/usr/include/c++/4.8/bits/basic_string.h ****        */
1051:/usr/include/c++/4.8/bits/basic_string.h ****       void
1052:/usr/include/c++/4.8/bits/basic_string.h ****       push_back(_CharT __c)
1053:/usr/include/c++/4.8/bits/basic_string.h ****       { 
1054:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __len = 1 + this->size();
1055:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__len > this->capacity() || _M_rep()->_M_is_shared())
1056:/usr/include/c++/4.8/bits/basic_string.h **** 	  this->reserve(__len);
1057:/usr/include/c++/4.8/bits/basic_string.h **** 	traits_type::assign(_M_data()[this->size()], __c);
1058:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_rep()->_M_set_length_and_sharable(__len);
1059:/usr/include/c++/4.8/bits/basic_string.h ****       }
1060:/usr/include/c++/4.8/bits/basic_string.h **** 
1061:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1062:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to contents of another string.
1063:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string to use.
1064:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1065:/usr/include/c++/4.8/bits/basic_string.h ****        */
1066:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1067:/usr/include/c++/4.8/bits/basic_string.h ****       assign(const basic_string& __str);
1068:/usr/include/c++/4.8/bits/basic_string.h **** 
1069:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1070:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1071:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to contents of another string.
1072:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string to use.
1073:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1074:/usr/include/c++/4.8/bits/basic_string.h ****        *
1075:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function sets this string to the exact contents of @a __str.
1076:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __str is a valid, but unspecified string.
1077:/usr/include/c++/4.8/bits/basic_string.h ****        */
1078:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1079:/usr/include/c++/4.8/bits/basic_string.h ****       assign(basic_string&& __str)
1080:/usr/include/c++/4.8/bits/basic_string.h ****       {
1081:/usr/include/c++/4.8/bits/basic_string.h **** 	this->swap(__str);
1082:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
1083:/usr/include/c++/4.8/bits/basic_string.h ****       }
1084:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1085:/usr/include/c++/4.8/bits/basic_string.h **** 
1086:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1087:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to a substring of a string.
1088:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to use.
1089:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of the first character of str.
1090:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to use.
1091:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1092:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range if @a pos is not a valid index.
1093:/usr/include/c++/4.8/bits/basic_string.h ****        *
1094:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function sets this string to the substring of @a __str
1095:/usr/include/c++/4.8/bits/basic_string.h ****        *  consisting of @a __n characters at @a __pos.  If @a __n is
1096:/usr/include/c++/4.8/bits/basic_string.h ****        *  is larger than the number of available characters in @a
1097:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str, the remainder of @a __str is used.
1098:/usr/include/c++/4.8/bits/basic_string.h ****        */
1099:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1100:/usr/include/c++/4.8/bits/basic_string.h ****       assign(const basic_string& __str, size_type __pos, size_type __n)
1101:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->assign(__str._M_data()
1102:/usr/include/c++/4.8/bits/basic_string.h **** 			    + __str._M_check(__pos, "basic_string::assign"),
1103:/usr/include/c++/4.8/bits/basic_string.h **** 			    __str._M_limit(__pos, __n)); }
1104:/usr/include/c++/4.8/bits/basic_string.h **** 
1105:/usr/include/c++/4.8/bits/basic_string.h ****       /**
GAS LISTING /tmp/ccrG9BDx.s 			page 54


1106:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to a C substring.
1107:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to use.
1108:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to use.
1109:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1110:/usr/include/c++/4.8/bits/basic_string.h ****        *
1111:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function sets the value of this string to the first @a __n
1112:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters of @a __s.  If @a __n is is larger than the number of
1113:/usr/include/c++/4.8/bits/basic_string.h ****        *  available characters in @a __s, the remainder of @a __s is used.
1114:/usr/include/c++/4.8/bits/basic_string.h ****        */
1115:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1116:/usr/include/c++/4.8/bits/basic_string.h ****       assign(const _CharT* __s, size_type __n);
1117:/usr/include/c++/4.8/bits/basic_string.h **** 
1118:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1119:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to contents of a C string.
1120:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to use.
1121:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1122:/usr/include/c++/4.8/bits/basic_string.h ****        *
1123:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function sets the value of this string to the value of @a __s.
1124:/usr/include/c++/4.8/bits/basic_string.h ****        *  The data is copied, so there is no dependence on @a __s once the
1125:/usr/include/c++/4.8/bits/basic_string.h ****        *  function returns.
1126:/usr/include/c++/4.8/bits/basic_string.h ****        */
1127:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1128:/usr/include/c++/4.8/bits/basic_string.h ****       assign(const _CharT* __s)
1129:/usr/include/c++/4.8/bits/basic_string.h ****       {
1130:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1131:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->assign(__s, traits_type::length(__s));
1132:/usr/include/c++/4.8/bits/basic_string.h ****       }
1133:/usr/include/c++/4.8/bits/basic_string.h **** 
1134:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1135:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to multiple characters.
1136:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Length of the resulting string.
1137:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to use.
1138:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1139:/usr/include/c++/4.8/bits/basic_string.h ****        *
1140:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function sets the value of this string to @a __n copies of
1141:/usr/include/c++/4.8/bits/basic_string.h ****        *  character @a __c.
1142:/usr/include/c++/4.8/bits/basic_string.h ****        */
1143:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1144:/usr/include/c++/4.8/bits/basic_string.h ****       assign(size_type __n, _CharT __c)
1145:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
1146:/usr/include/c++/4.8/bits/basic_string.h **** 
1147:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1148:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to a range of characters.
1149:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __first  Iterator referencing the first character to append.
1150:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __last  Iterator marking the end of the range.
1151:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1152:/usr/include/c++/4.8/bits/basic_string.h ****        *
1153:/usr/include/c++/4.8/bits/basic_string.h ****        *  Sets value of string to characters in the range [__first,__last).
1154:/usr/include/c++/4.8/bits/basic_string.h ****       */
1155:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
1156:/usr/include/c++/4.8/bits/basic_string.h ****         basic_string&
1157:/usr/include/c++/4.8/bits/basic_string.h ****         assign(_InputIterator __first, _InputIterator __last)
1158:/usr/include/c++/4.8/bits/basic_string.h ****         { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
1159:/usr/include/c++/4.8/bits/basic_string.h **** 
1160:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1161:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1162:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to an initializer_list of characters.
GAS LISTING /tmp/ccrG9BDx.s 			page 55


1163:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __l  The initializer_list of characters to assign.
1164:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1165:/usr/include/c++/4.8/bits/basic_string.h ****        */
1166:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1167:/usr/include/c++/4.8/bits/basic_string.h ****       assign(initializer_list<_CharT> __l)
1168:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->assign(__l.begin(), __l.size()); }
1169:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1170:/usr/include/c++/4.8/bits/basic_string.h **** 
1171:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1172:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert multiple characters.
1173:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __p  Iterator referencing location in string to insert at.
1174:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to insert
1175:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to insert.
1176:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1177:/usr/include/c++/4.8/bits/basic_string.h ****        *
1178:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts @a __n copies of character @a __c starting at the
1179:/usr/include/c++/4.8/bits/basic_string.h ****        *  position referenced by iterator @a __p.  If adding
1180:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters causes the length to exceed max_size(),
1181:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  The value of the string doesn't
1182:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1183:/usr/include/c++/4.8/bits/basic_string.h ****       */
1184:/usr/include/c++/4.8/bits/basic_string.h ****       void
1185:/usr/include/c++/4.8/bits/basic_string.h ****       insert(iterator __p, size_type __n, _CharT __c)
1186:/usr/include/c++/4.8/bits/basic_string.h ****       {	this->replace(__p, __p, __n, __c);  }
1187:/usr/include/c++/4.8/bits/basic_string.h **** 
1188:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1189:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert a range of characters.
1190:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __p  Iterator referencing location in string to insert at.
1191:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __beg  Start of range.
1192:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __end  End of range.
1193:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1194:/usr/include/c++/4.8/bits/basic_string.h ****        *
1195:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts characters in range [__beg,__end).  If adding
1196:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters causes the length to exceed max_size(),
1197:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  The value of the string doesn't
1198:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1199:/usr/include/c++/4.8/bits/basic_string.h ****       */
1200:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
1201:/usr/include/c++/4.8/bits/basic_string.h ****         void
1202:/usr/include/c++/4.8/bits/basic_string.h ****         insert(iterator __p, _InputIterator __beg, _InputIterator __end)
1203:/usr/include/c++/4.8/bits/basic_string.h ****         { this->replace(__p, __p, __beg, __end); }
1204:/usr/include/c++/4.8/bits/basic_string.h **** 
1205:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1206:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1207:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert an initializer_list of characters.
1208:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __p  Iterator referencing location in string to insert at.
1209:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __l  The initializer_list of characters to insert.
1210:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1211:/usr/include/c++/4.8/bits/basic_string.h ****        */
1212:/usr/include/c++/4.8/bits/basic_string.h ****       void
1213:/usr/include/c++/4.8/bits/basic_string.h ****       insert(iterator __p, initializer_list<_CharT> __l)
1214:/usr/include/c++/4.8/bits/basic_string.h ****       {
1215:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());
1216:/usr/include/c++/4.8/bits/basic_string.h **** 	this->insert(__p - _M_ibegin(), __l.begin(), __l.size());
1217:/usr/include/c++/4.8/bits/basic_string.h ****       }
1218:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1219:/usr/include/c++/4.8/bits/basic_string.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 56


1220:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1221:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert value of a string.
1222:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos1  Iterator referencing location in string to insert at.
1223:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to insert.
1224:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1225:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1226:/usr/include/c++/4.8/bits/basic_string.h ****        *
1227:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts value of @a __str starting at @a __pos1.  If adding
1228:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters causes the length to exceed max_size(),
1229:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  The value of the string doesn't
1230:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1231:/usr/include/c++/4.8/bits/basic_string.h ****       */
1232:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1233:/usr/include/c++/4.8/bits/basic_string.h ****       insert(size_type __pos1, const basic_string& __str)
1234:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->insert(__pos1, __str, size_type(0), __str.size()); }
1235:/usr/include/c++/4.8/bits/basic_string.h **** 
1236:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1237:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert a substring.
1238:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos1  Iterator referencing location in string to insert at.
1239:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to insert.
1240:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos2  Start of characters in str to insert.
1241:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to insert.
1242:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1243:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1244:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos1 > size() or
1245:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __pos2 > @a str.size().
1246:/usr/include/c++/4.8/bits/basic_string.h ****        *
1247:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting at @a pos1, insert @a __n character of @a __str
1248:/usr/include/c++/4.8/bits/basic_string.h ****        *  beginning with @a __pos2.  If adding characters causes the
1249:/usr/include/c++/4.8/bits/basic_string.h ****        *  length to exceed max_size(), length_error is thrown.  If @a
1250:/usr/include/c++/4.8/bits/basic_string.h ****        *  __pos1 is beyond the end of this string or @a __pos2 is
1251:/usr/include/c++/4.8/bits/basic_string.h ****        *  beyond the end of @a __str, out_of_range is thrown.  The
1252:/usr/include/c++/4.8/bits/basic_string.h ****        *  value of the string doesn't change if an error is thrown.
1253:/usr/include/c++/4.8/bits/basic_string.h ****       */
1254:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1255:/usr/include/c++/4.8/bits/basic_string.h ****       insert(size_type __pos1, const basic_string& __str,
1256:/usr/include/c++/4.8/bits/basic_string.h **** 	     size_type __pos2, size_type __n)
1257:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->insert(__pos1, __str._M_data()
1258:/usr/include/c++/4.8/bits/basic_string.h **** 			    + __str._M_check(__pos2, "basic_string::insert"),
1259:/usr/include/c++/4.8/bits/basic_string.h **** 			    __str._M_limit(__pos2, __n)); }
1260:/usr/include/c++/4.8/bits/basic_string.h **** 
1261:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1262:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert a C substring.
1263:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Iterator referencing location in string to insert at.
1264:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to insert.
1265:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  The number of characters to insert.
1266:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1267:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1268:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a __pos is beyond the end of this
1269:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.
1270:/usr/include/c++/4.8/bits/basic_string.h ****        *
1271:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts the first @a __n characters of @a __s starting at @a
1272:/usr/include/c++/4.8/bits/basic_string.h ****        *  __pos.  If adding characters causes the length to exceed
1273:/usr/include/c++/4.8/bits/basic_string.h ****        *  max_size(), length_error is thrown.  If @a __pos is beyond
1274:/usr/include/c++/4.8/bits/basic_string.h ****        *  end(), out_of_range is thrown.  The value of the string
1275:/usr/include/c++/4.8/bits/basic_string.h ****        *  doesn't change if an error is thrown.
1276:/usr/include/c++/4.8/bits/basic_string.h ****       */
GAS LISTING /tmp/ccrG9BDx.s 			page 57


1277:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1278:/usr/include/c++/4.8/bits/basic_string.h ****       insert(size_type __pos, const _CharT* __s, size_type __n);
1279:/usr/include/c++/4.8/bits/basic_string.h **** 
1280:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1281:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert a C string.
1282:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Iterator referencing location in string to insert at.
1283:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to insert.
1284:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1285:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1286:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos is beyond the end of this
1287:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.
1288:/usr/include/c++/4.8/bits/basic_string.h ****        *
1289:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts the first @a n characters of @a __s starting at @a __pos.  If
1290:/usr/include/c++/4.8/bits/basic_string.h ****        *  adding characters causes the length to exceed max_size(),
1291:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  If @a __pos is beyond end(), out_of_range is
1292:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.  The value of the string doesn't change if an error is
1293:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.
1294:/usr/include/c++/4.8/bits/basic_string.h ****       */
1295:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1296:/usr/include/c++/4.8/bits/basic_string.h ****       insert(size_type __pos, const _CharT* __s)
1297:/usr/include/c++/4.8/bits/basic_string.h ****       {
1298:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1299:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->insert(__pos, __s, traits_type::length(__s));
1300:/usr/include/c++/4.8/bits/basic_string.h ****       }
1301:/usr/include/c++/4.8/bits/basic_string.h **** 
1302:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1303:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert multiple characters.
1304:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index in string to insert at.
1305:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to insert
1306:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to insert.
1307:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1308:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1309:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a __pos is beyond the end of this
1310:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.
1311:/usr/include/c++/4.8/bits/basic_string.h ****        *
1312:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts @a __n copies of character @a __c starting at index
1313:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __pos.  If adding characters causes the length to exceed
1314:/usr/include/c++/4.8/bits/basic_string.h ****        *  max_size(), length_error is thrown.  If @a __pos > length(),
1315:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range is thrown.  The value of the string doesn't
1316:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1317:/usr/include/c++/4.8/bits/basic_string.h ****       */
1318:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1319:/usr/include/c++/4.8/bits/basic_string.h ****       insert(size_type __pos, size_type __n, _CharT __c)
1320:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
1321:/usr/include/c++/4.8/bits/basic_string.h **** 			      size_type(0), __n, __c); }
1322:/usr/include/c++/4.8/bits/basic_string.h **** 
1323:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1324:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert one character.
1325:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __p  Iterator referencing position in string to insert at.
1326:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to insert.
1327:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Iterator referencing newly inserted char.
1328:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1329:/usr/include/c++/4.8/bits/basic_string.h ****        *
1330:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts character @a __c at position referenced by @a __p.
1331:/usr/include/c++/4.8/bits/basic_string.h ****        *  If adding character causes the length to exceed max_size(),
1332:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  If @a __p is beyond end of string,
1333:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range is thrown.  The value of the string doesn't
GAS LISTING /tmp/ccrG9BDx.s 			page 58


1334:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1335:/usr/include/c++/4.8/bits/basic_string.h ****       */
1336:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
1337:/usr/include/c++/4.8/bits/basic_string.h ****       insert(iterator __p, _CharT __c)
1338:/usr/include/c++/4.8/bits/basic_string.h ****       {
1339:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());
1340:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __pos = __p - _M_ibegin();
1341:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_replace_aux(__pos, size_type(0), size_type(1), __c);
1342:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_rep()->_M_set_leaked();
1343:/usr/include/c++/4.8/bits/basic_string.h **** 	return iterator(_M_data() + __pos);
1344:/usr/include/c++/4.8/bits/basic_string.h ****       }
1345:/usr/include/c++/4.8/bits/basic_string.h **** 
1346:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1347:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Remove characters.
1348:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to remove (default 0).
1349:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to remove (default remainder).
1350:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1351:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos is beyond the end of this
1352:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.
1353:/usr/include/c++/4.8/bits/basic_string.h ****        *
1354:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes @a __n characters from this string starting at @a
1355:/usr/include/c++/4.8/bits/basic_string.h ****        *  __pos.  The length of the string is reduced by @a __n.  If
1356:/usr/include/c++/4.8/bits/basic_string.h ****        *  there are < @a __n characters to remove, the remainder of
1357:/usr/include/c++/4.8/bits/basic_string.h ****        *  the string is truncated.  If @a __p is beyond end of string,
1358:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range is thrown.  The value of the string doesn't
1359:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1360:/usr/include/c++/4.8/bits/basic_string.h ****       */
1361:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1362:/usr/include/c++/4.8/bits/basic_string.h ****       erase(size_type __pos = 0, size_type __n = npos)
1363:/usr/include/c++/4.8/bits/basic_string.h ****       { 
1364:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_mutate(_M_check(__pos, "basic_string::erase"),
1365:/usr/include/c++/4.8/bits/basic_string.h **** 		  _M_limit(__pos, __n), size_type(0));
1366:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
1367:/usr/include/c++/4.8/bits/basic_string.h ****       }
1368:/usr/include/c++/4.8/bits/basic_string.h **** 
1369:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1370:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Remove one character.
1371:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __position  Iterator referencing the character to remove.
1372:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  iterator referencing same location after removal.
1373:/usr/include/c++/4.8/bits/basic_string.h ****        *
1374:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the character at @a __position from this string. The value
1375:/usr/include/c++/4.8/bits/basic_string.h ****        *  of the string doesn't change if an error is thrown.
1376:/usr/include/c++/4.8/bits/basic_string.h ****       */
1377:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
1378:/usr/include/c++/4.8/bits/basic_string.h ****       erase(iterator __position)
1379:/usr/include/c++/4.8/bits/basic_string.h ****       {
1380:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin()
1381:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __position < _M_iend());
1382:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __pos = __position - _M_ibegin();
1383:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_mutate(__pos, size_type(1), size_type(0));
1384:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_rep()->_M_set_leaked();
1385:/usr/include/c++/4.8/bits/basic_string.h **** 	return iterator(_M_data() + __pos);
1386:/usr/include/c++/4.8/bits/basic_string.h ****       }
1387:/usr/include/c++/4.8/bits/basic_string.h **** 
1388:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1389:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Remove a range of characters.
1390:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __first  Iterator referencing the first character to remove.
GAS LISTING /tmp/ccrG9BDx.s 			page 59


1391:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __last  Iterator referencing the end of the range.
1392:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Iterator referencing location of first after removal.
1393:/usr/include/c++/4.8/bits/basic_string.h ****        *
1394:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [first,last) from this string.
1395:/usr/include/c++/4.8/bits/basic_string.h ****        *  The value of the string doesn't change if an error is thrown.
1396:/usr/include/c++/4.8/bits/basic_string.h ****       */
1397:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
1398:/usr/include/c++/4.8/bits/basic_string.h ****       erase(iterator __first, iterator __last);
1399:/usr/include/c++/4.8/bits/basic_string.h ****  
1400:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1401:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1402:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Remove the last character.
1403:/usr/include/c++/4.8/bits/basic_string.h ****        *
1404:/usr/include/c++/4.8/bits/basic_string.h ****        *  The string must be non-empty.
1405:/usr/include/c++/4.8/bits/basic_string.h ****        */
1406:/usr/include/c++/4.8/bits/basic_string.h ****       void
1407:/usr/include/c++/4.8/bits/basic_string.h ****       pop_back()
1408:/usr/include/c++/4.8/bits/basic_string.h ****       { erase(size()-1, 1); }
1409:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1410:/usr/include/c++/4.8/bits/basic_string.h **** 
1411:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1412:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace characters with value from another string.
1413:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to replace.
1414:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to be replaced.
1415:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to insert.
1416:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1417:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos is beyond the end of this
1418:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.
1419:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1420:/usr/include/c++/4.8/bits/basic_string.h ****        *
1421:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__pos,__pos+__n) from
1422:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  In place, the value of @a __str is inserted.
1423:/usr/include/c++/4.8/bits/basic_string.h ****        *  If @a __pos is beyond end of string, out_of_range is thrown.
1424:/usr/include/c++/4.8/bits/basic_string.h ****        *  If the length of the result exceeds max_size(), length_error
1425:/usr/include/c++/4.8/bits/basic_string.h ****        *  is thrown.  The value of the string doesn't change if an
1426:/usr/include/c++/4.8/bits/basic_string.h ****        *  error is thrown.
1427:/usr/include/c++/4.8/bits/basic_string.h ****       */
1428:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1429:/usr/include/c++/4.8/bits/basic_string.h ****       replace(size_type __pos, size_type __n, const basic_string& __str)
1430:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
1431:/usr/include/c++/4.8/bits/basic_string.h **** 
1432:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1433:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace characters with value from another string.
1434:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos1  Index of first character to replace.
1435:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters to be replaced.
1436:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to insert.
1437:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos2  Index of first character of str to use.
1438:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n2  Number of characters from str to use.
1439:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1440:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a __pos1 > size() or @a __pos2 >
1441:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str.size().
1442:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1443:/usr/include/c++/4.8/bits/basic_string.h ****        *
1444:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__pos1,__pos1 + n) from this
1445:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.  In place, the value of @a __str is inserted.  If @a __pos is
1446:/usr/include/c++/4.8/bits/basic_string.h ****        *  beyond end of string, out_of_range is thrown.  If the length of the
1447:/usr/include/c++/4.8/bits/basic_string.h ****        *  result exceeds max_size(), length_error is thrown.  The value of the
GAS LISTING /tmp/ccrG9BDx.s 			page 60


1448:/usr/include/c++/4.8/bits/basic_string.h ****        *  string doesn't change if an error is thrown.
1449:/usr/include/c++/4.8/bits/basic_string.h ****       */
1450:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1451:/usr/include/c++/4.8/bits/basic_string.h ****       replace(size_type __pos1, size_type __n1, const basic_string& __str,
1452:/usr/include/c++/4.8/bits/basic_string.h **** 	      size_type __pos2, size_type __n2)
1453:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->replace(__pos1, __n1, __str._M_data()
1454:/usr/include/c++/4.8/bits/basic_string.h **** 			     + __str._M_check(__pos2, "basic_string::replace"),
1455:/usr/include/c++/4.8/bits/basic_string.h **** 			     __str._M_limit(__pos2, __n2)); }
1456:/usr/include/c++/4.8/bits/basic_string.h **** 
1457:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1458:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace characters with value of a C substring.
1459:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to replace.
1460:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters to be replaced.
1461:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to insert.
1462:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n2  Number of characters from @a s to use.
1463:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1464:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos1 > size().
1465:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1466:/usr/include/c++/4.8/bits/basic_string.h ****        *
1467:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__pos,__pos + __n1)
1468:/usr/include/c++/4.8/bits/basic_string.h ****        *  from this string.  In place, the first @a __n2 characters of
1469:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __s are inserted, or all of @a __s if @a __n2 is too large.  If
1470:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __pos is beyond end of string, out_of_range is thrown.  If
1471:/usr/include/c++/4.8/bits/basic_string.h ****        *  the length of result exceeds max_size(), length_error is
1472:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.  The value of the string doesn't change if an error
1473:/usr/include/c++/4.8/bits/basic_string.h ****        *  is thrown.
1474:/usr/include/c++/4.8/bits/basic_string.h ****       */
1475:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1476:/usr/include/c++/4.8/bits/basic_string.h ****       replace(size_type __pos, size_type __n1, const _CharT* __s,
1477:/usr/include/c++/4.8/bits/basic_string.h **** 	      size_type __n2);
1478:/usr/include/c++/4.8/bits/basic_string.h **** 
1479:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1480:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace characters with value of a C string.
1481:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to replace.
1482:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters to be replaced.
1483:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to insert.
1484:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1485:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos > size().
1486:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1487:/usr/include/c++/4.8/bits/basic_string.h ****        *
1488:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__pos,__pos + __n1)
1489:/usr/include/c++/4.8/bits/basic_string.h ****        *  from this string.  In place, the characters of @a __s are
1490:/usr/include/c++/4.8/bits/basic_string.h ****        *  inserted.  If @a __pos is beyond end of string, out_of_range
1491:/usr/include/c++/4.8/bits/basic_string.h ****        *  is thrown.  If the length of result exceeds max_size(),
1492:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  The value of the string doesn't
1493:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1494:/usr/include/c++/4.8/bits/basic_string.h ****       */
1495:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1496:/usr/include/c++/4.8/bits/basic_string.h ****       replace(size_type __pos, size_type __n1, const _CharT* __s)
1497:/usr/include/c++/4.8/bits/basic_string.h ****       {
1498:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1499:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__pos, __n1, __s, traits_type::length(__s));
1500:/usr/include/c++/4.8/bits/basic_string.h ****       }
1501:/usr/include/c++/4.8/bits/basic_string.h **** 
1502:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1503:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace characters with multiple characters.
1504:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to replace.
GAS LISTING /tmp/ccrG9BDx.s 			page 61


1505:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters to be replaced.
1506:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n2  Number of characters to insert.
1507:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to insert.
1508:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1509:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a __pos > size().
1510:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1511:/usr/include/c++/4.8/bits/basic_string.h ****        *
1512:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [pos,pos + n1) from this
1513:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.  In place, @a __n2 copies of @a __c are inserted.
1514:/usr/include/c++/4.8/bits/basic_string.h ****        *  If @a __pos is beyond end of string, out_of_range is thrown.
1515:/usr/include/c++/4.8/bits/basic_string.h ****        *  If the length of result exceeds max_size(), length_error is
1516:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.  The value of the string doesn't change if an error
1517:/usr/include/c++/4.8/bits/basic_string.h ****        *  is thrown.
1518:/usr/include/c++/4.8/bits/basic_string.h ****       */
1519:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1520:/usr/include/c++/4.8/bits/basic_string.h ****       replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
1521:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
1522:/usr/include/c++/4.8/bits/basic_string.h **** 			      _M_limit(__pos, __n1), __n2, __c); }
1523:/usr/include/c++/4.8/bits/basic_string.h **** 
1524:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1525:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with string.
1526:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1527:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1528:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String value to insert.
1529:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1530:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1531:/usr/include/c++/4.8/bits/basic_string.h ****        *
1532:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1533:/usr/include/c++/4.8/bits/basic_string.h ****        *  the value of @a __str is inserted.  If the length of result
1534:/usr/include/c++/4.8/bits/basic_string.h ****        *  exceeds max_size(), length_error is thrown.  The value of
1535:/usr/include/c++/4.8/bits/basic_string.h ****        *  the string doesn't change if an error is thrown.
1536:/usr/include/c++/4.8/bits/basic_string.h ****       */
1537:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1538:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, const basic_string& __str)
1539:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
1540:/usr/include/c++/4.8/bits/basic_string.h **** 
1541:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1542:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with C substring.
1543:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1544:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1545:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string value to insert.
1546:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from s to insert.
1547:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1548:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1549:/usr/include/c++/4.8/bits/basic_string.h ****        *
1550:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1551:/usr/include/c++/4.8/bits/basic_string.h ****        *  the first @a __n characters of @a __s are inserted.  If the
1552:/usr/include/c++/4.8/bits/basic_string.h ****        *  length of result exceeds max_size(), length_error is thrown.
1553:/usr/include/c++/4.8/bits/basic_string.h ****        *  The value of the string doesn't change if an error is
1554:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.
1555:/usr/include/c++/4.8/bits/basic_string.h ****       */
1556:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1557:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
1558:/usr/include/c++/4.8/bits/basic_string.h ****       {
1559:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1560:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1561:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
GAS LISTING /tmp/ccrG9BDx.s 			page 62


1562:/usr/include/c++/4.8/bits/basic_string.h ****       }
1563:/usr/include/c++/4.8/bits/basic_string.h **** 
1564:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1565:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with C string.
1566:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1567:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1568:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string value to insert.
1569:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1570:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1571:/usr/include/c++/4.8/bits/basic_string.h ****        *
1572:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1573:/usr/include/c++/4.8/bits/basic_string.h ****        *  the characters of @a __s are inserted.  If the length of
1574:/usr/include/c++/4.8/bits/basic_string.h ****        *  result exceeds max_size(), length_error is thrown.  The
1575:/usr/include/c++/4.8/bits/basic_string.h ****        *  value of the string doesn't change if an error is thrown.
1576:/usr/include/c++/4.8/bits/basic_string.h ****       */
1577:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1578:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, const _CharT* __s)
1579:/usr/include/c++/4.8/bits/basic_string.h ****       {
1580:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1581:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1, __i2, __s, traits_type::length(__s));
1582:/usr/include/c++/4.8/bits/basic_string.h ****       }
1583:/usr/include/c++/4.8/bits/basic_string.h **** 
1584:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1585:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with multiple characters
1586:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1587:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1588:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to insert.
1589:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to insert.
1590:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1591:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1592:/usr/include/c++/4.8/bits/basic_string.h ****        *
1593:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1594:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __n copies of @a __c are inserted.  If the length of
1595:/usr/include/c++/4.8/bits/basic_string.h ****        *  result exceeds max_size(), length_error is thrown.  The
1596:/usr/include/c++/4.8/bits/basic_string.h ****        *  value of the string doesn't change if an error is thrown.
1597:/usr/include/c++/4.8/bits/basic_string.h ****       */
1598:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1599:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
1600:/usr/include/c++/4.8/bits/basic_string.h ****       {
1601:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1602:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1603:/usr/include/c++/4.8/bits/basic_string.h **** 	return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
1604:/usr/include/c++/4.8/bits/basic_string.h ****       }
1605:/usr/include/c++/4.8/bits/basic_string.h **** 
1606:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1607:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with range.
1608:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1609:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1610:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __k1  Iterator referencing start of range to insert.
1611:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __k2  Iterator referencing end of range to insert.
1612:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1613:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1614:/usr/include/c++/4.8/bits/basic_string.h ****        *
1615:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1616:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters in the range [__k1,__k2) are inserted.  If the
1617:/usr/include/c++/4.8/bits/basic_string.h ****        *  length of result exceeds max_size(), length_error is thrown.
1618:/usr/include/c++/4.8/bits/basic_string.h ****        *  The value of the string doesn't change if an error is
GAS LISTING /tmp/ccrG9BDx.s 			page 63


1619:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.
1620:/usr/include/c++/4.8/bits/basic_string.h ****       */
1621:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
1622:/usr/include/c++/4.8/bits/basic_string.h ****         basic_string&
1623:/usr/include/c++/4.8/bits/basic_string.h ****         replace(iterator __i1, iterator __i2,
1624:/usr/include/c++/4.8/bits/basic_string.h **** 		_InputIterator __k1, _InputIterator __k2)
1625:/usr/include/c++/4.8/bits/basic_string.h ****         {
1626:/usr/include/c++/4.8/bits/basic_string.h **** 	  _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1627:/usr/include/c++/4.8/bits/basic_string.h **** 				   && __i2 <= _M_iend());
1628:/usr/include/c++/4.8/bits/basic_string.h **** 	  __glibcxx_requires_valid_range(__k1, __k2);
1629:/usr/include/c++/4.8/bits/basic_string.h **** 	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
1630:/usr/include/c++/4.8/bits/basic_string.h **** 	  return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
1631:/usr/include/c++/4.8/bits/basic_string.h **** 	}
1632:/usr/include/c++/4.8/bits/basic_string.h **** 
1633:/usr/include/c++/4.8/bits/basic_string.h ****       // Specializations for the common case of pointer and iterator:
1634:/usr/include/c++/4.8/bits/basic_string.h ****       // useful to avoid the overhead of temporary buffering in _M_replace.
1635:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1636:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
1637:/usr/include/c++/4.8/bits/basic_string.h ****       {
1638:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1639:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1640:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_valid_range(__k1, __k2);
1641:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1642:/usr/include/c++/4.8/bits/basic_string.h **** 			     __k1, __k2 - __k1);
1643:/usr/include/c++/4.8/bits/basic_string.h ****       }
1644:/usr/include/c++/4.8/bits/basic_string.h **** 
1645:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1646:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2,
1647:/usr/include/c++/4.8/bits/basic_string.h **** 	      const _CharT* __k1, const _CharT* __k2)
1648:/usr/include/c++/4.8/bits/basic_string.h ****       {
1649:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1650:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1651:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_valid_range(__k1, __k2);
1652:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1653:/usr/include/c++/4.8/bits/basic_string.h **** 			     __k1, __k2 - __k1);
1654:/usr/include/c++/4.8/bits/basic_string.h ****       }
1655:/usr/include/c++/4.8/bits/basic_string.h **** 
1656:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1657:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
1658:/usr/include/c++/4.8/bits/basic_string.h ****       {
1659:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1660:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1661:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_valid_range(__k1, __k2);
1662:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1663:/usr/include/c++/4.8/bits/basic_string.h **** 			     __k1.base(), __k2 - __k1);
1664:/usr/include/c++/4.8/bits/basic_string.h ****       }
1665:/usr/include/c++/4.8/bits/basic_string.h **** 
1666:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1667:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2,
1668:/usr/include/c++/4.8/bits/basic_string.h **** 	      const_iterator __k1, const_iterator __k2)
1669:/usr/include/c++/4.8/bits/basic_string.h ****       {
1670:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1671:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1672:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_valid_range(__k1, __k2);
1673:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1674:/usr/include/c++/4.8/bits/basic_string.h **** 			     __k1.base(), __k2 - __k1);
1675:/usr/include/c++/4.8/bits/basic_string.h ****       }
GAS LISTING /tmp/ccrG9BDx.s 			page 64


1676:/usr/include/c++/4.8/bits/basic_string.h ****       
1677:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1678:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1679:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with initializer_list.
1680:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1681:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1682:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __l  The initializer_list of characters to insert.
1683:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1684:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1685:/usr/include/c++/4.8/bits/basic_string.h ****        *
1686:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1687:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters in the range [__k1,__k2) are inserted.  If the
1688:/usr/include/c++/4.8/bits/basic_string.h ****        *  length of result exceeds max_size(), length_error is thrown.
1689:/usr/include/c++/4.8/bits/basic_string.h ****        *  The value of the string doesn't change if an error is
1690:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.
1691:/usr/include/c++/4.8/bits/basic_string.h ****       */
1692:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string& replace(iterator __i1, iterator __i2,
1693:/usr/include/c++/4.8/bits/basic_string.h **** 			    initializer_list<_CharT> __l)
1694:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->replace(__i1, __i2, __l.begin(), __l.end()); }
1695:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1696:/usr/include/c++/4.8/bits/basic_string.h **** 
1697:/usr/include/c++/4.8/bits/basic_string.h ****     private:
1698:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _Integer>
1699:/usr/include/c++/4.8/bits/basic_string.h **** 	basic_string&
1700:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
1701:/usr/include/c++/4.8/bits/basic_string.h **** 			    _Integer __val, __true_type)
1702:/usr/include/c++/4.8/bits/basic_string.h ****         { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
1703:/usr/include/c++/4.8/bits/basic_string.h **** 
1704:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
1705:/usr/include/c++/4.8/bits/basic_string.h **** 	basic_string&
1706:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
1707:/usr/include/c++/4.8/bits/basic_string.h **** 			    _InputIterator __k2, __false_type);
1708:/usr/include/c++/4.8/bits/basic_string.h **** 
1709:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1710:/usr/include/c++/4.8/bits/basic_string.h ****       _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
1711:/usr/include/c++/4.8/bits/basic_string.h **** 		     _CharT __c);
1712:/usr/include/c++/4.8/bits/basic_string.h **** 
1713:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1714:/usr/include/c++/4.8/bits/basic_string.h ****       _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
1715:/usr/include/c++/4.8/bits/basic_string.h **** 		      size_type __n2);
1716:/usr/include/c++/4.8/bits/basic_string.h **** 
1717:/usr/include/c++/4.8/bits/basic_string.h ****       // _S_construct_aux is used to implement the 21.3.1 para 15 which
1718:/usr/include/c++/4.8/bits/basic_string.h ****       // requires special behaviour if _InIter is an integral type
1719:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InIterator>
1720:/usr/include/c++/4.8/bits/basic_string.h ****         static _CharT*
1721:/usr/include/c++/4.8/bits/basic_string.h ****         _S_construct_aux(_InIterator __beg, _InIterator __end,
1722:/usr/include/c++/4.8/bits/basic_string.h **** 			 const _Alloc& __a, __false_type)
1723:/usr/include/c++/4.8/bits/basic_string.h **** 	{
1724:/usr/include/c++/4.8/bits/basic_string.h ****           typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
1725:/usr/include/c++/4.8/bits/basic_string.h ****           return _S_construct(__beg, __end, __a, _Tag());
1726:/usr/include/c++/4.8/bits/basic_string.h **** 	}
1727:/usr/include/c++/4.8/bits/basic_string.h **** 
1728:/usr/include/c++/4.8/bits/basic_string.h ****       // _GLIBCXX_RESOLVE_LIB_DEFECTS
1729:/usr/include/c++/4.8/bits/basic_string.h ****       // 438. Ambiguity in the "do the right thing" clause
1730:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _Integer>
1731:/usr/include/c++/4.8/bits/basic_string.h ****         static _CharT*
1732:/usr/include/c++/4.8/bits/basic_string.h ****         _S_construct_aux(_Integer __beg, _Integer __end,
GAS LISTING /tmp/ccrG9BDx.s 			page 65


1733:/usr/include/c++/4.8/bits/basic_string.h **** 			 const _Alloc& __a, __true_type)
1734:/usr/include/c++/4.8/bits/basic_string.h ****         { return _S_construct_aux_2(static_cast<size_type>(__beg),
1735:/usr/include/c++/4.8/bits/basic_string.h **** 				    __end, __a); }
1736:/usr/include/c++/4.8/bits/basic_string.h **** 
1737:/usr/include/c++/4.8/bits/basic_string.h ****       static _CharT*
1738:/usr/include/c++/4.8/bits/basic_string.h ****       _S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a)
1739:/usr/include/c++/4.8/bits/basic_string.h ****       { return _S_construct(__req, __c, __a); }
1740:/usr/include/c++/4.8/bits/basic_string.h **** 
1741:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InIterator>
1742:/usr/include/c++/4.8/bits/basic_string.h ****         static _CharT*
1743:/usr/include/c++/4.8/bits/basic_string.h ****         _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
1744:/usr/include/c++/4.8/bits/basic_string.h **** 	{
1745:/usr/include/c++/4.8/bits/basic_string.h **** 	  typedef typename std::__is_integer<_InIterator>::__type _Integral;
1746:/usr/include/c++/4.8/bits/basic_string.h **** 	  return _S_construct_aux(__beg, __end, __a, _Integral());
1747:/usr/include/c++/4.8/bits/basic_string.h ****         }
1748:/usr/include/c++/4.8/bits/basic_string.h **** 
1749:/usr/include/c++/4.8/bits/basic_string.h ****       // For Input Iterators, used in istreambuf_iterators, etc.
1750:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InIterator>
1751:/usr/include/c++/4.8/bits/basic_string.h ****         static _CharT*
1752:/usr/include/c++/4.8/bits/basic_string.h ****          _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
1753:/usr/include/c++/4.8/bits/basic_string.h **** 		      input_iterator_tag);
1754:/usr/include/c++/4.8/bits/basic_string.h **** 
1755:/usr/include/c++/4.8/bits/basic_string.h ****       // For forward_iterators up to random_access_iterators, used for
1756:/usr/include/c++/4.8/bits/basic_string.h ****       // string::iterator, _CharT*, etc.
1757:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _FwdIterator>
1758:/usr/include/c++/4.8/bits/basic_string.h ****         static _CharT*
1759:/usr/include/c++/4.8/bits/basic_string.h ****         _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
1760:/usr/include/c++/4.8/bits/basic_string.h **** 		     forward_iterator_tag);
1761:/usr/include/c++/4.8/bits/basic_string.h **** 
1762:/usr/include/c++/4.8/bits/basic_string.h ****       static _CharT*
1763:/usr/include/c++/4.8/bits/basic_string.h ****       _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
1764:/usr/include/c++/4.8/bits/basic_string.h **** 
1765:/usr/include/c++/4.8/bits/basic_string.h ****     public:
1766:/usr/include/c++/4.8/bits/basic_string.h **** 
1767:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1768:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Copy substring into C string.
1769:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to copy value into.
1770:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to copy.
1771:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to copy.
1772:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Number of characters actually copied
1773:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If __pos > size().
1774:/usr/include/c++/4.8/bits/basic_string.h ****        *
1775:/usr/include/c++/4.8/bits/basic_string.h ****        *  Copies up to @a __n characters starting at @a __pos into the
1776:/usr/include/c++/4.8/bits/basic_string.h ****        *  C string @a __s.  If @a __pos is %greater than size(),
1777:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range is thrown.
1778:/usr/include/c++/4.8/bits/basic_string.h ****       */
1779:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1780:/usr/include/c++/4.8/bits/basic_string.h ****       copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
1781:/usr/include/c++/4.8/bits/basic_string.h **** 
1782:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1783:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Swap contents with another string.
1784:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  String to swap with.
1785:/usr/include/c++/4.8/bits/basic_string.h ****        *
1786:/usr/include/c++/4.8/bits/basic_string.h ****        *  Exchanges the contents of this string with that of @a __s in constant
1787:/usr/include/c++/4.8/bits/basic_string.h ****        *  time.
1788:/usr/include/c++/4.8/bits/basic_string.h ****       */
1789:/usr/include/c++/4.8/bits/basic_string.h ****       void
GAS LISTING /tmp/ccrG9BDx.s 			page 66


1790:/usr/include/c++/4.8/bits/basic_string.h ****       swap(basic_string& __s);
1791:/usr/include/c++/4.8/bits/basic_string.h **** 
1792:/usr/include/c++/4.8/bits/basic_string.h ****       // String operations:
1793:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1794:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Return const pointer to null-terminated contents.
1795:/usr/include/c++/4.8/bits/basic_string.h ****        *
1796:/usr/include/c++/4.8/bits/basic_string.h ****        *  This is a handle to internal data.  Do not modify or dire things may
1797:/usr/include/c++/4.8/bits/basic_string.h ****        *  happen.
1798:/usr/include/c++/4.8/bits/basic_string.h ****       */
1799:/usr/include/c++/4.8/bits/basic_string.h ****       const _CharT*
1800:/usr/include/c++/4.8/bits/basic_string.h ****       c_str() const _GLIBCXX_NOEXCEPT
1801:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_data(); }
1802:/usr/include/c++/4.8/bits/basic_string.h **** 
1803:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1804:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Return const pointer to contents.
1805:/usr/include/c++/4.8/bits/basic_string.h ****        *
1806:/usr/include/c++/4.8/bits/basic_string.h ****        *  This is a handle to internal data.  Do not modify or dire things may
1807:/usr/include/c++/4.8/bits/basic_string.h ****        *  happen.
1808:/usr/include/c++/4.8/bits/basic_string.h ****       */
1809:/usr/include/c++/4.8/bits/basic_string.h ****       const _CharT*
1810:/usr/include/c++/4.8/bits/basic_string.h ****       data() const _GLIBCXX_NOEXCEPT
1811:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_data(); }
1812:/usr/include/c++/4.8/bits/basic_string.h **** 
1813:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1814:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Return copy of allocator used to construct this string.
1815:/usr/include/c++/4.8/bits/basic_string.h ****       */
1816:/usr/include/c++/4.8/bits/basic_string.h ****       allocator_type
1817:/usr/include/c++/4.8/bits/basic_string.h ****       get_allocator() const _GLIBCXX_NOEXCEPT
1818:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_dataplus; }
1819:/usr/include/c++/4.8/bits/basic_string.h **** 
1820:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1821:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a C substring.
1822:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to locate.
1823:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from.
1824:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from @a s to search for.
1825:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of first occurrence.
1826:/usr/include/c++/4.8/bits/basic_string.h ****        *
1827:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for the first @a
1828:/usr/include/c++/4.8/bits/basic_string.h ****        *  __n characters in @a __s within this string.  If found,
1829:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it begins.  If not found, returns
1830:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
1831:/usr/include/c++/4.8/bits/basic_string.h ****       */
1832:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1833:/usr/include/c++/4.8/bits/basic_string.h ****       find(const _CharT* __s, size_type __pos, size_type __n) const;
1834:/usr/include/c++/4.8/bits/basic_string.h **** 
1835:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1836:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a string.
1837:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to locate.
1838:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1839:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of first occurrence.
1840:/usr/include/c++/4.8/bits/basic_string.h ****        *
1841:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for value of @a __str within
1842:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  If found, returns the index where it begins.  If not
1843:/usr/include/c++/4.8/bits/basic_string.h ****        *  found, returns npos.
1844:/usr/include/c++/4.8/bits/basic_string.h ****       */
1845:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1846:/usr/include/c++/4.8/bits/basic_string.h ****       find(const basic_string& __str, size_type __pos = 0) const
GAS LISTING /tmp/ccrG9BDx.s 			page 67


1847:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
1848:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find(__str.data(), __pos, __str.size()); }
1849:/usr/include/c++/4.8/bits/basic_string.h **** 
1850:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1851:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a C string.
1852:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to locate.
1853:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1854:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of first occurrence.
1855:/usr/include/c++/4.8/bits/basic_string.h ****        *
1856:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for the value of @a
1857:/usr/include/c++/4.8/bits/basic_string.h ****        *  __s within this string.  If found, returns the index where
1858:/usr/include/c++/4.8/bits/basic_string.h ****        *  it begins.  If not found, returns npos.
1859:/usr/include/c++/4.8/bits/basic_string.h ****       */
1860:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1861:/usr/include/c++/4.8/bits/basic_string.h ****       find(const _CharT* __s, size_type __pos = 0) const
1862:/usr/include/c++/4.8/bits/basic_string.h ****       {
1863:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1864:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->find(__s, __pos, traits_type::length(__s));
1865:/usr/include/c++/4.8/bits/basic_string.h ****       }
1866:/usr/include/c++/4.8/bits/basic_string.h **** 
1867:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1868:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character.
1869:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to locate.
1870:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1871:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
1872:/usr/include/c++/4.8/bits/basic_string.h ****        *
1873:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for @a __c within
1874:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  If found, returns the index where it was
1875:/usr/include/c++/4.8/bits/basic_string.h ****        *  found.  If not found, returns npos.
1876:/usr/include/c++/4.8/bits/basic_string.h ****       */
1877:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1878:/usr/include/c++/4.8/bits/basic_string.h ****       find(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT;
1879:/usr/include/c++/4.8/bits/basic_string.h **** 
1880:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1881:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a string.
1882:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to locate.
1883:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
1884:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of last occurrence.
1885:/usr/include/c++/4.8/bits/basic_string.h ****        *
1886:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for value of @a
1887:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str within this string.  If found, returns the index where
1888:/usr/include/c++/4.8/bits/basic_string.h ****        *  it begins.  If not found, returns npos.
1889:/usr/include/c++/4.8/bits/basic_string.h ****       */
1890:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1891:/usr/include/c++/4.8/bits/basic_string.h ****       rfind(const basic_string& __str, size_type __pos = npos) const
1892:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
1893:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->rfind(__str.data(), __pos, __str.size()); }
1894:/usr/include/c++/4.8/bits/basic_string.h **** 
1895:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1896:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a C substring.
1897:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to locate.
1898:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from.
1899:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from s to search for.
1900:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of last occurrence.
1901:/usr/include/c++/4.8/bits/basic_string.h ****        *
1902:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for the first @a
1903:/usr/include/c++/4.8/bits/basic_string.h ****        *  __n characters in @a __s within this string.  If found,
GAS LISTING /tmp/ccrG9BDx.s 			page 68


1904:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it begins.  If not found, returns
1905:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
1906:/usr/include/c++/4.8/bits/basic_string.h ****       */
1907:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1908:/usr/include/c++/4.8/bits/basic_string.h ****       rfind(const _CharT* __s, size_type __pos, size_type __n) const;
1909:/usr/include/c++/4.8/bits/basic_string.h **** 
1910:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1911:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a C string.
1912:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to locate.
1913:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to start search at (default end).
1914:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of  last occurrence.
1915:/usr/include/c++/4.8/bits/basic_string.h ****        *
1916:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for the value of
1917:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __s within this string.  If found, returns the index
1918:/usr/include/c++/4.8/bits/basic_string.h ****        *  where it begins.  If not found, returns npos.
1919:/usr/include/c++/4.8/bits/basic_string.h ****       */
1920:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1921:/usr/include/c++/4.8/bits/basic_string.h ****       rfind(const _CharT* __s, size_type __pos = npos) const
1922:/usr/include/c++/4.8/bits/basic_string.h ****       {
1923:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1924:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->rfind(__s, __pos, traits_type::length(__s));
1925:/usr/include/c++/4.8/bits/basic_string.h ****       }
1926:/usr/include/c++/4.8/bits/basic_string.h **** 
1927:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1928:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character.
1929:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to locate.
1930:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
1931:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
1932:/usr/include/c++/4.8/bits/basic_string.h ****        *
1933:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for @a __c within
1934:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  If found, returns the index where it was
1935:/usr/include/c++/4.8/bits/basic_string.h ****        *  found.  If not found, returns npos.
1936:/usr/include/c++/4.8/bits/basic_string.h ****       */
1937:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1938:/usr/include/c++/4.8/bits/basic_string.h ****       rfind(_CharT __c, size_type __pos = npos) const _GLIBCXX_NOEXCEPT;
1939:/usr/include/c++/4.8/bits/basic_string.h **** 
1940:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1941:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character of string.
1942:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String containing characters to locate.
1943:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1944:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
1945:/usr/include/c++/4.8/bits/basic_string.h ****        *
1946:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for one of the
1947:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters of @a __str within this string.  If found,
1948:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it was found.  If not found, returns
1949:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
1950:/usr/include/c++/4.8/bits/basic_string.h ****       */
1951:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1952:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_of(const basic_string& __str, size_type __pos = 0) const
1953:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
1954:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find_first_of(__str.data(), __pos, __str.size()); }
1955:/usr/include/c++/4.8/bits/basic_string.h **** 
1956:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1957:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character of C substring.
1958:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  String containing characters to locate.
1959:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from.
1960:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from s to search for.
GAS LISTING /tmp/ccrG9BDx.s 			page 69


1961:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
1962:/usr/include/c++/4.8/bits/basic_string.h ****        *
1963:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for one of the
1964:/usr/include/c++/4.8/bits/basic_string.h ****        *  first @a __n characters of @a __s within this string.  If
1965:/usr/include/c++/4.8/bits/basic_string.h ****        *  found, returns the index where it was found.  If not found,
1966:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns npos.
1967:/usr/include/c++/4.8/bits/basic_string.h ****       */
1968:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1969:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
1970:/usr/include/c++/4.8/bits/basic_string.h **** 
1971:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1972:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character of C string.
1973:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  String containing characters to locate.
1974:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1975:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
1976:/usr/include/c++/4.8/bits/basic_string.h ****        *
1977:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for one of the
1978:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters of @a __s within this string.  If found, returns
1979:/usr/include/c++/4.8/bits/basic_string.h ****        *  the index where it was found.  If not found, returns npos.
1980:/usr/include/c++/4.8/bits/basic_string.h ****       */
1981:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1982:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_of(const _CharT* __s, size_type __pos = 0) const
1983:/usr/include/c++/4.8/bits/basic_string.h ****       {
1984:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1985:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->find_first_of(__s, __pos, traits_type::length(__s));
1986:/usr/include/c++/4.8/bits/basic_string.h ****       }
1987:/usr/include/c++/4.8/bits/basic_string.h **** 
1988:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1989:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character.
1990:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to locate.
1991:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1992:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
1993:/usr/include/c++/4.8/bits/basic_string.h ****        *
1994:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for the character
1995:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __c within this string.  If found, returns the index
1996:/usr/include/c++/4.8/bits/basic_string.h ****        *  where it was found.  If not found, returns npos.
1997:/usr/include/c++/4.8/bits/basic_string.h ****        *
1998:/usr/include/c++/4.8/bits/basic_string.h ****        *  Note: equivalent to find(__c, __pos).
1999:/usr/include/c++/4.8/bits/basic_string.h ****       */
2000:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2001:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT
2002:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find(__c, __pos); }
2003:/usr/include/c++/4.8/bits/basic_string.h **** 
2004:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2005:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character of string.
2006:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String containing characters to locate.
2007:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2008:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2009:/usr/include/c++/4.8/bits/basic_string.h ****        *
2010:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for one of the
2011:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters of @a __str within this string.  If found,
2012:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it was found.  If not found, returns
2013:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
2014:/usr/include/c++/4.8/bits/basic_string.h ****       */
2015:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2016:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_of(const basic_string& __str, size_type __pos = npos) const
2017:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
GAS LISTING /tmp/ccrG9BDx.s 			page 70


2018:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find_last_of(__str.data(), __pos, __str.size()); }
2019:/usr/include/c++/4.8/bits/basic_string.h **** 
2020:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2021:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character of C substring.
2022:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to locate.
2023:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from.
2024:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from s to search for.
2025:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2026:/usr/include/c++/4.8/bits/basic_string.h ****        *
2027:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for one of the
2028:/usr/include/c++/4.8/bits/basic_string.h ****        *  first @a __n characters of @a __s within this string.  If
2029:/usr/include/c++/4.8/bits/basic_string.h ****        *  found, returns the index where it was found.  If not found,
2030:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns npos.
2031:/usr/include/c++/4.8/bits/basic_string.h ****       */
2032:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2033:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
2034:/usr/include/c++/4.8/bits/basic_string.h **** 
2035:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2036:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character of C string.
2037:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to locate.
2038:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2039:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2040:/usr/include/c++/4.8/bits/basic_string.h ****        *
2041:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for one of the
2042:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters of @a __s within this string.  If found, returns
2043:/usr/include/c++/4.8/bits/basic_string.h ****        *  the index where it was found.  If not found, returns npos.
2044:/usr/include/c++/4.8/bits/basic_string.h ****       */
2045:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2046:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_of(const _CharT* __s, size_type __pos = npos) const
2047:/usr/include/c++/4.8/bits/basic_string.h ****       {
2048:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
2049:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->find_last_of(__s, __pos, traits_type::length(__s));
2050:/usr/include/c++/4.8/bits/basic_string.h ****       }
2051:/usr/include/c++/4.8/bits/basic_string.h **** 
2052:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2053:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character.
2054:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to locate.
2055:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2056:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2057:/usr/include/c++/4.8/bits/basic_string.h ****        *
2058:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for @a __c within
2059:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  If found, returns the index where it was
2060:/usr/include/c++/4.8/bits/basic_string.h ****        *  found.  If not found, returns npos.
2061:/usr/include/c++/4.8/bits/basic_string.h ****        *
2062:/usr/include/c++/4.8/bits/basic_string.h ****        *  Note: equivalent to rfind(__c, __pos).
2063:/usr/include/c++/4.8/bits/basic_string.h ****       */
2064:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2065:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_of(_CharT __c, size_type __pos = npos) const _GLIBCXX_NOEXCEPT
2066:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->rfind(__c, __pos); }
2067:/usr/include/c++/4.8/bits/basic_string.h **** 
2068:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2069:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character not in string.
2070:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String containing characters to avoid.
2071:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
2072:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
2073:/usr/include/c++/4.8/bits/basic_string.h ****        *
2074:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for a character not contained
GAS LISTING /tmp/ccrG9BDx.s 			page 71


2075:/usr/include/c++/4.8/bits/basic_string.h ****        *  in @a __str within this string.  If found, returns the index where it
2076:/usr/include/c++/4.8/bits/basic_string.h ****        *  was found.  If not found, returns npos.
2077:/usr/include/c++/4.8/bits/basic_string.h ****       */
2078:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2079:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_not_of(const basic_string& __str, size_type __pos = 0) const
2080:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
2081:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
2082:/usr/include/c++/4.8/bits/basic_string.h **** 
2083:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2084:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character not in C substring.
2085:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to avoid.
2086:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from.
2087:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from __s to consider.
2088:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
2089:/usr/include/c++/4.8/bits/basic_string.h ****        *
2090:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for a character not
2091:/usr/include/c++/4.8/bits/basic_string.h ****        *  contained in the first @a __n characters of @a __s within
2092:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  If found, returns the index where it was
2093:/usr/include/c++/4.8/bits/basic_string.h ****        *  found.  If not found, returns npos.
2094:/usr/include/c++/4.8/bits/basic_string.h ****       */
2095:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2096:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_not_of(const _CharT* __s, size_type __pos,
2097:/usr/include/c++/4.8/bits/basic_string.h **** 			size_type __n) const;
2098:/usr/include/c++/4.8/bits/basic_string.h **** 
2099:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2100:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character not in C string.
2101:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to avoid.
2102:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
2103:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
2104:/usr/include/c++/4.8/bits/basic_string.h ****        *
2105:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for a character not
2106:/usr/include/c++/4.8/bits/basic_string.h ****        *  contained in @a __s within this string.  If found, returns
2107:/usr/include/c++/4.8/bits/basic_string.h ****        *  the index where it was found.  If not found, returns npos.
2108:/usr/include/c++/4.8/bits/basic_string.h ****       */
2109:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2110:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_not_of(const _CharT* __s, size_type __pos = 0) const
2111:/usr/include/c++/4.8/bits/basic_string.h ****       {
2112:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
2113:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->find_first_not_of(__s, __pos, traits_type::length(__s));
2114:/usr/include/c++/4.8/bits/basic_string.h ****       }
2115:/usr/include/c++/4.8/bits/basic_string.h **** 
2116:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2117:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a different character.
2118:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to avoid.
2119:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
2120:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
2121:/usr/include/c++/4.8/bits/basic_string.h ****        *
2122:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for a character
2123:/usr/include/c++/4.8/bits/basic_string.h ****        *  other than @a __c within this string.  If found, returns the
2124:/usr/include/c++/4.8/bits/basic_string.h ****        *  index where it was found.  If not found, returns npos.
2125:/usr/include/c++/4.8/bits/basic_string.h ****       */
2126:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2127:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_not_of(_CharT __c, size_type __pos = 0) const
2128:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT;
2129:/usr/include/c++/4.8/bits/basic_string.h **** 
2130:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2131:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character not in string.
GAS LISTING /tmp/ccrG9BDx.s 			page 72


2132:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String containing characters to avoid.
2133:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2134:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2135:/usr/include/c++/4.8/bits/basic_string.h ****        *
2136:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for a character
2137:/usr/include/c++/4.8/bits/basic_string.h ****        *  not contained in @a __str within this string.  If found,
2138:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it was found.  If not found, returns
2139:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
2140:/usr/include/c++/4.8/bits/basic_string.h ****       */
2141:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2142:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_not_of(const basic_string& __str, size_type __pos = npos) const
2143:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
2144:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
2145:/usr/include/c++/4.8/bits/basic_string.h **** 
2146:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2147:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character not in C substring.
2148:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to avoid.
2149:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from.
2150:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from s to consider.
2151:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2152:/usr/include/c++/4.8/bits/basic_string.h ****        *
2153:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for a character not
2154:/usr/include/c++/4.8/bits/basic_string.h ****        *  contained in the first @a __n characters of @a __s within this string.
2155:/usr/include/c++/4.8/bits/basic_string.h ****        *  If found, returns the index where it was found.  If not found,
2156:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns npos.
2157:/usr/include/c++/4.8/bits/basic_string.h ****       */
2158:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2159:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_not_of(const _CharT* __s, size_type __pos,
2160:/usr/include/c++/4.8/bits/basic_string.h **** 		       size_type __n) const;
2161:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2162:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character not in C string.
2163:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to avoid.
2164:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2165:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2166:/usr/include/c++/4.8/bits/basic_string.h ****        *
2167:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for a character
2168:/usr/include/c++/4.8/bits/basic_string.h ****        *  not contained in @a __s within this string.  If found,
2169:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it was found.  If not found, returns
2170:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
2171:/usr/include/c++/4.8/bits/basic_string.h ****       */
2172:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2173:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_not_of(const _CharT* __s, size_type __pos = npos) const
2174:/usr/include/c++/4.8/bits/basic_string.h ****       {
2175:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
2176:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->find_last_not_of(__s, __pos, traits_type::length(__s));
2177:/usr/include/c++/4.8/bits/basic_string.h ****       }
2178:/usr/include/c++/4.8/bits/basic_string.h **** 
2179:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2180:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a different character.
2181:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to avoid.
2182:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2183:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2184:/usr/include/c++/4.8/bits/basic_string.h ****        *
2185:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for a character other than
2186:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __c within this string.  If found, returns the index where it was
2187:/usr/include/c++/4.8/bits/basic_string.h ****        *  found.  If not found, returns npos.
2188:/usr/include/c++/4.8/bits/basic_string.h ****       */
GAS LISTING /tmp/ccrG9BDx.s 			page 73


2189:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2190:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_not_of(_CharT __c, size_type __pos = npos) const
2191:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT;
2192:/usr/include/c++/4.8/bits/basic_string.h **** 
2193:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2194:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Get a substring.
2195:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character (default 0).
2196:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters in substring (default remainder).
2197:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  The new string.
2198:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If __pos > size().
2199:/usr/include/c++/4.8/bits/basic_string.h ****        *
2200:/usr/include/c++/4.8/bits/basic_string.h ****        *  Construct and return a new string using the @a __n
2201:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters starting at @a __pos.  If the string is too
2202:/usr/include/c++/4.8/bits/basic_string.h ****        *  short, use the remainder of the characters.  If @a __pos is
2203:/usr/include/c++/4.8/bits/basic_string.h ****        *  beyond the end of the string, out_of_range is thrown.
2204:/usr/include/c++/4.8/bits/basic_string.h ****       */
2205:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string
2206:/usr/include/c++/4.8/bits/basic_string.h ****       substr(size_type __pos = 0, size_type __n = npos) const
2207:/usr/include/c++/4.8/bits/basic_string.h ****       { return basic_string(*this,
2208:/usr/include/c++/4.8/bits/basic_string.h **** 			    _M_check(__pos, "basic_string::substr"), __n); }
2209:/usr/include/c++/4.8/bits/basic_string.h **** 
2210:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2211:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare to a string.
2212:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to compare against.
2213:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2214:/usr/include/c++/4.8/bits/basic_string.h ****        *
2215:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns an integer < 0 if this string is ordered before @a
2216:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str, 0 if their values are equivalent, or > 0 if this
2217:/usr/include/c++/4.8/bits/basic_string.h ****        *  string is ordered after @a __str.  Determines the effective
2218:/usr/include/c++/4.8/bits/basic_string.h ****        *  length rlen of the strings to compare as the smallest of
2219:/usr/include/c++/4.8/bits/basic_string.h ****        *  size() and str.size().  The function then compares the two
2220:/usr/include/c++/4.8/bits/basic_string.h ****        *  strings by calling traits::compare(data(), str.data(),rlen).
2221:/usr/include/c++/4.8/bits/basic_string.h ****        *  If the result of the comparison is nonzero returns it,
2222:/usr/include/c++/4.8/bits/basic_string.h ****        *  otherwise the shorter one is ordered first.
2223:/usr/include/c++/4.8/bits/basic_string.h ****       */
2224:/usr/include/c++/4.8/bits/basic_string.h ****       int
2225:/usr/include/c++/4.8/bits/basic_string.h ****       compare(const basic_string& __str) const
2226:/usr/include/c++/4.8/bits/basic_string.h ****       {
2227:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __size = this->size();
2228:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __osize = __str.size();
2229:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __len = std::min(__size, __osize);
2230:/usr/include/c++/4.8/bits/basic_string.h **** 
2231:/usr/include/c++/4.8/bits/basic_string.h **** 	int __r = traits_type::compare(_M_data(), __str.data(), __len);
2232:/usr/include/c++/4.8/bits/basic_string.h **** 	if (!__r)
2233:/usr/include/c++/4.8/bits/basic_string.h **** 	  __r = _S_compare(__size, __osize);
2234:/usr/include/c++/4.8/bits/basic_string.h **** 	return __r;
2235:/usr/include/c++/4.8/bits/basic_string.h ****       }
2236:/usr/include/c++/4.8/bits/basic_string.h **** 
2237:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2238:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare substring to a string.
2239:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character of substring.
2240:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters in substring.
2241:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to compare against.
2242:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2243:/usr/include/c++/4.8/bits/basic_string.h ****        *
2244:/usr/include/c++/4.8/bits/basic_string.h ****        *  Form the substring of this string from the @a __n characters
2245:/usr/include/c++/4.8/bits/basic_string.h ****        *  starting at @a __pos.  Returns an integer < 0 if the
GAS LISTING /tmp/ccrG9BDx.s 			page 74


2246:/usr/include/c++/4.8/bits/basic_string.h ****        *  substring is ordered before @a __str, 0 if their values are
2247:/usr/include/c++/4.8/bits/basic_string.h ****        *  equivalent, or > 0 if the substring is ordered after @a
2248:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str.  Determines the effective length rlen of the strings
2249:/usr/include/c++/4.8/bits/basic_string.h ****        *  to compare as the smallest of the length of the substring
2250:/usr/include/c++/4.8/bits/basic_string.h ****        *  and @a __str.size().  The function then compares the two
2251:/usr/include/c++/4.8/bits/basic_string.h ****        *  strings by calling
2252:/usr/include/c++/4.8/bits/basic_string.h ****        *  traits::compare(substring.data(),str.data(),rlen).  If the
2253:/usr/include/c++/4.8/bits/basic_string.h ****        *  result of the comparison is nonzero returns it, otherwise
2254:/usr/include/c++/4.8/bits/basic_string.h ****        *  the shorter one is ordered first.
2255:/usr/include/c++/4.8/bits/basic_string.h ****       */
2256:/usr/include/c++/4.8/bits/basic_string.h ****       int
2257:/usr/include/c++/4.8/bits/basic_string.h ****       compare(size_type __pos, size_type __n, const basic_string& __str) const;
2258:/usr/include/c++/4.8/bits/basic_string.h **** 
2259:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2260:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare substring to a substring.
2261:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos1  Index of first character of substring.
2262:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters in substring.
2263:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to compare against.
2264:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos2  Index of first character of substring of str.
2265:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n2  Number of characters in substring of str.
2266:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2267:/usr/include/c++/4.8/bits/basic_string.h ****        *
2268:/usr/include/c++/4.8/bits/basic_string.h ****        *  Form the substring of this string from the @a __n1
2269:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters starting at @a __pos1.  Form the substring of @a
2270:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str from the @a __n2 characters starting at @a __pos2.
2271:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns an integer < 0 if this substring is ordered before
2272:/usr/include/c++/4.8/bits/basic_string.h ****        *  the substring of @a __str, 0 if their values are equivalent,
2273:/usr/include/c++/4.8/bits/basic_string.h ****        *  or > 0 if this substring is ordered after the substring of
2274:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __str.  Determines the effective length rlen of the
2275:/usr/include/c++/4.8/bits/basic_string.h ****        *  strings to compare as the smallest of the lengths of the
2276:/usr/include/c++/4.8/bits/basic_string.h ****        *  substrings.  The function then compares the two strings by
2277:/usr/include/c++/4.8/bits/basic_string.h ****        *  calling
2278:/usr/include/c++/4.8/bits/basic_string.h ****        *  traits::compare(substring.data(),str.substr(pos2,n2).data(),rlen).
2279:/usr/include/c++/4.8/bits/basic_string.h ****        *  If the result of the comparison is nonzero returns it,
2280:/usr/include/c++/4.8/bits/basic_string.h ****        *  otherwise the shorter one is ordered first.
2281:/usr/include/c++/4.8/bits/basic_string.h ****       */
2282:/usr/include/c++/4.8/bits/basic_string.h ****       int
2283:/usr/include/c++/4.8/bits/basic_string.h ****       compare(size_type __pos1, size_type __n1, const basic_string& __str,
2284:/usr/include/c++/4.8/bits/basic_string.h **** 	      size_type __pos2, size_type __n2) const;
2285:/usr/include/c++/4.8/bits/basic_string.h **** 
2286:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2287:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare to a C string.
2288:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to compare against.
2289:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2290:/usr/include/c++/4.8/bits/basic_string.h ****        *
2291:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns an integer < 0 if this string is ordered before @a __s, 0 if
2292:/usr/include/c++/4.8/bits/basic_string.h ****        *  their values are equivalent, or > 0 if this string is ordered after
2293:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __s.  Determines the effective length rlen of the strings to
2294:/usr/include/c++/4.8/bits/basic_string.h ****        *  compare as the smallest of size() and the length of a string
2295:/usr/include/c++/4.8/bits/basic_string.h ****        *  constructed from @a __s.  The function then compares the two strings
2296:/usr/include/c++/4.8/bits/basic_string.h ****        *  by calling traits::compare(data(),s,rlen).  If the result of the
2297:/usr/include/c++/4.8/bits/basic_string.h ****        *  comparison is nonzero returns it, otherwise the shorter one is
2298:/usr/include/c++/4.8/bits/basic_string.h ****        *  ordered first.
2299:/usr/include/c++/4.8/bits/basic_string.h ****       */
2300:/usr/include/c++/4.8/bits/basic_string.h ****       int
2301:/usr/include/c++/4.8/bits/basic_string.h ****       compare(const _CharT* __s) const;
2302:/usr/include/c++/4.8/bits/basic_string.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 75


2303:/usr/include/c++/4.8/bits/basic_string.h ****       // _GLIBCXX_RESOLVE_LIB_DEFECTS
2304:/usr/include/c++/4.8/bits/basic_string.h ****       // 5 String::compare specification questionable
2305:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2306:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare substring to a C string.
2307:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character of substring.
2308:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters in substring.
2309:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to compare against.
2310:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2311:/usr/include/c++/4.8/bits/basic_string.h ****        *
2312:/usr/include/c++/4.8/bits/basic_string.h ****        *  Form the substring of this string from the @a __n1
2313:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters starting at @a pos.  Returns an integer < 0 if
2314:/usr/include/c++/4.8/bits/basic_string.h ****        *  the substring is ordered before @a __s, 0 if their values
2315:/usr/include/c++/4.8/bits/basic_string.h ****        *  are equivalent, or > 0 if the substring is ordered after @a
2316:/usr/include/c++/4.8/bits/basic_string.h ****        *  __s.  Determines the effective length rlen of the strings to
2317:/usr/include/c++/4.8/bits/basic_string.h ****        *  compare as the smallest of the length of the substring and
2318:/usr/include/c++/4.8/bits/basic_string.h ****        *  the length of a string constructed from @a __s.  The
2319:/usr/include/c++/4.8/bits/basic_string.h ****        *  function then compares the two string by calling
2320:/usr/include/c++/4.8/bits/basic_string.h ****        *  traits::compare(substring.data(),__s,rlen).  If the result of
2321:/usr/include/c++/4.8/bits/basic_string.h ****        *  the comparison is nonzero returns it, otherwise the shorter
2322:/usr/include/c++/4.8/bits/basic_string.h ****        *  one is ordered first.
2323:/usr/include/c++/4.8/bits/basic_string.h ****       */
2324:/usr/include/c++/4.8/bits/basic_string.h ****       int
2325:/usr/include/c++/4.8/bits/basic_string.h ****       compare(size_type __pos, size_type __n1, const _CharT* __s) const;
2326:/usr/include/c++/4.8/bits/basic_string.h **** 
2327:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2328:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare substring against a character %array.
2329:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character of substring.
2330:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters in substring.
2331:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  character %array to compare against.
2332:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n2  Number of characters of s.
2333:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2334:/usr/include/c++/4.8/bits/basic_string.h ****        *
2335:/usr/include/c++/4.8/bits/basic_string.h ****        *  Form the substring of this string from the @a __n1
2336:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters starting at @a __pos.  Form a string from the
2337:/usr/include/c++/4.8/bits/basic_string.h ****        *  first @a __n2 characters of @a __s.  Returns an integer < 0
2338:/usr/include/c++/4.8/bits/basic_string.h ****        *  if this substring is ordered before the string from @a __s,
2339:/usr/include/c++/4.8/bits/basic_string.h ****        *  0 if their values are equivalent, or > 0 if this substring
2340:/usr/include/c++/4.8/bits/basic_string.h ****        *  is ordered after the string from @a __s.  Determines the
2341:/usr/include/c++/4.8/bits/basic_string.h ****        *  effective length rlen of the strings to compare as the
2342:/usr/include/c++/4.8/bits/basic_string.h ****        *  smallest of the length of the substring and @a __n2.  The
2343:/usr/include/c++/4.8/bits/basic_string.h ****        *  function then compares the two strings by calling
2344:/usr/include/c++/4.8/bits/basic_string.h ****        *  traits::compare(substring.data(),s,rlen).  If the result of
2345:/usr/include/c++/4.8/bits/basic_string.h ****        *  the comparison is nonzero returns it, otherwise the shorter
2346:/usr/include/c++/4.8/bits/basic_string.h ****        *  one is ordered first.
2347:/usr/include/c++/4.8/bits/basic_string.h ****        *
2348:/usr/include/c++/4.8/bits/basic_string.h ****        *  NB: s must have at least n2 characters, &apos;\\0' has
2349:/usr/include/c++/4.8/bits/basic_string.h ****        *  no special meaning.
2350:/usr/include/c++/4.8/bits/basic_string.h ****       */
2351:/usr/include/c++/4.8/bits/basic_string.h ****       int
2352:/usr/include/c++/4.8/bits/basic_string.h ****       compare(size_type __pos, size_type __n1, const _CharT* __s,
2353:/usr/include/c++/4.8/bits/basic_string.h **** 	      size_type __n2) const;
2354:/usr/include/c++/4.8/bits/basic_string.h ****   };
2355:/usr/include/c++/4.8/bits/basic_string.h **** 
2356:/usr/include/c++/4.8/bits/basic_string.h ****   // operator+
2357:/usr/include/c++/4.8/bits/basic_string.h ****   /**
2358:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Concatenate two strings.
2359:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __lhs  First string.
GAS LISTING /tmp/ccrG9BDx.s 			page 76


2360:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __rhs  Last string.
2361:/usr/include/c++/4.8/bits/basic_string.h ****    *  @return  New string with value of @a __lhs followed by @a __rhs.
2362:/usr/include/c++/4.8/bits/basic_string.h ****    */
2363:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2364:/usr/include/c++/4.8/bits/basic_string.h ****     basic_string<_CharT, _Traits, _Alloc>
2365:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2366:/usr/include/c++/4.8/bits/basic_string.h **** 	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2367:/usr/include/c++/4.8/bits/basic_string.h ****     {
2368:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
2369:/usr/include/c++/4.8/bits/basic_string.h ****       __str.append(__rhs);
2370:/usr/include/c++/4.8/bits/basic_string.h ****       return __str;
2371:/usr/include/c++/4.8/bits/basic_string.h ****     }
2372:/usr/include/c++/4.8/bits/basic_string.h **** 
2373:/usr/include/c++/4.8/bits/basic_string.h ****   /**
2374:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Concatenate C string and string.
2375:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __lhs  First string.
2376:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __rhs  Last string.
2377:/usr/include/c++/4.8/bits/basic_string.h ****    *  @return  New string with value of @a __lhs followed by @a __rhs.
2378:/usr/include/c++/4.8/bits/basic_string.h ****    */
2379:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2380:/usr/include/c++/4.8/bits/basic_string.h ****     basic_string<_CharT,_Traits,_Alloc>
2381:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const _CharT* __lhs,
2382:/usr/include/c++/4.8/bits/basic_string.h **** 	      const basic_string<_CharT,_Traits,_Alloc>& __rhs);
2383:/usr/include/c++/4.8/bits/basic_string.h **** 
2384:/usr/include/c++/4.8/bits/basic_string.h ****   /**
2385:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Concatenate character and string.
2386:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __lhs  First string.
2387:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __rhs  Last string.
2388:/usr/include/c++/4.8/bits/basic_string.h ****    *  @return  New string with @a __lhs followed by @a __rhs.
2389:/usr/include/c++/4.8/bits/basic_string.h ****    */
2390:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2391:/usr/include/c++/4.8/bits/basic_string.h ****     basic_string<_CharT,_Traits,_Alloc>
2392:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
2393:/usr/include/c++/4.8/bits/basic_string.h **** 
2394:/usr/include/c++/4.8/bits/basic_string.h ****   /**
2395:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Concatenate string and C string.
2396:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __lhs  First string.
2397:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __rhs  Last string.
2398:/usr/include/c++/4.8/bits/basic_string.h ****    *  @return  New string with @a __lhs followed by @a __rhs.
2399:/usr/include/c++/4.8/bits/basic_string.h ****    */
2400:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2401:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2402:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2403:/usr/include/c++/4.8/bits/basic_string.h **** 	     const _CharT* __rhs)
2404:/usr/include/c++/4.8/bits/basic_string.h ****     {
2405:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
2406:/usr/include/c++/4.8/bits/basic_string.h ****       __str.append(__rhs);
2407:/usr/include/c++/4.8/bits/basic_string.h ****       return __str;
2408:/usr/include/c++/4.8/bits/basic_string.h ****     }
2409:/usr/include/c++/4.8/bits/basic_string.h **** 
2410:/usr/include/c++/4.8/bits/basic_string.h ****   /**
2411:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Concatenate string and character.
2412:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __lhs  First string.
2413:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __rhs  Last string.
2414:/usr/include/c++/4.8/bits/basic_string.h ****    *  @return  New string with @a __lhs followed by @a __rhs.
2415:/usr/include/c++/4.8/bits/basic_string.h ****    */
2416:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
GAS LISTING /tmp/ccrG9BDx.s 			page 77


2417:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2418:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
2419:/usr/include/c++/4.8/bits/basic_string.h ****     {
2420:/usr/include/c++/4.8/bits/basic_string.h ****       typedef basic_string<_CharT, _Traits, _Alloc>	__string_type;
2421:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename __string_type::size_type		__size_type;
2422:/usr/include/c++/4.8/bits/basic_string.h ****       __string_type __str(__lhs);
2423:/usr/include/c++/4.8/bits/basic_string.h ****       __str.append(__size_type(1), __rhs);
2424:/usr/include/c++/4.8/bits/basic_string.h ****       return __str;
2425:/usr/include/c++/4.8/bits/basic_string.h ****     }
2426:/usr/include/c++/4.8/bits/basic_string.h **** 
2427:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
2428:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2429:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2430:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
2431:/usr/include/c++/4.8/bits/basic_string.h **** 	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2432:/usr/include/c++/4.8/bits/basic_string.h ****     { return std::move(__lhs.append(__rhs)); }
2433:/usr/include/c++/4.8/bits/basic_string.h **** 
2434:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2435:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2436:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2437:/usr/include/c++/4.8/bits/basic_string.h **** 	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
2438:/usr/include/c++/4.8/bits/basic_string.h ****     { return std::move(__rhs.insert(0, __lhs)); }
2439:/usr/include/c++/4.8/bits/basic_string.h **** 
2440:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2441:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2442:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
2443:/usr/include/c++/4.8/bits/basic_string.h **** 	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
2444:/usr/include/c++/4.8/bits/basic_string.h ****     {
2445:/usr/include/c++/4.8/bits/basic_string.h ****       const auto __size = __lhs.size() + __rhs.size();
2446:/usr/include/c++/4.8/bits/basic_string.h ****       const bool __cond = (__size > __lhs.capacity()
2447:/usr/include/c++/4.8/bits/basic_string.h **** 			   && __size <= __rhs.capacity());
2448:/usr/include/c++/4.8/bits/basic_string.h ****       return __cond ? std::move(__rhs.insert(0, __lhs))
2449:/usr/include/c++/4.8/bits/basic_string.h **** 	            : std::move(__lhs.append(__rhs));
2450:/usr/include/c++/4.8/bits/basic_string.h ****     }
2451:/usr/include/c++/4.8/bits/basic_string.h **** 
2452:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2453:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2454:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const _CharT* __lhs,
2455:/usr/include/c++/4.8/bits/basic_string.h **** 	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
2456:/usr/include/c++/4.8/bits/basic_string.h ****     { return std::move(__rhs.insert(0, __lhs)); }
2457:/usr/include/c++/4.8/bits/basic_string.h **** 
2458:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2459:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2460:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(_CharT __lhs,
2461:/usr/include/c++/4.8/bits/basic_string.h **** 	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
2462:/usr/include/c++/4.8/bits/basic_string.h ****     { return std::move(__rhs.insert(0, 1, __lhs)); }
2463:/usr/include/c++/4.8/bits/basic_string.h **** 
2464:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2465:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2466:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
 590              		.loc 7 2466 0
 591              		.cfi_startproc
 592              	.LVL63:
 593 0000 53       		pushq	%rbx
 594              		.cfi_def_cfa_offset 16
 595              		.cfi_offset 3, -16
 596 0001 4889FB   		movq	%rdi, %rbx
GAS LISTING /tmp/ccrG9BDx.s 			page 78


 597 0004 4889F7   		movq	%rsi, %rdi
 598              	.LVL64:
2467:/usr/include/c++/4.8/bits/basic_string.h **** 	      const _CharT* __rhs)
2468:/usr/include/c++/4.8/bits/basic_string.h ****     { return std::move(__lhs.append(__rhs)); }
 599              		.loc 7 2468 0
 600 0007 4889D6   		movq	%rdx, %rsi
 601              	.LVL65:
 602 000a E8000000 		call	_ZNSs6appendEPKc
 602      00
 603              	.LVL66:
 604 000f 4889C7   		movq	%rax, %rdi
 605 0012 E8000000 		call	_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_
 605      00
 606              	.LVL67:
 607 0017 4889C6   		movq	%rax, %rsi
 608 001a 4889DF   		movq	%rbx, %rdi
 609 001d E8000000 		call	_ZNSsC1EOSs
 609      00
 610              	.LVL68:
 611 0022 4889D8   		movq	%rbx, %rax
 612 0025 5B       		popq	%rbx
 613              		.cfi_def_cfa_offset 8
 614              	.LVL69:
 615 0026 C3       		ret
 616              		.cfi_endproc
 617              	.LFE1318:
 619              		.section	.rodata.str1.1
 620              	.LC1:
 621 0004 4D794578 		.string	"MyExceptionB("
 621      63657074 
 621      696F6E42 
 621      2800
 622              	.LC2:
 623 0012 2900     		.string	")"
 624              		.text
 625 0185 90       		.align 2
 626              		.globl	_ZNK12MyExceptionB9as_stringEv
 628              	_ZNK12MyExceptionB9as_stringEv:
 629              	.LFB1251:
  29:rethrow.cpp   ****     return "MyExceptionB(" + _what + ")";
 630              		.loc 1 29 0
 631              		.cfi_startproc
 632              		.cfi_personality 0x3,__gxx_personality_v0
 633              		.cfi_lsda 0x3,.LLSDA1251
 634              	.LVL70:
 635 0186 53       		pushq	%rbx
 636              		.cfi_def_cfa_offset 16
 637              		.cfi_offset 3, -16
 638 0187 4883EC10 		subq	$16, %rsp
 639              		.cfi_def_cfa_offset 32
 640 018b 4889FB   		movq	%rdi, %rbx
  30:rethrow.cpp   **** }
 641              		.loc 1 30 0
 642 018e 488D5608 		leaq	8(%rsi), %rdx
 643 0192 BE000000 		movl	$.LC1, %esi
 643      00
 644              	.LVL71:
GAS LISTING /tmp/ccrG9BDx.s 			page 79


 645 0197 4889E7   		movq	%rsp, %rdi
 646              	.LVL72:
 647              	.LEHB10:
 648 019a E8000000 		call	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_
 648      00
 649              	.LEHE10:
 650              	.LVL73:
 651 019f BA000000 		movl	$.LC2, %edx
 651      00
 652 01a4 4889E6   		movq	%rsp, %rsi
 653 01a7 4889DF   		movq	%rbx, %rdi
 654              	.LEHB11:
 655 01aa E8000000 		call	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_
 655      00
 656              	.LEHE11:
 657              	.LVL74:
 658 01af EB13     		jmp	.L46
 659              	.L44:
 660 01b1 4889C3   		movq	%rax, %rbx
 661              	.LVL75:
 662 01b4 4889E7   		movq	%rsp, %rdi
 663 01b7 E8000000 		call	_ZNSsD1Ev
 663      00
 664              	.LVL76:
 665 01bc 4889DF   		movq	%rbx, %rdi
 666              	.LEHB12:
 667 01bf E8000000 		call	_Unwind_Resume
 667      00
 668              	.LEHE12:
 669              	.LVL77:
 670              	.L46:
  30:rethrow.cpp   **** }
 671              		.loc 1 30 0 is_stmt 0 discriminator 2
 672 01c4 4889E7   		movq	%rsp, %rdi
 673 01c7 E8000000 		call	_ZNSsD1Ev
 673      00
 674              	.LVL78:
  31:rethrow.cpp   **** 
 675              		.loc 1 31 0 is_stmt 1 discriminator 2
 676 01cc 4889D8   		movq	%rbx, %rax
 677 01cf 4883C410 		addq	$16, %rsp
 678              		.cfi_def_cfa_offset 16
 679 01d3 5B       		popq	%rbx
 680              		.cfi_def_cfa_offset 8
 681              	.LVL79:
 682 01d4 C3       		ret
 683              		.cfi_endproc
 684              	.LFE1251:
 685              		.section	.gcc_except_table
 686              	.LLSDA1251:
 687 005d FF       		.byte	0xff
 688 005e FF       		.byte	0xff
 689 005f 01       		.byte	0x1
 690 0060 0C       		.uleb128 .LLSDACSE1251-.LLSDACSB1251
 691              	.LLSDACSB1251:
 692 0061 14       		.uleb128 .LEHB10-.LFB1251
 693 0062 05       		.uleb128 .LEHE10-.LEHB10
GAS LISTING /tmp/ccrG9BDx.s 			page 80


 694 0063 00       		.uleb128 0
 695 0064 00       		.uleb128 0
 696 0065 24       		.uleb128 .LEHB11-.LFB1251
 697 0066 05       		.uleb128 .LEHE11-.LEHB11
 698 0067 2B       		.uleb128 .L44-.LFB1251
 699 0068 00       		.uleb128 0
 700 0069 39       		.uleb128 .LEHB12-.LFB1251
 701 006a 05       		.uleb128 .LEHE12-.LEHB12
 702 006b 00       		.uleb128 0
 703 006c 00       		.uleb128 0
 704              	.LLSDACSE1251:
 705              		.text
 707              		.section	.rodata.str1.1
 708              	.LC3:
 709 0014 466F6F00 		.string	"Foo"
 710              	.LC4:
 711 0018 476F7420 		.string	"Got exception:"
 711      65786365 
 711      7074696F 
 711      6E3A00
 712              	.LC5:
 713 0027 20726574 		.string	" rethrowing..."
 713      68726F77 
 713      696E672E 
 713      2E2E00
 714              		.text
 715              		.globl	_Z17catch_and_rethrowv
 717              	_Z17catch_and_rethrowv:
 718              	.LFB1259:
  38:rethrow.cpp   ****     try {
 719              		.loc 1 38 0
 720              		.cfi_startproc
 721              		.cfi_personality 0x3,__gxx_personality_v0
 722              		.cfi_lsda 0x3,.LLSDA1259
 723 01d5 55       		pushq	%rbp
 724              		.cfi_def_cfa_offset 16
 725              		.cfi_offset 6, -16
 726 01d6 53       		pushq	%rbx
 727              		.cfi_def_cfa_offset 24
 728              		.cfi_offset 3, -24
 729 01d7 4883EC28 		subq	$40, %rsp
 730              		.cfi_def_cfa_offset 64
 731              	.LBB6:
  40:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 732              		.loc 1 40 0
 733 01db 488D5424 		leaq	16(%rsp), %rdx
 733      10
 734 01e0 BE000000 		movl	$.LC3, %esi
 734      00
 735 01e5 4889E7   		movq	%rsp, %rdi
 736              	.LEHB13:
 737 01e8 E8000000 		call	_ZNSsC1EPKcRKSaIcE
 737      00
 738              	.LEHE13:
 739              	.LVL80:
  40:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 740              		.loc 1 40 0 is_stmt 0 discriminator 1
GAS LISTING /tmp/ccrG9BDx.s 			page 81


 741 01ed 4889E7   		movq	%rsp, %rdi
 742              	.LEHB14:
 743 01f0 E8000000 		call	_Z18throw_MyExceptionBSs
 743      00
 744              	.LEHE14:
 745              	.LVL81:
 746              	.L58:
 747 01f5 4889C5   		movq	%rax, %rbp
 748 01f8 4889D3   		movq	%rdx, %rbx
  40:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 749              		.loc 1 40 0
 750 01fb 4889E7   		movq	%rsp, %rdi
 751 01fe E8000000 		call	_ZNSsD1Ev
 751      00
 752              	.LVL82:
 753 0203 4889E8   		movq	%rbp, %rax
 754 0206 4889DA   		movq	%rbx, %rdx
 755 0209 EB00     		jmp	.L50
 756              	.L57:
 757              	.L50:
 758 020b 4883FA01 		cmpq	$1, %rdx
 759 020f 742C     		je	.L52
 760 0211 EB25     		jmp	.L61
 761              	.LVL83:
 762              	.L60:
 763 0213 4889C5   		movq	%rax, %rbp
 764 0216 4889D3   		movq	%rdx, %rbx
 765              	.LBB7:
  42:rethrow.cpp   ****         throw;
 766              		.loc 1 42 0 is_stmt 1
 767 0219 488D7C24 		leaq	16(%rsp), %rdi
 767      10
 768 021e E8000000 		call	_ZNSsD1Ev
 768      00
 769              	.LVL84:
 770 0223 EB06     		jmp	.L54
 771              	.L59:
 772 0225 4889C5   		movq	%rax, %rbp
 773 0228 4889D3   		movq	%rdx, %rbx
 774              	.L54:
  41:rethrow.cpp   ****         cout << "Got exception:" << e.as_string() << " rethrowing..." << endl;
 775              		.loc 1 41 0
 776 022b E8000000 		call	__cxa_end_catch
 776      00
 777              	.LVL85:
 778 0230 4889EF   		movq	%rbp, %rdi
 779 0233 4889DA   		movq	%rbx, %rdx
 780 0236 EB5F     		jmp	.L55
 781              	.L61:
 782 0238 4889C7   		movq	%rax, %rdi
 783 023b EB5A     		jmp	.L55
 784              	.L52:
 785 023d 4889C7   		movq	%rax, %rdi
 786 0240 E8000000 		call	__cxa_begin_catch
 786      00
 787              	.LVL86:
  42:rethrow.cpp   ****         throw;
GAS LISTING /tmp/ccrG9BDx.s 			page 82


 788              		.loc 1 42 0
 789 0245 4889C6   		movq	%rax, %rsi
 790 0248 488D7C24 		leaq	16(%rsp), %rdi
 790      10
 791              	.LEHB15:
 792 024d E8000000 		call	_ZNK12MyExceptionB9as_stringEv
 792      00
 793              	.LEHE15:
 794              	.LVL87:
  42:rethrow.cpp   ****         throw;
 795              		.loc 1 42 0 is_stmt 0 discriminator 1
 796 0252 BE000000 		movl	$.LC4, %esi
 796      00
 797 0257 BF000000 		movl	$_ZSt4cout, %edi
 797      00
 798              	.LEHB16:
 799 025c E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 799      00
 800              	.LVL88:
 801 0261 488D7424 		leaq	16(%rsp), %rsi
 801      10
 802 0266 4889C7   		movq	%rax, %rdi
 803 0269 E8000000 		call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
 803      00
 804              	.LVL89:
 805 026e BE000000 		movl	$.LC5, %esi
 805      00
 806 0273 4889C7   		movq	%rax, %rdi
 807 0276 E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 807      00
 808              	.LVL90:
  42:rethrow.cpp   ****         throw;
 809              		.loc 1 42 0 discriminator 2
 810 027b BE000000 		movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
 810      00
 811 0280 4889C7   		movq	%rax, %rdi
 812 0283 E8000000 		call	_ZNSolsEPFRSoS_E
 812      00
 813              	.LEHE16:
 814              	.LVL91:
  42:rethrow.cpp   ****         throw;
 815              		.loc 1 42 0 discriminator 1
 816 0288 488D7C24 		leaq	16(%rsp), %rdi
 816      10
 817 028d E8000000 		call	_ZNSsD1Ev
 817      00
 818              	.LVL92:
 819              	.LEHB17:
  43:rethrow.cpp   ****     }
 820              		.loc 1 43 0 is_stmt 1 discriminator 1
 821 0292 E8000000 		call	__cxa_rethrow
 821      00
 822              	.LEHE17:
 823              	.LVL93:
 824              	.L55:
 825 0297 4883FAFF 		cmpq	$-1, %rdx
 826 029b 7405     		je	.L56
GAS LISTING /tmp/ccrG9BDx.s 			page 83


 827              	.LEHB18:
 828 029d E8000000 		call	_Unwind_Resume
 828      00
 829              	.LVL94:
 830              	.L56:
 831              	.LBE7:
 832              	.LBE6:
  38:rethrow.cpp   ****     try {
 833              		.loc 1 38 0
 834 02a2 E8000000 		call	__cxa_call_unexpected
 834      00
 835              	.LEHE18:
 836              	.LVL95:
 837              		.cfi_endproc
 838              	.LFE1259:
 839              		.section	.gcc_except_table
 840 006d 000000   		.align 4
 841              	.LLSDA1259:
 842 0070 FF       		.byte	0xff
 843 0071 03       		.byte	0x3
 844 0072 29       		.uleb128 .LLSDATT1259-.LLSDATTD1259
 845              	.LLSDATTD1259:
 846 0073 01       		.byte	0x1
 847 0074 1B       		.uleb128 .LLSDACSE1259-.LLSDACSB1259
 848              	.LLSDACSB1259:
 849 0075 13       		.uleb128 .LEHB13-.LFB1259
 850 0076 05       		.uleb128 .LEHE13-.LEHB13
 851 0077 36       		.uleb128 .L57-.LFB1259
 852 0078 03       		.uleb128 0x3
 853 0079 1B       		.uleb128 .LEHB14-.LFB1259
 854 007a 05       		.uleb128 .LEHE14-.LEHB14
 855 007b 20       		.uleb128 .L58-.LFB1259
 856 007c 05       		.uleb128 0x5
 857 007d 78       		.uleb128 .LEHB15-.LFB1259
 858 007e 05       		.uleb128 .LEHE15-.LEHB15
 859 007f 50       		.uleb128 .L59-.LFB1259
 860 0080 07       		.uleb128 0x7
 861 0081 8701     		.uleb128 .LEHB16-.LFB1259
 862 0083 2C       		.uleb128 .LEHE16-.LEHB16
 863 0084 3E       		.uleb128 .L60-.LFB1259
 864 0085 07       		.uleb128 0x7
 865 0086 BD01     		.uleb128 .LEHB17-.LFB1259
 866 0088 05       		.uleb128 .LEHE17-.LEHB17
 867 0089 50       		.uleb128 .L59-.LFB1259
 868 008a 07       		.uleb128 0x7
 869 008b C801     		.uleb128 .LEHB18-.LFB1259
 870 008d 0A       		.uleb128 .LEHE18-.LEHB18
 871 008e 00       		.uleb128 0
 872 008f 00       		.uleb128 0
 873              	.LLSDACSE1259:
 874 0090 7F       		.byte	0x7f
 875 0091 00       		.byte	0
 876 0092 01       		.byte	0x1
 877 0093 7D       		.byte	0x7d
 878 0094 00       		.byte	0
 879 0095 7D       		.byte	0x7d
 880 0096 00       		.byte	0
GAS LISTING /tmp/ccrG9BDx.s 			page 84


 881 0097 79       		.byte	0x79
 882              		.align 4
 883 0098 00000000 		.long	_ZTI12MyExceptionB
 884              	.LLSDATT1259:
 885 009c 01       		.byte	0x1
 886 009d 00       		.byte	0
 887              		.text
 889              		.section	.rodata.str1.1
 890              	.LC6:
 891 0036 42617A00 		.string	"Baz"
 892              	.LC7:
 893 003a 20746872 		.string	" throwing another..."
 893      6F77696E 
 893      6720616E 
 893      6F746865 
 893      722E2E2E 
 894              		.text
 895              		.globl	_Z23catch_and_throw_anotherv
 897              	_Z23catch_and_throw_anotherv:
 898              	.LFB1260:
  47:rethrow.cpp   ****     try {
 899              		.loc 1 47 0
 900              		.cfi_startproc
 901              		.cfi_personality 0x3,__gxx_personality_v0
 902              		.cfi_lsda 0x3,.LLSDA1260
 903 02a7 4154     		pushq	%r12
 904              		.cfi_def_cfa_offset 16
 905              		.cfi_offset 12, -16
 906 02a9 55       		pushq	%rbp
 907              		.cfi_def_cfa_offset 24
 908              		.cfi_offset 6, -24
 909 02aa 53       		pushq	%rbx
 910              		.cfi_def_cfa_offset 32
 911              		.cfi_offset 3, -32
 912 02ab 4883EC30 		subq	$48, %rsp
 913              		.cfi_def_cfa_offset 80
 914              	.LBB8:
  49:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 915              		.loc 1 49 0
 916 02af 488D5424 		leaq	32(%rsp), %rdx
 916      20
 917 02b4 BE000000 		movl	$.LC6, %esi
 917      00
 918 02b9 4889E7   		movq	%rsp, %rdi
 919              	.LEHB19:
 920 02bc E8000000 		call	_ZNSsC1EPKcRKSaIcE
 920      00
 921              	.LEHE19:
 922              	.LVL96:
  49:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 923              		.loc 1 49 0 is_stmt 0 discriminator 1
 924 02c1 4889E7   		movq	%rsp, %rdi
 925              	.LEHB20:
 926 02c4 E8000000 		call	_Z18throw_MyExceptionBSs
 926      00
 927              	.LEHE20:
 928              	.LVL97:
GAS LISTING /tmp/ccrG9BDx.s 			page 85


 929              	.L74:
 930 02c9 4889C5   		movq	%rax, %rbp
 931 02cc 4889D3   		movq	%rdx, %rbx
  49:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 932              		.loc 1 49 0
 933 02cf 4889E7   		movq	%rsp, %rdi
 934 02d2 E8000000 		call	_ZNSsD1Ev
 934      00
 935              	.LVL98:
 936 02d7 4889E8   		movq	%rbp, %rax
 937 02da 4889DA   		movq	%rbx, %rdx
 938 02dd EB00     		jmp	.L65
 939              	.L73:
 940              	.L65:
 941 02df 4883FA01 		cmpq	$1, %rdx
 942 02e3 7445     		je	.L67
 943 02e5 EB3B     		jmp	.L78
 944              	.LVL99:
 945              	.L76:
 946 02e7 4889C5   		movq	%rax, %rbp
 947              	.LVL100:
 948 02ea 4889D3   		movq	%rdx, %rbx
 949              	.LBB9:
  51:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
 950              		.loc 1 51 0 is_stmt 1
 951 02ed 488D7C24 		leaq	16(%rsp), %rdi
 951      10
 952 02f2 E8000000 		call	_ZNSsD1Ev
 952      00
 953              	.LVL101:
 954 02f7 EB19     		jmp	.L69
 955              	.LVL102:
 956              	.L77:
 957 02f9 4889C5   		movq	%rax, %rbp
 958              	.LVL103:
 959 02fc 4989D4   		movq	%rdx, %r12
  52:rethrow.cpp   ****     }
 960              		.loc 1 52 0
 961 02ff 4889DF   		movq	%rbx, %rdi
 962 0302 E8000000 		call	__cxa_free_exception
 962      00
 963              	.LVL104:
 964 0307 4C89E3   		movq	%r12, %rbx
 965 030a EB06     		jmp	.L69
 966              	.LVL105:
 967              	.L75:
 968 030c 4889C5   		movq	%rax, %rbp
 969              	.LVL106:
 970 030f 4889D3   		movq	%rdx, %rbx
 971              	.L69:
  50:rethrow.cpp   ****         cout << "Got exception:" << e.as_string() << " throwing another..." << endl;
 972              		.loc 1 50 0
 973 0312 E8000000 		call	__cxa_end_catch
 973      00
 974              	.LVL107:
 975 0317 4889EF   		movq	%rbp, %rdi
 976 031a 4889DA   		movq	%rbx, %rdx
GAS LISTING /tmp/ccrG9BDx.s 			page 86


 977 031d E9A30000 		jmp	.L71
 977      00
 978              	.L78:
 979 0322 4889C7   		movq	%rax, %rdi
 980 0325 E99B0000 		jmp	.L71
 980      00
 981              	.L67:
 982 032a 4889C7   		movq	%rax, %rdi
 983 032d E8000000 		call	__cxa_begin_catch
 983      00
 984              	.LVL108:
 985 0332 4889C5   		movq	%rax, %rbp
 986              	.LVL109:
  51:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
 987              		.loc 1 51 0
 988 0335 4889C6   		movq	%rax, %rsi
 989 0338 488D7C24 		leaq	16(%rsp), %rdi
 989      10
 990              	.LEHB21:
 991 033d E8000000 		call	_ZNK12MyExceptionB9as_stringEv
 991      00
 992              	.LEHE21:
 993              	.LVL110:
  51:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
 994              		.loc 1 51 0 is_stmt 0 discriminator 1
 995 0342 BE000000 		movl	$.LC4, %esi
 995      00
 996 0347 BF000000 		movl	$_ZSt4cout, %edi
 996      00
 997              	.LEHB22:
 998 034c E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 998      00
 999              	.LVL111:
 1000 0351 488D7424 		leaq	16(%rsp), %rsi
 1000      10
 1001 0356 4889C7   		movq	%rax, %rdi
 1002 0359 E8000000 		call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
 1002      00
 1003              	.LVL112:
 1004 035e BE000000 		movl	$.LC7, %esi
 1004      00
 1005 0363 4889C7   		movq	%rax, %rdi
 1006 0366 E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 1006      00
 1007              	.LVL113:
  51:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
 1008              		.loc 1 51 0 discriminator 2
 1009 036b BE000000 		movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
 1009      00
 1010 0370 4889C7   		movq	%rax, %rdi
 1011 0373 E8000000 		call	_ZNSolsEPFRSoS_E
 1011      00
 1012              	.LEHE22:
 1013              	.LVL114:
  51:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
 1014              		.loc 1 51 0 discriminator 1
 1015 0378 488D7C24 		leaq	16(%rsp), %rdi
GAS LISTING /tmp/ccrG9BDx.s 			page 87


 1015      10
 1016 037d E8000000 		call	_ZNSsD1Ev
 1016      00
 1017              	.LVL115:
  52:rethrow.cpp   ****     }
 1018              		.loc 1 52 0 is_stmt 1 discriminator 1
 1019 0382 BF100000 		movl	$16, %edi
 1019      00
 1020 0387 E8000000 		call	__cxa_allocate_exception
 1020      00
 1021              	.LVL116:
 1022 038c 4889C3   		movq	%rax, %rbx
 1023 038f 4889EE   		movq	%rbp, %rsi
 1024 0392 488D7C24 		leaq	32(%rsp), %rdi
 1024      20
 1025              	.LEHB23:
 1026 0397 E8000000 		call	_ZNK12MyExceptionB9as_stringEv
 1026      00
 1027              	.LEHE23:
 1028              	.LVL117:
 1029 039c 488D7424 		leaq	32(%rsp), %rsi
 1029      20
 1030 03a1 4889DF   		movq	%rbx, %rdi
 1031 03a4 E8000000 		call	_ZN12MyExceptionBC1ESs
 1031      00
 1032              	.LVL118:
 1033 03a9 488D7C24 		leaq	32(%rsp), %rdi
 1033      20
 1034 03ae E8000000 		call	_ZNSsD1Ev
 1034      00
 1035              	.LVL119:
 1036 03b3 BA000000 		movl	$_ZN12MyExceptionBD1Ev, %edx
 1036      00
 1037 03b8 BE000000 		movl	$_ZTI12MyExceptionB, %esi
 1037      00
 1038 03bd 4889DF   		movq	%rbx, %rdi
 1039              	.LEHB24:
 1040 03c0 E8000000 		call	__cxa_throw
 1040      00
 1041              	.LEHE24:
 1042              	.LVL120:
 1043              	.L71:
 1044 03c5 4883FAFF 		cmpq	$-1, %rdx
 1045 03c9 7405     		je	.L72
 1046              	.LEHB25:
 1047 03cb E8000000 		call	_Unwind_Resume
 1047      00
 1048              	.LVL121:
 1049              	.L72:
 1050              	.LBE9:
 1051              	.LBE8:
  47:rethrow.cpp   ****     try {
 1052              		.loc 1 47 0
 1053 03d0 E8000000 		call	__cxa_call_unexpected
 1053      00
 1054              	.LEHE25:
 1055              	.LVL122:
GAS LISTING /tmp/ccrG9BDx.s 			page 88


 1056              		.cfi_endproc
 1057              	.LFE1260:
 1058              		.section	.gcc_except_table
 1059 009e 0000     		.align 4
 1060              	.LLSDA1260:
 1061 00a0 FF       		.byte	0xff
 1062 00a1 03       		.byte	0x3
 1063 00a2 31       		.uleb128 .LLSDATT1260-.LLSDATTD1260
 1064              	.LLSDATTD1260:
 1065 00a3 01       		.byte	0x1
 1066 00a4 21       		.uleb128 .LLSDACSE1260-.LLSDACSB1260
 1067              	.LLSDACSB1260:
 1068 00a5 15       		.uleb128 .LEHB19-.LFB1260
 1069 00a6 05       		.uleb128 .LEHE19-.LEHB19
 1070 00a7 38       		.uleb128 .L73-.LFB1260
 1071 00a8 03       		.uleb128 0x3
 1072 00a9 1D       		.uleb128 .LEHB20-.LFB1260
 1073 00aa 05       		.uleb128 .LEHE20-.LEHB20
 1074 00ab 22       		.uleb128 .L74-.LFB1260
 1075 00ac 05       		.uleb128 0x5
 1076 00ad 9601     		.uleb128 .LEHB21-.LFB1260
 1077 00af 05       		.uleb128 .LEHE21-.LEHB21
 1078 00b0 65       		.uleb128 .L75-.LFB1260
 1079 00b1 07       		.uleb128 0x7
 1080 00b2 A501     		.uleb128 .LEHB22-.LFB1260
 1081 00b4 2C       		.uleb128 .LEHE22-.LEHB22
 1082 00b5 40       		.uleb128 .L76-.LFB1260
 1083 00b6 07       		.uleb128 0x7
 1084 00b7 F001     		.uleb128 .LEHB23-.LFB1260
 1085 00b9 05       		.uleb128 .LEHE23-.LEHB23
 1086 00ba 52       		.uleb128 .L77-.LFB1260
 1087 00bb 07       		.uleb128 0x7
 1088 00bc 9902     		.uleb128 .LEHB24-.LFB1260
 1089 00be 05       		.uleb128 .LEHE24-.LEHB24
 1090 00bf 65       		.uleb128 .L75-.LFB1260
 1091 00c0 07       		.uleb128 0x7
 1092 00c1 A402     		.uleb128 .LEHB25-.LFB1260
 1093 00c3 0A       		.uleb128 .LEHE25-.LEHB25
 1094 00c4 00       		.uleb128 0
 1095 00c5 00       		.uleb128 0
 1096              	.LLSDACSE1260:
 1097 00c6 7F       		.byte	0x7f
 1098 00c7 00       		.byte	0
 1099 00c8 01       		.byte	0x1
 1100 00c9 7D       		.byte	0x7d
 1101 00ca 00       		.byte	0
 1102 00cb 7D       		.byte	0x7d
 1103 00cc 00       		.byte	0
 1104 00cd 79       		.byte	0x79
 1105 00ce 0000     		.align 4
 1106 00d0 00000000 		.long	_ZTI12MyExceptionB
 1107              	.LLSDATT1260:
 1108 00d4 01       		.byte	0x1
 1109 00d5 00       		.byte	0
 1110              		.text
 1112              		.section	.rodata.str1.1
 1113              	.LC8:
GAS LISTING /tmp/ccrG9BDx.s 			page 89


 1114 004f 4D61696E 		.string	"Main got exception: "
 1114      20676F74 
 1114      20657863 
 1114      65707469 
 1114      6F6E3A20 
 1115              		.text
 1116              		.globl	_Z9doRethrowv
 1118              	_Z9doRethrowv:
 1119              	.LFB1262:
  60:rethrow.cpp   ****     try {
 1120              		.loc 1 60 0
 1121              		.cfi_startproc
 1122              		.cfi_personality 0x3,__gxx_personality_v0
 1123              		.cfi_lsda 0x3,.LLSDA1262
 1124 03d5 53       		pushq	%rbx
 1125              		.cfi_def_cfa_offset 16
 1126              		.cfi_offset 3, -16
 1127 03d6 4883EC10 		subq	$16, %rsp
 1128              		.cfi_def_cfa_offset 32
 1129              	.LEHB26:
 1130              	.LBB10:
  62:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 1131              		.loc 1 62 0
 1132 03da E8000000 		call	_Z17catch_and_rethrowv
 1132      00
 1133              	.LEHE26:
 1134              	.LVL123:
 1135              	.L93:
 1136 03df 4889C3   		movq	%rax, %rbx
 1137              	.LBB11:
  64:rethrow.cpp   ****     }
 1138              		.loc 1 64 0
 1139 03e2 4889E7   		movq	%rsp, %rdi
 1140 03e5 E8000000 		call	_ZNSsD1Ev
 1140      00
 1141              	.LVL124:
 1142 03ea EB03     		jmp	.L82
 1143              	.L92:
 1144 03ec 4889C3   		movq	%rax, %rbx
 1145              	.L82:
  63:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
 1146              		.loc 1 63 0
 1147 03ef E8000000 		call	__cxa_end_catch
 1147      00
 1148              	.LVL125:
 1149 03f4 4889DF   		movq	%rbx, %rdi
 1150              	.LEHB27:
 1151 03f7 E8000000 		call	_Unwind_Resume
 1151      00
 1152              	.LVL126:
 1153              	.L91:
 1154 03fc 4889C7   		movq	%rax, %rdi
 1155 03ff 4883FA01 		cmpq	$1, %rdx
 1156 0403 7405     		je	.L85
 1157 0405 E8000000 		call	_Unwind_Resume
 1157      00
 1158              	.LEHE27:
GAS LISTING /tmp/ccrG9BDx.s 			page 90


 1159              	.LVL127:
 1160              	.L85:
 1161 040a E8000000 		call	__cxa_begin_catch
 1161      00
 1162              	.LVL128:
  64:rethrow.cpp   ****     }
 1163              		.loc 1 64 0
 1164 040f 4889C6   		movq	%rax, %rsi
 1165 0412 4889E7   		movq	%rsp, %rdi
 1166              	.LEHB28:
 1167 0415 E8000000 		call	_ZNK12MyExceptionB9as_stringEv
 1167      00
 1168              	.LEHE28:
 1169              	.LVL129:
  64:rethrow.cpp   ****     }
 1170              		.loc 1 64 0 is_stmt 0 discriminator 1
 1171 041a BE000000 		movl	$.LC8, %esi
 1171      00
 1172 041f BF000000 		movl	$_ZSt4cout, %edi
 1172      00
 1173              	.LEHB29:
 1174 0424 E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 1174      00
 1175              	.LVL130:
 1176 0429 4889E6   		movq	%rsp, %rsi
 1177 042c 4889C7   		movq	%rax, %rdi
 1178 042f E8000000 		call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
 1178      00
 1179              	.LVL131:
 1180 0434 BE000000 		movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
 1180      00
 1181 0439 4889C7   		movq	%rax, %rdi
 1182 043c E8000000 		call	_ZNSolsEPFRSoS_E
 1182      00
 1183              	.LEHE29:
 1184              	.LVL132:
 1185 0441 4889E7   		movq	%rsp, %rdi
 1186 0444 E8000000 		call	_ZNSsD1Ev
 1186      00
 1187              	.LVL133:
  63:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
 1188              		.loc 1 63 0 is_stmt 1 discriminator 1
 1189 0449 E8000000 		call	__cxa_end_catch
 1189      00
 1190              	.LVL134:
 1191              	.LEHB30:
 1192              	.LBE11:
  68:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 1193              		.loc 1 68 0 discriminator 1
 1194 044e E8000000 		call	_Z23catch_and_throw_anotherv
 1194      00
 1195              	.LEHE30:
 1196              	.LVL135:
 1197              	.L96:
 1198 0453 4889C3   		movq	%rax, %rbx
 1199              	.LBB12:
  70:rethrow.cpp   ****     }
GAS LISTING /tmp/ccrG9BDx.s 			page 91


 1200              		.loc 1 70 0
 1201 0456 4889E7   		movq	%rsp, %rdi
 1202 0459 E8000000 		call	_ZNSsD1Ev
 1202      00
 1203              	.LVL136:
 1204 045e EB03     		jmp	.L87
 1205              	.L95:
 1206 0460 4889C3   		movq	%rax, %rbx
 1207              	.L87:
  69:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
 1208              		.loc 1 69 0
 1209 0463 E8000000 		call	__cxa_end_catch
 1209      00
 1210              	.LVL137:
 1211 0468 4889DF   		movq	%rbx, %rdi
 1212              	.LEHB31:
 1213 046b E8000000 		call	_Unwind_Resume
 1213      00
 1214              	.LVL138:
 1215              	.L94:
 1216 0470 4889C7   		movq	%rax, %rdi
 1217 0473 4883FA01 		cmpq	$1, %rdx
 1218 0477 7405     		je	.L90
 1219 0479 E8000000 		call	_Unwind_Resume
 1219      00
 1220              	.LEHE31:
 1221              	.LVL139:
 1222              	.L90:
 1223 047e E8000000 		call	__cxa_begin_catch
 1223      00
 1224              	.LVL140:
  70:rethrow.cpp   ****     }
 1225              		.loc 1 70 0
 1226 0483 4889C6   		movq	%rax, %rsi
 1227 0486 4889E7   		movq	%rsp, %rdi
 1228              	.LEHB32:
 1229 0489 E8000000 		call	_ZNK12MyExceptionB9as_stringEv
 1229      00
 1230              	.LEHE32:
 1231              	.LVL141:
  70:rethrow.cpp   ****     }
 1232              		.loc 1 70 0 is_stmt 0 discriminator 1
 1233 048e BE000000 		movl	$.LC8, %esi
 1233      00
 1234 0493 BF000000 		movl	$_ZSt4cout, %edi
 1234      00
 1235              	.LEHB33:
 1236 0498 E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 1236      00
 1237              	.LVL142:
 1238 049d 4889E6   		movq	%rsp, %rsi
 1239 04a0 4889C7   		movq	%rax, %rdi
 1240 04a3 E8000000 		call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
 1240      00
 1241              	.LVL143:
 1242 04a8 BE000000 		movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
 1242      00
GAS LISTING /tmp/ccrG9BDx.s 			page 92


 1243 04ad 4889C7   		movq	%rax, %rdi
 1244 04b0 E8000000 		call	_ZNSolsEPFRSoS_E
 1244      00
 1245              	.LEHE33:
 1246              	.LVL144:
 1247 04b5 4889E7   		movq	%rsp, %rdi
 1248 04b8 E8000000 		call	_ZNSsD1Ev
 1248      00
 1249              	.LVL145:
  69:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
 1250              		.loc 1 69 0 is_stmt 1 discriminator 1
 1251 04bd E8000000 		call	__cxa_end_catch
 1251      00
 1252              	.LVL146:
 1253              	.LBE12:
  74:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 1254              		.loc 1 74 0 discriminator 1
 1255 04c2 E8000000 		call	_Z12doesnt_throwv
 1255      00
 1256              	.LVL147:
 1257              	.LBE10:
 1258              		.cfi_endproc
 1259              	.LFE1262:
 1260              		.section	.gcc_except_table
 1261 00d6 0000     		.align 4
 1262              	.LLSDA1262:
 1263 00d8 FF       		.byte	0xff
 1264 00d9 03       		.byte	0x3
 1265 00da 2D       		.uleb128 .LLSDATT1262-.LLSDATTD1262
 1266              	.LLSDATTD1262:
 1267 00db 01       		.byte	0x1
 1268 00dc 25       		.uleb128 .LLSDACSE1262-.LLSDACSB1262
 1269              	.LLSDACSB1262:
 1270 00dd 05       		.uleb128 .LEHB26-.LFB1262
 1271 00de 05       		.uleb128 .LEHE26-.LEHB26
 1272 00df 27       		.uleb128 .L91-.LFB1262
 1273 00e0 01       		.uleb128 0x1
 1274 00e1 22       		.uleb128 .LEHB27-.LFB1262
 1275 00e2 13       		.uleb128 .LEHE27-.LEHB27
 1276 00e3 00       		.uleb128 0
 1277 00e4 00       		.uleb128 0
 1278 00e5 40       		.uleb128 .LEHB28-.LFB1262
 1279 00e6 05       		.uleb128 .LEHE28-.LEHB28
 1280 00e7 17       		.uleb128 .L92-.LFB1262
 1281 00e8 00       		.uleb128 0
 1282 00e9 4F       		.uleb128 .LEHB29-.LFB1262
 1283 00ea 1D       		.uleb128 .LEHE29-.LEHB29
 1284 00eb 0A       		.uleb128 .L93-.LFB1262
 1285 00ec 00       		.uleb128 0
 1286 00ed 79       		.uleb128 .LEHB30-.LFB1262
 1287 00ee 05       		.uleb128 .LEHE30-.LEHB30
 1288 00ef 9B01     		.uleb128 .L94-.LFB1262
 1289 00f1 01       		.uleb128 0x1
 1290 00f2 9601     		.uleb128 .LEHB31-.LFB1262
 1291 00f4 13       		.uleb128 .LEHE31-.LEHB31
 1292 00f5 00       		.uleb128 0
 1293 00f6 00       		.uleb128 0
GAS LISTING /tmp/ccrG9BDx.s 			page 93


 1294 00f7 B401     		.uleb128 .LEHB32-.LFB1262
 1295 00f9 05       		.uleb128 .LEHE32-.LEHB32
 1296 00fa 8B01     		.uleb128 .L95-.LFB1262
 1297 00fc 00       		.uleb128 0
 1298 00fd C301     		.uleb128 .LEHB33-.LFB1262
 1299 00ff 1D       		.uleb128 .LEHE33-.LEHB33
 1300 0100 7E       		.uleb128 .L96-.LFB1262
 1301 0101 00       		.uleb128 0
 1302              	.LLSDACSE1262:
 1303 0102 01       		.byte	0x1
 1304 0103 00       		.byte	0
 1305              		.align 4
 1306 0104 00000000 		.long	_ZTI12MyExceptionB
 1307              	.LLSDATT1262:
 1308              		.text
 1311              	_GLOBAL__sub_I__ZN12MyExceptionBC2ESs:
 1312              	.LFB1427:
 1313              		.loc 1 78 0
 1314              		.cfi_startproc
 1315 04c7 4883EC08 		subq	$8, %rsp
 1316              		.cfi_def_cfa_offset 16
 1317              		.loc 1 78 0
 1318 04cb BEFFFF00 		movl	$65535, %esi
 1318      00
 1319 04d0 BF010000 		movl	$1, %edi
 1319      00
 1320 04d5 E869FBFF 		call	_Z41__static_initialization_and_destruction_0ii
 1320      FF
 1321              	.LVL148:
 1322 04da 4883C408 		addq	$8, %rsp
 1323              		.cfi_def_cfa_offset 8
 1324 04de C3       		ret
 1325              		.cfi_endproc
 1326              	.LFE1427:
 1328              		.section	.init_array,"aw"
 1329              		.align 8
 1330 0000 00000000 		.quad	_GLOBAL__sub_I__ZN12MyExceptionBC2ESs
 1330      00000000 
 1331              		.weak	_ZTS12MyExceptionB
 1332              		.section	.rodata._ZTS12MyExceptionB,"aG",@progbits,_ZTS12MyExceptionB,comdat
 1335              	_ZTS12MyExceptionB:
 1336 0000 31324D79 		.string	"12MyExceptionB"
 1336      45786365 
 1336      7074696F 
 1336      6E4200
 1337              		.weak	_ZTI12MyExceptionB
 1338              		.section	.rodata._ZTI12MyExceptionB,"aG",@progbits,_ZTI12MyExceptionB,comdat
 1339              		.align 16
 1342              	_ZTI12MyExceptionB:
 1343 0000 00000000 		.quad	_ZTVN10__cxxabiv120__si_class_type_infoE+16
 1343      00000000 
 1344 0008 00000000 		.quad	_ZTS12MyExceptionB
 1344      00000000 
 1345 0010 00000000 		.quad	_ZTISt9exception
 1345      00000000 
 1346              		.weak	_ZTV12MyExceptionB
 1347              		.section	.rodata._ZTV12MyExceptionB,"aG",@progbits,_ZTV12MyExceptionB,comdat
GAS LISTING /tmp/ccrG9BDx.s 			page 94


 1348              		.align 32
 1351              	_ZTV12MyExceptionB:
 1352 0000 00000000 		.quad	0
 1352      00000000 
 1353 0008 00000000 		.quad	_ZTI12MyExceptionB
 1353      00000000 
 1354 0010 00000000 		.quad	_ZN12MyExceptionBD1Ev
 1354      00000000 
 1355 0018 00000000 		.quad	_ZN12MyExceptionBD0Ev
 1355      00000000 
 1356 0020 00000000 		.quad	_ZNK12MyExceptionB4whatEv
 1356      00000000 
 1357              		.local	_ZStL8__ioinit
 1358              		.comm	_ZStL8__ioinit,1,1
 1359              		.text
 1360              	.Letext0:
 1361              		.file 8 "/usr/include/c++/4.8/bits/exception_ptr.h"
 1362              		.file 9 "/usr/include/c++/4.8/cwchar"
 1363              		.file 10 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h"
 1364              		.file 11 "/usr/include/c++/4.8/cstdint"
 1365              		.file 12 "/usr/include/c++/4.8/bits/allocator.h"
 1366              		.file 13 "/usr/include/c++/4.8/clocale"
 1367              		.file 14 "/usr/include/c++/4.8/cstdlib"
 1368              		.file 15 "/usr/include/c++/4.8/cstdio"
 1369              		.file 16 "/usr/include/c++/4.8/initializer_list"
 1370              		.file 17 "/usr/include/c++/4.8/bits/stringfwd.h"
 1371              		.file 18 "/usr/include/c++/4.8/bits/ios_base.h"
 1372              		.file 19 "/usr/include/c++/4.8/cwctype"
 1373              		.file 20 "/usr/include/c++/4.8/ostream"
 1374              		.file 21 "/usr/include/c++/4.8/type_traits"
 1375              		.file 22 "/usr/include/c++/4.8/bits/stl_iterator_base_types.h"
 1376              		.file 23 "/usr/include/c++/4.8/iosfwd"
 1377              		.file 24 "/usr/include/c++/4.8/ext/new_allocator.h"
 1378              		.file 25 "/usr/include/c++/4.8/ext/numeric_traits.h"
 1379              		.file 26 "/usr/include/c++/4.8/bits/stl_iterator.h"
 1380              		.file 27 "/usr/include/c++/4.8/debug/debug.h"
 1381              		.file 28 "/usr/include/stdio.h"
 1382              		.file 29 "/usr/include/libio.h"
 1383              		.file 30 "<built-in>"
 1384              		.file 31 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h"
 1385              		.file 32 "/usr/include/wchar.h"
 1386              		.file 33 "/usr/include/x86_64-linux-gnu/bits/wchar2.h"
 1387              		.file 34 "/usr/include/time.h"
 1388              		.file 35 "/usr/include/stdint.h"
 1389              		.file 36 "/usr/include/locale.h"
 1390              		.file 37 "/usr/include/x86_64-linux-gnu/bits/types.h"
 1391              		.file 38 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/atomic_word.h"
 1392              		.file 39 "/usr/include/stdlib.h"
 1393              		.file 40 "/usr/include/x86_64-linux-gnu/bits/stdlib.h"
 1394              		.file 41 "/usr/include/_G_config.h"
 1395              		.file 42 "/usr/include/x86_64-linux-gnu/bits/stdio2.h"
 1396              		.file 43 "/usr/include/wctype.h"
 1397              		.file 44 "/usr/include/c++/4.8/new"
 1398              		.file 45 "/usr/include/c++/4.8/bits/stl_pair.h"
GAS LISTING /tmp/ccrG9BDx.s 			page 95


DEFINED SYMBOLS
                            *ABS*:0000000000000000 rethrow.cpp
     /tmp/ccrG9BDx.s:7      .text:0000000000000000 _ZNK12MyExceptionB4whatEv
     /tmp/ccrG9BDx.s:30     .text:0000000000000012 _ZN12MyExceptionBD2Ev
     /tmp/ccrG9BDx.s:1351   .rodata._ZTV12MyExceptionB:0000000000000000 _ZTV12MyExceptionB
     /tmp/ccrG9BDx.s:30     .text:0000000000000012 _ZN12MyExceptionBD1Ev
     /tmp/ccrG9BDx.s:63     .text:0000000000000030 _ZN12MyExceptionBD0Ev
     /tmp/ccrG9BDx.s:86     .text:0000000000000043 _Z41__static_initialization_and_destruction_0ii
                             .bss:0000000000000000 _ZStL8__ioinit
     /tmp/ccrG9BDx.s:122    .text._ZNSt9exceptionC2Ev:0000000000000000 _ZNSt9exceptionC2Ev
     /tmp/ccrG9BDx.s:122    .text._ZNSt9exceptionC2Ev:0000000000000000 _ZNSt9exceptionC1Ev
     /tmp/ccrG9BDx.s:141    .text._ZNSt11char_traitsIcE6lengthEPKc:0000000000000000 _ZNSt11char_traitsIcE6lengthEPKc
     /tmp/ccrG9BDx.s:162    .text:0000000000000078 _ZN12MyExceptionBC2ESs
     /tmp/ccrG9BDx.s:162    .text:0000000000000078 _ZN12MyExceptionBC1ESs
     /tmp/ccrG9BDx.s:258    .text:00000000000000c5 _Z18throw_MyExceptionBSs
     /tmp/ccrG9BDx.s:1342   .rodata._ZTI12MyExceptionB:0000000000000000 _ZTI12MyExceptionB
     /tmp/ccrG9BDx.s:372    .text:0000000000000136 _Z12doesnt_throwv
     /tmp/ccrG9BDx.s:460    .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_:0000000000000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_
     /tmp/ccrG9BDx.s:572    .text._ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_:0000000000000000 _ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_
     /tmp/ccrG9BDx.s:587    .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_:0000000000000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_
     /tmp/ccrG9BDx.s:628    .text:0000000000000186 _ZNK12MyExceptionB9as_stringEv
     /tmp/ccrG9BDx.s:717    .text:00000000000001d5 _Z17catch_and_rethrowv
     /tmp/ccrG9BDx.s:897    .text:00000000000002a7 _Z23catch_and_throw_anotherv
     /tmp/ccrG9BDx.s:1118   .text:00000000000003d5 _Z9doRethrowv
     /tmp/ccrG9BDx.s:1311   .text:00000000000004c7 _GLOBAL__sub_I__ZN12MyExceptionBC2ESs
     /tmp/ccrG9BDx.s:1335   .rodata._ZTS12MyExceptionB:0000000000000000 _ZTS12MyExceptionB
                           .group:0000000000000000 _ZNSt9exceptionC5Ev

UNDEFINED SYMBOLS
_ZNKSs5c_strEv
_ZNSsD1Ev
_ZNSt9exceptionD2Ev
_ZdlPv
_ZNSt8ios_base4InitC1Ev
__dso_handle
_ZNSt8ios_base4InitD1Ev
__cxa_atexit
_ZTVSt9exception
__gxx_personality_v0
_ZNSsC1ERKSs
_Unwind_Resume
__cxa_call_unexpected
__cxa_allocate_exception
__cxa_throw
__cxa_free_exception
_ZNSsC1EPKcRKSaIcE
_ZNSsC1Ev
_ZNKSs4sizeEv
_ZNSs7reserveEm
_ZNSs6appendEPKcm
_ZNSs6appendERKSs
_ZNSs6appendEPKc
_ZNSsC1EOSs
__cxa_end_catch
__cxa_begin_catch
_ZSt4cout
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
GAS LISTING /tmp/ccrG9BDx.s 			page 96


_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
_ZNSolsEPFRSoS_E
__cxa_rethrow
_ZTVN10__cxxabiv120__si_class_type_infoE
_ZTISt9exception
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
脚本系统:TCC和V8的简单对比
C++基础::为什么不能cout一个string?
编译kaldi扩展工具irstlm
C++ String
C++ string的trim, split方法
no matching function for call to...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服