; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x40f5a0 */ | #include | ; (fcn) method.BloombergLP::balb::Sequence1.Sequence1_BloombergLP::balb::Sequence1_const__BloombergLP::bslma::Allocator_ () | int64_t method_BloombergLP::balb::Sequence1_Sequence1_BloombergLP::balb::Sequence1_const_BloombergLP::bslma::Allocator_ (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balb::Sequence1::Sequence1(BloombergLP::balb::Sequence1 const&, BloombergLP::bslma::Allocator*) */ 0x0040f5a0 push rbp | 0x0040f5a1 push r15 | 0x0040f5a3 push r14 | 0x0040f5a5 push r13 | 0x0040f5a7 push r12 | 0x0040f5a9 push rbx | 0x0040f5aa sub rsp, 0x28 | 0x0040f5ae mov rbp, rdx | 0x0040f5b1 mov rbx, rsi | rbx = rsi; 0x0040f5b4 mov r12, rdi | r12 = rdi; 0x0040f5b7 test rdx, rdx | | if (rdx != 0) { 0x0040f5ba je 0x40f5c5 | 0x0040f5bc mov qword [r12], rbp | *(r12) = rbp; 0x0040f5c0 mov rax, rbp | rax = rbp; 0x0040f5c3 jmp 0x40f5eb | | } else { 0x0040f5c5 mov rax, qword [rip + 0x26f584] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040f5cc test rax, rax | | if (rax == 0) { 0x0040f5cf jne 0x40f5d6 | 0x0040f5d1 call 0x4207c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0040f5d6 mov qword [r12], rax | *(r12) = rax; 0x0040f5da mov rax, qword [rip + 0x26f56f] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040f5e1 test rax, rax | | if (rax != 0) { 0x0040f5e4 jne 0x40f5eb | goto label_0; | } 0x0040f5e6 call 0x4207c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x0040f5eb lea rdi, [r12 + 8] | 0x0040f5f0 lea rsi, [rbx + 8] | 0x0040f5f4 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0040f5f9 lea rdx, [rsp + 0x10] | 0x0040f5fe mov qword [rsp + 0x20], rdi | *((rsp + 0x20)) = rdi; 0x0040f603 call 0x415360 | bsl::vector,bsl::allocator>>::vector(bsl::vector,bsl::allocator>>const&,bsl::allocator>const&) (r12 + 8, rbx + 8, rsp + 0x10); 0x0040f608 mov rax, rbp | rax = rbp; 0x0040f60b test rbp, rbp | | if (rbp == 0) { 0x0040f60e jne 0x40f621 | 0x0040f610 mov rax, qword [rip + 0x26f539] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040f617 test rax, rax | | if (rax != 0) { 0x0040f61a jne 0x40f621 | goto label_1; | } 0x0040f61c call 0x4207c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_1: 0x0040f621 lea rdi, [r12 + 0x28] | 0x0040f626 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0040f62b lea rsi, [rbx + 0x28] | 0x0040f62f lea rdx, [rsp + 0x10] | 0x0040f634 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x0040f639 call 0x415410 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r12 + 0x28, rbx + 0x28, rsp + 0x10); 0x0040f63e mov rax, rbp | rax = rbp; 0x0040f641 test rbp, rbp | | if (rbp == 0) { 0x0040f644 jne 0x40f657 | 0x0040f646 mov rax, qword [rip + 0x26f503] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040f64d test rax, rax | | if (rax != 0) { 0x0040f650 jne 0x40f657 | goto label_2; | } 0x0040f652 call 0x4207c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_2: 0x0040f657 lea r13, [r12 + 0x48] | r13 = r12 + 0x48; 0x0040f65c mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0040f661 lea rsi, [rbx + 0x48] | 0x0040f665 lea rdx, [rsp + 0x10] | 0x0040f66a mov rdi, r13 | 0x0040f66d call 0x414f90 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r13, rbx + 0x48, rsp + 0x10); 0x0040f672 test rbp, rbp | | if (rbp == 0) { 0x0040f675 jne 0x40f68b | 0x0040f677 mov rbp, qword [rip + 0x26f4d2] | rbp = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040f67e test rbp, rbp | | if (rbp != 0) { 0x0040f681 jne 0x40f68b | goto label_3; | } 0x0040f683 call 0x4207c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0040f688 mov rbp, rax | | } | label_3: 0x0040f68b lea r14, [r12 + 0x68] | r14 = r12 + 0x68; 0x0040f690 mov byte [r12 + 0x1e8], 0 | *((r12 + 0x1e8)) = 0; 0x0040f699 mov qword [r12 + 0x1f0], rbp | *((r12 + 0x1f0)) = rbp; 0x0040f6a1 cmp byte [rbx + 0x1e8], 0 | | if (*((rbx + 0x1e8)) != 0) { 0x0040f6a8 je 0x40f6c2 | 0x0040f6aa lea rsi, [rbx + 0x68] | 0x0040f6ae mov rdi, r14 | 0x0040f6b1 mov rdx, rbp | 0x0040f6b4 call 0x40a0f0 | BloombergLP::balb::Choice3::Choice3(BloombergLP::balb::Choice3const&,BloombergLP::bslma::Allocator*) (r14, rbx + 0x68, rbp); 0x0040f6b9 mov byte [r12 + 0x1e8], 1 | *((r12 + 0x1e8)) = 1; | } 0x0040f6c2 mov rbp, qword [r12] | rbp = *(r12); 0x0040f6c6 mov rax, qword [rbp] | rax = *(rbp); 0x0040f6ca mov esi, 0x40 | esi = 0x40; 0x0040f6cf mov rdi, rbp | rdi = rbp; 0x0040f6d2 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0040f6d5 mov r15, rax | r15 = rax; 0x0040f6d8 mov rsi, qword [rbx + 0x1f8] | 0x0040f6df mov rdx, qword [r12] | 0x0040f6e3 mov rdi, rax | 0x0040f6e6 call 0x40c8e0 | BloombergLP::balb::Choice2::Choice2(BloombergLP::balb::Choice2const&,BloombergLP::bslma::Allocator*) (rax, *((rbx + 0x1f8)), *(r12)); 0x0040f6eb mov qword [r12 + 0x1f8], r15 | *((r12 + 0x1f8)) = r15; 0x0040f6f3 add rsp, 0x28 | 0x0040f6f7 pop rbx | 0x0040f6f8 pop r12 | 0x0040f6fa pop r13 | 0x0040f6fc pop r14 | 0x0040f6fe pop r15 | 0x0040f700 pop rbp | 0x0040f701 ret | return rax; | }