; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/assume @ 0x40f5f0 */ | #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_8h; | 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*) */ 0x0040f5f0 push rbp | 0x0040f5f1 push r15 | 0x0040f5f3 push r14 | 0x0040f5f5 push r13 | 0x0040f5f7 push r12 | 0x0040f5f9 push rbx | 0x0040f5fa sub rsp, 0x28 | 0x0040f5fe mov rbp, rdx | 0x0040f601 mov rbx, rsi | rbx = rsi; 0x0040f604 mov r12, rdi | r12 = rdi; 0x0040f607 test rdx, rdx | | if (rdx != 0) { 0x0040f60a je 0x40f615 | 0x0040f60c mov qword [r12], rbp | *(r12) = rbp; 0x0040f610 mov rax, rbp | rax = rbp; 0x0040f613 jmp 0x40f63b | | } else { 0x0040f615 mov rax, qword [rip + 0x270534] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040f61c test rax, rax | | if (rax == 0) { 0x0040f61f jne 0x40f626 | 0x0040f621 call 0x4206c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0040f626 mov qword [r12], rax | *(r12) = rax; 0x0040f62a mov rax, qword [rip + 0x27051f] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040f631 test rax, rax | | if (rax != 0) { 0x0040f634 jne 0x40f63b | goto label_0; | } 0x0040f636 call 0x4206c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x0040f63b lea rdi, [r12 + 8] | 0x0040f640 lea rsi, [rbx + 8] | 0x0040f644 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0040f649 lea rdx, [rsp + 8] | 0x0040f64e mov qword [rsp + 0x20], rdi | *((rsp + 0x20)) = rdi; 0x0040f653 call 0x415390 | bsl::vector,bsl::allocator>>::vector(bsl::vector,bsl::allocator>>const&,bsl::allocator>const&) (r12 + 8, rbx + 8, rsp + 8); 0x0040f658 mov rax, rbp | rax = rbp; 0x0040f65b test rbp, rbp | | if (rbp == 0) { 0x0040f65e jne 0x40f671 | 0x0040f660 mov rax, qword [rip + 0x2704e9] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040f667 test rax, rax | | if (rax != 0) { 0x0040f66a jne 0x40f671 | goto label_1; | } 0x0040f66c call 0x4206c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_1: 0x0040f671 lea rdi, [r12 + 0x28] | 0x0040f676 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0040f67b lea rsi, [rbx + 0x28] | 0x0040f67f lea rdx, [rsp + 8] | 0x0040f684 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x0040f689 call 0x415440 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r12 + 0x28, rbx + 0x28, rsp + 8); 0x0040f68e mov rax, rbp | rax = rbp; 0x0040f691 test rbp, rbp | | if (rbp == 0) { 0x0040f694 jne 0x40f6a7 | 0x0040f696 mov rax, qword [rip + 0x2704b3] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040f69d test rax, rax | | if (rax != 0) { 0x0040f6a0 jne 0x40f6a7 | goto label_2; | } 0x0040f6a2 call 0x4206c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_2: 0x0040f6a7 lea r13, [r12 + 0x48] | r13 = r12 + 0x48; 0x0040f6ac mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0040f6b1 lea rsi, [rbx + 0x48] | 0x0040f6b5 lea rdx, [rsp + 8] | 0x0040f6ba mov rdi, r13 | 0x0040f6bd call 0x414fb0 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r13, rbx + 0x48, rsp + 8); 0x0040f6c2 test rbp, rbp | | if (rbp == 0) { 0x0040f6c5 jne 0x40f6db | 0x0040f6c7 mov rbp, qword [rip + 0x270482] | rbp = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040f6ce test rbp, rbp | | if (rbp != 0) { 0x0040f6d1 jne 0x40f6db | goto label_3; | } 0x0040f6d3 call 0x4206c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0040f6d8 mov rbp, rax | | } | label_3: 0x0040f6db lea r14, [r12 + 0x68] | r14 = r12 + 0x68; 0x0040f6e0 mov byte [r12 + 0x1e8], 0 | *((r12 + 0x1e8)) = 0; 0x0040f6e9 mov qword [r12 + 0x1f0], rbp | *((r12 + 0x1f0)) = rbp; 0x0040f6f1 cmp byte [rbx + 0x1e8], 0 | | if (*((rbx + 0x1e8)) != 0) { 0x0040f6f8 je 0x40f712 | 0x0040f6fa lea rsi, [rbx + 0x68] | 0x0040f6fe mov rdi, r14 | 0x0040f701 mov rdx, rbp | 0x0040f704 call 0x40a140 | BloombergLP::balb::Choice3::Choice3(BloombergLP::balb::Choice3const&,BloombergLP::bslma::Allocator*) (r14, rbx + 0x68, rbp); 0x0040f709 mov byte [r12 + 0x1e8], 1 | *((r12 + 0x1e8)) = 1; | } 0x0040f712 mov rbp, qword [r12] | rbp = *(r12); 0x0040f716 mov rax, qword [rbp] | rax = *(rbp); 0x0040f71a mov esi, 0x40 | esi = 0x40; 0x0040f71f mov rdi, rbp | rdi = rbp; 0x0040f722 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0040f725 mov r15, rax | r15 = rax; 0x0040f728 mov rsi, qword [rbx + 0x1f8] | 0x0040f72f mov rdx, qword [r12] | 0x0040f733 mov rdi, rax | 0x0040f736 call 0x40c950 | BloombergLP::balb::Choice2::Choice2(BloombergLP::balb::Choice2const&,BloombergLP::bslma::Allocator*) (rax, *((rbx + 0x1f8)), *(r12)); 0x0040f73b mov qword [r12 + 0x1f8], r15 | *((r12 + 0x1f8)) = r15; 0x0040f743 add rsp, 0x28 | 0x0040f747 pop rbx | 0x0040f748 pop r12 | 0x0040f74a pop r13 | 0x0040f74c pop r14 | 0x0040f74e pop r15 | 0x0040f750 pop rbp | 0x0040f751 ret | return rax; | }